{"version":3,"sources":["redux/selectors.js","ThemeVariables.js","redux/user/actions.js","helpers/functions.js","redux/message/actions.js","redux/common/learning/actions.js","redux/notification/actions.js","redux/widgets/sharepoint/actions.js","redux/client/actions.js","redux/slideOut/actions.js","redux/layout/actions.js","redux/widgets/people/actions.js","redux/tasks/actions.js","redux/auth/actions.js","redux/common/events/actions.js","redux/documentsWizard/actions.js","redux/widgets/multiChannelEvent/actions.js","redux/birthday/actions.js","redux/knowledgeBase/actions.js","redux/solution/actions.js","redux/document/actions.js","redux/widgets/multiChannelNews/actions.js","redux/common/userRequest/actions.js","redux/common/rightsRequest/actions.js","redux/common/news/actions.js","redux/widgets/multiChannelShout/actions.js","redux/common/blog/actions.js","redux/apps/actions.js","redux/common/calls/actions.js","redux/calendar/actions.js","redux/search/actions.js","redux/common/workplaceRequest/actions.js","redux/widgets/multiChannelSocial/actions.js","redux/widgets/teams/actions.js","redux/common/itnews/actions.js","redux/events/actions.js","redux/widgets/multiChannelBlog/actions.js","components/widget/birthdays/styled.js","components/layout/bubble/styled.js","components/layout/bubble/index.js","redux/user/reducer.js","redux/slideOut/reducer.js","redux/layout/reducer.js","redux/auth/reducer.js","redux/document/reducer.js","redux/reports/reducer.js","redux/birthday/reducer.js","redux/client/reducer.js","redux/news/reducer.js","redux/tasks/reducer.js","redux/calendar/reducer.js","redux/notification/reducer.js","redux/events/reducer.js","redux/blog/reducer.js","redux/widgets/actions.js","redux/widgets/reducer.js","redux/apps/reducer.js","redux/search/reducer.js","redux/message/reducer.js","redux/common/news/reducer.js","redux/common/itnews/reducer.js","redux/common/events/reducer.js","redux/common/blog/reducer.js","redux/common/calls/reducer.js","redux/knowledgeBase/reducer.js","redux/common/learning/reducer.js","redux/app/reducer.js","redux/solution/reducer.js","redux/documentsWizard/reducer.js","redux/tipsTricks/actions.js","redux/tipsTricks/reducer.js","redux/siteKnowledge/actions.js","redux/siteKnowledge/reducer.js","redux/notificationCollector/actions.js","redux/notificationCollector/reducer.js","redux/popup/reducer.js","redux/yearOverview/reducer.js","redux/common/userRequest/reducer.js","redux/common/rightsRequest/reducer.js","redux/common/workplaceRequest/reducer.js","redux/widgets/teams/reducer.js","redux/widgets/sharepoint/reducer.js","redux/widgets/people/reducer.js","redux/widgets/multiChannelNews/reducer.js","redux/widgets/multiChannelBlog/reducer.js","redux/widgets/multiChannelShout/reducer.js","redux/widgets/multiChannelFeed/reducer.js","redux/widgets/multiChannelSocial/reducer.js","redux/widgets/multiChannelEvent/reducer.js","redux/rootReducer.js","redux/app/saga.js","redux/layout/saga.js","redux/auth/saga.js","helpers/licensedetail.js","redux/user/saga.js","helpers/graph.js","redux/client/saga.js","redux/tasks/saga.js","redux/birthday/saga.js","redux/document/saga.js","redux/message/saga.js","redux/reports/saga.js","redux/notification/saga.js","redux/notificationCollector/saga.js","redux/events/saga.js","redux/slideOut/saga.js","redux/solution/saga.js","redux/search/saga.js","redux/calendar/saga.js","redux/widgets/saga.js","helpers/apps.js","redux/apps/saga.js","redux/documentsWizard/saga.js","redux/tipsTricks/saga.js","redux/siteKnowledge/saga.js","redux/common/news/saga.js","redux/common/itnews/saga.js","redux/common/learning/saga.js","redux/common/events/saga.js","redux/knowledgeBase/saga.js","redux/common/calls/saga.js","redux/common/userRequest/saga.js","redux/common/rightsRequest/saga.js","redux/common/workplaceRequest/saga.js","redux/widgets/teams/saga.js","redux/widgets/sharepoint/saga.js","redux/widgets/people/saga.js","redux/widgets/multiChannelNews/newsObject.js","redux/widgets/multiChannelNews/saga.js","redux/widgets/multiChannelShout/shoutObject.js","redux/widgets/multiChannelShout/saga.js","redux/widgets/multiChannelBlog/blogObject.js","redux/widgets/multiChannelBlog/saga.js","redux/widgets/multiChannelFeed/saga.js","redux/widgets/multiChannelSocial/socialObject.js","redux/widgets/multiChannelSocial/saga.js","redux/rootSaga.js","redux/store.js","redux/app/actions.js","redux/widgets/multiChannelFeed/actions.js","components/styled/CircleIcon.js","components/layout/loader/page/styled.js","components/layout/loader/page/index.js","components/layout/loader/styled.js","components/layout/widget/styled.js","components/layout/loader/team/styled.js","components/layout/loader/team/index.js","components/layout/checkbox/styled.js","components/layout/checkbox/index.js","redux/news/actions.js","redux/blog/actions.js","redux/reports/actions.js","translate/translations.js","components/widget/birthdays/birthdayItem/styled.js","components/widget/birthdays/birthdayItem/index.js","components/layout/button/styled.js","components/layout/button/index.js","assets/img/dark.svg","assets/img/light.svg","components/styled/KeyFrames.js","redux/actions.js","components/layout/search/bar/styled.js","components/layout/search/bar/index.js","components/styled/Box.js","helpers/launchApp.js","components/widget/documentsList/styled.js","components/layout/menu/styled.js","components/layout/menu/index.js","components/layout/headingSlideout/styled.js","components/layout/headingSlideout/index.js","components/layout/heading/styled.js","components/layout/heading/index.js","components/layout/search/slideOut/styled.js","components/layout/search/slideOut/index.js","redux/popup/actions.js","redux/yearOverview/actions.js","components/widget/documentsList/documentsListItem/styled.js","components/layout/infiniteScrollWrapper/index.js","components/user/profile/avatar/styled.js","components/user/profile/avatar/index.js","components/layout/menu/list/styled.js","components/layout/menu/list/index.js","redux/blog/saga.js","redux/common/blog/saga.js","redux/widgets/multiChannelEvent/saga.js","redux/widgets/multiChannelEvent/EventObject.js","components/widget/birthdays/birthdaySlideoutItem/styled.js","components/widget/birthdays/birthdaySlideoutItem/index.js","components/layout/loader/documents/styled.js","components/layout/loader/documents/index.js","components/widget/birthdays/index.js","components/widget/sharepoint/styled.js","components/widget/sharepoint/index.js","components/layout/loader/header/styled.js","components/layout/loader/header/index.js","components/layout/tutorialSlider/styled.js","components/layout/tutorialSlider/slideTypes/darkmodeSlide/styled.js","components/layout/tutorialSlider/slideTypes/darkmodeSlide/index.js","components/layout/tutorialSlider/slideTypes/listSlide/styled.js","components/layout/tutorialSlider/slideTypes/listSlide/index.js","components/layout/tutorialSlider/slideTypes/videoSlide/index.js","components/layout/tutorialSlider/slideTypes/settingSlide/styled.js","components/layout/tutorialSlider/slideTypes/settingSlide/index.js","components/layout/tutorialSlider/slideTypes/contentSlide/styled.js","components/layout/tutorialSlider/slideTypes/contentSlide/index.js","components/layout/tutorialSlider/slider/slide/index.js","components/layout/tutorialSlider/slider/index.js","components/layout/tutorialSlider/sliders/home/index.js","components/layout/tutorialSlider/sliders/onlineHulp/index.js","components/layout/tutorialSlider/index.js","components/layout/tutorialSlider/sliders/selfService/index.js","components/layout/tutorialSlider/sliders/store/index.js","components/main/styled.js","components/layout/search/collapsible/styled.js","components/layout/search/collapsible/index.js","components/layout/search/button/styled.js","components/layout/search/button/index.js","components/user/notifications/button/styled.js","components/user/notifications/button/index.js","components/layout/header/styled.js","components/layout/menu/button/styled.js","components/layout/header/index.js","components/layout/notifier/index.js","components/main/index.js","App.js","redux/boot.js","msalConfig.js","AuthService.js","serviceWorkerRegistration.js","components/appStatus/styled.js","assets/img/logo.svg","styled.js","components/appStatus/index.js","GlobalStyle.js","AppWrapper.js","index.js"],"names":["getTenantNewsItems","state","CommonNews","tenantNewsItems","getTenantBlogItems","CommonBlogs","tenantBlogs","getFaqsItems","KnowledgeBase","faqs","getCommonEventsItems","CommonEvents","events","getTenantEventsItems","tenantEventsItems","getUserRequest","UserRequest","userRequest","getKnowledgeBaseItems","knowledgeBases","getGOClient","Client","GoClient","getGraphClient","GraphClient","getLiquitClient","LiquitClient","getSharepointClient","SharepointClient","getYammerClient","YammerClient","getAuthProvider","AuthProvider","getClientsActivated","clientsActivated","getWidgets","Widgets","widgets","getAuth","Auth","getUserProfile","User","profile","getDataRequest","requestCompleted","getUserProfileSettingData","data","getFeatureSliders","featureSliders","getLocale","Intl","locale","getUserRequestCompleted","getBlogItems","Blogs","blogs","getITNewsItems","ITNews","items","getNewsItems","News","newsItems","getNotificationItems","Notifications","notifications","getNotificationsHub","Hub","getIsNotificationsIsConnected","isConnected","getNotifications","NotificationCollector","getActiveSlideOut","SlideOut","activeSlideOut","isUnmounting","getTeams","Teams","teams","getAppOnline","App","appOnline","getSolutions","Solution","solutions","getMultiChannelBlogItems","MultiChannelBlog","blogItems","getMultiChannelNewsItems","MultiChannelNews","getMultiChannelShoutItems","MultiChannelShout","shoutItems","getMultichannelFeeds","MultiChannelFeed","feeds","getMultiChannelSocialItems","MultiChannelSocial","socialItems","getMultiChannelEvent","MultiChannelEvent","getNewsRequestCompleted","getShoutsRequestCompleted","getSocialRequestCompleted","getPeople","People","people","getPeoplePage","currentPage","getPeoplePageLength","pageLength","getAllBirthdays","Birthday","birthdays","mainColor","window","tenantConfig","color","borderRadius","xxs","mxs","xs","md","mdPlus","lgMin","lg","xlg","headerHeight","appHeight","borderColor","lightMode","darkMode","mainTextColor","darkModeSoft","tileBackground","headingColor","headerBackground","centerColumnBackground","outerColumnBackground","eventBackground","actions","GET_USER_PROFILE","SET_USER_PROFILE","SET_USER_AVATAR","SET_DAYS_LEFT","GET_MESSAGES","SET_MESSAGES","GET_USER_APPLICATIONS","SET_USER_APPLICATIONS","GET_USER_TASKS","SET_USER_TASKS","GET_USER_CALENDARITEMS","SET_USER_CALENDARITEMS","SET_VIEWED_TUTORIAL","SET_USER_DATA","SET_DEBUG_DATA","ADD_DEBUG_DATA","SET_LAST_DEBUG","GET_USER_DATA","DATA_REQUEST_COMPLETED","GET_APP_ROLES","UPDATE_USER_SETTINGS","SET_USER_VIEWED_CALL","REMOVE_USER_VIEWED_CALL","HIDE_FEATURE_SLIDER","SET_FEATURE_SLIDERS","SET_FEATURE_SLIDER_VISIBLE","getMessages","type","setUserViewedCall","callID","payload","removeUserViewedCall","setSettingValue","value","setting","getUserTasks","getUserCalendarItems","getUserApplications","setUserData","addDebugData","setViewedTutorial","setTutorialVisible","SET_TUTORIAL_VISIBLE","setFeatureSliderVisible","link","visible","dataURItoBlob","dataURI","startIndex","indexOf","b64","substr","byteString","atob","arrayBuffer","ArrayBuffer","length","int8Array","Uint8Array","i","charCodeAt","Blob","capitalizeFirstLetter","string","charAt","toUpperCase","slice","capStringName","stringName","limit","capString","stripHTML","html","tmp","document","createElement","innerHTML","textContent","innerText","getMS","minutes","parseSharepointUrl","url","includes","split","parsePictureUrl","picture","resolution","replace","getDataTransfer","DataTransfer","concat","Array","prototype","_","ClipboardEvent","clipboardData","createFileList","file","files","apply","dataTransfer","File","add","fileToBase64","filename","filepath","Promise","resolve","reader","FileReader","onload","event","target","result","readAsDataURL","blobToBase64","blob","nameLookup","one","pptx","xlsx","docx","pdf","vsdx","txt","getAppName","documentName","appName","iconLookup","PowerPoint","Excel","Word","getAppIcon","findAll","obj","searchKey","results","r","Object","keys","forEach","key","push","MESSAGE","ADD_MESSAGE","setMessage","GET_LEARNING","SET_LEARNING","SET_LEARNING_ID","SET_ACTIVE_LEARNING_ITEM","LEARNING_REQUEST_COMPLETED","GET_RANDOM_LEARNINGPATHS","SET_RANDOM_LEARNINGPATHS","GET_LEARNINGPATHS","SET_LEARNINGPATHS","GET_ROLES","SET_ROLES","GET_PRODUCTS","SET_PRODUCTS","GET_LEVELS","SET_LEVELS","GET_MODULE","SET_MODULE","getLearning","setLearningId","setActiveLearningItem","getRandomLearningPaths","getLearningPaths","getRoles","getProducts","getLevels","getModule","GET_NOTIFICATIONS","SET_NOTIFICATIONS","START_NOTIFICATIONS","RECEIVE_NOTIFICATION","REMOVE_SINGLE_NOTIFICATION","REMOVE_ALL_NOTIFICATIONS","SET_NUMBER_OF_NOTIFICATIONS","RECEIVE_COMMAND","SEND_COMMAND","SEND_LIST_COMMAND","SEND_DETAIL_COMMAND","SEND_EXECUTE_COMMAND","SEND_CHECK_COMMAND","SET_HUB","SET_APPLICATIONS","SET_APPLICATION","SERVICES_CONNECTED","SET_CONNECTED","setHub","setServiceConnected","setIsConnected","setApplications","setApplication","sendCommand","sendListCommand","sendCheckCommand","sendDetailCommand","sendExecuteCommand","removeSingleNotification","startNotifications","removeAllNotifications","GET_SHAREPOINT","SET_SHAREPOINT","FETCH_SHAREPOINT_SITES","FETCH_SHAREPOINT_DRIVE","SET_SHAREPOINT_DRIVE","FETCH_SHAREPOINT_DRIVE_CHILDREN","SET_SHAREPOINT_DRIVE_CHILDREN","FETCH_SHAREPOINT_FOLDER","SET_SHAREPOINT_FOLDER","CLEAR_SHAREPOINT","CLEAR_SHAREPOINT_DRIVE","CLEAR_SHAREPOINT_DRIVE_CHILDREN","CLEAR_SHAREPOINT_FOLDER","SET_IS_LOADING","FILE_FROM_TEMPLATE","getSharepointSites","fetchSharepointSites","search","fetchSharepointDrive","sharepointItem","fetchSharepointDriveChildren","fetchSharepointFolder","clearSharepoint","fileFromTeplate","setSharepointDriveChildren","GET_GO_DATA","SET_GRAPH_CLIENT","SET_GO_CLIENT","SET_SHAREPOINT_CLIENT","SET_POWER_CLIENT","SET_LIQUIT_CLIENT","SET_YAMMER_CLIENT","SET_AUTH_PROVIDER","SET_AUTH","AAD_LOGIN_SUCCESS","AAD_LOGOUT_SUCCESS","AAD_LOGIN_ERROR","SET_IS_LOADED","AAD_ACQUIRED_ACCESS_TOKEN_ERROR","AAD_ACQUIRED_ID_TOKEN_ERROR","AAD_LOGIN_FAILED","CLIENTS_ACTIVATED","setAuthProvider","client","setAuth","auth","SET_ACTIVE_SLIDEOUT","SET_ACTIVE_OVERLAY_SLIDEOUT","SET_SLIDEOUT_DATA","HANDLE_SLIDEOUT_MOUNTING","SET_IS_UNMOUNTING","SET_IS_MOUNTING","setActiveSlideOut","image","authorImage","authorName","item","setActiveOverlaySlideOut","setSlideOutData","SET_COLUMNS","SET_DARK_MODE","START_DARKMODE_AUTO","STOP_DARKMODE_AUTO","HIDE_SLIDER","setDarkMode","hideSlider","startDarkModeAuto","stopDarkModeAuto","GET_PEOPLE","SET_PEOPLE","GET_ALL_PEOPLE","STOP_FETCHING_PEOPLE","GET_NEXT_PEOPLE_PAGE","SET_NEXT_PAGE_AVAILABLE","SET_PEOPLE_FETCHING","SET_CURRENT_PAGE","GET_PERSON_AVATAR","SET_PEOPLE_AVATARS","START_STATUS_JOB","GET_USER_STATUS","STOP_STATUS_JOB","startStatusJob","getUserStatus","stopStatusJob","getNextPeoplePage","getAllPeople","findAvatar","GET_TASKS","SET_TASKS","ORDER_TASKS","UPDATE_TASK","UPDATE_SUB_TASK","UPDATE_TASK_EMAIL","UPDATE_TASK_PLANNER","SET_ACTIVE_TASK","getTasks","updateTask","updateSubTask","subTask","updateTaskEmail","updateTaskPlanner","setActiveTask","CHECK_AUTHORIZATION","USER_UNAUTHENTICATED","USER_JUST_LOGGED_IN","USER_AUTHENTICATED","READY_FOR_BOOT","SET_AUTH_INFO","LOG_OUT","checkAuthorization","unAuthenticated","userJustLoggedIn","userAuthenticated","setAuthInfo","info","readyForBoot","logout","GET_COMMON_EVENTS","SET_COMMON_EVENTS","SET_ACTIVE_COMMON_EVENT","GET_TENANT_EVENTS","SET_TENANT_EVENTS","COMMON_EVENTS_REQUEST_COMPLETED","POST_COMMON_EVENT","DELETE_EVENTS_ITEM","setActiveCommonEvent","getTenantEvents","getCommonEvents","postCommonEvent","deleteItem","GET_RECENT_DOCUMENTS_FOR_APP","SET_RECENT_DOCUMENTS_FOR_APP","SET_RECENT_DOCUMENTS_LOADING","SET_DOCUMENT_INFO","SET_BASE64_INFO","getRecentDocumentsForApp","setRecentDocumentsForApp","setDocumentInfo","setDocumentBase64Info","GET_EVENTS","SET_EVENTS","SET_ACTIVE_EVENT","EVENTS_REQUEST_COMPLETED","GET_YEAR_EVENTS","SET_YEAR_EVENTS","SET_SOURCE_URL","setActiveEvent","getEvents","title","getYearEvents","source","year","GET_BIRTHDAYS","SET_BIRTHDAYS","SET_UPCOMING_BIRTHDAYS","GET_UPCOMING_BIRTHDAYS","SET_BIRTHDAYS_AVATARS","getBirthDays","getUpcomingBirthDays","fetchNextPage","GET_NEXT_PAGE","GET_FAQS","SET_FAQS","FAQS_REQUEST_COMPLETED","GET_KNOWLEDGEBASES","SET_KNOWLEDGEBASES","KNOWLEDGEBASES_REQUEST_COMPLETED","getFAQs","getKnowledgeBases","GET_SOLUTIONS","SET_SOLUTIONS","GET_SOLUTION_CATEGORIES","SET_SOLUTION_CATEGORIES","SET_ACTIVE_SOLUTION","DISABLE_SOLUTION","ENABLE_SOLUTION","getSolutionCategories","setActiveSolution","disableSolution","enableSolution","GET_DOCUMENTS","SET_DOCUMENTS","DOCUMENTS_REQUEST_COMPLETED","SET_STATUS_DOCUMENTS","SET_REFRESH_HIDDEN_DOCUMENTS","SET_LAST_UPDATE_DOCUMENTS","getDocuments","setRefreshHiddenDocuments","SET_MULTICHANNEL_NEWS_ITEMS","GET_MULTICHANNEL_NEWS_ITEMS","SET_ACTIVE_NEWS_ITEM","NEWS_REQUEST_COMPLETED","SET_LAST_NEWS_VIEWED","CLEAR_NEWS_STATE","getMultichannelNewsItems","setActiveNewsItem","setLastViewed","clearState","GET_SELF_USER","SET_SELF_USER","SET_ACTIVE_USER","POST_SELF_USER","GET_TENANT_USER","SET_TENANT_USER","GET_USER_FROM_CHANNEL","DELETE_SELF_USER","TEST_SELF_USER","SELF_USER_REQUEST_COMPLETED","POST_USER_REQUEST","SET_USER_REQUEST","GET_USER_REQUEST","DELETE_USER_REQUEST","UPDATE_USER_REQUEST","CANCEL_USER_REQUEST","postUserRequest","setUserRequest","cancelUserRequest","deleteUserRequest","updateUserRequest","id","GET_SELF_RIGHTS","SET_SELF_RIGHTS","SET_ACTIVE_RIGHTS","POST_SELF_RIGHTS","GET_TENANT_RIGHTS","SET_TENANT_RIGHTS","GET_RIGHTS_FROM_CHANNEL","DELETE_SELF_RIGHTS","TEST_SELF_RIGHTS","SELF_RIGHTS_REQUEST_COMPLETED","POST_RIGHTS_REQUEST","SET_RIGHTS_REQUEST","GET_RIGHTS_REQUEST","DELETE_RIGHTS_REQUEST","UPDATE_RIGHTS_REQUEST","CANCEL_RIGHTS_REQUEST","postRightsRequest","setRightsRequest","getRightsRequest","cancelRightsRequest","deleteRightsRequest","updateRightsRequest","GET_COMMON_NEWS","SET_COMMON_NEWS","POST_COMMON_NEWS","GET_TENANT_NEWS","SET_TENANT_NEWS","GET_NEWS_FROM_CHANNEL","DELETE_NEWS_ITEM","TEST_COMMON_NEWS","COMMON_NEWS_REQUEST_COMPLETED","postCommonNews","getTenantNews","getCommonNews","SET_MULTICHANNEL_SHOUT_ITEMS","GET_MULTICHANNEL_SHOUT_ITEMS","SET_ACTIVE_SHOUT_ITEM","SHOUT_REQUEST_COMPLETED","SET_LAST_SHOUT_VIEWED","getMultichannelShoutItems","setActiveShoutItem","GET_COMMON_BLOGS","SET_COMMON_BLOGS","GET_TENANT_BLOGS","SET_TENANT_BLOGS","SET_ACTIVE_BLOG_ITEM","POST_TENANT_BLOG","DELETE_BLOGS_ITEM","COMMON_BLOGS_REQUEST_COMPLETED","getTenantBlogs","postBlog","getCommonBlogs","setActiveBlogItem","GET_APPS","SET_APPS","GET_LIQUIT_APPS","SET_LIQUIT_APPS","SET_VIEWED","REMOVE_VIEWED","SET_POSITION","getApps","setApps","getLiquitApps","setTileSettings","removeViewedTiles","setTilePosition","GET_CALLS","SET_CALLS","SET_ACTIVE_CALLS_ITEM","CALLS_REQUEST_COMPLETD","getCalls","setActiveCallsItem","GET_CALENDAR","SET_CALENDAR","ORDER_CALENDAR","getCalendar","TOGGLE_SEARCHBAR_ACTIVE","SET_SEARCH_TERM","toggleSearchBarActive","setSearchTerm","GET_SELF_WORKPLACE","SET_SELF_WORKPLACE","SET_ACTIVE_WORKPLACE","POST_SELF_WORKPLACE","GET_TENANT_WORKPLACE","SET_TENANT_WORKPLACE","GET_WORKPLACE_FROM_CHANNEL","DELETE_SELF_WORKPLACE","TEST_SELF_WORKPLACE","SELF_WORKPLACE_REQUEST_COMPLETED","POST_WORKPLACE_REQUEST","SET_WORKPLACE_REQUEST","GET_WORKPLACE_REQUEST","DELETE_WORKPLACE_REQUEST","UPDATE_WORKPLACE_REQUEST","postWorkplaceRequest","setWorkplaceRequest","getWorkplaceRequest","deleteWorkplaceRequest","updateWorkplaceRequest","SET_MULTICHANNEL_SOCIAL_ITEMS","GET_MULTICHANNEL_SOCIAL_ITEMS","SET_ACTIVE_SOCIAL_ITEM","SOCIAL_REQUEST_COMPLETED","SET_LAST_SOCIAL_VIEWED","getMultichannelSocialItems","setActiveSocialItem","GET_TEAMS","SET_TEAMS","FETCH_TEAM_CHANNELS","fetchTeamChannels","teamID","GET_IT_NEWS","SET_IT_NEWS","SET_ACTIVE_IT_NEWS_ITEM","COMMON_IT_NEWS_REQUEST_COMPLETED","getITNews","setActiveITNewsItem","SET_MULTICHANNEL_BLOG_ITEMS","GET_MULTICHANNEL_BLOG_ITEMS","BLOGS_REQUEST_COMPLETED","getMultichannelBlogItems","Birthdays","styled","div","props","gridColumns","WidgetHeading","styledContainerQuery","Popup","NavLink","AddBirthdayButton","span","Variables","AddBirthdayWrapper","Dismissbirthdaybutton","ScrollWrapperElement","Bubble","className","style","small","number","initState","days_left","user_avatar","settings","messages","tasks","calendarItems","logging","lastDebug","applications","viewedTutorials","powerApps","goApps","calendar","activeOverlaySlideOut","columns","darkmode","darkmodeAuto","sliderHidden","authProvider","status","refreshHidden","update","upcoming","PowerClient","aadResponse","IsLoaded","clientActivated","activeTask","numberOfNotifications","Send","Received","Commands","application","isServiceConnected","activeEvent","GET_WIDGETS","SET_WIDGETS","SET_WIDGETS_LAYOUT","SET_CLIENTS","GET_CLIENTS","SET_HAS_GO_WIDGET","left","center","right","layout","clients","hasGOWidget","apps","appStore","searchbarActive","searchTerm","message","activeITNewsItem","activeBlogItem","activeItem","faqRequestCompleted","knowledgeBasesRequestCompleted","learnings","learingId","learningPaths","randomLearningPaths","roles","products","levels","module","activeLearningItem","categories","activeSolution","recentDocuments","loading","documentInfo","base64Info","GET_TIPS_TRICKS","SET_TIPS_TRICKS","tipsTricks","GET_SITE_KNOWLEDGE","SET_SITE_KNOWLEDGE","siteKnowledge","PUSH_NOTIFICATION","CLEAR_NOTIFICATIONS","pushNotification","activePopup","rightsRequest","workplaceRequest","sharepoint","sharePointSet","sharepointDrive","sharepointDriveSet","sharepointDriveChildren","sharepointDriveChildrenSet","sharepointFolder","sharepointFolderSet","isLoading","nextPageAvailable","fetching","activeNewsItem","activeShoutItem","activeFeedItem","activeSocialItem","yearEvents","sourceUrl","appReducer","combineReducers","action","SET_ACTIVE_POPUP","YearOverview","SET_ACTIVE_YEAR_OVERVIEW_POPUP","isMounting","Layout","Document","documents","FEED_REQUEST_COMPLETED","SET_MULTICHANNEL_FEEDS","SET_ACTIVE_FEED_ITEM","SET_NEWS","Tasks","Calendar","Apps","Events","Blog","SET_BLOGS","Reports","SET_TILES","tiles","Calls","Search","Message","Learning","learningId","Sharepoint","SET_APP_ONLINE","DocumentsWizard","TipsTricks","SiteKnowledge","RightsRequest","WorkplaceRequest","rootReducer","CLEAR","localForage","removeItem","undefined","checkAppOnline","checkStatusChannel","showUserNotificationOnConnectivityChange","rootSaga","takeEvery","CHECK_APP_ONLINE","call","console","log","offlineTimeout","channel","eventChannel","emit","handleConnectivityChange","clearTimeout","navigator","onLine","setTimeout","addEventListener","removeEventListener","take","connectionInfo","put","CHANGE_APP_CONNECTIVITY_STATUS","select","previousOnlineState","messageActions","all","fork","setColumns","watchCurrentTime","checkDarkmodeAuto","SunCalc","require","times","getTimes","Date","sunriseMoment","moment","sunrise","toLocaleString","sunsetMoment","sunset","now","isAfter","isBefore","delay","cancelled","bgSyncTask","cancel","SignOut","hasOfficeSubscription","licenseDetails","map","skuPartNumber","getUserMessages","getUserAppRoles","getUserProfileData","updateUserSettings","setFeatureSliders","api","userProfile","userPrincipalName","post","JSON","stringify","avatar","buf","Buffer","from","toString","user","ResetUser","localStorage","clear","hasOfficeSupscription","parse","userSettings","startLocalApps","showOfficeWizard","startAppsInNewWindow","rights","common","selfserviceIntranet","hasRights","find","g","displayName","authorisationGroup","selfserviceBeheer","selfServiceGroup","lastCallViews","IntlActions","setLocale","userActions","sliderKeys","newFeatureSliders","values","leaveBalance","daysLeft","Math","floor","taskActions","calendarActions","layoutActions","teamsActions","userData","isArray","current","old","newItems","filter","c","n","date","format","splice","e","diff","unix","callViews","newCallViews","hasOwnProperty","activateClients","provider","a","scopes","token","GetToken","accessToken","error","apiURL","version","consistency","fetch","headers","response","ok","responseType","catch","err","responseData","method","body","json","patch","header","getToken","getGoClient","origin","location","appRegistrationUrl","this","HandleClaimsChallenge","noData","delete","get","authenticateHeader","claimsChallenge","entry","msalApplication","acquireTokenPopup","claims","BrowserAuthError","errorCode","acquireTokenRedirect","site","options","goToken","encodeURI","getPowerClient","liquitID","activeSources","activated","config","clientActions","property","component","powerClient","sources","s","sharePointClient","yammerClient","f","getGoData","setGraphClient","setGoClient","authActions","goClient","graphClient","liquit","liquitClient","widgetActions","orderTasks","setTasks","listID","orderedItems","count","today","tomorrow","next","lastWeek","oldTasks","noDate","completed","categorizedLists","taskLists","unaddedTasks","completedDate","task","taskType","listName","name","listId","percentComplete","flag","flagStatus","dueDateTime","dueDate","createdDateTime","createdDate","completedDateTime","dateTime","getTime","lastModifiedDateTime","toDoLists","toDoListTasks","plannerTasks","emailTasks","toDoTask","getBirthdays","fetchUserPhoto","getAvatar","parsedBirthdays","parsedBirthdaysToday","parsedBirthdaysTomorrow","parsedBirthdaysUpcoming","birthday","birthdate","parsedUserPhoto","when","parseInt","day","userPhoto","personIndex","findIndex","setDocuments","trendingDocuments","sharedDocuments","recent","trending","shared","setReports","GET_TILES","setNumberOfNotifications","receiveNotification","receiveCommand","setConnected","notificationEnabled","websocketInitChannel","category","counter","notification","encodeURIComponent","contentType","jwtIdToken","then","res","text","content","URL","createObjectURL","imageUrl","notificationCollectorActions","newForCategory","newNotifications","messageType","commandType","senderId","senderUpn","recipientId","recipientUpn","commandContent","connected","notificationsHub","notificationsIsConnected","invoke","command","emitter","addMessage","toast","translate","autoClose","slideOutActions","eventResponse","root","d","index","parsedDescription","parseDescription","Description","BannerUrl","Title","description","Created","allEventData","Location","EventDate","EndDate","externalUrl","Workspace","decodeURIComponent","Url","reverse","urls","anchorContentMatch","urlsMatch","match","setActiveSlideout","takeLatest","isSlideOutUnmounting","fetchSolutions","rebuiltSolutions","solution","active","price","solutionCategories","column","slideOutDeactivated","slideoutActions","orderCalendar","setCalendar","sortOnDate","b","start","currentItem","startDate","sort","countItems","todayIso","toISOString","nextweekIso","fetchUserWidgets","apiUrl","linkTitle","handleTitleInWidget","noTitle","allowCreateTiles","hasGo","excludeAppsFromList","newApps","noOfficeApps","setViewedItems","removeViewedItems","UserProfile","checkIfLiquitClaim","startLiquit","getLiquitList","liquitClaims","array","claim","userPrincipal","relogin","reject","Liquit","Initialize","startSSO","liquitToken","SSO","username","identitySource","clientId","fault","Applications","List","code","icon","offlineLink","Session","ID","getCatelog","Catalog","userProfileData","viewedTiles","newViewedTiles","tile","documentsForResult","bootTipsTricks","getTipsTricks","bootSiteKnowledge","getSiteKnowledge","deleteNews","postNews","news","Id","oldNews","nn","localforage","setItem","store","history","formFields","account","authorId","localAccountId","base64","currentImage","itNewsItems","objectUrl","lenght","cachedItems","uid","moduleId","postEvent","deleteEvents","eventsItems","endDate","kbs","calls","serviceRequests","serviceRequest","callId","getUsersRequest","deleteUserReqest","userRequests","requests","incidentRequest","calltypeid","subject","emotionscore","sentiment","emailaddress","phonenumber","mobilePhone","voornaam","tussenvoegsel","achternaam","afdeling","rol","emailadres","telefoonnummer","functie","omschrijving","datum","typeLicentie","activateDefender","officeBackup","addToGroups","typeDesc","creationDate","lastUpdate","request","callid","rightsRequests","index2","sharedMailbox","linkMailbox","forwardMailTo","singleAction","toevoegen","rollen","email","creationDatrequest","deleteWorkplaceReqest","workplaceRequests","fetchTeams","joinedTeams","teamsData","team","teamPhoto","teamData","allSettled","channelsFetched","photo","webUrl","channels","teamChannels","parsedChannels","newTeams","channelID","fetchSharePointSites","fetchSharePointDrive","fetchSharePointDriveChildren","fetchSharePointFolder","clearSharePoint","createFileFromTemplate","sharepointSites","searchResult","isFolder","sites","drives","folder","base64ToBinary","receivedBase64String","binaryString","byteArray","GOClient","graphToken","sharepointClient","pfdUrl","local","itemId","getDownloadUrl","downloadUrl","useMetaData","driveId","getDocumentBase64String","binaryData","fileName","saveFileTo","saveWhere","parentId","parentDriveID","wizardactions","setPeople","fetchPeople","fetchNextPeoplePage","parsePeople","anyPeopleRequest","startStopStatusUpdates","backgroundSync","colleagueGroup","peopleResult","nextLink","peopleResultValue","replacedLink","peopleResponse","peopleData","person","givenName","statePerson","availability","activity","userIDs","NewsObject","setID","_newsItem","setAuthor","author","setContent","setSite","setDate","parsedDate","setDateModified","dateModified","setTitle","setType","setImageUrl","setTenantId","tenantId","setUrl","setApi","getNewsObject","getNewsFromChannel","getWebsiteNews","getRssNews","getSharepointNews","postprocess","setLastViewedItems","parseLastViewed","containsGo","currentItems","widget","commonNews","modified","localforageKeys","k","currentItemsKeys","allItems","parseCommonNewsItems","parsedNews","newsObject","imgUrl","rssParser","parseRssItems","parsedItems","changedItems","newsResponse","oldItems","parseSharepointNewsItems","o","Modified","parsedChangedItems","parsed","sharepointToken","isNaN","sharepointUser","getResponse","pictureUrl","orginalUrl","getItem","pictureData","parser","viewedItems","viewedNews","newViewed","viewed","viewedItem","AuthorId","CanvasContent1","parseSharePointContent","ServerRelativeUrl","FirstPublishedDate","BannerImageUrl","authors","feed","published","enclosures","links","extra","images","divPlace","video","imagesRegex","test","replaceAll","exec","embed","decodeURI","ShoutObject","_shoutItem","setDescription","setTopics","topics","getShoutObject","getShoutFromChannel","getYammerShout","getSharepointShout","parameters","parseShoutContent","shouts","announcements","references","m","announcement","reference","sender_id","t","topic","parseYammerShout","shout","parsedShout","shoutObject","full_name","rich","created_at","web_url","mugshot_url","selector","selected","parseSharepointShout","shoutsCompleted","viewedShouts","dateModifed","BlogObject","_blogItem","setOpenExternal","bool","openExternal","getBlogObject","getBlogsFromChannel","getJsonBlogs","getRssBlogs","getWebsiteBlogs","getSharepointBlogs","websiteBlogs","commonBlogs","authorBlob","parseCommonBlogs","parsedBlogs","blogObject","BlogOBject","parseSharepointBlogs","Author","getFeedsByChannel","checkDifferences","array1","array2","min","countNotMatched","notMatched","GET_MULTICHANNEL_FEEDS","currentFeeds","feedsConfig","oldFeed","differences","difference","SocialObject","_socialItem","setOpenDirect","openDirect","setLikes","int","likes","setTimestamp","timestamp","getSocialObject","getSocialFromChannel","getEmbraceItems","getYammerItems","opendirect","oldestItem","valueOf","offset","getTimezoneOffset","embraceItems","Items","parseEmbraceSocial","parseYammerItems","parsedItem","socialObject","parseYammerContent","liked_by","socialCompleted","viewedSocial","parseEmbraceContent","parsedSocial","PersonFullName","Timestamp","Likes","PersonAvatar","getState","AppSaga","LayoutSaga","AuthSaga","GraphSaga","UserSaga","BirthdaySaga","DocumentSaga","TasksSaga","NotificationSaga","CalendarSagas","WidgetSaga","AppsSaga","EventsSaga","BlogSaga","ReportsSaga","CommonNewsSaga","ITNewsSaga","CommonEventsSaga","CommonBlogsSaga","KnowledgeBaseSaga","CallsSaga","LearningSaga","SlideOutSaga","NotificationCollectorSaga","SolutionSaga","SearchSaga","DocumentsWizardSaga","TipsTricksSaga","SiteKnowledgeSaga","TeamsSaga","SharepointSaga","PeopleSaga","MultiChannelNewsSaga","MultiChannelBlogSaga","MessageSage","MultiChannelShoutSaga","MultiChannelFeedSaga","MultiChannelSocialSaga","MultiChannelEventsSaga","UserRequestSaga","RightsRequestSaga","WorkplaceRequestSaga","createHistory","createBrowserHistory","routersMiddleware","routerMiddleware","sagaMiddleware","createSagaMiddleware","middlewares","persistConfig","storage","blacklist","persistedReducer","persistReducer","configureStore","initialState","createStore","compose","applyMiddleware","persistor","persistStore","clearPersist","purge","run","setAppOnline","setActiveFeedItem","CircleIcon","PageLoader","connect","ownProps","Loader","css","loadingPlaceholder","Heading","marginBottom","positionBottom","position","border","h2","LinkContainer","UnderLinkContainer","Link","TeamWrapper","Team","TeamLoader","CheckboxWrapper","Checkbox","Label","label","CheckboxCircle","checked","onChange","GET_NEWS","getNews","GET_BLOGS","POST_BLOG","getBlogs","getTiles","translation","hello","myProfile","vacationDays","editSettings","openTutorial","colorSetting","colorExplanation","autoDarkMode","ownAppTile","editAppTile","startMenu","helpMenu","storeMenu","selfMenu","appointment","tickets","useOfficeWizard","showScrollbars","openAppsExistingWindow","more","edit","mine","noItemsFound","createNews","createEvent","earlierThisWeek","open","openToDo","createTask","createAppointment","noAppointments","noBirthdays","hisBirthday","congratulations","openOneDrive","kindOfDocument","createBlog","openOriginal","searchingFor","whatToSearch","persons","colleagues","emails","createTicket","myTickets","itNews","noLink","new","my","ticket","BirthdayItem","Box","Wrapper","flex","Icon","img","Text","fullWidth","withTranslate","none","src","Button","button","onClick","hoverBob","keyframes","hoverBobFloat","SearchInput","input","SearchWrapper","gridArea","wrapped","Magnifier","SearchBar","_changeSearchInput","searchValue","preventDefault","dashboard","Fragment","slideout","faSearch","onSubmit","handleSubmit","bind","placeholder","Component","SlideOutData","dispatch","bindActionCreators","searchActions","getUserApplicationSettings","defaultStartInPopup","userAgent","mobile","screenX","screenLeft","screenY","screenTop","outerWidth","documentElement","clientWidth","outerHeight","clientHeight","targetWidth","targetHeight","V","screen","width","features","openAppInTarget","windowProperties","join","startInPopup","launchApp","webDavUrl","originalLink","dataType","popupLink","openPopup","newLink","toLowerCase","customProtocolCheck","openNewWindow","DocumentsList","AddNoLink","ListHeading","Section","DocumentsListSlide","Container","DocumentWrapper","MenuList","ul","parent","MenuListItemInner","MenuListItem","li","MenuListItemLabel","Nav","nav","Menu","_checkShoutItems","setState","shoutWidgets","_getCalls","_filterShoutItems","_getIsNew","lastShoutViews","_renderShoutWidgets","w","slideoutData","top","zIndex","fontSize","lineHeight","timer","clearInterval","setInterval","prevProps","ReactTooltip","rebuild","faUserFriends","faTasks","faCalendarAlt","hulpDeactivated","faConciergeBell","withRouter","upcomingBirthdays","callsActions","marginTop","NoLink","useClass","linkUrl","href","SET_POPUP_DATA","setActivePopup","SET_POPUP_YEAR_OVERVIEW_DATA","setActiveYearOverviewPopup","DocumentsListItem","Info","InfiniteScrollWrapper","hasNextPage","isNextPageLoading","loadNextPage","renderItem","itemHeight","listHeight","itemCount","loadMoreItems","isItemLoaded","Item","onItemsRendered","ref","height","itemSize","Avatar","large","alt","MenuButtonList","NavLinkInner","SkewedNavLink","MenuButtonListItem","_checkGOSource","checkedWidgets","go","exact","to","faStar","faQuestion","faBrush","faStore","sharepointUserId","sharepointSite","EncodedAbsUrl","deleteBlog","updatedItems","lastUpdated","commonEvents","oldItem","updatedItem","allItem","eventItems","parseCommonEvents","parsedEvents","eventObject","EventObject","setAllEventData","setPicture","setExternalUrl","setWidget","setLocation","getEventObject","_eventItem","Image","Name","LetterAvatar","pure","useState","inView","setInView","useEffect","isIntersecting","_getAvatarLetters","DocumentsLoader","_handleResize","_getListHeight","_fetchUserPhoto","_fetchMoreData","_setSearchTerm","_filterSlideItems","lowercased","returnItems","_mapBirthdays","popup","_mapBirthdaysSlide","_prepareDemo","_openBirthdayUrl","getElementById","parentHeight","innerWidth","perPage","page","_getBirthdays","scrollItems","demo","setBirthdayDismissed","birthdayActions","TeamsChannelList","BreadCrumbsList","ListTeam","_setItemActive","activeSharepointSite","_displayBreadCrumbs","breadCrumbs","crumbs","faFolderMinus","_fetchSharepointDrives","newArray","_fetchSharepointDriveChildren","_fetchSharepointFolder","_getSharepointSites","saveButtonAction","_mapSharepoint","explorerMode","faFolder","faEllipsisH","_mapDrives","_mapDriveChildren","_mapFolder","currentTarget","timeout","divElement","handleSearch","sharepointState","_loadingItem","HeaderWrapper","Header","HeaderLoader","SliderWrapper","Slide","SlideInner","SlideInnerContent","CloseSlide","h1","SlideTitle","SlideDescription","p","DarkModeSelector","DarkModeSelectorColumn","DarkModeCheckbox","DarkmodeSlide","_setDarkMode","light","dark","ListItem","ListItemContent","ListItemImage","ListSlide","faListUl","faBell","VideoSlide","frameBorder","allow","allowFullScreen","SelectCheckboxColumn","SettingSlide","defaultVal","dangerouslySetInnerHTML","__html","falseVal","_settingChanged","trueVal","ContentSlide","_setInvisible","classList","contains","_dismissSlider","alwaysVisible","pathname","children","prev","goTo","close","React","isLoaded","lazyload","mouseDrag","controls","Slider","onGoTo","dir","ts","slider","Children","child","cloneElement","fadeIn","Slides","birthdayEnabled","Body","LoaderText","NavBar","NavBarList","NavBarListItem","Chatbot","CollapsibleSearch","SearchButton","ButtonWrapper","SettingsButton","shakeBubble","ColumnLeft","ColumnRight","ColumnCenter","LogoWrapper","HeaderGrid","ResponsiveImage","notificationsEnabled","fixed","hiddenMobileSlideout","logo","Notifier","Home","lazy","SlideOutRenderer","PopupRenderer","SlideOutBottomRenderer","SlideOutOverlayRenderer","OnlineHelp","SelfService","Store","StoreActionMapper","graphActions","Main","authenticated","loaded","debugCheck","failure","checkVisibility","hidden","_userScrolled","_checkTenantConfigured","isTenantConfigured","Clients","_renderChatbot","chatbot","_renderLoader","polling","_renderApplication","Helmet","rel","path","render","fallback","reload","configure","_doAuthenticationAndBoot","setDebuggingMode","darkmodeSettings","debugging","buffer","warning","warn","pushDebugging","logger","args","arguments","curTime","statusText","log_prefix","unshift","level","Function","prevState","_setLanguage","authService","savedLocale","languages","l","translations","SignIn","library","fas","far","onBeforeLift","appActions","buildMsalConfig","authority","tenant","knownAuthorities","cloudDiscoveryMetadata","redirectUri","navigateToLoginRequestUrl","clientCapabilities","cache","cacheLocation","storeAuthStateInCookie","system","windowHashTimeout","iframeHashTimeout","loadFrameTimeout","asyncPopups","AuthService","msalConfig","HandlePageLoadEvent","handleRedirectPromise","authResult","HandleRedirectResponse","currentAccounts","getAllAccounts","tokenRequest","forceRefresh","applicationOnline","acquireTokenSilent","InteractionRequiredAuthError","GetIdToken","Error","PublicClientApplication","prompt","loginHint","loginRedirect","accountInfo","getAccountByUsername","logoutRequestPayload","isLocalhost","Boolean","hostname","registerValidSW","swUrl","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","onSuccess","StatusWrapper","StatusInner","StatusLogo","GlobalStyle","createGlobalStyle","AppWrapper","setAuthService","setError","isAppOnline","setIsAppOnline","_handleAuthentication","stack","querySelector","favicon","setAttribute","_setAppOnlineState","handleNetworkChange","startApp","ReactDOM","setup","startAfterSetup","mode","newsTreshold","blogTreshold","eventsTreshold","process","caches","cacheNames","cacheName","ready","unregister","checkValidServiceWorker","serviceWorkerRegistration"],"mappings":"kIAAA,8jDACO,IACMA,EAAqB,SAAAC,GAAK,OAAIA,EAAMC,WAAWC,iBAE/CC,EAAqB,SAAAH,GAAK,OAAIA,EAAMI,YAAYC,aAChDC,EAAe,SAAAN,GAAK,OAAIA,EAAMO,cAAcC,MAC5CC,EAAuB,SAAAT,GAAK,OAAIA,EAAMU,aAAaC,QACnDC,EAAuB,SAAAZ,GAAK,OAAIA,EAAMU,aAAaG,mBAGnDC,EAAiB,SAAAd,GAAK,OAAIA,EAAMe,YAAYC,aAK5CC,EAAwB,SAAAjB,GAAK,OAAIA,EAAMO,cAAcW,gBAWrDC,EAAc,SAAAnB,GAAK,OAAIA,EAAMoB,OAAOC,UACpCC,EAAiB,SAAAtB,GAAK,OAAIA,EAAMoB,OAAOG,aACvCC,EAAkB,SAAAxB,GAAK,OAAIA,EAAMoB,OAAOK,cACxCC,EAAsB,SAAA1B,GAAK,OAAIA,EAAMoB,OAAOO,kBAC5CC,EAAkB,SAAA5B,GAAK,OAAIA,EAAMoB,OAAOS,cACxCC,EAAkB,SAAA9B,GAAK,OAAIA,EAAMoB,OAAOW,cACxCC,EAAsB,SAAAhC,GAAK,OAAIA,EAAMoB,OAAOa,kBAI5CC,EAAa,SAAAlC,GAAK,OAAIA,EAAMmC,QAAQC,SAGpCC,EAAU,SAAArC,GAAK,OAAIA,EAAMsC,MAGzBC,EAAiB,SAAAvC,GAAK,OAAIA,EAAMwC,KAAKC,SACrCC,EAAiB,SAAA1C,GAAK,OAAIA,EAAMwC,KAAKG,kBACrCC,EAA4B,SAAA5C,GAAK,OAAIA,EAAMwC,KAAKC,QAAQI,MACxDC,EAAoB,SAAA9C,GAAK,OAAIA,EAAMwC,KAAKO,gBACxCC,EAAY,SAAAhD,GAAK,OAAIA,EAAMiD,KAAKC,QAChCC,EAA0B,SAAAnD,GAAK,OAAIA,EAAMwC,KAAKG,kBAK9CS,EAAe,SAAApD,GAAK,OAAIA,EAAMqD,MAAMC,OACpCC,EAAiB,SAAAvD,GAAK,OAAIA,EAAMwD,OAAOC,OACvCC,EAAe,SAAA1D,GAAK,OAAIA,EAAM2D,KAAKC,WAGnCC,EAAuB,SAAA7D,GAAK,OAAIA,EAAM8D,cAAcC,eACpDC,EAAsB,SAAAhE,GAAK,OAAIA,EAAM8D,cAAcG,KACnDC,EAAgC,SAAAlE,GAAK,OAAIA,EAAM8D,cAAcK,aAG7DC,EAAmB,SAAApE,GAAK,OAAIA,EAAMqE,sBAAsBN,eAGxDO,EAAoB,SAAAtE,GAAK,OAAIA,EAAMuE,SAASC,gBAC5CC,EAAe,SAAAzE,GAAK,OAAIA,EAAMuE,SAASE,cAGvCC,EAAW,SAAA1E,GAAK,OAAIA,EAAM2E,MAAMC,OAIhCC,EAAe,SAAA7E,GAAK,OAAIA,EAAM8E,IAAIC,WAElCC,EAAe,SAAAhF,GAAK,OAAIA,EAAMiF,SAASC,WAIvCC,EAA2B,SAAAnF,GAAK,OAAIA,EAAMoF,iBAAiBC,WAC3DC,EAA2B,SAAAtF,GAAK,OAAIA,EAAMuF,iBAAiB3B,WAC3D4B,EAA4B,SAAAxF,GAAK,OAAIA,EAAMyF,kBAAkBC,YAC7DC,EAAuB,SAAA3F,GAAK,OAAIA,EAAM4F,iBAAiBC,OACvDC,EAA6B,SAAA9F,GAAK,OAAIA,EAAM+F,mBAAmBC,aAC/DC,EAAuB,SAAAjG,GAAK,OAAIA,EAAMkG,kBAAkBvF,QAExDwF,EAA0B,SAAAnG,GAAK,OAAIA,EAAMuF,iBAAiB5C,kBAC1DyD,EAA4B,SAAApG,GAAK,OAAIA,EAAMyF,kBAAkB9C,kBAC7D0D,EAA4B,SAAArG,GAAK,OAAIA,EAAM+F,mBAAmBpD,kBAE9D2D,EAAY,SAAAtG,GAAK,OAAIA,EAAMuG,OAAOC,QAClCC,EAAgB,SAAAzG,GAAK,OAAIA,EAAMuG,OAAOG,aAEtCC,EAAsB,SAAA3G,GAAK,OAAIA,EAAMuG,OAAOK,YAG5CC,EAAkB,SAAA7G,GAAK,OAAIA,EAAM8G,SAASC,Y,+BChGvD,wqBACO,IAAMC,EAAY,kBAAMC,OAAOC,aAAaC,OAEtCC,EAAe,MAGfC,EAAM,QACNC,EAAM,QACNC,EAAK,QACLC,EAAK,SACLC,EAAS,SACTC,EAAQ,SACRC,EAAK,SACLC,EAAM,SAENC,EAAe,OAEfC,EAAY,iBAAkBD,EAAc,YAE5CE,EAAc,CAC1BC,UAAY,UACZC,SAAW,WAICC,EAAgB,CAC5BF,UAAY,UACZC,SAAW,UACXE,aAAc,WAGFC,EAAiB,CAC7BJ,UAAY,UACZC,SAAW,WAICI,EAAe,CAC3BL,UAAY,UACZC,SAAW,WAGCK,EAAmB,CAC/BN,UAAY,UACZC,SAAW,WAGCM,EAAyB,CACrCP,UAAY,UACZC,SAAW,WAGCO,EAAwB,CACpCR,UAAY,UACZC,SAAW,WAGCQ,EAAkB,CAC9BT,UAAY,UACZC,SAAW,Y,+BC3DZ,IAAMS,EAAU,CACZC,iBAAkB,mBAClBC,iBAAkB,mBAClBC,gBAAiB,kBACjBC,cAAe,gBACfC,aAAc,eACdC,aAAc,eACdC,sBAAuB,wBACvBC,sBAAuB,wBACvBC,eAAgB,iBAChBC,eAAgB,iBAChBC,uBAAwB,yBACxBC,uBAAwB,yBACxBC,oBAAqB,sBACrBC,cAAe,gBACfC,eAAgB,iBAChBC,eAAgB,iBAChBC,eAAgB,iBAChBC,cAAe,gBACfC,uBAAwB,yBACxBC,cAAgB,gBAChBC,qBAAuB,uBACvBC,qBAAuB,uBACvBC,wBAA0B,0BAC1BC,oBAAsB,sBACtBC,oBAAsB,sBACtBC,2BAA6B,6BAE7BC,YAAa,iBAAO,CAChBC,KAAM5B,EAAQK,eAIlBxG,eAAgB,iBAAO,CACnB+H,KAAM5B,EAAQC,mBAGlB4B,kBAAoB,SAACC,GAAD,MAAa,CAC7BF,KAAO5B,EAAQsB,qBACfS,QAAUD,IAGdE,qBAAuB,SAAAF,GAAM,MAAK,CAC9BF,KAAO5B,EAAQuB,wBACfQ,QAAUD,IAGdG,gBAAkB,SAACC,EAAOC,GAAR,MAAqB,CACnCP,KAAO5B,EAAQqB,qBACfU,QAAU,CACNG,MAAQA,EACRC,QAAUA,KAIlBC,aAAc,iBAAO,CACjBR,KAAM5B,EAAQS,iBAElB4B,qBAAsB,iBAAO,CACzBT,KAAM5B,EAAQW,yBAElB2B,oBAAqB,iBAAO,CACxBV,KAAM5B,EAAQO,wBAGlBgC,YAAa,SAACR,GAAD,MAAc,CACvBH,KAAM5B,EAAQc,cACdiB,QAASA,IAGbS,aAAc,SAACT,GAAD,MAAc,CACxBH,KAAM5B,EAAQe,eACdgB,QAASA,IAGbU,kBAAoB,SAACV,GAAD,MAAc,CAC9BH,KAAM5B,EAAQa,oBACdkB,QAAUA,IAGdW,mBAAqB,SAACX,GAAD,MAAc,CAC/BH,KAAM5B,EAAQ2C,qBACdZ,QAAUA,IAIda,wBAA0B,SAACC,EAAMC,GAAP,MAAoB,CAC1ClB,KAAM5B,EAAQ0B,2BACdK,QAAU,CACNc,OACAC,cAKG9C,O,ogBC9FF+C,EAAgB,SAACC,GAO1B,IANA,IAAIC,EAAaD,EAAQE,QAAQ,WAAa,EAC1CC,EAAMH,EAAQI,OAAOH,GAEnBI,EAAa9E,OAAO+E,KAAKH,GACzBI,EAAc,IAAIC,YAAYH,EAAWI,QACzCC,EAAY,IAAIC,WAAWJ,GACxBK,EAAI,EAAGA,EAAIP,EAAWI,OAAQG,IACnCF,EAAUE,GAAKP,EAAWQ,WAAWD,GAGzC,OADa,IAAIE,KAAK,CAACJ,GAAY,CAAE9B,KAAM,gBAIlCmC,EAAwB,SAACC,GAClC,OAAa,OAANA,QAAM,IAANA,OAAA,EAAAA,EAAQC,OAAO,GAAGC,gBAAlB,OAAkCF,QAAlC,IAAkCA,OAAlC,EAAkCA,EAAQG,MAAM,KAG9CC,EAAgB,SAACC,EAAYC,GAEtC,OAAID,EAAWZ,OAASa,EACbD,EAAWjB,OAAO,EAAGkB,GAAS,KAGlCD,GAGEE,EAAY,SAACP,EAAQM,GAE9B,OAAIN,EAAOP,OAASa,EACTN,EAAOZ,OAAO,EAAGkB,GAGrBN,GAGEQ,EAAY,SAACC,GACvB,IAAIC,EAAMC,SAASC,cAAc,OAEjC,OADAF,EAAIG,UAAYJ,EACTC,EAAII,aAAeJ,EAAIK,WAAa,IAOjCC,EAAQ,SAACC,GAClB,OAAkB,GAAVA,EAAgB,KAGfC,EAAqB,SAACC,GAC/B,OAAY,OAARA,GAAwB,KAARA,EAAmB,GACvC,OAAIA,QAAJ,IAAIA,KAAKC,SAAS,QACFD,EAAIE,MAAM,QACT,GAAK,OAEfF,GAKEG,EAAkB,SAACC,GAA6B,IAApBC,EAAmB,uDAAN,EAClD,OAAKD,EACAA,EAAQH,SAAS,cAGfG,EAFIA,EAAQE,QAAQ,IAAK,eAAiBD,EAAa,KAFzC,IA+BrBE,EAAkB,kBAAM,IAAIC,cACxBC,EAAWC,MAAMC,UAAjBF,OAER,IACIF,IACF,MAAOK,GACLL,EAAkB,kBAAM,IAAIM,eAAe,IAAIC,eAG5C,IAAMC,EAAiB,SAACC,GAS3B,IANA,IAAMC,EAAQR,EAAOS,MAAM,GAAI,CAACF,IAC5BvC,EAAI,EACAH,EAAW2C,EAAX3C,OAEF6C,EAAeZ,IAEd9B,EAAIH,EAAQG,IACC,MAAZwC,EAAMxC,IAAcwC,EAAMxC,aAAc2C,MACxCD,EAAavL,MAAMyL,IAAIJ,EAAMxC,IAIrC,OAAO0C,EAAaF,OAIXK,EAAe,SAACC,EAAUC,GACrC,OAAO,IAAIC,SAAQ,SAAAC,GACjB,IAAIV,EAAO,IAAII,KAAK,CAACG,GAAWC,GAC5BG,EAAS,IAAIC,WAEjBD,EAAOE,OAAS,SAASC,GACvBJ,EAAQI,EAAMC,OAAOC,SAIvBL,EAAOM,cAAcjB,OAIZkB,EAAe,SAACC,GACzB,OAAO,IAAIV,SAAQ,SAAAC,GAEf,IAAIC,EAAS,IAAIC,WAGjBD,EAAOE,OAAS,SAAUC,GACtBJ,EAAQI,EAAMC,OAAOC,SAIzBL,EAAOM,cAAcE,OAMvBC,EAAa,CACfC,IAAK,UACLC,KAAM,aACNC,KAAM,QACNC,KAAM,OACNC,IAAK,MACLC,KAAM,QACNC,IAAK,OAGIC,EAAa,SAAAC,GACtB,IAAMC,EAAO,OAAGD,QAAH,IAAGA,OAAH,EAAGA,EAAc3C,MAAM,KAAKlB,OAAO,GAAG,GAGnD,QAAKoD,EAAWU,IACLV,EAAWU,IAMpBC,EAAa,CACfV,IAAK,cACLC,KAAM,iBACNU,WAAa,iBACbT,KAAM,YACNU,MAAQ,YACRT,KAAM,WACNU,KAAO,WACPT,IAAK,UACLC,KAAM,YACNC,IAAK,WAEIQ,EAAa,SAAAN,GACtB,IAAMC,EAAUD,EAAa3C,MAAM,KAAKlB,OAAO,GAAG,GAClD,OAAK+D,EAAWD,GACLC,EAAWD,GAGf,gBAIEM,EAAU,SAAVA,EAAWC,EAAKC,GAA6B,IAAlBC,EAAiB,uDAAP,GACxCC,EAAID,EASV,OARAE,OAAOC,KAAKL,GAAKM,SAAQ,SAAAC,GACrB,IAAM7G,EAAQsG,EAAIO,GACd7G,IAAUuG,GAA8B,kBAAVvG,EAC9ByG,EAAEK,KAAKR,GACiB,kBAAVtG,GACdqG,EAAQrG,EAAOuG,EAAWE,MAG3BA,I,iCC9MX,IAAM3I,EAAU,CACfiJ,QAAS,UACTC,YAAa,cACbC,WAAa,SAACpH,GAAD,MAAc,CAC1BH,KAAM5B,EAAQiJ,QACdlH,QAAUA,KAIG/B,O,sCCTf,IAAMA,EAAU,CACZoJ,aAAc,eACdC,aAAc,eACdC,gBAAiB,kBACjBC,yBAA0B,2BAC1BC,2BAA4B,6BAC5BC,yBAA0B,2BAC1BC,yBAA0B,2BAC1BC,kBAAmB,oBACnBC,kBAAmB,oBACnBC,UAAW,YACXC,UAAW,YACXC,aAAc,eACdC,aAAc,eACdC,WAAY,aACZC,WAAY,aACZC,WAAY,aACZC,WAAY,aAEZC,YAAa,SAACtI,GAAD,MAAc,CACvBH,KAAM5B,EAAQoJ,aACdrH,QAASA,IAGbuI,cAAe,SAACvI,GAAD,MAAc,CACzBH,KAAM5B,EAAQsJ,gBACdvH,QAASA,IAGbwI,sBAAuB,SAACxI,GAAD,MAAc,CACjCH,KAAM5B,EAAQuJ,yBACdxH,QAASA,IAGbyI,uBAAwB,SAACzI,GAAD,MAAc,CAClCH,KAAM5B,EAAQyJ,yBACd1H,QAASA,IAGb0I,iBAAkB,SAAC1I,GAAD,MAAc,CAC5BH,KAAM5B,EAAQ2J,kBACd5H,QAASA,IAGb2I,SAAU,SAAC3I,GAAD,MAAc,CACpBH,KAAM5B,EAAQ6J,UACd9H,QAASA,IAGb4I,YAAa,SAAC5I,GAAD,MAAc,CACvBH,KAAM5B,EAAQ+J,aACdhI,QAASA,IAGb6I,UAAW,SAAC7I,GAAD,MAAc,CACrBH,KAAM5B,EAAQiK,WACdlI,QAASA,IAGb8I,UAAW,SAAC9I,GAAD,MAAc,CACrBH,KAAM5B,EAAQmK,WACdpI,QAASA,KAIF/B,O,6BCjEf,IAAMA,EAAU,CACf8K,kBAAoB,oBACpBC,kBAAoB,oBACpBC,oBAAsB,sBACtBC,qBAAuB,uBACvBC,2BAA6B,6BAC7BC,yBAA2B,2BACxBC,4BAA6B,8BAC7BC,gBAAiB,kBACjBC,aAAc,kBACdC,kBAAmB,oBACnBC,oBAAqB,sBACrBC,qBAAsB,uBACtBC,mBAAoB,qBACpBC,QAAS,UACTC,iBAAkB,mBAClBC,gBAAiB,kBACjBC,mBAAoB,qBACpBC,cAAe,gBAEfC,OAAQ,SAACjK,GAAD,MAAc,CAClBH,KAAM5B,EAAQ2L,QACd5J,QAASA,IAEbkK,oBAAqB,SAAClK,GAAD,MAAc,CAC/BH,KAAM5B,EAAQ8L,mBACd/J,QAASA,IAEbmK,eAAgB,SAACnK,GAAD,MAAc,CAC1BH,KAAM5B,EAAQ+L,cACdhK,QAASA,IAEboK,gBAAiB,SAACpK,GAAD,MAAc,CAC3BH,KAAM5B,EAAQ4L,iBACd7J,QAASA,IAEbqK,eAAgB,SAACrK,GAAD,MAAc,CAC1BH,KAAM5B,EAAQ6L,gBACd9J,QAASA,IAEbsK,YAAa,SAACtK,GAAD,MAAc,CACvBH,KAAM5B,EAAQsL,aACdvJ,QAASA,IAEbuK,gBAAiB,iBAAO,CACpB1K,KAAM5B,EAAQuL,oBAElBgB,iBAAkB,iBAAO,CACrB3K,KAAM5B,EAAQ0L,qBAElBc,kBAAmB,SAACzK,GAAD,MAAc,CAC7BH,KAAM5B,EAAQwL,oBACdzJ,QAASA,IAEb0K,mBAAoB,SAAC1K,GAAD,MAAc,CAC9BH,KAAM5B,EAAQyL,qBACd1J,QAASA,IAEhB2K,yBAA2B,SAAC3K,GAAD,MAAc,CACxCH,KAAO5B,EAAQkL,2BACfnJ,QAAUA,IAGX4K,mBAAqB,iBAAO,CAC3B/K,KAAO5B,EAAQgL,sBAGhB4B,uBAAyB,SAAE7K,GAAF,MAAgB,CACxCH,KAAO5B,EAAQmL,4BAIFnL,O,+BCxEf,WAEMA,EAAU,CACf6M,eAAiB,iBACdC,eAAiB,iBACpBC,uBAAyB,yBACzBC,uBAAyB,yBACzBC,qBAAuB,uBACvBC,gCAAkC,kCAClCC,8BAAgC,gCAChCC,wBAA0B,0BAC1BC,sBAAwB,wBACxBC,iBAAmB,mBACnBC,uBAAyB,yBACzBC,gCAAkC,kCAClCC,wBAA0B,0BAC1BC,eAAiB,iBACjBC,mBAAoB,qBAEjBC,mBAAoB,iBAAO,CACvBhM,KAAM5B,EAAQ6M,iBAGrBgB,qBAAsB,SAACC,GAAD,MAAa,CAClClM,KAAO5B,EAAQ+M,uBACfhL,QAAU+L,IAGXC,qBAAsB,SAACC,GAAD,MAAqB,CAC1CpM,KAAO5B,EAAQgN,uBACfjL,QAAUiM,IAGXC,6BAA8B,SAACD,GAAD,MAAqB,CAClDpM,KAAO5B,EAAQkN,gCACfnL,QAAUiM,IAGXE,sBAAuB,SAACF,GAAD,MAAqB,CAC3CpM,KAAO5B,EAAQoN,wBACfrL,QAAUiM,IAGXG,gBAAiB,SAACpM,GAAD,MAAc,CAC9BH,KAAO5B,EAAQsN,iBACfvL,QAAUA,IAGXqM,gBAAiB,SAACrM,GAAD,MAAc,CAC9BH,KAAO5B,EAAQ2N,mBACf5L,QAAUA,IAGXsM,2BAA4B,SAACtM,GAAD,MAAc,CACzCH,KAAO5B,EAAQmN,8BACfpL,QAAUA,KAIG/B,O,6BC3Df,IAAMA,EAAU,CACfsO,YAAc,cACXC,iBAAkB,mBAClBC,cAAe,gBACfC,sBAAuB,wBACvBC,iBAAkB,mBAClBC,kBAAmB,oBACnBC,kBAAmB,oBACnBC,kBAAmB,oBACnBC,SAAU,WACVC,kBAAmB,oBACnBC,mBAAoB,qBACpBC,gBAAiB,kBACjBC,cAAe,gBACfC,gCAAiC,kCACjCC,4BAA6B,8BAC7BC,iBAAkB,mBAClBC,kBAAmB,oBAEtBC,gBAAkB,SAACC,GAAD,MAAa,CAC9B5N,KAAO5B,EAAQ6O,kBACf9M,QAAUyN,IAGRC,QAAS,SAACC,GAAD,MAAW,CAChB9N,KAAM5B,EAAQ8O,SACd/M,QAAS2N,KAIF1P,O,6BC9Bf,IAAMA,EAAU,CACf2P,oBAAsB,sBACtBC,4BAA6B,8BAC7BC,kBAAmB,oBACnBC,yBAA2B,2BAC3BC,kBAAoB,oBACpBC,gBAAkB,kBAElBC,kBAAmB,SAAClO,GAAD,IAAU5H,EAAV,wDAAwB+V,EAAxB,wDAAuCC,EAAvC,wDAA4DC,EAA5D,8DAAoF,CACtGxO,KAAM5B,EAAQ8P,yBACd/N,QAAU,CACTsO,KAAOtO,EACPmO,MAAQA,EACRC,YAAcA,EACdC,WAAYA,EACZjW,KAAMA,KAIRmW,yBAA2B,SAACvO,GAAD,MAAsE,CAChGH,KAAM5B,EAAQ4P,4BACd7N,QAAU,CACTsO,KAAOtO,KAITwO,gBAAiB,SAACxO,GAAD,MAAc,CAC9BH,KAAM5B,EAAQ6P,kBACd9N,QAASA,KAII/B,O,6BChCf,IAAMA,EAAU,CACZwQ,YAAa,cACbtB,cAAe,gBACfuB,cAAgB,gBAChBC,oBAAsB,sBACtBC,mBAAqB,qBACrBC,YAAc,cACdC,YAAc,SAAC9O,GAAD,MAAc,CAC9BH,KAAM5B,EAAQyQ,cACd1O,QAAUA,IAGX+O,WAAa,SAAC/O,GAAD,MAAc,CAC1BH,KAAO5B,EAAQ4Q,YACf7O,QAAUA,IAGXgP,kBAAmB,SAAChP,GAAD,MAAc,CAChCH,KAAM5B,EAAQ0Q,oBACd3O,QAAUA,IAGXiP,iBAAkB,SAACjP,GAAD,MAAc,CAC/BH,KAAM5B,EAAQ2Q,mBACd5O,QAAUA,KAKG/B,O,+BC7Bf,IAAMA,EAAU,CACfiR,WAAa,aACVC,WAAa,aAChBC,eAAiB,iBACjBC,qBAAuB,uBACvBC,qBAAuB,uBACvBC,wBAA0B,0BAC1BC,oBAAsB,sBACtBC,iBAAmB,mBACnBC,kBAAoB,oBACpBC,mBAAqB,qBACrBC,iBAAmB,mBACnBC,gBAAkB,kBAClBC,gBAAkB,kBAElBC,eAAiB,SAAC/P,GAAD,MAAc,CAC9BH,KAAO5B,EAAQ2R,iBACf5P,QAAUA,IAGXgQ,cAAgB,SAAChQ,GAAD,MAAc,CAC7BH,KAAO5B,EAAQ4R,gBACf7P,QAAUA,IAGXiQ,cAAgB,SAACjQ,GAAD,MAAc,CAC7BH,KAAO5B,EAAQ6R,gBACf9P,QAAUA,IAGRnE,UAAW,iBAAO,CACdgE,KAAM5B,EAAQiR,aAErBgB,kBAAoB,iBAAO,CAC1BrQ,KAAO5B,EAAQqR,uBAEhBa,aAAc,iBAAO,CACdtQ,KAAM5B,EAAQmR,iBAGrBgB,WAAa,SAACpQ,GAAD,MAAc,CAC1BH,KAAO5B,EAAQyR,kBACf1P,QAAUA,KAIG/B,O,gCC9Cf,IAAMA,EAAU,CACfoS,UAAY,YACZC,UAAY,YACZC,YAAc,cACdC,YAAc,cACdC,gBAAkB,kBAClBC,kBAAoB,oBACpBC,oBAAsB,sBACtBC,gBAAkB,kBAClBC,SAAU,SAAC7Q,GAAD,MAAc,CACvBH,KAAM5B,EAAQoS,UACdrQ,QAAUA,IAEX8Q,WAAY,SAAC9Q,EAASgH,GAAV,MAAmB,CAC9BnH,KAAK5B,EAAQuS,YACbxQ,QAAS,CAAEA,QAAUA,EAASgH,IAAMA,KAErC+J,cAAe,SAAC/Q,EAASgH,EAAKgK,GAAf,MAA4B,CAC1CnR,KAAK5B,EAAQwS,gBACbzQ,QAAS,CAAEA,QAAUA,EAASgH,IAAMA,EAAKgK,QAAUA,KAEpDC,gBAAiB,SAACjR,EAASgH,GAAV,MAAmB,CACnCnH,KAAK5B,EAAQyS,kBACb1Q,QAAS,CAAEA,QAAUA,EAASgH,IAAMA,KAErCkK,kBAAmB,SAAClR,EAASgH,GAAV,MAAmB,CACrCnH,KAAK5B,EAAQ0S,oBACb3Q,QAAS,CAAEA,QAAUA,EAASgH,IAAMA,KAErCmK,cAAgB,SAAEnR,GAAF,MAAgB,CAC/BH,KAAO5B,EAAQ2S,gBACf5Q,QAAUA,KAIG/B,O,8BCnCf,IAAMA,EAAU,CACZmT,oBAAqB,sBACrBC,qBAAsB,uBACtBC,oBAAqB,sBACrBC,mBAAoB,qBACpBC,eAAgB,iBAChBC,cAAe,gBACfC,QAAS,UAETC,mBAAoB,iBAAO,CACvB9R,KAAM5B,EAAQmT,sBAGlBQ,gBAAiB,iBAAO,CACpB/R,KAAM5B,EAAQoT,uBAGlBQ,iBAAkB,iBAAO,CACrBhS,KAAM5B,EAAQqT,sBAGlBQ,kBAAmB,iBAAO,CACtBjS,KAAM5B,EAAQsT,qBAGlBQ,YAAa,SAACC,GAAD,MAAW,CACpBnS,KAAM5B,EAAQwT,cACdzR,QAASgS,IAGbC,aAAc,SAACjS,GAAD,MAAc,CACxBH,KAAM5B,EAAQuT,eACdxR,QAASA,IAGbkS,OAAQ,iBAAO,CACXrS,KAAM5B,EAAQyT,WAIPzT,O,8BCxCf,IAAMA,EAAU,CACfkU,kBAAoB,oBACpBC,kBAAoB,oBACpBC,wBAAyB,0BACzBC,kBAAmB,oBACnBC,kBAAmB,oBACnBC,gCAAkC,kCAClCC,kBAAmB,oBACnBC,mBAAoB,qBAEpBC,qBAAuB,SAAC3S,GAAD,MAAc,CACpCH,KAAM5B,EAAQoU,wBACdrS,QAAUA,IAGX4S,gBAAiB,iBAAO,CACvB/S,KAAM5B,EAAQqU,oBAGfO,gBAAkB,SAAE7S,GAAF,MAAgB,CACjCH,KAAO5B,EAAQkU,kBACfnS,QAAUA,IAGX8S,gBAAkB,SAAC9S,GAAD,MAAc,CAC/BH,KAAO5B,EAAQwU,kBACfzS,QAAUA,IAGX+S,WAAY,SAAC/S,GAAD,MAAc,CACzBH,KAAM5B,EAAQyU,mBACd1S,QAASA,KAII/B,O,8BCnCf,IAAMA,EAAU,CACZ+U,6BAA+B,+BAC/BC,6BAA+B,+BAC/BC,6BAA+B,+BAC/BC,kBAAoB,oBACpBC,gBAAkB,kBAErBC,yBAA2B,SAACrT,GAAD,MAAc,CACxCH,KAAM5B,EAAQ+U,6BACdhT,QAAUA,IAGRsT,yBAA2B,SAACtT,GAAD,MAAc,CACrCH,KAAO5B,EAAQgV,6BACfjT,QAAUA,IAEduT,gBAAkB,SAACvT,GAAD,MAAc,CAC5BH,KAAO5B,EAAQkV,kBACfnT,QAAUA,IAEdwT,sBAAwB,SAACxT,GAAD,MAAc,CAClCH,KAAO5B,EAAQmV,gBACfpT,QAAUA,KAIH/B,O,6BC1Bf,IAAMA,EAAU,CACfwV,WAAa,aACbC,WAAa,aACbC,iBAAkB,mBAClBC,yBAA0B,2BAC1BC,gBAAiB,kBACjBC,gBAAiB,kBACjBC,eAAgB,iBAEhBC,eAAiB,SAAChU,GAAD,MAAc,CAC9BH,KAAM5B,EAAQ0V,iBACd3T,QAAUA,IAGXiU,UAAY,SAAEjU,EAASkU,GAAX,MAAuB,CAClCrU,KAAO5B,EAAQwV,WACfzT,QAAU,CAAEA,QAAUA,EAASkU,MAAMA,KAGtCC,cAAgB,SAAEC,EAAQC,GAAV,MAAqB,CACpCxU,KAAO5B,EAAQ4V,gBACf7T,QAAU,CAAEoU,OAASA,EAAQC,KAAKA,MAIrBpW,O,6BCzBf,IAAMA,EAAU,CACfqW,cAAgB,gBAChBC,cAAe,gBACfC,uBAAwB,yBACxBC,uBAAwB,yBACxBhF,iBAAkB,mBAClBC,kBAAmB,oBACnBgF,sBAAuB,wBAEvBC,aAAe,SAAE3U,GAAF,MAAgB,CAC9BH,KAAO5B,EAAQqW,cACftU,QAAUA,IAEX4U,qBAAsB,SAAC5U,GAAD,MAAc,CACnCH,KAAM5B,EAAQwW,uBACdzU,QAASA,IAEV6U,cAAe,SAAC7U,GAAD,MAAc,CAC5BH,KAAM5B,EAAQ6W,cACd9U,QAASA,IAEVoQ,WAAY,SAACpQ,GAAD,MAAc,CACzBH,KAAM5B,EAAQyR,kBACd1P,QAASA,KAII/B,O,6BC3Bf,IAAMA,EAAU,CACZ8W,SAAU,WACVC,SAAU,WACVC,uBAAwB,yBACxBC,mBAAoB,qBACpBC,mBAAoB,qBACpBC,iCAAkC,mCAElCC,QAAS,SAACrV,GAAD,MAAc,CACnBH,KAAM5B,EAAQ8W,SACd/U,QAASA,IAGhBsV,kBAAmB,SAACtV,GAAD,MAAc,CAC1BH,KAAM5B,EAAQiX,mBACdlV,QAASA,KAIF/B,O,6BCnBf,IAAMA,EAAU,CACfsX,cAAgB,gBAChBC,cAAe,gBACZC,wBAA0B,0BAC1BC,wBAA0B,0BAE7BC,oBAAsB,sBACtBC,iBAAmB,mBACnBC,gBAAkB,kBAEfC,sBAAuB,SAAC9V,GAAD,MAAc,CACvCH,KAAM5B,EAAQwX,0BAGfM,kBAAoB,SAAC/V,GAAD,MAAc,CACjCH,KAAO5B,EAAQ0X,oBACf3V,QAAUA,IAGXgW,gBAAkB,SAAChW,GAAD,MAAc,CAC/BH,KAAO5B,EAAQ2X,iBACf5V,QAAUA,IAGXiW,eAAiB,SAACjW,GAAD,MAAc,CAC9BH,KAAO5B,EAAQ4X,gBACf7V,QAAUA,KAIG/B,O,6BC9Bf,IAAMA,EAAU,CACfiY,cAAgB,gBAChBC,cAAgB,gBAChBC,4BAA6B,8BAC7BC,qBAAsB,uBACtBC,6BAA8B,+BAC9BC,0BAA2B,4BAE3BC,aAAc,SAACxW,GAAD,MAAc,CAC3BH,KAAM5B,EAAQiY,cACdlW,QAAUA,IAEXyW,0BAA2B,SAACzW,GAAD,MAAc,CACxCH,KAAO5B,EAAQqY,6BACftW,QAAUA,KAIG/B,O,+BClBf,IAAMA,EAAU,CACfyY,4BAA8B,8BAC9BC,4BAA8B,8BAC9BC,qBAAuB,uBACvBC,uBAAwB,yBACxBC,qBAAsB,uBACtBC,iBAAkB,mBAGlBC,yBAA2B,SAAEhX,EAASkU,GAAX,MAAuB,CACjDrU,KAAO5B,EAAQ0Y,4BACf3W,QAAU,CAAEkU,MAAOA,EAAOlU,QAASA,KAEpCiX,kBAAoB,SAAEjX,GAAF,MAAgB,CACnCH,KAAO5B,EAAQ2Y,qBACf5W,QAAUA,IAEXkX,cAAe,SAAClX,GAAD,MAAc,CAC5BH,KAAM5B,EAAQ6Y,qBACd9W,QAASA,IAEVmX,WAAY,iBAAO,CAClBtX,KAAM5B,EAAQ8Y,oBAID9Y,O,6BC1Bf,IAAMA,EAAU,CACfmZ,cAAgB,gBAChBC,cAAgB,gBAChBC,gBAAkB,kBAClBC,eAAiB,iBACjBC,gBAAkB,kBAClBC,gBAAkB,kBAClBC,sBAAwB,wBACxBC,iBAAmB,mBACnBC,eAAiB,iBACjBC,4BAA6B,8BAE7BC,kBAAoB,oBACpBC,iBAAmB,mBACnBC,iBAAmB,mBACnBC,oBAAsB,sBACtBC,oBAAsB,sBACtBC,oBAAsB,sBAEtBC,gBAAkB,SAACpY,GAAD,MAAc,CAC/BH,KAAO5B,EAAQ6Z,kBACf9X,QAAUA,IAGXqY,eAAiB,SAACrY,GAAD,MAAc,CAC9BH,KAAO5B,EAAQ8Z,iBACf/X,QAAUA,IAGX3J,eAAiB,iBAAO,CACvBwJ,KAAO5B,EAAQ+Z,iBACfhY,QAAUA,UAGXsY,kBAAoB,SAACtY,GAAD,MAAc,CACjCH,KAAO5B,EAAQka,oBACfnY,QAAUA,IAGXuY,kBAAoB,SAACvY,GAAD,MAAc,CACjCH,KAAO5B,EAAQga,oBACfjY,QAAUA,IAGXwY,kBAAoB,SAACxY,EAASyY,GAAV,MAAkB,CACrC5Y,KAAO5B,EAAQia,oBACflY,QAAU,CAACA,UAASyY,SA2BPxa,O,6BCzEf,IAAMA,EAAU,CACfya,gBAAkB,kBAClBC,gBAAkB,kBAClBC,kBAAoB,oBACpBC,iBAAmB,mBACnBC,kBAAoB,oBACpBC,kBAAoB,oBACpBC,wBAA0B,0BAC1BC,mBAAqB,qBACrBC,iBAAmB,mBACnBC,8BAA+B,gCAE/BC,oBAAsB,sBACtBC,mBAAqB,qBACrBC,mBAAqB,qBACrBC,sBAAwB,wBACxBC,sBAAwB,wBACxBC,sBAAwB,wBAExBC,kBAAoB,SAAC1Z,GAAD,MAAc,CACjCH,KAAO5B,EAAQmb,oBACfpZ,QAAUA,IAGX2Z,iBAAmB,SAAC3Z,GAAD,MAAc,CAChCH,KAAO5B,EAAQob,mBACfrZ,QAAUA,IAGX4Z,iBAAmB,iBAAO,CACzB/Z,KAAO5B,EAAQqb,mBACftZ,QAAUA,UAGX6Z,oBAAsB,SAAC7Z,GAAD,MAAc,CACnCH,KAAO5B,EAAQwb,sBACfzZ,QAAUA,IAGX8Z,oBAAsB,SAAC9Z,GAAD,MAAc,CACnCH,KAAO5B,EAAQsb,sBACfvZ,QAAUA,IAGX+Z,oBAAsB,SAAC/Z,EAASyY,GAAV,MAAkB,CACvC5Y,KAAO5B,EAAQub,sBACfxZ,QAAU,CAACA,UAASyY,SA2BPxa,O,+BCzEf,IAAMA,EAAU,CACf+b,gBAAkB,kBAClBC,gBAAkB,kBAClBrD,qBAAuB,uBACvBsD,iBAAmB,mBACnBC,gBAAkB,kBAClBC,gBAAkB,kBAClBC,sBAAwB,wBACxBC,iBAAmB,mBACnBC,iBAAmB,mBACnBC,8BAA+B,gCAE/BC,eAAiB,SAACza,GAAD,MAAc,CAC9BH,KAAO5B,EAAQic,iBACfla,QAAUA,IAGX0a,cAAgB,iBAAO,CACtB7a,KAAO5B,EAAQkc,kBAGhBQ,cAAgB,SAAE3a,GAAF,MAAgB,CAC/BH,KAAO5B,EAAQ+b,gBACfha,QAAUA,IAGXiX,kBAAoB,SAAEjX,GAAF,MAAgB,CACnCH,KAAO5B,EAAQ2Y,qBACf5W,QAAUA,IAGX+S,WAAa,SAAC/S,GAAD,MAAc,CAC1BH,KAAO5B,EAAQqc,iBACfta,QAAUA,KAIG/B,O,6BCrCf,IAAMA,EAAU,CACf2c,6BAA+B,+BAC/BC,6BAA+B,+BAC/BC,sBAAwB,wBACxBC,wBAAyB,0BACzBC,sBAAuB,wBACvBC,0BAA4B,SAAEjb,EAASkU,GAAX,MAAuB,CAClDrU,KAAO5B,EAAQ4c,6BACf7a,QAAS,CAAEkU,MAAOA,EAAOlU,QAASA,KAEnCkb,mBAAqB,SAAElb,GAAF,MAAgB,CACpCH,KAAO5B,EAAQ6c,sBACf9a,QAAUA,IAEXkX,cAAe,SAAClX,GAAD,MAAc,CAC5BH,KAAM5B,EAAQ+c,sBACdhb,QAASA,KAII/B,O,6BCpBf,IAAMA,EAAU,CACfkd,iBAAmB,mBACnBC,iBAAkB,mBAClBC,iBAAmB,mBACnBC,iBAAmB,mBACnBC,qBAAsB,uBACtBC,iBAAmB,mBACnBC,kBAAoB,oBACpBC,+BAAiC,iCAEjCC,eAAiB,iBAAO,CACvB9b,KAAO5B,EAAQod,mBAGhBO,SAAW,SAAC5b,GAAD,MAAc,CACxBH,KAAO5B,EAAQud,iBACfxb,QAAUA,IAGX6b,eAAiB,SAAE7b,GAAF,MAAgB,CAChCH,KAAO5B,EAAQkd,iBACfnb,QAAUA,IAGX8b,kBAAmB,SAAC9b,GAAD,MAAc,CAChCH,KAAM5B,EAAQsd,qBACdvb,QAASA,IAGV+S,WAAY,SAAC/S,GAAD,MAAc,CACzBH,KAAM5B,EAAQwd,kBACdzb,QAASA,KAII/B,O,8BCnCf,IAAMA,EAAU,CACf8d,SAAW,WACXC,SAAU,WACVC,gBAAiB,kBACjBC,gBAAiB,kBACjBC,WAAY,aACZC,cAAgB,gBAChBC,aAAc,eAEdC,QAAU,SAACtc,GAAD,MAAc,CACvBH,KAAO5B,EAAQ8d,SACf/b,QAAUA,IAEXuc,QAAU,SAACvc,GAAD,MAAc,CACvBH,KAAO5B,EAAQ+d,SACfhc,QAAUA,IAEXwc,cAAe,SAACxc,GAAD,MAAc,CAC5BH,KAAM5B,EAAQge,gBACdjc,QAASA,IAEVyc,gBAAiB,SAACzc,GAAD,MAAc,CAC9BH,KAAM5B,EAAQke,WACdnc,QAASA,IAEV0c,kBAAmB,SAAC1c,GAAD,MAAc,CAChCH,KAAM5B,EAAQme,cACdpc,QAASA,IAEV2c,gBAAiB,SAAC3c,GAAD,MAAc,CAC9BH,KAAM5B,EAAQoe,aACdrc,QAAQA,KAIK/B,O,6BCnCf,IAAMA,EAAU,CACf2e,UAAY,YACZC,UAAY,YACZC,sBAAwB,wBACxBC,uBAAyB,yBACzBC,SAAW,SAAEhd,GAAF,MAAgB,CAC1BH,KAAO5B,EAAQ2e,UACf5c,QAAUA,IAGXid,mBAAqB,SAAEjd,GAAF,MAAgB,CACpCH,KAAO5B,EAAQ6e,sBACf9c,QAAUA,KAIG/B,O,6BChBf,IAAMA,EAAU,CACfif,aAAe,eACfC,aAAe,eACfC,eAAiB,iBACjBC,YAAa,SAACrd,GAAD,MAAc,CAC1BH,KAAM5B,EAAQif,aACdld,QAAUA,KAIG/B,O,6BCVf,IAAMA,EAAU,CACfqf,wBAA0B,0BAC1BC,gBAAkB,kBAElBC,sBAAuB,SAACxd,GAAD,MAAc,CACpCH,KAAM5B,EAAQqf,wBACdtd,QAAUA,IAGXyd,cAAe,SAACzd,GAAD,MAAc,CAC5BH,KAAM5B,EAAQsf,gBACdvd,QAAUA,KAIG/B,O,6BCff,IAAMA,EAAU,CACfyf,mBAAqB,qBACrBC,mBAAqB,qBACrBC,qBAAuB,uBACvBC,oBAAsB,sBACtBC,qBAAuB,uBACvBC,qBAAuB,uBACvBC,2BAA6B,6BAC7BC,sBAAwB,wBACxBC,oBAAsB,sBACtBC,iCAAkC,mCAElCC,uBAAyB,yBACzBC,sBAAwB,wBACxBC,sBAAwB,wBACxBC,yBAA2B,2BAC3BC,yBAA2B,2BAE3BC,qBAAuB,SAACze,GAAD,MAAc,CACpCH,KAAO5B,EAAQmgB,uBACfpe,QAAUA,IAGX0e,oBAAsB,SAAC1e,GAAD,MAAc,CACnCH,KAAO5B,EAAQogB,sBACfre,QAAUA,IAGX2e,oBAAsB,iBAAO,CAC5B9e,KAAO5B,EAAQqgB,sBACfte,QAAUA,UAGX4e,uBAAyB,SAAC5e,GAAD,MAAc,CACtCH,KAAO5B,EAAQsgB,yBACfve,QAAUA,IAGX6e,uBAAyB,SAAC7e,GAAD,MAAc,CACtCH,KAAO5B,EAAQugB,yBACfxe,QAAUA,KA2BG/B,O,6BCnEf,IAAMA,EAAU,CACf6gB,8BAAgC,gCAChCC,8BAAgC,gCAChCC,uBAAyB,yBACzBC,yBAA0B,2BAC1BC,uBAAwB,yBACxBC,2BAA6B,SAAEnf,EAASkU,GAAX,MAAuB,CACnDrU,KAAO5B,EAAQ8gB,8BACf/e,QAAS,CAAEkU,MAAOA,EAAOlU,QAASA,KAEnCof,oBAAsB,SAAEpf,GAAF,MAAgB,CACrCH,KAAO5B,EAAQ+gB,uBACfhf,QAAUA,IAEXkX,cAAe,SAAClX,GAAD,MAAc,CAC5BH,KAAM5B,EAAQihB,uBACdlf,QAASA,KAII/B,O,8BCpBf,IAAMA,EAAU,CACfohB,UAAY,YACTC,UAAY,YACfC,oBAAsB,sBAEnBtlB,SAAU,iBAAO,CACb4F,KAAM5B,EAAQohB,YAGrBG,kBAAmB,SAACC,GAAD,MAAa,CAC/B5f,KAAO5B,EAAQshB,oBACfvf,QAAUyf,KAIGxhB,O,8BCff,IAAMA,EAAU,CACfyhB,YAAc,cACdC,YAAc,cACdC,wBAA0B,0BAC1BC,iCAAmC,mCAEnCC,UAAY,SAAE9f,GAAF,MAAgB,CAC3BH,KAAO5B,EAAQyhB,YACf1f,QAAUA,IAGX+f,oBAAsB,SAAE/f,GAAF,MAAgB,CACrCH,KAAO5B,EAAQ2hB,wBACf5f,QAAUA,KAIG/B,O,6BCjBf,IAAMA,EAAU,CACfwV,WAAa,aACbC,WAAa,aACbC,iBAAkB,mBAClBC,yBAA0B,2BAE1BI,eAAiB,SAAChU,GAAD,MAAc,CAC9BH,KAAM5B,EAAQ0V,iBACd3T,QAAUA,IAGXiU,UAAY,SAAEjU,GAAF,MAAgB,CAC3BH,KAAO5B,EAAQwV,WACfzT,QAAUA,KAIG/B,O,6BCjBf,IAAMA,EAAU,CACf+hB,4BAA8B,8BAC9BC,4BAA8B,8BAC9B1E,qBAAuB,uBACvB2E,wBAA0B,0BAE1BC,yBAA2B,SAAEngB,EAASkU,GAAX,MAAuB,CACjDrU,KAAO5B,EAAQgiB,4BACfjgB,QAAU,CAAEkU,MAAOA,EAAOlU,QAASA,KAEpC8b,kBAAoB,SAAE9b,GAAF,MAAgB,CACnCH,KAAO5B,EAAQsd,qBACfvb,QAAUA,KAIG/B,O,6UCXFmiB,EAAYC,UAAOC,IAAV,sIAInB,SAAAC,GAAK,OAAIA,EAAMC,YAAc,yDAA2D,MAS9EC,EAAgBC,IAAqBJ,IAAxB,uJA0BbK,GAjBUN,kBAAOO,IAAPP,CAAH,4NAiBCA,UAAOC,IAAV,uEAKLO,EAAoBR,UAAOS,KAAV,2OAKfC,IAIIA,KAINC,EAAqBX,UAAOC,IAAV,6HAMlBW,EAAwBZ,UAAOC,IAAV,yOAGnBS,IAKIA,KAMNG,EAAuBb,UAAOC,IAAV,sG,6DC9EpBa,EAASd,UAAOS,KAAV,oMAEJC,K,OCSAI,IAXA,SAAAZ,GAAK,OACnB,cAAC,EAAD,CAAea,UAAU,SAASC,MAAOd,EAAMc,MAAOC,MAAOf,EAAMe,MAAnE,SACGf,EAAMgB,W,uECLJC,EAAY,CACdC,UAAW,EACXC,aAAa,EACb1pB,QAAS,CACLI,KAAM,CAAEupB,SAAU,KACtBC,UAAU,EACVC,OAAO,EACPC,eAAe,EACf5pB,kBAAkB,EAClB6pB,QAAS,GACTC,WAAW,EACXC,cAAc,EACd3pB,gBAAiB,EACjB4pB,gBAAkB,CACdL,OAAQ,EACRM,WAAY,EACZC,QAAS,EACTC,UAAW,I,YChBbb,EAAY,CACjBznB,gBAAiB,EACjBuoB,uBAAwB,EACxBnU,OAAQ,EACRE,YAAa,EACbD,aAAa,EACbhW,MAAM,EACN4B,cAAe,G,YCPVwnB,EAAY,CACjBe,QAAS,EACTC,UAAW,EACXC,cAAe,EACfC,cAAe,G,YCJVlB,EAAY,CACdmB,cAAc,EACd1Q,cAAc,G,YCFZuP,EAAY,CACjBtpB,kBAAkB,EAClB0qB,OAAQ,QACRC,eAAe,EACfC,OAAQ,I,aCJHtB,EAAY,G,YCAZA,EAAY,CACjBllB,UAAW,GACXymB,SAAU,I,YCFLvB,EAAY,CACdlqB,cAAc,EACdR,aAAa,EACbF,UAAU,EACVosB,aAAa,EACb9rB,kBAAkB,EAClBE,cAAc,EACdJ,cAAc,EACda,MAAM,EACNorB,YAAa,KACbC,UAAU,EACVC,iBAAiB,G,aCXf3B,EAAY,CACjBroB,UAAY,I,YCDPqoB,EAAY,CACjB4B,WAAa,I,YCDR5B,EAAY,G,YCAZA,EAAY,CACdloB,cAAe,GACf+pB,sBAAuB,EACvB7pB,KAAK,EACL8pB,MAAM,EACNC,UAAU,EACVC,UAAU,EACVvB,aAAc,GACdwB,aAAa,EACbC,oBAAoB,EACpBhqB,aAAa,G,YCVX8nB,EAAY,CACjBtrB,OAAS,GACTytB,aAAa,EACbzrB,kBAAkB,G,aCHbspB,EAAY,CACjB3oB,MAAQ,ICHT,IASeoF,EATC,CACf2lB,YAAc,cACdC,YAAa,cACbC,mBAAoB,qBACpBC,YAAa,cACbC,YAAa,cACbC,kBAAmB,qBCLdzC,EAAY,CACjB7pB,QAAU,CACTusB,KAAO,GACPC,OAAS,GACTC,MAAO,IAERC,OAAQ,GACRC,QAAS,GACTC,aAAa,G,YCPR/C,EAAY,CACdgD,KAAM,GACNC,SAAU,M,YCFRjD,EAAY,CACjBkD,iBAAkB,EAClBC,WAAa,I,YCFRnD,EAAY,CAAEoD,QAAS,KAAM/kB,KAAM,M,YCAnC2hB,EAAY,CACd/rB,gBAAiB,I,YCDf+rB,EAAY,CACjBxoB,MAAQ,GACR6rB,kBAAmB,EACnB3sB,kBAAmB,G,YCHdspB,EAAY,CACjBtrB,OAAS,GACTE,kBAAoB,GACpButB,aAAc,EACdzrB,kBAAmB,G,YCJdspB,EAAY,CACjB3oB,MAAO,GACPjD,YAAc,GACdkvB,gBAAgB,EAChB5sB,kBAAmB,G,YCJdspB,EAAY,CACjBxoB,MAAQ,GACR+rB,YAAa,EACb7sB,kBAAmB,G,YCHdspB,GAAY,CACdzrB,KAAM,GACNU,eAAgB,GAChBuuB,qBAAqB,EACrBC,gCAAgC,G,aCJ9BzD,GAAY,CACjB0D,UAAW,GACXC,WAAW,EACXC,cAAe,GACfC,oBAAqB,GACrBC,MAAO,GACPC,SAAU,GACVC,OAAQ,GACRC,QAAQ,EACRC,oBAAqB,EACrBxtB,kBAAmB,G,aCVdspB,GAAY,CACdlnB,WAAW,G,aCDTknB,GAAY,CACjB/mB,UAAY,GACTkrB,WAAa,GAChBC,gBAAiB,G,aCHZpE,GAAY,CACdqE,gBAAkB,GAClBC,SAAU,EACVC,aAAc,GACdC,WAAY,ICNhB,IAKe/nB,GALC,CACfgoB,gBAAkB,kBAClBC,gBAAkB,mBCAb1E,GAAY,CACjB2E,WAAa,ICHd,IAKeloB,GALC,CACfmoB,mBAAqB,qBACrBC,mBAAqB,sBCAhB7E,GAAY,CACjB8E,cAAgB,ICHjB,IAAMroB,GAAU,CACf+K,kBAAoB,oBACjBud,kBAAoB,oBACvBC,oBAAsB,sBACnBC,iBAAkB,SAAC7B,EAAS/kB,GAAV,MAAoB,CAClCA,KAAM5B,GAAQsoB,kBACdvmB,QAAS,CACd4kB,QAAUA,EACV/kB,KAAOA,MAKK5B,MCXTujB,GAAY,CACdloB,cAAe,I,cCDbkoB,GAAY,CACjBkF,aAAc,EACdtuB,MAAO,G,cCFFopB,GAAY,CACjBkF,aAAc,EACdtuB,MAAO,G,aCFFopB,GAAY,CACdjrB,YAAa,I,aCDXirB,GAAY,CACdmF,cAAe,I,sBCDbnF,GAAY,CACdoF,iBAAkB,I,sBCFhBpF,GAAY,CACjBrnB,MAAQ,I,aCDHqnB,GAAY,CACjBqF,WAAa,GACbC,eAAe,EACfC,gBAAkB,GAClBC,oBAAoB,EACpBC,wBAA0B,GAC1BC,4BAA4B,EAC5BC,iBAAmB,GACnBC,qBAAqB,EACrBC,WAAW,G,aCTN7F,GAAY,CACjBzlB,OAAS,GACTurB,mBAAoB,EACpBC,UAAW,EACXtrB,YAAc,EACdE,WAAa,K,aCJRqlB,GAAY,CACjBroB,UAAY,GACZquB,gBAAiB,EACjBtvB,kBAAkB,G,aCHbspB,GAAY,CACjB5mB,UAAY,GACZkqB,gBAAiB,EACjB5sB,kBAAmB,G,aCHdspB,GAAY,CACjBvmB,WAAa,GACbwsB,iBAAkB,EAClBvvB,kBAAmB,G,aCHdspB,GAAY,CACjBpmB,MAAQ,GACRssB,gBAAiB,EACjBxvB,kBAAmB,G,aCHdspB,GAAY,CACjBjmB,YAAc,GACdosB,kBAAmB,EACnBzvB,kBAAmB,G,aCHdspB,GAAY,CACjBtrB,OAAS,GACT0xB,WAAa,GACbjE,aAAa,EACbzrB,kBAAkB,EAClB2vB,UAAW,I,kCCgDNC,GAAaC,0BAAgB,CAClChwB,KjDlCc,WAAiD,IAA5BxC,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCAC3D,OAAQA,EAAOnoB,MACX,KAAK5B,IAAQmB,uBACT,OAAO,2BACA7J,GADP,IAEI2C,iBAAkB8vB,EAAOhoB,UAEjC,KAAK/B,IAAQyB,oBACT,OAAO,2BACAnK,GADP,IAEI+C,eAAiB0vB,EAAOhoB,UAEhC,KAAK/B,IAAQE,iBACT,OAAO,2BACA5I,GADP,IAEIyC,QAASgwB,EAAOhoB,UAExB,KAAK/B,IAAQG,gBACT,OAAO,2BACA7I,GADP,IAEImsB,YAAasG,EAAOhoB,UAE5B,KAAK/B,IAAQI,cACT,OAAO,2BACA9I,GADP,IAEIksB,UAAWuG,EAAOhoB,UAE1B,KAAK/B,IAAQM,aACT,OAAO,2BACAhJ,GADP,IAEIqsB,SAAUoG,EAAOhoB,UAEzB,KAAK/B,IAAQQ,sBACT,OAAO,2BACAlJ,GADP,IAEI0sB,aAAc+F,EAAOhoB,UAE7B,KAAK/B,IAAQkB,cACT,OAAO,2BACA5J,GADP,IAEIyC,QAAQ,2BAAMzC,EAAMyC,SAAb,IAAsBI,KAAM4vB,EAAOhoB,YAElD,KAAK/B,IAAQgB,eACT,OAAO,2BACA1J,GADP,IAEIwsB,QAASiG,EAAOhoB,UAExB,KAAK/B,IAAQiB,eACT,OAAO,2BACA3J,GADP,IAEIysB,UAAWgG,EAAOhoB,QAClB+hB,QAAS,KAEjB,KAAK9jB,IAAQY,uBACT,OAAO,2BACAtJ,GADP,IAEIusB,cAAekG,EAAOhoB,UAE9B,KAAK/B,IAAQa,oBAET,OAAO,2BACAvJ,GADP,IAEI2sB,gBAAe,2BACR3sB,EAAM2sB,iBADE,kBAEV8F,EAAOhoB,SAAW,MAG/B,KAAK/B,IAAQU,eACT,OAAO,2BACApJ,GADP,IAEIssB,MAAOmG,EAAOhoB,UAEtB,QACI,OAAOzK,IiDtClBorB,MdlDc,WAA2C,IAA5BprB,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCACxD,OAAQA,EAAOnoB,OACT5B,KAAQgqB,iBACL,2BACH1yB,GADJ,IAECmxB,YAAcsB,EAAOhoB,QAAQsO,KAC7BlW,KAAO4vB,EAAOhoB,QAAQ5H,OAGhB7C,Gc0CT2yB,abnDc,WAAkD,IAA5B3yB,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCAC/D,OAAQA,EAAOnoB,OACT5B,KAAQkqB,+BACL,2BACH5yB,GADJ,IAECmxB,YAAcsB,EAAOhoB,QAAQsO,KAC7BlW,KAAO4vB,EAAOhoB,QAAQ5H,OAGhB7C,Ga2CTuE,ShD/Cc,WAA8C,IAA5BvE,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCAC3D,OAAQA,EAAOnoB,MACd,KAAK5B,IAAQgQ,gBACZ,OAAO,2BACH1Y,GADJ,IAEC6yB,WAAaJ,EAAOhoB,UAEtB,KAAK/B,IAAQ+P,kBACZ,OAAO,2BACHzY,GADJ,IAECyE,aAAeguB,EAAOhoB,UAExB,KAAK/B,IAAQ2P,oBACZ,OAA6B,IAAxBoa,EAAOhoB,QAAQsO,MAAkB0Z,EAAOhoB,QAAQsO,OAAS/Y,EAAMwE,eAC5D,2BACHxE,GADJ,IAECwE,eAAiBiuB,EAAOhoB,QAAQsO,KAChCH,MAAQ6Z,EAAOhoB,QAAQmO,MACvBE,WAAa2Z,EAAOhoB,QAAQqO,WAC5BD,YAAa4Z,EAAOhoB,QAAQoO,YAC5BhW,KAAM4vB,EAAOhoB,QAAQ5H,KACrBkqB,uBAAwB,EACxBtoB,cAAe,IAGV,2BACHzE,GADJ,IAECwE,eAAiBiuB,EAAOhoB,QAAQsO,KAChCH,MAAQ6Z,EAAOhoB,QAAQmO,MACvBE,WAAY2Z,EAAOhoB,QAAQqO,WAC3BjW,KAAM4vB,EAAOhoB,QAAQ5H,KACrBgW,YAAc4Z,EAAOhoB,QAAQoO,YAC7BpU,cAAe,IAEX,KAAKiE,IAAQ4P,4BACZ,OAAO,2BACHtY,GADJ,IAEI+sB,sBAAwB0F,EAAOhoB,QAAQsO,OAElD,KAAKrQ,IAAQ6P,kBACZ,OAAO,2BACHvY,GADJ,IAEC6C,KAAM4vB,EAAOhoB,UAEf,QACC,OAAOzK,IgDGT8yB,O/ClDc,WAAmD,IAA5B9yB,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCAEhE,OAAQA,EAAOnoB,MACd,KAAK5B,IAAQwQ,YACH,OAAO,2BAAKlZ,GAAZ,IAAmBgtB,QAASyF,EAAOhoB,QAAQuiB,UAC/C,KAAKtkB,IAAQ4Q,YACZ,OAAO,2BACHtZ,GADJ,IAECmtB,aAAesF,EAAOhoB,UAExB,KAAK/B,IAAQkP,cACT,OAAO,2BACA5X,GADP,IAEI2tB,UAAU,IAElB,KAAKjlB,IAAQyQ,cACZ,OAAO,2BACHnZ,GADJ,IAECitB,SAAWwF,EAAOhoB,UAEpB,KAAK/B,IAAQ0Q,oBACZ,OAAO,2BACHpZ,GADJ,IAECktB,cAAe,IAEjB,KAAKxkB,IAAQ2Q,mBACZ,OAAO,2BACHrZ,GADJ,IAECktB,cAAe,IAEvB,QACC,OAAOltB,I+CoBTsC,K9CrDc,WAAiD,IAA5BtC,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCAE3D,OAAQA,EAAOnoB,MACX,IAAK,oBACD,OAAO,2BACAtK,GACAyyB,EAAOhoB,SAElB,IAAK,kBACD,OAAOgoB,EAAOhoB,QAClB,IAAK,gBACD,OAAO,2BACAzK,GACAyyB,EAAOhoB,SAElB,KAAK/B,IAAQuT,eACT,OAAO,2BACAjc,GADP,IAEI0c,cAAc,EACd0Q,aAAcqF,EAAOhoB,UAE7B,KAAK/B,IAAQyT,QACT,OAAO,eACAnc,GAEX,QACI,OAAOA,I8C4BlB+yB,S7CrDc,WAAqD,IAA5B/yB,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCAElE,OAAQA,EAAOnoB,MACd,KAAK5B,IAAQkY,cACZ,OAAO,2BAAI5gB,GAAX,IAAkBgzB,UAAWP,EAAOhoB,UACrC,KAAK/B,IAAQmY,4BACZ,OAAO,2BACH7gB,GADJ,IAEC2C,iBAAmB8vB,EAAOhoB,UAE5B,KAAK/B,IAAQoY,qBACZ,OAAO,2BACH9gB,GADJ,IAECqtB,OAAQoF,EAAOhoB,UAEjB,KAAK/B,IAAQqY,6BACZ,OAAO,2BACH/gB,GADJ,IAECstB,cAAemF,EAAOhoB,UAExB,KAAK/B,IAAQsY,0BACZ,OAAO,2BACHhhB,GADJ,IAECutB,OAAQkF,EAAOhoB,UAEjB,QACC,OAAOzK,I6C4BNoB,O1C9CW,WAAmD,IAA5BpB,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCAE7D,OAAQA,EAAOnoB,MACX,KAAK5B,IAAQ+O,kBACT,OAAO,2BACAzX,GADP,IAEI0tB,YAAa+E,EAAOhoB,UAG5B,KAAK/B,IAAQgP,mBACT,OAAO,2BACA1X,GADP,IAEI0tB,YAAa,OAGrB,KAAKhlB,IAAQsP,kBACT,OAAO,2BACAhY,GADP,IAEIiC,iBAAkBwwB,EAAOhoB,UAGjC,KAAK/B,IAAQoP,4BAKb,KAAKpP,IAAQmP,gCACT,OAAO,2BACA7X,GADP,IAEI0tB,YAAa+E,EAAOhoB,UAE5B,KAAK/B,IAAQqP,iBACT,OAAO,2BACA/X,GADP,IAEI0tB,YAAa,OAErB,KAAKhlB,IAAQiP,gBACT,OAAO,2BACA3X,GADP,IAEI0tB,YAAa+E,EAAOhoB,UAG5B,KAAK/B,IAAQ6O,kBACT,OAAO,2BACAvX,GADP,IAEI+B,aAAc0wB,EAAOhoB,UAG7B,KAAK/B,IAAQ8O,SACT,OAAO,2BACAxX,GADP,IAEIsC,KAAMmwB,EAAOhoB,UAGrB,KAAK/B,IAAQuO,iBACT,OAAO,2BACAjX,GADP,IAEIuB,YAAakxB,EAAOhoB,UAG5B,KAAK/B,IAAQ2O,kBACT,OAAO,2BACArX,GADP,IAEIyB,aAAcgxB,EAAOhoB,UAG7B,KAAK/B,IAAQ4O,kBACT,OAAO,2BACAtX,GADP,IAEI6B,aAAc4wB,EAAOhoB,UAG7B,KAAK/B,IAAQ0O,iBACT,OAAO,2BACApX,GADP,IAEIytB,YAAagF,EAAOhoB,UAG5B,KAAK/B,IAAQwO,cACT,OAAO,2BACAlX,GADP,IAEIqB,SAAUoxB,EAAOhoB,UAGzB,KAAK/B,IAAQyO,sBACT,OAAO,2BACAnX,GADP,IAEI2B,iBAAkB8wB,EAAOhoB,UAGjC,QACI,OAAOzK,I0C5ClB8G,S3CxDc,WAAqD,IAA5B9G,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCAElE,OAAQA,EAAOnoB,MACd,KAAK5B,IAAQsW,cAKb,KAAKtW,IAAQyW,sBACZ,OAAO,2BACHnf,GADJ,IAEC+G,UAAW0rB,EAAOhoB,UAEpB,KAAK/B,IAAQuW,uBACZ,OAAO,2BACHjf,GADJ,IAECwtB,SAAUiF,EAAOhoB,UAEnB,QACC,OAAOzK,I2CsCTuF,iBNxDc,WAA6D,IAA5BvF,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCAE1E,OAAQA,EAAOnoB,MACd,KAAK5B,KAAQ4Y,uBACZ,OAAO,2BACHthB,GADJ,IAEC2C,iBAAmB8vB,EAAOhoB,UAE5B,KAAK/B,KAAQyY,4BACZ,OAAO,2BACHnhB,GADJ,IAEC4D,UAAY6uB,EAAOhoB,UAErB,KAAK/B,KAAQ2Y,qBACH,OAAO,2BACArhB,GADP,IAEIiyB,eAAgBQ,EAAOhoB,UAErC,KAAK/B,KAAQ8Y,iBACZ,OAAO,2BACHxhB,GADJ,IAEC4D,UAAW,KAEb,QACC,OAAO5D,IMiCToF,iBLzDc,WAA6D,IAA5BpF,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCAE1E,OAAQA,EAAOnoB,MACd,KAAK5B,KAAQiiB,wBACZ,OAAO,2BACH3qB,GADJ,IAEC2C,iBAAmB8vB,EAAOhoB,UAE5B,KAAK/B,KAAQ+hB,4BACZ,OAAO,2BACHzqB,GADJ,IAECqF,UAAYotB,EAAOhoB,UAErB,KAAK/B,KAAQsd,qBACH,OAAO,2BACAhmB,GADP,IAEIuvB,eAAgBkD,EAAOhoB,UAErC,QACC,OAAOzK,IKuCT4F,iBH1Dc,WAA6D,IAA5B5F,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCAE1E,OAAQA,EAAOnoB,MACd,KAAK5B,KAAQuqB,uBACZ,OAAO,2BACHjzB,GADJ,IAEC2C,iBAAmB8vB,EAAOhoB,UAE5B,KAAK/B,KAAQwqB,uBACZ,OAAO,2BACHlzB,GADJ,IAEC6F,MAAQ4sB,EAAOhoB,UAEjB,KAAK/B,KAAQyqB,qBACH,OAAO,2BACAnzB,GADP,IAEImyB,eAAgBM,EAAOhoB,UAErC,QACC,OAAOzK,IGwCTyF,kBJ3Dc,WAA8D,IAA5BzF,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCAE3E,OAAQA,EAAOnoB,MACd,KAAK5B,KAAQ8c,wBACZ,OAAO,2BACHxlB,GADJ,IAEC2C,iBAAmB8vB,EAAOhoB,UAE5B,KAAK/B,KAAQ2c,6BACZ,OAAO,2BACHrlB,GADJ,IAEC0F,WAAa+sB,EAAOhoB,UAEtB,KAAK/B,KAAQ6c,sBACH,OAAO,2BACAvlB,GADP,IAEIkyB,gBAAiBO,EAAOhoB,UAEtC,QACC,OAAOzK,IIyCT+F,mBF7Dc,WAA+D,IAA5B/F,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCAC5E,OAAQA,EAAOnoB,MACd,KAAK5B,KAAQghB,yBACZ,OAAO,2BACH1pB,GADJ,IAEC2C,iBAAmB8vB,EAAOhoB,UAE5B,KAAK/B,KAAQ6gB,8BACZ,OAAO,2BACHvpB,GADJ,IAECgG,YAAcysB,EAAOhoB,UAEvB,KAAK/B,KAAQ+gB,uBACH,OAAO,2BACAzpB,GADP,IAEIoyB,iBAAkBK,EAAOhoB,UAEvC,QACC,OAAOzK,IE4CTkG,kBD3Dc,WAAmD,IAA5BlG,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCAEhE,OAAQA,EAAOnoB,MACd,KAAK5B,KAAQ2V,yBACZ,OAAO,2BACHre,GADJ,IAEC2C,iBAAkB8vB,EAAOhoB,UAE3B,KAAK/B,KAAQyV,WACZ,OAAO,2BACHne,GADJ,IAECW,OAAS8xB,EAAOhoB,UAElB,KAAK/B,KAAQ6V,gBACZ,OAAO,2BACHve,GADJ,IAECqyB,WAAaI,EAAOhoB,UAEtB,KAAK/B,KAAQ0V,iBACZ,OAAO,2BACHpe,GADJ,IAECouB,YAAaqE,EAAOhoB,UAEtB,KAAK/B,KAAQ8V,eACZ,OAAO,2BACHxe,GADJ,IAECsyB,UAAWG,EAAOhoB,UAEpB,QACC,OAAOzK,IC+BT2D,KzChEc,WAAiD,IAA5B3D,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCAE9D,OAAQA,EAAOnoB,OACT5B,IAAQ0qB,SACL,2BACHpzB,GADJ,IAEC4D,UAAY6uB,EAAOhoB,UAGbzK,GyCwDTqzB,MxClEc,WAAkD,IAA5BrzB,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCAE/D,OAAQA,EAAOnoB,MACd,KAAK5B,IAAQqS,UACZ,OAAO,2BAAI/a,GAAX,IAAkBssB,MAAOmG,EAAOhoB,UACjC,KAAK/B,IAAQ2S,gBACZ,OAAO,2BAAIrb,GAAX,IAAkB6tB,WAAY4E,EAAOhoB,UACtC,QACC,OAAOzK,IwC2DTszB,SvCrEc,WAAqD,IAA5BtzB,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCAClE,OAAQA,EAAOnoB,OACT5B,IAAQkf,aACL,2BAAI5nB,GAAX,IAAkB8sB,SAAU2F,EAAOhoB,UAE5BzK,GuCiET8D,ctC3Dc,WAAyD,IAA5B9D,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCAEnE,OAAQA,EAAOnoB,MACX,KAAK5B,IAAQ+K,kBACT,OAAO,2BACAzT,GADP,IAEI+D,cAAe0uB,EAAOhoB,UAE9B,KAAK/B,IAAQoL,4BACT,OAAO,2BACA9T,GADP,IAEI8tB,sBAAuB2E,EAAOhoB,UAEtC,KAAK/B,IAAQmL,yBACT,OAAO,2BACA7T,GADP,IAEI+D,cAAe,GACf+pB,sBAAuB,IAE/B,KAAKplB,IAAQ0L,mBAKb,KAAK1L,IAAQsL,aACT,OAAO,2BACAhU,GADP,IAEI+tB,KAAM0E,EAAOhoB,UAErB,KAAK/B,IAAQqL,gBACT,OAAO,2BACA/T,GADP,IAEIguB,SAAUyE,EAAOhoB,UAEzB,KAAK/B,IAAQ2L,QACT,OAAO,2BACArU,GADP,IAEIiE,IAAKwuB,EAAOhoB,UAEpB,KAAK/B,IAAQ8L,mBACT,OAAO,2BACAxU,GADP,IAEImuB,mBAAoBsE,EAAOhoB,UAEnC,KAAK/B,IAAQ+L,cACT,OAAO,2BACAzU,GADP,IAEImE,YAAasuB,EAAOhoB,UAE5B,KAAK/B,IAAQ4L,iBACT,OAAO,2BACAtU,GADP,IAEI0sB,aAAc+F,EAAOhoB,UAE7B,KAAK/B,IAAQ6L,gBACT,OAAO,2BACAvU,GADP,IAEIkuB,YAAauE,EAAOhoB,UAE5B,QACI,OAAOzK,IsCAlBmC,QlC/Dc,WAAmD,IAA5BnC,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCAChE,OAAQA,EAAOnoB,MACR,KAAK5B,EAAQ4lB,YACZ,OAAO,2BACHtuB,GADJ,IAECoC,QAAUqwB,EAAOhoB,UAEzB,KAAK/B,EAAQ8lB,YACZ,OAAO,2BACHxuB,GADJ,IAEC+uB,QAAS0D,EAAOhoB,UAElB,KAAK/B,EAAQ6lB,mBACZ,OAAO,2BACHvuB,GADJ,IAEC8uB,OAAQ2D,EAAOhoB,UAEjB,KAAK/B,EAAQgmB,kBACZ,OAAO,2BACH1uB,GADJ,IAECgvB,YAAayD,EAAOhoB,UAEtB,QACC,OAAOzK,IkCyCTuzB,KjCrEc,WAAiD,IAA5BvzB,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCAE3D,OAAQA,EAAOnoB,MACX,KAAK5B,IAAQ+d,SACT,OAAO,2BACAzmB,GADP,IAEIivB,KAAK,2BACEjvB,EAAMivB,MACNwD,EAAOhoB,WAGtB,KAAK/B,IAAQie,gBACT,OAAO,2BACA3mB,GADP,IAEIkvB,SAAUuD,EAAOhoB,UAEzB,QACI,OAAOzK,IiCqDlBwzB,OrCpEc,WAAmD,IAA5BxzB,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCAEhE,OAAQA,EAAOnoB,MACd,KAAK5B,IAAQ2V,yBACZ,OAAO,2BACHre,GADJ,IAEC2C,iBAAkB8vB,EAAOhoB,UAE3B,KAAK/B,IAAQyV,WACZ,OAAO,2BACHne,GADJ,IAECW,OAAS8xB,EAAOhoB,UAElB,KAAK/B,IAAQ0V,iBACZ,OAAO,2BACHpe,GADJ,IAECouB,YAAaqE,EAAOhoB,UAEtB,QACC,OAAOzK,IqCkDNyzB,KpCvEW,WAAiD,IAA5BzzB,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCAE9D,OAAQA,EAAOnoB,OACT5B,IAAQgrB,UACL,2BACH1zB,GADJ,IAECsD,MAAQmvB,EAAOhoB,UAGTzK,GoC+DT2zB,Q5C3Ec,WAAmD,IAA5B3zB,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCAEhE,OAAQA,EAAOnoB,OACH5B,IAAQkrB,UACF,2BAAK5zB,GAAZ,IAAmB6zB,MAAOpB,EAAOhoB,UAEnCzK,G4CsET8zB,M1BvEc,WAAwD,IAA5B9zB,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCACrE,OAAQA,EAAOnoB,MACd,KAAK5B,IAAQ4e,UACZ,OAAO,2BACHtnB,GADJ,IAECyD,MAAQgvB,EAAOhoB,UAEjB,KAAK/B,IAAQ8e,uBACZ,OAAO,2BACHxnB,GADJ,IAEC2C,iBAAmB8vB,EAAOhoB,UAE5B,KAAK/B,IAAQ6e,sBACZ,OAAO,2BACHvnB,GADJ,IAECwvB,WAAaiD,EAAOhoB,UAEtB,QACC,OAAOzK,I0BsDT+zB,OhC1Ec,WAAmD,IAA5B/zB,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCAChE,OAAQA,EAAOnoB,MACd,KAAK5B,IAAQsf,gBACZ,OAAO,2BACHhoB,GADJ,IAECovB,WAAaqD,EAAOhoB,UAEhB,KAAK/B,IAAQqf,wBACT,OAAO,2BACH/nB,GADJ,IAECmvB,iBAAkBnvB,EAAMmvB,kBAEnC,QACC,OAAOnvB,IgC8DTC,W9B3Ec,WAAuD,IAA5BD,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCACjE,OAAQA,EAAOnoB,MACX,KAAK5B,IAAQgc,gBACT,OAAO,2BACA1kB,GADP,IAEI4D,UAAW6uB,EAAOhoB,UAE1B,KAAK/B,IAAQuc,8BACX,OAAO,2BACFjlB,GADL,IAEE2C,iBAAmB8vB,EAAOhoB,UAE9B,KAAK/B,IAAQmc,gBACT,OAAO,2BACA7kB,GADP,IAEIE,gBAAiBuyB,EAAOhoB,UAEhC,KAAK/B,IAAQ2Y,qBACT,OAAO,2BACArhB,GADP,IAEIiyB,eAAgBQ,EAAOhoB,UAE/B,QACI,OAAOzK,I8BqDlBwD,O7B1Ec,WAAuD,IAA5BxD,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCACpE,OAAQA,EAAOnoB,MACd,KAAK5B,IAAQ0hB,YACZ,OAAO,2BACHpqB,GADJ,IAECyD,MAAQgvB,EAAOhoB,UAEjB,KAAK/B,IAAQ4hB,iCACZ,OAAO,2BACHtqB,GADJ,IAEC2C,iBAAmB8vB,EAAOhoB,UAE5B,KAAK/B,IAAQ2hB,wBACZ,OAAO,2BACHrqB,GADJ,IAECsvB,iBAAmBmD,EAAOhoB,UAE5B,QACC,OAAOzK,I6ByDNU,a5B1EW,WAAyD,IAA5BV,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCAEtE,OAAQA,EAAOnoB,MACd,KAAK5B,IAAQmU,kBACZ,OAAO,2BACH7c,GADJ,IAECW,OAAS8xB,EAAOhoB,UAElB,KAAK/B,IAAQuU,gCACZ,OAAO,2BACHjd,GADJ,IAEC2C,iBAAmB8vB,EAAOhoB,UAE5B,KAAK/B,IAAQsU,kBACZ,OAAO,2BACHhd,GADJ,IAECa,kBAAmB4xB,EAAOhoB,UAE5B,KAAK/B,IAAQoU,wBACZ,OAAO,2BACH9c,GADJ,IAECouB,YAAaqE,EAAOhoB,UAEtB,QACC,OAAOzK,I4BmDTI,Y3B3Ec,WAAuD,IAA5BJ,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCAEpE,OAAQA,EAAOnoB,MACd,KAAK5B,IAAQmd,iBACZ,OAAO,2BACH7lB,GADJ,IAECsD,MAAQmvB,EAAOhoB,UAEjB,KAAK/B,IAAQyd,+BACZ,OAAO,2BACHnmB,GADJ,IAEC2C,iBAAmB8vB,EAAOhoB,UAE5B,KAAK/B,IAAQqd,iBACZ,OAAO,2BACH/lB,GADJ,IAECK,YAAcoyB,EAAOhoB,UAEvB,KAAK/B,IAAQsd,qBACZ,OAAO,2BACHhmB,GADJ,IAECuvB,eAAgBkD,EAAOhoB,UAEzB,QACC,OAAOzK,I2BoDTO,czB5Ec,WAAsD,IAA5BP,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCAChE,OAAQA,EAAOnoB,MACX,KAAK5B,IAAQ+W,SACT,OAAO,2BACAzf,GADP,IAEIQ,KAAMiyB,EAAOhoB,UAErB,KAAK/B,IAAQgX,uBACT,OAAO,2BACA1f,GADP,IAEIyvB,oBAAqBgD,EAAOhoB,UAEpC,KAAK/B,IAAQkX,mBACT,OAAO,2BACA5f,GADP,IAEIkB,eAAgBuxB,EAAOhoB,UAE/B,KAAK/B,IAAQmX,iCACT,OAAO,2BACA7f,GADP,IAEI0vB,+BAAgC+C,EAAOhoB,UAE/C,QACI,OAAOzK,IyBsDlBg0B,Q/BnFc,WAAoD,IAA5Bh0B,EAA2B,uDAAnBisB,EAAWwG,EAAQ,uCAEjE,OAAQA,EAAOnoB,OAET5B,IAAQkJ,YACL,2BACH5R,GADJ,IAECqvB,QAASoD,EAAOhoB,QAAQ4kB,QACxB/kB,KAAMmoB,EAAOhoB,QAAQH,OAGftK,G+ByETi0B,SxBxEc,WAAqD,IAA5Bj0B,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCAClE,OAAQA,EAAOnoB,MACd,KAAK5B,KAAQqJ,aACZ,OAAO,2BACH/R,GADJ,IAEC2vB,UAAY8C,EAAOhoB,UAErB,KAAK/B,KAAQsJ,gBACZ,OAAO,2BACHhS,GADJ,IAECk0B,WAAYzB,EAAOhoB,UAErB,KAAK/B,KAAQwJ,2BACZ,OAAO,2BACHlS,GADJ,IAEC2C,iBAAmB8vB,EAAOhoB,UAE5B,KAAK/B,KAAQuJ,yBACZ,OAAO,2BACHjS,GADJ,IAECmwB,mBAAqBsC,EAAOhoB,UAE9B,KAAK/B,KAAQ0J,yBACZ,OAAO,2BACHpS,GADJ,IAEC8vB,oBAAqB2C,EAAOhoB,UAE9B,KAAK/B,KAAQ4J,kBACZ,OAAO,2BACHtS,GADJ,IAEC6vB,cAAe4C,EAAOhoB,UAExB,KAAK/B,KAAQ8J,UACZ,OAAO,2BACHxS,GADJ,IAEC+vB,MAAO0C,EAAOhoB,UAEhB,KAAK/B,KAAQgK,aACZ,OAAO,2BACH1S,GADJ,IAECgwB,SAAUyC,EAAOhoB,UAEnB,KAAK/B,KAAQkK,WACZ,OAAO,2BACH5S,GADJ,IAECiwB,OAAQwC,EAAOhoB,UAEjB,KAAK/B,KAAQoK,WACZ,OAAO,2BACH9S,GADJ,IAECkwB,OAAQuC,EAAOhoB,UAGjB,QACC,OAAOzK,IwBmBT2E,MTpFc,WAAkD,IAA5B3E,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCAC/D,OAAQA,EAAOnoB,OACH5B,KAAQqhB,UACL,2BACH/pB,GADJ,IAEC4E,MAAQ6tB,EAAOhoB,UAGfzK,GS6ETm0B,WR7Ec,WAAuD,IAA5Bn0B,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCACpE,OAAQA,EAAOnoB,MACR,KAAK5B,KAAQ8M,eACZ,OAAO,2BACHxV,GADJ,IAECsxB,WAAamB,EAAOhoB,QAC1B8mB,eAAgB,IAElB,KAAK7oB,KAAQiN,qBACZ,OAAO,2BACH3V,GADJ,IAECwxB,gBAAkBiB,EAAOhoB,QACzBgnB,oBAAqB,IAEvB,KAAK/oB,KAAQmN,8BACZ,OAAO,2BACH7V,GADJ,IAEC0xB,wBAA0Be,EAAOhoB,QACjCknB,4BAA6B,IAE/B,KAAKjpB,KAAQqN,sBACZ,OAAO,2BACH/V,GADJ,IAEC4xB,iBAAmBa,EAAOhoB,QAC1BonB,qBAAsB,IAExB,KAAKnpB,KAAQsN,iBACZ,OAAO,2BACHhW,GADJ,IAECuxB,eAAgB,IAElB,KAAK7oB,KAAQuN,uBACZ,OAAO,2BACHjW,GADJ,IAECyxB,oBAAqB,IAEvB,KAAK/oB,KAAQwN,gCACZ,OAAO,2BACHlW,GADJ,IAEC2xB,4BAA6B,IAE/B,KAAKjpB,KAAQyN,wBACZ,OAAO,2BACHnW,GADJ,IAEC6xB,qBAAsB,IAExB,KAAKnpB,KAAQ0N,eACZ,OAAO,2BACHpW,GADJ,IAEC8xB,UAAYW,EAAOhoB,UAErB,QACC,OAAOzK,IQ0BT8E,IvBrFc,WAAgD,IAA5B9E,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCAE1D,OAAQA,EAAOnoB,OACN5B,KAAQ0rB,eACF,2BACAp0B,GADP,IAEI+E,UAAY0tB,EAAOhoB,UAGhBzK,GuB6ElBiF,StBpFc,WAAqD,IAA5BjF,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCAClE,OAAQA,EAAOnoB,MACd,KAAK5B,KAAQuX,cACZ,OAAO,2BACHjgB,GADJ,IAECkF,UAAYutB,EAAOhoB,UAEf,KAAK/B,KAAQyX,wBACT,OAAO,2BACAngB,GADP,IAEIowB,WAAaqC,EAAOhoB,UAElC,KAAK/B,KAAQ0X,oBACZ,OAAO,2BACHpgB,GADJ,IAECqwB,eAAiBoC,EAAOhoB,UAE1B,QACC,OAAOzK,IsBmETq0B,gBrBpFc,WAA4D,IAA5Br0B,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCAEzE,OAAQA,EAAOnoB,MACd,KAAK5B,KAAQgV,6BACZ,OAAO,2BACS1d,GADhB,IAEaswB,gBAAkBmC,EAAOhoB,UAEjC,KAAK/B,KAAQiV,6BACT,OAAO,2BACA3d,GADP,IAEIuwB,QAAUkC,EAAOhoB,UAEzB,KAAK/B,KAAQkV,kBACT,OAAO,2BACA5d,GADP,IAEIwwB,aAAeiC,EAAOhoB,UAE9B,KAAK/B,KAAQmV,gBACT,OAAO,2BACA7d,GADP,IAEIywB,WAAagC,EAAOhoB,UAElC,QACC,OAAOzK,IqB6DTs0B,WnBxFc,WAAuD,IAA5Bt0B,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCAEpE,OAAQA,EAAOnoB,OACT5B,GAAQioB,gBACL,2BACH3wB,GADJ,IAEC4wB,WAAY6B,EAAOhoB,UAGbzK,GmBgFTu0B,cjBzFc,WAA0D,IAA5Bv0B,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCAEvE,OAAQA,EAAOnoB,OACT5B,GAAQooB,mBACL,2BACH9wB,GADJ,IAEC+wB,cAAe0B,EAAOhoB,UAGhBzK,GiBiFTuG,OPvFc,WAAmD,IAA5BvG,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCAChE,OAAQA,EAAOnoB,MACd,KAAK5B,KAAQwR,iBACZ,OAAO,2BACHla,GADJ,IAEC0G,YAAc+rB,EAAOhoB,UAEjB,KAAK/B,KAAQkR,WACnB,KAAKlR,KAAQ0R,mBACN,OAAO,2BACHpa,GADJ,IAECwG,OAASisB,EAAOhoB,UAExB,KAAK/B,KAAQuR,oBACZ,OAAO,2BACHja,GADJ,IAECgyB,SAAWS,EAAOhoB,UAEpB,KAAK/B,KAAQsR,wBACZ,OAAO,2BACHha,GADJ,IAEC+xB,kBAAoBU,EAAOhoB,UAE7B,QACC,OAAOzK,IOgETqE,sBf3Fc,WAAkE,IAA5BrE,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCAE5E,OAAQA,EAAOnoB,MACX,KAAK5B,GAAQ+K,kBACT,OAAO,2BACAzT,GADP,IAEI+D,cAAe0uB,EAAOhoB,UAE9B,KAAK/B,GAAQuoB,oBACT,OAAO,2BACAjxB,GADP,IAEI+D,cAAgB,KAExB,QACI,OAAO/D,Ie8ElBiD,oBACAlC,YZ5Fc,WAAqD,IAA5Bf,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCAC/D,OAAQA,EAAOnoB,OACN5B,KAAQ8Z,iBACF,2BACAxiB,GADP,IAEIgB,YAAayxB,EAAOhoB,UAGjBzK,GYqFlBw0B,cX7Fc,WAAuD,IAA5Bx0B,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCACjE,OAAQA,EAAOnoB,OACN5B,KAAQob,mBACF,2BACA9jB,GADP,IAEIoxB,cAAeqB,EAAOhoB,UAGnBzK,GWsFlBy0B,iBV9Fc,WAA0D,IAA5Bz0B,EAA2B,uDAAnBisB,GAAWwG,EAAQ,uCACpE,OAAQA,EAAOnoB,OACN5B,KAAQogB,sBACF,2BACA9oB,GADP,IAEIqxB,iBAAiB,GAAD,oBAAMrxB,EAAMqxB,kBAAZ,CAA8BoB,EAAOhoB,YAGlDzK,KUiGJ00B,GARK,SAAC10B,EAAOyyB,GAC3B,OAAGA,EAAOnoB,MAAQ5B,KAAQisB,OACzBC,KAAYC,WAAW,gBAChBtC,QAAWuC,EAAWrC,IAEvBF,GAAWvyB,EAAOyyB,I,gDCxGTsC,I,aAWNC,I,aA2CMC,I,aAkCQC,IAxFlB,SAAUH,KAAV,kEACH,OADG,SACGI,qBAAUzsB,KAAQ0sB,iBAAT,WAA2B,WAAW3C,GAAX,kEAGlC,OAHkC,kBAG5B4C,gBAAKL,IAHuB,sDAKjCM,QAAQC,IAAR,MALiC,wDADvC,wCAWP,SAAWP,KAAX,4EACQQ,EAAiB,KACfC,EAAUC,wBAAc,SAAAC,GAC1B,IAAMC,EAA2B,SAACzxB,GAE1BqxB,IACAK,aAAaL,GACbA,EAAiB,MAGjBM,UAAUC,OACVJ,GAAK,GAGLH,EAAiBQ,YAAW,WAEnBF,UAAUC,QACXJ,GAAK,KAEV,OAQX,OAJA1uB,OAAOgvB,iBAAiB,SAAUL,GAClC3uB,OAAOgvB,iBAAiB,UAAWL,GAG5B,WACH3uB,OAAOivB,oBAAoB,SAAUN,GACrC3uB,OAAOivB,oBAAoB,UAAWN,OA7BlD,OAkC+B,OAlC/B,SAkCqCO,gBAAKV,GAlC1C,OAmCQ,OADMW,EAlCd,gBAmCcC,eAAI,CACN/rB,KAAO5B,KAAQ4tB,+BACf7rB,QAAU2rB,IArCtB,+DA2CO,SAAUnB,KAAV,kEACH,OADG,SACGE,qBAAUzsB,KAAQ4tB,+BAAT,WAAyC,WAAW7D,GAAX,wEACxB,OADwB,SAClB8D,kBAAO1xB,MADW,WAGvB,KAFvB2xB,EAD8C,UAGI,IAAnB/D,EAAOhoB,QAHQ,gBAKhD,OALgD,SAK1C4rB,eAAI,CACN/rB,KAAOmsB,IAAe9kB,QACtBlH,QAAU,CACNH,KAAO,QACP+kB,QAAU,iCAT8B,WAcvB,IAAxBmH,IAAoD,IAAnB/D,EAAOhoB,QAdO,gBAgBhD,OAhBgD,SAgB1C4rB,eAAI,CACN/rB,KAAOmsB,IAAe9kB,QACtBlH,QAAU,CACNH,KAAO,UACP+kB,QAAU,iCApB8B,OAyBpD,OAzBoD,UAyB9CgH,eAAI,CACN/rB,KAAO5B,KAAQ0rB,eACf3pB,QAAUgoB,EAAOhoB,UA3B+B,4CADrD,wCAkCQ,SAAUyqB,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAK5B,IACL4B,gBAAK1B,MAHE,wC,qCCxFE2B,I,aAWAC,I,aAuCAC,I,aAcQ5B,IAjErB6B,GAAUC,EAAQ,KACf,SAAUJ,KAAV,mGAWA,SAAUC,KAAV,kGAmBU,OAdRI,EAAQF,GAAQG,SAAS,IAAIC,KAAQ,UAAW,SAGhDC,EAAgBC,KAAOJ,EAAMK,QAAQC,iBAAkB,qBACvDC,EAAeH,KAAOJ,EAAMQ,OAAOF,iBAAkB,qBAErDG,EAAML,OAGRpK,GAAW,GACVyK,EAAIC,QAAQH,IAAiBE,EAAIE,SAASR,MAC9CnK,GAAW,GAhBR,UAmBgBsJ,oBAnBhB,WAmBEv2B,EAnBF,OAoBgBA,EAAM8yB,OAAO7F,WAEZA,EAtBjB,iBAuBS,OAvBT,UAuBeoJ,eAAI,CACN/rB,KAAM5B,IAAQyQ,cACd1O,QAASwiB,IAzBtB,QA6BK,OA7BL,UA6BW4K,iBAAM,KA7BjB,+BAgCA,OAhCA,oBAgCMC,uBAhCN,2HAuCA,SAAUhB,KAAV,wEACG,OADH,SACSX,gBAAKztB,IAAQ0Q,qBADtB,mCAIgB,OAJhB,SAIsBud,gBAAKE,IAJ3B,OAOH,OAHMkB,EAJH,gBAOG5B,gBAAKztB,IAAQ2Q,oBAPhB,OAQH,OARG,UAQG2e,kBAAOD,GARV,gEAcQ,SAAU7C,KAAV,kEACd,OADc,SACRwB,eAAI,CACTC,gBAAKC,IACLD,gBAAKG,MAHQ,wC,iBCjEE1a,I,aAQAO,I,aAQQuY,IAhBlB,SAAU9Y,KAAV,kEACH,OADG,SACG+Y,qBAAUzsB,IAAQmT,oBAAT,WAA8B,mHAD1C,wCAQA,SAAUc,KAAV,kEACN,OADM,SACAwY,qBAAUzsB,IAAQyT,QAAT,WAAkB,WAAWsW,GAAX,kEAEnB,OAFmB,SAEb8D,kBAAOl0B,MAFM,cAG3B+qB,aAAa6K,UAHc,2CAD3B,wCAQQ,SAAU/C,KAAV,kEACd,OADc,SACRwB,eAAI,CACTC,gBAAKva,IACLua,gBAAKha,MAHQ,wCCnBR,IAAMub,GAAwB,SAACC,GAClC,IAAID,GAAwB,EAoB5B,OAlBAC,EAAevtB,MAAMwtB,KAAI,SAAUrf,GAG/B,OAAQA,EAAKsf,eACT,IAAK,eACL,IAAK,mBACL,IAAK,iBACL,IAAK,gBACDH,GAAwB,EAOhC,OAAO,KAGJ,CAAE,sBAAyBA,I,kDCJrBI,K,aA0BAC,I,aAcAvtB,I,aAkBAC,I,aAkBAC,I,aA6BAstB,I,aAwMAC,I,aAkDAluB,I,aAuBAe,I,aAqCAotB,I,aAWAhuB,I,aAiCQwqB,IA3clB,SAAUoD,KAAV,kEACH,OADG,SACGnD,qBAAUzsB,IAAQK,aAAT,WAAuB,WAAW0pB,GAAX,0EAGnB,OAHmB,SAGb8D,kBAAOj1B,MAHM,OAab,OAVfF,EAH4B,yBAaPA,EAAOu3B,IAAI,sEAbJ,UAcd,OADVtM,EAbwB,SAcLA,EAdK,mDAgB9B,OAhB8B,UAgBxBgK,eAAI,CACN/rB,KAAM5B,IAAQM,aACdyB,QAAS4hB,EAAS,kBAlBQ,oHADnC,wCA0BA,SAAUkM,KAAV,kEACH,OADG,SACGpD,qBAAUzsB,IAAQoB,cAAT,WAAwB,WAAW2oB,GAAX,0EAGpB,OAHoB,SAGd8D,kBAAOj1B,MAHO,OAKf,OAFdF,EAH6B,gBAKTm1B,kBAAOh0B,MALE,OAQlB,OAHXq2B,EAL6B,gBAQZx3B,EAAOu3B,IAAI,UAAYC,EAAYC,kBAAoB,uBAR3C,yDADpC,wCAcA,SAAU7tB,KAAV,kEACH,OADG,SACGmqB,qBAAUzsB,IAAQO,sBAAT,WAAgC,WAAWwpB,GAAX,0EAE5B,OAF4B,SAEtB8D,kBAAOp1B,MAFe,UAErCC,EAFqC,wDAMxB,OANwB,SAMlBA,EAAOu3B,IAAI,sBANO,UAOvB,OADhBjM,EANuC,SAOdA,EAPc,uDASvCA,EATuC,iBAUvC,OAVuC,UAUjC2J,eAAI,CACN/rB,KAAM5B,IAAQQ,sBACduB,QAASiiB,IAZ0B,4CAD5C,wCAkBA,SAAUzhB,GAAYpI,GAAtB,kEACH,OADG,SACGsyB,qBAAUzsB,IAAQc,cAAT,WAAwB,WAAWipB,GAAX,wEAEpB,OAFoB,SAEd8D,kBAAOp1B,MAFO,UAE7BC,EAF6B,wDAKf,OALe,SAKTm1B,kBAAO7zB,MALE,oEAQnC,OARmC,UAQ7BtB,EAAO03B,KAAK,aAAcC,KAAKC,UAAUvG,EAAOhoB,UARnB,QAUnC,OAVmC,UAU7B4rB,eAAI,CACN/rB,KAAM5B,IAAQkB,cACda,QAASgoB,EAAOhoB,UAZe,4CADpC,wCAkBA,SAAUS,GAAarI,GAAvB,kEACH,OADG,SACGsyB,qBAAUzsB,IAAQe,eAAT,WAAyB,WAAWgpB,GAAX,wEAErB,OAFqB,SAEf8D,kBAAOp1B,MAFQ,UAE9BC,EAF8B,wDAOpC,OAPoC,SAO9Bi1B,eAAI,CACN/rB,KAAM5B,IAAQgB,eACde,QAASgoB,EAAOhoB,UATgB,OAiBpC,OAjBoC,SAiB9BrJ,EAAO03B,KAAK,kBAAmBC,KAAKC,UAAUvG,EAAOhoB,UAjBvB,2CADrC,wCA6BA,SAAU+tB,KAAV,kEACH,OADG,SACGrD,qBAAUzsB,IAAQC,iBAAT,WAA2B,WAAW8pB,GAAX,oHAKnB,OALmB,kBAKb8D,kBAAOj1B,MALM,UAMpB,OADRF,EAL4B,yDAQlC,OARkC,SAQ5Bi1B,eAAI,CACN/rB,KAAM5B,IAAQmB,uBACdY,SAAS,IAVqB,OAcnB,OAdmB,UAcbrJ,EAAOu3B,IAAI,mBAAoB,eAdlB,WAgBpB,OAFRM,EAd4B,UAgBZA,EAhBY,iBAkB9B,OADMC,EAAM,IAAIC,UAAOC,KAAKH,EAAQ,UAjBN,UAkBxB5C,eAAI,CACN/rB,KAAM5B,IAAQG,gBACd4B,QAAS,0BAA4ByuB,EAAIG,SAAS,YApBxB,QAyBlB,OAzBkB,UAyBZj4B,EAAOu3B,IAAI,2HAzBC,QA2BjB,OAFXl2B,EAzB4B,iBA2BX8zB,kBAAOp1B,MA3BI,QA4BrB,OADPE,EA3B4B,iBA4BfA,EAASs3B,IAAI,YA5BE,WA6BtB,OADNW,EA5B4B,SA6BbA,EA7Ba,mDAmCX,OAJnBA,EAAKC,WACLC,aAAaC,QAhCiB,UAmCLr4B,EAAOu3B,IAAI,sBAnCN,WAoCZ,OADhBR,EAnC4B,SAoCHA,EApCG,mDAgEhB,OA1BZuB,EAAwBxB,GAAsBC,GAInC,MAAbmB,EAAKz2B,KACLy2B,EAAKz2B,KAAOk2B,KAAKY,MAAML,EAAKz2B,MAE5By2B,EAAKz2B,KAAO,GAIXy2B,EAAKz2B,KAAKupB,SAIXnlB,OAAO2yB,aAAeN,EAAKz2B,KAAKupB,UAHhCkN,EAAKz2B,KAAKupB,SAAW,CAAEyN,gBAAgB,EAAMC,kBAAkB,EAAMC,sBAAsB,GAC3F9yB,OAAO2yB,aAAe,IAK1B3yB,OAAO2yB,aAAaI,OAAS,GAGzB/yB,OAAOC,aAAa+yB,SACdD,EAAS,CAAEE,qBAAqB,GACtCjzB,OAAO2yB,aAAaI,OAApB,2BAAiC/yB,OAAO2yB,aAAaI,QAArD,IAA6DA,YA7D/B,UAgEV54B,EAAOu3B,IAAI,sCAhED,YAiEhB,OADZwB,EAhE4B,SAiEuD,MAA/DA,EAAUvvB,MAAMwvB,MAAK,SAAAC,GAAC,MAAqB,iBAAjBA,EAAEC,gBACjDH,EAAUvvB,MAAMwvB,MAAK,SAAAC,GAAC,OAAIA,EAAEnX,IAAMjc,OAAOC,aAAaqzB,yBACjDP,EADsE,2BACxDV,EAAKz2B,KAAKupB,SAAS4N,QADqC,IAC7BQ,mBAAmB,IAClElB,EAAKz2B,KAAKupB,SAAS4N,OAASA,EAC5B/yB,OAAO2yB,aAAaI,OAASA,IAE7BG,EAAUvvB,MAAMwvB,MAAK,SAAAC,GAAC,OAAIA,EAAEnX,IAAMjc,OAAOC,aAAauzB,qBAA6D,IAAxCxzB,OAAOC,aAAauzB,kBAA0BxzB,OAAOC,aAAa+yB,UACvID,EAD+I,2BACjIV,EAAKz2B,KAAKupB,SAAS4N,QAD8G,IACtGE,qBAAqB,IACpEZ,EAAKz2B,KAAKupB,SAAS4N,OAASA,EAC5B/yB,OAAO2yB,aAAaI,OAASA,GAE5BV,EAAKz2B,KAAK63B,gBACXpB,EAAKz2B,KAAK63B,cAAgB,IAII,OAA9B,UAAApB,EAAKz2B,KAAKupB,gBAAV,eAAoBlpB,QAjFU,iBAkFjB,OAlFiB,UAkFXqzB,kBAAOvzB,MAlFI,qBAmFpB,UAAKs2B,EAAKz2B,KAAKupB,gBAAf,aAAK,EAAoBlpB,QAnFL,iBAqF1B,OArF0B,UAqFpBmzB,eAAIsE,eAAYC,UAAZ,UAAsBtB,EAAKz2B,KAAKupB,gBAAhC,aAAsB,EAAoBlpB,SArF1B,QAwF9Bm0B,KAAOn0B,OAAP,UAAco2B,EAAKz2B,KAAKupB,gBAAxB,aAAc,EAAoBlpB,QAxFJ,wBA0FjB,OA1FiB,UA0FXqzB,kBAAOvzB,MA1FI,QA6F9B,OAHIE,EA1F0B,OA2F9Bo2B,EAAKz2B,KAAKupB,SAASlpB,OAASA,EA3FE,UA6FxBmzB,eAAI,CACN/rB,KAAMuwB,IAAYrxB,cAClBiB,QAAQ,eAAM6uB,EAAKz2B,QA/FO,QAiG9Bw0B,KAAOn0B,OAAOA,GAjGgB,WAoG9B43B,EAAa,CACb,IAAK,eAAgB,uBAAwB,UAG5CxB,EAAKz2B,KAAKupB,SAASrpB,eAxGU,iBAqH9B,OAXI0H,EAAU,GAEdqwB,EAAWtpB,SAAQ,SAACuH,EAAMzM,GACtB7B,EAAO,2BACAA,GADA,kBAEFsO,EAAO,CACJvN,SAAS,QAhHS,UAqHxB6qB,eAAI,CACN/rB,KAAM5B,IAAQyB,oBACdM,QAASA,IAvHiB,gCAiJ9B,OAtBI1H,EA3H0B,eA2HJu2B,EAAKz2B,KAAKupB,SAASrpB,gBACzCg4B,EAAoB,GACxBD,EAAWtpB,SAAQ,SAACuH,EAAMzM,GASlByuB,EARCh4B,EAAegW,GAQC,2BACVgiB,GADU,kBAEZhiB,EAFY,eAGNhW,EAAegW,MAVT,2BACVgiB,GADU,kBAEZhiB,EAAO,CACJvN,SAAS,QAazB8tB,EAAKz2B,KAAKupB,SAASrpB,eAAiBg4B,EA/IN,UAiJxB1E,eAAI,CACN/rB,KAAM5B,IAAQyB,oBACdM,QAASswB,IAnJiB,QAuJlC,OAvJkC,UAuJ5B1E,eAAI,CACN/rB,KAAM5B,IAAQE,iBACd6B,QAAQ,uCAAM6uB,GAAS72B,GAAYi3B,KAzJL,YA4J9BJ,IAAQA,EAAK0B,QAAsC,MAA5B1B,EAAK0B,OAAOC,aA5JL,iBA+J9B,OAFMA,EAAe3B,EAAK0B,OAAOC,aAC3BC,EAAWC,KAAKC,MAAMH,EAAe,GA9Jb,UA+JxB5E,eAAI,CACN/rB,KAAM5B,IAAQI,cACd2B,QAASywB,IAjKiB,QAqKlC,OArKkC,UAqK5B7E,eAAI,CACN/rB,KAAM5B,IAAQmB,uBACdY,SAAS,IAvKqB,QA0KlC,OA1KkC,UA0K5B4rB,eAAI,CACN/rB,KAAMuwB,IAAY9xB,eA3KY,QA8KlC,OA9KkC,UA8K5BstB,eAAI,CACN/rB,KAAMuwB,IAAY/wB,gBA/KY,QAkLlC,OAlLkC,UAkL5BusB,eAAI,CACN/rB,KAAM+wB,IAAYvgB,YAnLY,QAsLlC,OAtLkC,UAsL5Bub,eAAI,CACN/rB,KAAMgxB,IAAgB3T,eAvLQ,QA0LlC,OA1LkC,UA0L5B0O,eAAI,CACN/rB,KAAMixB,IAAc3jB,gBA3LU,QA8LlC,OA9LkC,UA8L5Bye,eAAI,CACN/rB,KAAMkxB,KAAa1R,YA/LW,oHADvC,wCAwMA,SAAU2O,GAAmB51B,GAA7B,kEACH,OADG,SACGsyB,qBAAUzsB,IAAQqB,qBAAT,WAA+B,WAAW0oB,GAAX,oFAE3B,OAF2B,SAErB8D,kBAAOp1B,MAFc,OAG3B,OAH2B,gBAGrBo1B,kBAAO3zB,MAHc,OAyC1C,OAtCI64B,EAHsC,QAKO,GAA7ChJ,EAAOhoB,QAAQI,QAAQe,QAAQ,WAAmB2C,MAAMmtB,QAAQjJ,EAAOhoB,QAAQG,SAC3E+wB,EADmF,UACzEF,SADyE,aACzE,EAAUrP,SAASqG,EAAOhoB,QAAQI,SAC5C+wB,EAAM,GACV,UAAGD,SAAH,OAAG,EAASlxB,UACRkxB,EAAUA,EAAQlxB,SAElBkxB,IACIE,EAAWpJ,EAAOhoB,QAAQG,OAC9BgxB,EAAMD,EAAQG,QAAO,SAAAC,GAAC,OAA0C,MAAtCF,EAASzB,MAAK,SAAA4B,GAAC,OAAIA,EAAEnuB,KAAOkuB,EAAEluB,WACpD2D,SAAQ,SAAAlF,GACM,MAAVA,EAAE2vB,OAAc3vB,EAAE2vB,MAAO,IAAI5E,MAAS6E,aAE1CN,EAAIzvB,OAAS,IAAIyvB,EAAIO,OAAO,GAAKP,EAAIzvB,OAAS,IAClDsmB,EAAOhoB,QAAQG,MAAQ6nB,EAAOhoB,QAAQG,MAAM0D,OAAOstB,IAIhD,QAAP,EAAAD,SAAA,SAASnqB,SAAQ,SAAC4qB,EAAG9vB,GACH,MAAV8vB,EAAEH,MAAgB5E,KAAO+E,EAAEH,MAAMI,KAAK,IAAIhF,KAAU,QAAU,IAC9DsE,EAAQQ,OAAO7vB,EAAG,OAK9BmvB,EAAQ,2BAEDA,GAFC,IAGJrP,SAAS,2BAEFqP,EAASrP,UAFR,kBAGHqG,EAAOhoB,QAAQI,QAAU4nB,EAAOhoB,QAAQG,UAIjD3D,OAAO2yB,aAAe6B,EAASrP,SAvCW,UAyCpCiK,eAAI,CACN/rB,KAAM5B,IAAQc,cACdiB,QAASgxB,IA3C6B,4CAD3C,wCAkDA,SAAUlxB,GAAkB1H,GAA5B,kEACH,OADG,SACGsyB,qBAAUzsB,IAAQsB,qBAAT,WAA+B,WAAWyoB,GAAX,0EAE3B,OAF2B,SAErB8D,kBAAOp1B,MAFc,OAG3B,OAH2B,gBAGrBo1B,kBAAO3zB,MAHc,OAe1C,OAZI64B,EAHsC,OAKtC/D,EAAML,OAASiF,OAEnBb,EAAQ,2BACDA,GADC,IAEJf,cAAc,2BACPe,EAASf,eADH,kBAERjI,EAAOhoB,QAAUitB,MAXgB,UAepCrB,eAAI,CACN/rB,KAAM5B,IAAQc,cACdiB,QAASgxB,IAjB6B,4CAD3C,wCAuBA,SAAUnwB,GAAwBzI,GAAlC,kEACH,OADG,SACGsyB,qBAAUzsB,IAAQ0B,2BAAT,WAAqC,WAAWqoB,GAAX,0EAE3B,OAF2B,SAErB8D,kBAAOzzB,MAFc,OAYhD,OAVIC,EAF4C,OAIhDA,EAAc,2BACPA,GADO,kBAET0vB,EAAOhoB,QAAQc,KAFN,2BAGHxI,EAAe0vB,EAAOhoB,QAAQc,OAH3B,IAINC,QAASinB,EAAOhoB,QAAQe,YARgB,SAY1C6qB,eAAI,CACN/rB,KAAM5B,IAAQyB,oBACdM,QAAS1H,IAdmC,OAkBjC,OAlBiC,SAkB3BwzB,kBAAOp1B,MAlBoB,OAmBjC,OAnBiC,iBAmB3Bo1B,kBAAO3zB,MAnBoB,QA6BhD,OAVI64B,EAnB4C,OAqBhDA,EAAQ,2BACDA,GADC,IAEJrP,SAAS,2BACFqP,EAASrP,UADR,IAEJrpB,eAAgBA,MAzBwB,UA6B1CszB,eAAI,CACN/rB,KAAM5B,IAAQc,cACdiB,QAASgxB,IA/BmC,4CADjD,wCAqCA,SAAU/C,GAAkB71B,GAA5B,kEACH,OADG,SACGsyB,qBAAUzsB,IAAQyB,oBAAT,WAA8B,WAAWsoB,GAAX,sGAD1C,wCAWA,SAAU/nB,GAAqB7H,GAA/B,kEACH,OADG,SACGsyB,qBAAUzsB,IAAQuB,wBAAT,WAAkC,WAAWwoB,GAAX,8EAE9B,OAF8B,SAExB8D,kBAAOp1B,MAFiB,OAG9B,OAH8B,gBAGxBo1B,kBAAO3zB,MAHiB,OAQ7C,IAAW4H,KALPixB,EAHyC,OAKzCc,EAAYd,EAASf,cACrB8B,EAAe,GAEED,EACbA,EAAUE,eAAejyB,IACrBA,IAAW,GAAKioB,EAAOhoB,UACvB+xB,EAAY,2BACLA,GADK,kBAEPhyB,EAAS+xB,EAAU/xB,MAWpC,OALAixB,EAAQ,2BACDA,GADC,IAEJf,cAAe8B,IArB0B,UAwBvCnG,eAAI,CACN/rB,KAAM5B,IAAQc,cACdiB,QAASgxB,IA1BgC,4CAD9C,wCAiCQ,SAAUvG,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAK6B,IACL7B,gBAAK4B,IACL5B,gBAAK2B,IACL3B,gBAAK3rB,IACL2rB,gBAAK1rB,IACL0rB,gBAAKzrB,IACLyrB,gBAAK8B,IACL9B,gBAAKpsB,IACLosB,gBAAKjsB,IACLisB,gBAAK+B,IACL/B,gBAAKrrB,MAZE,wC,6CCgKEoxB,IAxnBJp7B,GAAc,yCAAG,WAAOq7B,GAAP,oBAAAC,EAAA,6DAKtBC,EAAS,GAITA,EADA51B,OAAOC,aAAa+yB,OACX,CACL,iDACA,6CACA,yCACA,wCACA,4CACA,kDACA,8CAGK,CACL,iDACA,6CACA,8CACA,6CACA,6CAEA,4CACA,kDACA,8CAGF6C,EA/BoB,iCAAAF,EAAA,MA+BZ,6BAAAA,EAAA,+EAEcD,EAASI,SAASF,GAFhC,UAGO,OADPC,EAFA,iDAGoB,IAHpB,gCAICA,EAAME,aAJP,gCAMN1H,QAAQ2H,MAAR,MANM,yDA/BY,qDAyCpBC,EAAS,+BAzCW,SA2CTJ,IA3CS,UA4Cd,MA5Cc,gDA4CD,MA5CC,gCA8CnB,CAEHnE,IAAI,WAAD,8BAAE,WAAgB9qB,EAAKvD,GAArB,oCAAAsyB,EAAA,6DAA2BO,EAA3B,+BAAqC,OAArC,SAIOC,EAAc,IACY,GAA1BvvB,EAAIjC,QAAQ,YAA4C,GAAzBiC,EAAIjC,QAAQ,WAA4C,GAA1BiC,EAAIjC,QAAQ,YAA8C,GAA3BiC,EAAIjC,QAAQ,aACxGwxB,EAAc,CAAE,iBAAoB,aAN3C,KAS0BC,MAT1B,KASgCH,EAASC,EAAUtvB,EATnD,kBAcmDivB,IAdnD,+BAcgC,UAdhC,WAYe,OAAU,mBACV,eAAgB,mBAChB,cAdf,WAgBkBM,EAhBlB,+BAWWE,QAXX,gDASSC,EATT,QAoBiBC,GApBjB,wBAqBOlI,QAAQC,IAAI,kBAAkBgI,GArBrC,kBAsBc,MAtBd,eAyBSE,EAAenzB,GAAc,OAzBtC,UA0B8BizB,EAASE,KAAgBC,OAAM,SAAAC,GACtD,MAAO,MA3Bd,YA0BSC,EA1BT,UA8BwB,GA9BxB,0CA8BmC,MA9BnC,iCA+BUA,GA/BV,2DAgCwB,MAhCxB,0DAAF,qDAAC,GAkCJ9E,KAAK,WAAD,8BAAE,WAAgBjrB,EAAKhL,GAArB,gCAAA+5B,EAAA,6DAA2BO,EAA3B,+BAAqC,OAArC,cAEyBE,MAFzB,KAE+BH,EAASC,EAAUtvB,EAFlD,SAOkDivB,IAPlD,+BAO+B,UAP/B,WAKc,OAAU,mBACV,eAAgB,mBAChB,cAPd,WAUgB/D,KAAKC,UAAUn2B,GAV/B,MAIUy6B,QAJV,KASUO,OAAQ,OACRC,KAVV,gDAEQP,EAFR,QAagBC,GAbhB,wBAcMlI,QAAQ2H,MAAM,kBAAkBM,GAdtC,kBAea,MAfb,yBAkB6BA,EAASQ,OAAOL,OAAM,SAAAC,GAC7C,OAAO,QAnBb,YAkBQC,EAlBR,UAqBuB,GArBvB,0CAqBkC,MArBlC,iCAsBSA,GAtBT,2DAuBuB,MAvBvB,0DAAF,qDAAC,GAyBLvH,IAAI,WAAD,8BAAE,WAAgBxoB,EAAKhL,GAArB,gCAAA+5B,EAAA,6DAA2BO,EAA3B,+BAAqC,OAArC,cAE0BE,MAF1B,KAEgCH,EAASC,EAAUtvB,EAFnD,SAMmDivB,IANnD,+BAMgC,UANhC,WAKe,eAAgB,mBAChB,cANf,WASiBj6B,EATjB,MAIWy6B,QAJX,KAQWO,OAAQ,MACRC,KATX,gDAESP,EAFT,QAYiBC,GAZjB,wBAaOlI,QAAQ2H,MAAM,kBAAkBM,GAbvC,kBAcc,MAdd,yBAiB8BA,EAASQ,OAAOL,OAAM,SAAAC,GAC7C,MAAO,MAlBd,YAiBSC,EAjBT,UAoBwB,GApBxB,0CAoBmC,MApBnC,iCAqBUA,GArBV,2DAsBwB,MAtBxB,0DAAF,qDAAC,GAwBJI,MAAM,WAAD,8BAAE,WAAgBnwB,EAAKhL,GAArB,kCAAA+5B,EAAA,6DAA2BO,EAA3B,+BAAqC,OAAQc,EAA7C,+BAAsD,GAAtD,cAEwBZ,MAFxB,KAE8BH,EAASC,EAAUtvB,EAFjD,SAMiDivB,IANjD,+BAM8B,UAN9B,UAO0BmB,EAP1B,MAKa,eAAgB,mBAChB,cANb,KAOa,WAPb,WAUep7B,EAVf,MAISy6B,QAJT,KASSO,OAAQ,QACRC,KAVT,gDAEOP,EAFP,QAceC,GAdf,wBAeKlI,QAAQ2H,MAAM,kBAAkBM,GAfrC,kBAgBY,MAhBZ,yBAmB4BA,EAASQ,OAAOL,OAAM,SAAAC,GAC7C,MAAO,MApBZ,YAmBOC,EAnBP,UAsBsB,GAtBtB,0CAsBiC,MAtBjC,iCAuBQA,GAvBR,2DAwBsB,MAxBtB,0DAAF,qDAAC,GA0BNM,SAAS,WAAD,8BAAE,uBAAAtB,EAAA,6DACNtH,QAAQC,IAAI,yBADN,SAGOuH,IAHP,mFAAF,kDAAC,KA7Ja,4CAAH,sDAqKdqB,GAAW,yCAAG,WAAOxB,GAAP,sBAAAC,EAAA,6DAEjBM,EAASj2B,OAAOi2B,OAAS,OAE3BkB,EAAS/wB,SAASgxB,SAASD,OAC3Bn3B,OAAOC,aAAao3B,qBAAoBF,EAASn3B,OAAOC,aAAao3B,oBAErEzB,EAAS,CAETuB,EAAS,uBAGPtB,EAZiB,iCAAAF,EAAA,MAYT,6BAAAA,EAAA,+EAEYD,EAASI,SAASF,GAF9B,UAGO,OADTC,EAFE,iDAGoB,MAHpB,gCAICA,EAAME,aAJP,gCAMN1H,QAAQ2H,MAAR,MANM,yDAZS,8DAsBNH,IAtBM,UAuBX,MAvBW,iDAuBE,MAvBF,iCAyBhB,CAEHnE,IAAI,WAAD,8BAAE,WAAgB9qB,GAAhB,kCAAA+uB,EAAA,6DAAqBU,EAArB,+BAA+B,GAAIG,EAAnC,+BAAkD,OAAlD,cAE0BJ,MAF1B,KAEgCH,EAASrvB,EAFzC,6BAIcyvB,GAJd,kBAK0DR,IAL1D,gCAKuC,UALvC,WAKsB,cALtB,YAKWQ,QALX,8EAESC,EAFT,QAQiBC,GARjB,wBASOlI,QAAQ2H,MAAM,kBAAkBM,GATvC,UAUwBgB,KAAKC,sBAAsBjB,EAAUV,GAV7D,oCAYuB,OAAbU,EAZV,0CAamB,MAbnB,qBAiB4B,SAAjBE,EAjBX,kCAkBgCF,EAASvtB,OAlBzC,QAkBW4tB,EAlBX,gDAoBgCL,EAASE,KApBzC,QAoBWG,EApBX,0EAuBOtI,QAAQ2H,MAAR,mDAAsDM,GAvB7D,kBAwBc,MAxBd,WA+BOK,IAAiB,GA/BxB,0CA+BmC,MA/BnC,iCAgCUA,GAhCV,4DAiCwB,MAjCxB,kEAAF,mDAAC,GAmCJ9E,KAAK,WAAD,8BAAE,WAAgBjrB,EAAKhL,GAArB,gCAAA+5B,EAAA,6DAA2B6B,EAA3B,8CAEyBpB,MAFzB,KAE+BH,EAASrvB,EAFxC,SAOkDivB,IAPlD,+BAO+B,UAP/B,WAKc,OAAU,mBACV,eAAgB,mBAChB,cAPd,WAUgB/D,KAAKC,UAAUn2B,GAV/B,MAIUy6B,QAJV,KASUO,OAAQ,OACRC,KAVV,gDAEQP,EAFR,QAagBC,GAbhB,wBAcMlI,QAAQ2H,MAAM,kBAAkBM,GAdtC,kBAea,MAfb,yBAkB6BA,EAASQ,OAAOL,OAAM,SAAAC,GAC7C,MAAO,MAnBb,WAkBQC,EAlBR,QAqBKa,EArBL,0CAsBalB,GAtBb,WAwBMK,IAAiB,GAxBvB,0CAwBkC,MAxBlC,iCAyBSA,GAzBT,2DA0BuB,MA1BvB,0DAAF,qDAAC,GA4BLvH,IAAI,WAAD,8BAAE,WAAgBxoB,EAAKhL,GAArB,gCAAA+5B,EAAA,6DAA2B6B,EAA3B,8CAE0BpB,MAF1B,KAEgCH,EAASrvB,EAFzC,SAOmDivB,IAPnD,+BAOgC,UAPhC,WAKe,OAAU,mBACV,eAAgB,mBAChB,cAPf,WAUiB/D,KAAKC,UAAUn2B,GAVhC,MAIWy6B,QAJX,KASWO,OAAQ,MACRC,KAVX,gDAESP,EAFT,QAaiBC,GAbjB,wBAcOlI,QAAQ2H,MAAM,kBAAkBM,GAdvC,kBAec,MAfd,YAkBMkB,EAlBN,0CAmBclB,GAnBd,yBAsB8BA,EAASQ,OAAOL,OAAM,SAAAC,GAC7C,MAAO,MAvBd,YAsBSC,EAtBT,UAyBwB,GAzBxB,0CAyBmC,MAzBnC,iCA0BUA,GA1BV,2DA2BwB,MA3BxB,0DAAF,qDAAC,GA6BJc,OAAO,WAAD,8BAAE,WAAgB7wB,EAAKhL,GAArB,gCAAA+5B,EAAA,6DAA2B6B,EAA3B,8CAEuBpB,MAFvB,KAE6BH,EAASrvB,EAFtC,SAOgDivB,IAPhD,+BAO6B,UAP7B,WAKY,OAAU,mBACV,eAAgB,mBAChB,cAPZ,WAUc/D,KAAKC,UAAUn2B,GAV7B,MAIQy6B,QAJR,KASQO,OAAQ,SACRC,KAVR,gDAEMP,EAFN,QAacC,GAbd,wBAeIlI,QAAQ2H,MAAM,kBAAkBM,GAfpC,kBAgBW,MAhBX,YAmBGkB,EAnBH,0CAoBWlB,GApBX,yBAuB2BA,EAASQ,OAAOL,OAAM,SAAAC,GAC7C,MAAO,MAxBX,YAuBMC,EAvBN,UA0BqB,GA1BrB,0CA0BgC,MA1BhC,iCA2BOA,GA3BP,2DA4BqB,MA5BrB,0DAAF,qDAAC,GA8BPM,SAAS,WAAD,8BAAE,uBAAAtB,EAAA,sEACOE,IADP,mFAAF,kDAAC,GAGT0B,sBAAsB,WAAD,8BAAE,WAAgBjB,EAAUV,GAA1B,kBAAAD,EAAA,yDAEK,MAApBW,EAASlQ,OAFM,qBAIXkQ,EAASD,QAAQqB,IAAI,oBAJV,oBAKLC,EAAqBrB,EAASD,QAAQqB,IAAI,sBAE1CE,EAAkBD,EAAmB7wB,MAAM,KAC5CqsB,MAAK,SAAA0E,GAAK,OAAIA,EAAMhxB,SAAS,cAAYC,MAAM,MAAM,GAAGA,MAAM,MAAM,IAR9D,wBAWPunB,QAAQC,IAAI,0CACZD,QAAQC,IAAI,6BAA8BsJ,GAC1CvJ,QAAQC,IAAI,oBAAqBsH,GAb1B,mBAeG0B,KAAKQ,gBAAgBC,kBAAkB,CACzCC,OAAQh4B,OAAO+E,KAAK6yB,GACpBhC,OAAQA,IAjBT,+DAqBC,gBAAiBqC,mBACI,uBAApB,KAAMC,WAA0D,uBAApB,KAAMA,UAtBpD,kCAwBOZ,KAAKQ,gBAAgBK,qBAAqB,CAC5CH,OAAQh4B,OAAO+E,KAAK6yB,GACpBhC,OAAQA,IA1Bb,uCAgCPvH,QAAQC,IAAI,0BAA2BqJ,GAhChC,kBAiCA,MAjCA,uCAqCXtJ,QAAQC,IAAI,+BArCD,kBAsCJ,MAtCI,iCA0CZgI,GA1CY,0DAAF,qDAAC,KAxJH,4CAAH,sDAuMX77B,GAAmB,yCAAG,WAAOi7B,EAAU0C,GAAjB,kBAAAzC,EAAA,6DAEzBC,EAAS,CAACjvB,GAAmByxB,GAAQ,kBAErCvC,EAJyB,iCAAAF,EAAA,MAIjB,6BAAAA,EAAA,+EAEcD,EAASI,SAASF,GAFhC,UAGO,OADPC,EAFA,iDAGoB,IAHpB,gCAICA,EAAME,aAJP,gCAMN1H,QAAQ2H,MAAR,MANM,yDAJiB,8DAcdH,IAdc,UAenB,MAfmB,gDAeN,MAfM,gCAiBxB,CAEHnE,IAAI,WAAD,8BAAE,WAAgB9qB,EAAKyxB,GAArB,kBAAA1C,EAAA,uEAEgC,GAAzB/uB,EAAIjC,QAAQ,WACZiC,EAAMD,GAAmByxB,GAAQxxB,GAHxC,KAM0BwvB,MAN1B,KAMgCxvB,EANhC,kBAWmDivB,IAXnD,+BAWgC,UAXhC,WASe,OAAU,oBACV,eAAgB,mBAChB,cAXf,YAQWQ,QARX,WAacgC,EAbd,mEAMS/B,EANT,QAgBiBC,GAhBjB,wBAiBOlI,QAAQ2H,MAAM,kBAAkBM,GAjBvC,kBAkBc,MAlBd,yBAqB8BA,EAASQ,OAAOL,OAAM,SAAAC,GAE7C,OADArI,QAAQ2H,MAAR,8BAAqCU,EAArC,eAAsDJ,GAC/C,QAvBd,YAqBSK,EArBT,UA0BwB,GA1BxB,0CA0BmC,MA1BnC,iCA2BUA,GA3BV,2DA4BwB,MA5BxB,0DAAF,qDAAC,GA+BJvH,IAAI,WAAD,8BAAE,WAAgBxoB,EAAKhL,GAArB,kBAAA+5B,EAAA,2EAE0BS,MAF1B,KAEgCH,OAASrvB,EAFzC,SAOmDivB,IAPnD,+BAOgC,UAPhC,WAKe,OAAU,mBACV,eAAgB,mBAChB,cAPf,WAUiB/D,KAAKC,UAAUn2B,GAVhC,MAIWy6B,QAJX,KASWO,OAAQ,MACRC,KAVX,gDAESP,EAFT,QAaiBC,GAbjB,wBAcOlI,QAAQ2H,MAAM,kBAAkBM,GAdvC,kBAec,MAfd,yBAkB8BA,EAASQ,OAAOL,OAAM,SAAAC,GAC7C,MAAO,MAnBd,YAkBSC,EAlBT,UAqBwB,GArBxB,0CAqBmC,MArBnC,iCAsBUA,GAtBV,2DAuBwB,MAvBxB,0DAAF,qDAAC,GAyBJ9E,KAAK,WAAD,8BAAE,WAAgBjrB,EAAKhL,GAArB,kBAAA+5B,EAAA,2EAEyBS,MAFzB,KAE+BxvB,EAF/B,SAOkDivB,IAPlD,+BAO+B,UAP/B,WAKc,OAAU,mBACV,eAAgB,mBAChB,cAPd,WAUgB/D,KAAKC,UAAUn2B,GAV/B,MAIUy6B,QAJV,KASUO,OAAQ,OACRC,KAVV,gDAEQP,EAFR,QAagBC,GAbhB,wBAcMlI,QAAQ2H,MAAM,kBAAkBM,GAdtC,kBAea,MAfb,yBAkB6BA,EAASQ,OAAOL,OAAM,SAAAC,GAC7C,MAAO,MAnBb,YAkBQC,EAlBR,UAqBuB,GArBvB,0CAqBkC,MArBlC,iCAsBSA,GAtBT,2DAuBuB,MAvBvB,0DAAF,qDAAC,GAyBLM,SAAS,WAAD,8BAAE,uBAAAtB,EAAA,6DACNtH,QAAQC,IAAI,gBADN,SAGOuH,IAHP,mFAAF,kDAAC,KApGkB,2CAAH,wDA8GnBl7B,GAAe,yCAAG,WAAO+6B,GAAP,oBAAAC,EAAA,6DAErBM,EAASj2B,OAAOi2B,OAAS,kBACzBL,EAAS,CAAC,6CAEVC,EALqB,iCAAAF,EAAA,MAKb,6BAAAA,EAAA,+EAEcD,EAASI,SAASF,GAFhC,UAGO,OADPC,EAFA,iDAGoB,IAHpB,gCAKCA,EAAME,aALP,gCAON1H,QAAQ2H,MAAR,MAPM,yDALa,8DAgBVH,IAhBU,UAiBf,MAjBe,gDAiBF,MAjBE,gCAmBpB,CAEHnE,IAAI,WAAD,8BAAE,WAAgB9qB,GAAhB,sBAAA+uB,EAAA,+EAEwBuB,GAAYxB,GAFpC,cAEOt7B,EAFP,gBAGuBA,EAAS68B,WAHhC,cAGOqB,EAHP,YAK0BlC,MAL1B,KAKgCH,EAAS,QAAUsC,UAAU3xB,GAL7D,KAUgC,UAAY0xB,EAV5C,UAWwDzC,IAXxD,gCAWqC,UAXrC,WAQe,OAAU,mBACV,eAAgB,mBAChB,cAVf,KAWe,mBAXf,YAOWQ,QAPX,gDAKSC,EALT,QAeiBC,GAfjB,wBAgBOlI,QAAQ2H,MAAM,kBAAkBM,GAhBvC,kBAiBc,MAjBd,yBAoB8BA,EAASQ,OAAOL,OAAM,SAAAC,GAE7C,OADArI,QAAQ2H,MAAR,8BAAqCU,EAArC,eAAsDJ,GAC/C,QAtBd,YAoBSK,EApBT,UAwBwB,GAxBxB,0CAwBmC,MAxBnC,iCAyBUA,GAzBV,kCA2BGtI,QAAQ2H,MAAR,uDA3BH,0DAAF,mDAAC,GA+BJiB,SAAS,WAAD,8BAAE,uBAAAtB,EAAA,6DACNtH,QAAQC,IAAI,oBADN,SAGOuH,IAHP,mFAAF,kDAAC,KApDc,2CAAH,sDA8Df2C,GAAc,yCAAG,WAAO9C,GAAP,oBAAAC,EAAA,6DAEpBC,EAAS,CAAC,+DAEVC,EAJoB,iCAAAF,EAAA,MAIZ,6BAAAA,EAAA,+EAEcD,EAASI,SAASF,GAFhC,UAGO,OADPC,EAFA,iDAGoB,IAHpB,gCAICA,EAAME,aAJP,gCAMN1H,QAAQ2H,MAAR,MANM,yDAJY,qDAapBC,EAAS,GAbW,SAeTJ,IAfS,UAgBd,MAhBc,gDAgBD,MAhBC,gCAkBnB,CAEHnE,IAAI,WAAD,8BAAE,WAAgB9qB,GAAhB,kBAAA+uB,EAAA,2EAG0BS,MAH1B,KAGgCH,EAASrvB,EAHzC,SAQmDivB,IARnD,+BAQgC,UARhC,WAMe,OAAU,mBACV,eAAgB,mBAChB,cARf,YAKWQ,QALX,gDAGSC,EAHT,QAYiBC,GAZjB,wBAaOlI,QAAQ2H,MAAM,kBAAkBM,GAbvC,kBAcc,MAdd,yBAiB8BA,EAASQ,OAAOL,OAAM,SAAAC,GAE7C,OADArI,QAAQ2H,MAAR,8BAAqCU,EAArC,eAAsDJ,GAC/C,QAnBd,YAiBSK,EAjBT,UAqBwB,GArBxB,0CAqBmC,MArBnC,iCAsBUA,GAtBV,2DAuBwB,MAvBxB,0DAAF,mDAAC,GA0BJM,SAAS,WAAD,8BAAE,uBAAAtB,EAAA,sEACOE,IADP,mFAAF,kDAAC,KA9Ca,2CAAH,sDAqDdt7B,GAAe,yCAAG,WAAOm7B,GAAP,oBAAAC,EAAA,6DAEvBwB,EAAS/wB,SAASgxB,SAASD,OAC3Bn3B,OAAOC,aAAao3B,qBAAoBF,EAASn3B,OAAOC,aAAao3B,oBAErEzB,EAAS,CACTuB,EAAS,uBAGTn3B,OAAOC,aAAaw4B,WACpB7C,EAAS,CAAC51B,OAAOC,aAAaw4B,SAAW,wBAGvC5C,EAbqB,iCAAAF,EAAA,MAab,6BAAAA,EAAA,+EAEYD,EAASI,SAASF,GAF9B,UAGO,OADTC,EAFE,iDAGoB,MAHpB,gCAICA,EAAME,aAJP,gCAMN1H,QAAQ2H,MAAR,MANM,yDAba,8DAuBVH,IAvBU,UAwBf,MAxBe,iDAwBF,MAxBE,iCA0BpB,CACHoB,SAAS,WAAD,8BAAE,uBAAAtB,EAAA,sEACOE,IADP,mFAAF,kDAAC,KA3Bc,4CAAH,sDAiCtBlvB,GAAqB,SAACC,GACxB,OAAW,MAAPA,GAAuB,KAARA,EAAmB,GAClCA,EAAIC,SAAS,QACDD,EAAIE,MAAM,QACT,GAAK,OAEfF,GAIJ,SAAU6uB,GAAgBt6B,GAA1B,gGAEkB,OADjBu9B,EAAgB,GADjB,SAEwBpJ,kBAAOz0B,MAF/B,OAGe,OADZsrB,EAFH,gBAGqBmJ,kBAAOv0B,MAH5B,UAGG49B,EAHH,cAKEx9B,QALF,IAKEA,KAASy9B,OALX,qDAMCD,EAND,mDAUH,OAFAtK,QAAQC,IAAI,sBART,UAUGc,eAAI,CACN/rB,KAAMw1B,IAAc9nB,kBACpBvN,SAAS,IAZV,uBAgBkBrI,EAAQy9B,QAhB1B,kDAgBME,EAhBN,YAiBK39B,EAAQy9B,OAAOpD,eAAesD,GAjBnC,oBAmBoB,UAAZA,EAnBR,gCAoBsB39B,EAAQy9B,OAAOE,IApBrC,8DAqBqB,OADPhnB,EApBd,oEAuB+B,WAAlBA,EAAKinB,YAA+D,GAArCL,EAAc/zB,QAAQ,WAvBlE,iBAwBiC,OAxBjC,UAwBuC6zB,GAAerS,GAxBtD,WAyBgC,OADb6S,EAxBnB,yBA2BiB,OADA3K,QAAQC,IAAI,6BA1B7B,UA2BuBc,eAAI,CACN/rB,KAAMw1B,IAAc1oB,iBACpB3M,QAASw1B,IA7B9B,QAgCaN,EAAcjuB,KAAK,WAhChC,WAmC6B,MAAhBqH,EAAKmnB,QAnClB,uEAoCuBnnB,EAAKmnB,SApC5B,8DAoCkBC,EApClB,SAqCqD,GAApCR,EAAc/zB,QAAQu0B,EAAEthB,QArCzC,2DAuC6B,cAAZshB,EAAEthB,OAvCnB,iBAwC0C,OAxC1C,UAwCgDnd,GAAoB0rB,EAAc+S,EAAEd,MAxCpF,WAyCyC,OADlBe,EAxCvB,yBA2CqB,OADA9K,QAAQC,IAAI,gCA1CjC,UA2C2Bc,eAAI,CACN/rB,KAAMw1B,IAAc3oB,sBACpB1M,QAAS21B,IA7ClC,WAkD6B,UAAZD,EAAEthB,OAlDnB,iBAmDsC,OAnDtC,UAmD4Cjd,GAAgBwrB,GAnD5D,WAoDqC,OADdiT,EAnDvB,yBAsDqB,OADA/K,QAAQC,IAAI,4BArDjC,UAsD2Bc,eAAI,CACN/rB,KAAMw1B,IAAcxoB,kBACpB7M,QAAS41B,IAxDlC,QA4DaV,EAAcjuB,KAAKyuB,EAAEthB,QA5DlC,wHAAAyhB,IAAA,qIAAAA,IAAA,6CAsEH,OAJAhL,QAAQC,IAAI,qBACZD,QAAQC,IAAI,mBAnET,UAsEGc,eAAI,CACN/rB,KAAM5B,EAAQ8lB,YACd/jB,QAASk1B,IAxEV,4E,wBC/mBUY,I,aAQAtoB,I,aAgDAuoB,I,aAUAC,I,aAaQvL,IA/ElB,SAAUqL,KAAV,kEACH,OADG,SACGpL,qBAAUzsB,IAAQsO,YAAT,WAAsB,WAAWyb,GAAX,sGADlC,wCAQA,SAAUxa,KAAV,kEAEH,OAFG,SAEGkd,qBAAUuL,IAAYzkB,eAAb,WAA6B,WAAWwW,GAAX,8EAKpC,OALoC,SAGhCkK,EAAWlK,EAAOhoB,QAHc,SAK9B4rB,eAAI,CACN/rB,KAAM5B,IAAQ6O,kBACd9M,QAASkyB,IAPuB,OAUnB,OAVmB,SAUbwB,GAAYxB,GAVC,UAWpB,OADVgE,EAV8B,yBAYhC,OAZgC,UAY1BtK,eAAI,CACN/rB,KAAM5B,IAAQwO,cACdzM,QAASk2B,IAdmB,QAkBhB,OAlBgB,UAkBVr/B,GAAeq7B,GAlBL,WAmBjB,OADbiE,EAlB8B,yBAoBhC,OApBgC,UAoB1BvK,eAAI,CACN/rB,KAAM5B,IAAQuO,iBACdxM,QAASm2B,IAtBmB,YA0BhC35B,OAAOC,aAAa25B,OA1BY,iBA2BX,OA3BW,UA2BLr/B,GAAgBm7B,GA3BX,WA4BZ,OADdmE,EA3B0B,yBA6B5B,OA7B4B,UA6BtBzK,eAAI,CACN/rB,KAAM5B,IAAQ2O,kBACd5M,QAASq2B,IA/Be,QAoCpC,OApCoC,UAoC9BzK,eAAI,CACN/rB,KAAMy2B,EAAc1S,cArCY,0DAyCpCiH,QAAQC,IAAR,MAzCoC,0DAFzC,wCAgDA,SAAUiL,KAAV,kEACH,OADG,SACGrL,qBAAUzsB,IAAQuO,iBAAT,WAA2B,WAAWwb,GAAX,kEAEtC,OAFsC,SAEhC4D,eAAI,CACN/rB,KAAMuwB,IAAYlyB,mBAHgB,2CADvC,wCAUA,SAAU83B,KAAV,kEACH,OADG,SACGtL,qBAAUzsB,IAAQwO,cAAT,WAAwB,WAAWub,GAAX,kEAEnC,OAFmC,SAE7B4D,eAAI,CACN/rB,KAAM5B,IAAQsO,cAHiB,2CADpC,wCAaQ,SAAUke,KAAV,kEACX,OADW,SACLwB,eAAI,CAENC,gBAAK4J,IACL5J,gBAAK6J,IACL7J,gBAAK8J,IACL9J,gBAAK1e,MANE,wC,iBCvFE+oB,I,aAgLAC,I,aAuFA1lB,I,aAwBAC,I,aAsBAE,I,aAgCAC,I,aAyBQuZ,IA9WlB,SAAU8L,KAAV,kEACH,OADG,SACG7L,qBAAUzsB,IAAQsS,YAAT,WAAsB,WAAWyX,GAAX,kFA6BjC,IAAWyO,KAlBPC,EAAe,CACfC,MAAO,EACPC,MAAO,GACPC,SAAU,GACVC,KAAM,GACNC,SAAU,GACVC,SAAU,GACVC,OAAQ,GACRC,UAAW,GACXC,iBAAkB,IAIhBP,EAAQhK,OAAS6E,OAAO,cACxBoF,EAAWjK,OAASnoB,IAAI,EAAG,OAAOgtB,OAAO,cAC9B7E,OAASnoB,KAAK,EAAG,OAAOgtB,OAAO,cAE1C2F,EAAYpP,EAAOhoB,QA5BQ,WA6BtBy2B,GACP,GAAIW,EAAUpF,eAAeyE,GAAS,CAClC,IACIY,EAAe,GADPD,EAAUX,GAAQ5U,MAGxB9a,SAAQ,SAACuH,EAAMzM,GAEjB,IAS+D,EAgDnDy1B,EAML,EA/DDC,EAAI,2BACHjpB,GADG,IAENkpB,SAAUJ,EAAUX,GAAQe,SAC5BC,SAAUL,EAAUX,GAAQiB,KAC5BC,OAAQlB,IAKZ,GAFIc,EAAKC,SAEU,aAAfD,EAAK3U,QAAiD,KAAxB2U,EAAKK,gBACnC,GAAqB,SAAjBL,EAAKC,UAAgD,aAAzB,UAAAD,EAAKM,YAAL,eAAWC,kBAKvC,GAFApB,EAAaC,QAETY,EAAKQ,YAAa,CAClB,IAAMC,EAAUpL,KAAO2K,EAAKQ,aAAatG,OAAO,cAC5CuG,IAAYpB,EACZF,EAAaE,MAAM3vB,KAAKswB,GAEjBS,IAAYnB,EACnBH,EAAaG,SAAS5vB,KAAKswB,GAG3Bb,EAAaM,SAAS/vB,KAAKswB,QAM/B,GAA4B,MAAxBA,EAAKU,gBAAyB,CAE9B,IAAMC,EAActL,KAAO2K,EAAKU,iBAAiBxG,OAAO,cACpD,IAAI/E,KAAKwL,GAAe,IAAIxL,KAAKkK,GACjCF,EAAaK,SAAS9vB,KAAKswB,GAG3Bb,EAAaM,SAAS/vB,KAAKswB,QAK/Bb,EAAaO,OAAOhwB,KAAKswB,GAazC,GAAqB,SAAjBA,EAAKC,SACDD,EAAKY,oBAEqBb,EAAT,QAAjBC,EAAKC,SAAqC5K,KAAO2K,EAAKY,kBAAkBC,UAAU3G,OAAO,cAAgC7E,KAAO2K,EAAKY,mBAAmB1G,OAAO,cAC3J,IAAI/E,KAAK4K,GAAee,WAAa,IAAI3L,KAAKkK,GAAOyB,WACrD3B,EAAaQ,UAAUjwB,KAAKswB,SAIpC,GAA6B,aAAzB,UAAAA,EAAKM,YAAL,eAAWC,YAA0B,CACrC,IAAME,EAAUpL,KAAO2K,EAAKe,qBAAqBF,UAAU3G,OAAO,cAC9D,IAAI/E,KAAKsL,GAASK,WAAa,IAAI3L,KAAKkK,GAAOyB,WAC/C3B,EAAaQ,UAAUjwB,KAAKswB,OAOxCF,EAAa31B,SACbg1B,EAAY,2BACLA,GADK,IAERS,iBAAiB,2BACVT,EAAaS,kBADJ,kBAEXC,EAAUX,GAAQiB,KAAOL,SAtFzBD,EAAY,EAAtBX,GA8FX,OA3HiC,SA2H3B7K,eAAI,CACN/rB,KAAM5B,IAAQqS,UACdtQ,QAAS02B,IA7HoB,OAgIjC,OAhIiC,UAgI3B9K,eAAI,CACN/rB,KAAMuwB,IAAYzxB,eAClBqB,QAAS02B,EAAaC,QAlIO,4CADlC,wCAgLA,SAAUH,KAAV,kEAEH,OAFG,SAEG9L,qBAAUzsB,IAAQoS,UAAT,WAAoB,WAAW2X,GAAX,sFAEhB,OAFgB,SAEV8D,kBAAOj1B,MAFG,UAEzBF,EAFyB,wDAUT,OAVS,SAOvBygC,EAAY,GACJ,EARe,UAUHzgC,EAAOu3B,IAAI,kBAVR,aAUrBqK,EAVqB,6BAYnBA,EAAUp4B,MAZS,iBAaV0B,EAAI,EAbM,aAaHA,GAAK02B,EAAUp4B,MAAMuB,QAblB,qBAcX62B,EAAUp4B,MAAM0B,GAdL,iBAeW,OAfX,UAeiBlL,EAAOu3B,IAAI,kBAAoBqK,EAAUp4B,MAAM0B,GAAG4W,GAAK,UAfxE,WAeL+f,EAfK,iEAmBH,UAAEA,EAAcr4B,aAAhB,aAAE,EAAqBuB,QAE/B01B,EAAS,2BACFA,GADE,kBAEJmB,EAAUp4B,MAAM0B,GAAG4W,GAFf,2BAGE2e,EAAUmB,EAAUp4B,MAAM0B,GAAG4W,KAH/B,IAIDif,KAAMa,EAAUp4B,MAAM0B,GAAGguB,YACzBhO,MAAO2W,EAAcr4B,MACrBq3B,SAAU,WA3BP,QAa0B31B,IAb1B,wBAoCf,OApCe,UAoCTlL,EAAOu3B,IAAI,qBApCF,WAsCd,OAFTrM,EApCuB,SAsCLA,EAtCK,mDA6DV,OAtBjBuV,EAAS,2BACFA,GADE,IAELqB,aAAc,CACVf,KAAM,UACN7V,MAAOA,EAAM1hB,MACbq3B,SAAU,aA5CS,UA6DJ7gC,EAAOu3B,IAAI,wDA7DP,WA8DT,OADdwK,EA7DuB,SA8DAA,EA9DA,mDAwE3B,OATAtB,EAAS,2BACFA,GADE,IAELsB,WAAY,CACRhB,KAAM,QACN7V,MAAO6W,EAAWv4B,MAClBq3B,SAAU,WApES,UAwErB5L,eAAI,CACN/rB,KAAM5B,IAAQsS,YACdvQ,QAASo3B,IA1Ec,0DA8E3BvM,QAAQ2H,MAAR,MA9E2B,0DAFhC,wCAuFA,SAAU1hB,KAAV,kEACH,OADG,SACG4Z,qBAAUzsB,IAAQuS,YAAT,WAAsB,WAAWwX,GAAX,4EAElB,OAFkB,SAEZ8D,kBAAOj1B,MAFK,UAE3BF,EAF2B,wDAQZ,OARY,SAKzBgiC,EAAW,GACXx4B,EAAQ6nB,EAAOhoB,QAAQA,QAAQgoB,EAAOhoB,QAAQgH,KAClD2xB,EAAS3Q,EAAOhoB,QAAQgH,KAAO7G,EAPF,UAQNxJ,EAAO48B,MAAM,kBAAoBvL,EAAOhoB,QAAQA,QAAQ23B,OAAS,UAAY3P,EAAOhoB,QAAQA,QAAQyY,GAAI6V,KAAKC,UAAUoK,IARjH,oCAWzB,OAXyB,UAWnB/M,eAAI,CACN/rB,KAAM5B,IAAQoS,YAZO,0DAkB7Bwa,QAAQ2H,MAAR,MAlB6B,0DADlC,wCAwBA,SAAUzhB,KAAV,kEACH,OADG,SACG2Z,qBAAUzsB,IAAQwS,gBAAT,WAA0B,WAAWuX,GAAX,4EACtB,OADsB,SAChB8D,kBAAOj1B,MADS,UAC/BF,EAD+B,wDAOhB,OAPgB,SAI7BgiC,EAAW,GACXx4B,EAAQ6nB,EAAOhoB,QAAQgR,QAAQgX,EAAOhoB,QAAQgH,KAClD2xB,EAAS3Q,EAAOhoB,QAAQgH,KAAO7G,EANE,UAOVxJ,EAAO48B,MAAM,kBAAoBvL,EAAOhoB,QAAQA,QAAQ23B,OAAS,UAAY3P,EAAOhoB,QAAQA,QAAQyY,GAAK,mBAAqBuP,EAAOhoB,QAAQgR,QAAQyH,GAAI6V,KAAKC,UAAUoK,IAP9J,oCAU7B,OAV6B,UAUvB/M,eAAI,CACN/rB,KAAM5B,IAAQoS,YAXW,0DAgBjCwa,QAAQ2H,MAAR,MAhBiC,0DADtC,wCAsBA,SAAUvhB,KAAV,kEACH,OADG,SACGyZ,qBAAUzsB,IAAQyS,kBAAT,WAA4B,WAAWsX,GAAX,4EAExB,OAFwB,SAElB8D,kBAAOj1B,MAFW,UAEjCF,EAFiC,wDAQnC,GARmC,SAK/BgiC,EAAW,GACXx4B,EAAQ,GAGH,oBADD6nB,EAAOhoB,QAAQgH,IAEf7G,EAAQ6nB,EAAOhoB,QAAQA,QAAQ63B,KAAKC,WACpCa,EAASd,KAAO,GAChBc,EAASd,KAAKC,WAAa33B,EAIlB,OAhBkB,UAgBZxJ,EAAO48B,MAAM,gBAAkBvL,EAAOhoB,QAAQA,QAAQyY,GAAI6V,KAAKC,UAAUoK,IAhB7D,oCAmB/B,OAnB+B,UAmBzB/M,eAAI,CACN/rB,KAAM5B,IAAQoS,YApBa,0DA0BnCwa,QAAQ2H,MAAR,MA1BmC,0DADxC,wCAgCA,SAAUthB,KAAV,kEACH,OADG,SACGwZ,qBAAUzsB,IAAQ0S,oBAAT,WAA8B,WAAWqX,GAAX,4EAE1B,OAF0B,SAEpB8D,kBAAOj1B,MAFa,UAEnCF,EAFmC,wDAQpB,OARoB,SAKjCgiC,EAAW,GACXx4B,EAAQ6nB,EAAOhoB,QAAQA,QAAQgoB,EAAOhoB,QAAQgH,KAClD2xB,EAAS3Q,EAAOhoB,QAAQgH,KAAO7G,EAPM,UAQdxJ,EAAO48B,MAAM,kBAAoBvL,EAAOhoB,QAAQA,QAAQyY,GAAI6V,KAAKC,UAAUoK,GAAW,OAAQ3Q,EAAOhoB,QAAQA,QAAQ,gBARvG,oCAWjC,OAXiC,UAW3B4rB,eAAI,CACN/rB,KAAM5B,IAAQoS,YAZe,0DAkBrCwa,QAAQ2H,MAAR,MAlBqC,0DAD1C,wCAyBQ,SAAU/H,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAKsK,IACLtK,gBAAKqK,IACLrK,gBAAKpb,IACLob,gBAAKjb,IACLib,gBAAKnb,IACLmb,gBAAKhb,MAPE,wC,wBC5WE0nB,I,aAuFPC,I,aAeOC,I,aA0BQrO,IAhIlB,SAAUmO,KAAV,kEACH,OADG,SACGlO,qBAAUzsB,IAAQqW,cAAT,WAAwB,WAAW0T,GAAX,kGAEnC,OAFmC,SAE7B4D,eAAI,CACN/rB,KAAM5B,IAAQsW,cACdvU,QAAS,KAJsB,OAOpB,OAPoB,SAOd8rB,kBAAOj1B,MAPO,OAQlB,OADXF,EAP6B,gBAQZm1B,kBAAOp1B,MARK,UAQ7BE,EAR6B,OAU9BD,GAAWC,EAVmB,mDAYjB,OAZiB,UAYXA,EAASs3B,IAAIlG,EAAOhoB,SAZT,WAalB,OADX1D,EAZ6B,SAaTA,EAbS,sDAe/By8B,EAAkB,GAClBC,EAAuB,GACvBC,EAA0B,GAC1BC,EAA0B,GACxBtC,EAAQhK,OACRiK,EAAWjK,KAAO,IAAIF,MAAQjoB,IAAI,EAAG,SAEvCnI,EAtB+B,iBAuBtBuF,EAAI,EAvBkB,aAuBfA,GAAKvF,EAAUoF,QAvBA,qBAwBvBpF,EAAUuF,GAxBa,oBAyBnBs3B,EAAW78B,EAAUuF,GACnBu3B,EAAYxM,KAAOuM,EAAS3H,MAE9BoF,EAAMnF,OAAO,SAAW2H,EAAU3H,OAAO,OA5BtB,iBA6BG,OA7BH,UA6BSoH,GAAeliC,EAAQwiC,EAAS1gB,IA7BzC,QA6Bf4gB,EA7Be,OA8BnBF,EAAQ,2BACDA,GADC,IAEJ3K,OAAQ6K,EACRC,KAAM,YAGVN,EAAqB/xB,KAAKkyB,GApCP,2BAqCZtC,EAASpF,OAAO,SAAW2H,EAAU3H,OAAO,OArChC,iBAsCG,OAtCH,UAsCSoH,GAAeliC,EAAQwiC,EAAS1gB,IAtCzC,QAsCf4gB,EAtCe,OAuCnBF,EAAQ,2BACDA,GADC,IAEJ3K,OAAQ6K,EACRC,KAAM,WAGVL,EAAwBhyB,KAAKkyB,GA7CV,wBA8CZI,SAASH,EAAU3H,OAAO,SAAW,MAE5CsH,EAAgB9xB,KAAhB,2BACOkyB,GADP,IAEI3K,OAAQ,KACR8K,KAAM,WACNE,IAAKJ,KApDU,QAuBQv3B,IAvBR,wBAwE/B,OAXAk3B,EAAkBE,EAAwBp1B,OAAOk1B,GACjDA,EAAkBC,EAAqBn1B,OAAOk1B,GAE1CE,EAAwBv3B,OAAS,IACjCw3B,EAA0BD,EAAwBp1B,OAAOq1B,IAEzDF,EAAqBt3B,OAAS,IAC9Bw3B,EAA2BF,EAAqBn1B,OAAOq1B,IApE5B,UAwEzBtN,eAAI,CACN/rB,KAAM5B,IAAQsW,cACdvU,QAAS+4B,IA1EkB,QA6E/B,OA7E+B,UA6EzBnN,eAAI,CACN/rB,KAAM5B,IAAQuW,uBACdxU,QAASk5B,IA/EkB,4CADpC,wCAuFP,SAAUL,GAAeliC,EAAQ8hB,GAAjC,0EAG0B,OAH1B,kBAGgC9hB,EAAOu3B,IAAI,UAAYzV,EAAK,gBAAiB,eAH7E,cAGcghB,EAHd,OAIYJ,EAAkB,KACJ,OAAdI,IAAoBJ,EAAkB,0BAA4B,IAAI3K,UAAOC,KAAK8K,EAAW,UAAU7K,SAAS,WAL5H,kBAOeyK,GAPf,gCAUQxO,QAAQ2H,MAAR,MAVR,sDAeO,SAAUsG,KAAV,kEACH,OADG,SACGpO,qBAAUzsB,IAAQyR,kBAAT,WAA4B,WAAWsY,GAAX,gFACnB,OADmB,SACb8D,kBAAOj1B,MADM,UAEpB,OADbC,EADiC,yDAGxB,OAHwB,SAGlBA,EAAYo3B,IAAZ,iBAA0BlG,EAAOhoB,QAAjC,wBAAgE,eAH9C,OAWvB,OARVwuB,EAHiC,OAMnCrgB,EAAQ,OACRqgB,IACArgB,EAAQ,0BAA4B,IAAIugB,UAAOF,EAAQ,UAAUI,SAAS,WARvC,UAWjB9C,kBAAO1vB,MAXU,WAWnCE,EAXmC,OAcpB,OADfo9B,EAbmC,OAarBp9B,QAbqB,IAarBA,OAbqB,EAarBA,EAAWq9B,WAAU,SAACrrB,GAAD,OAAUA,EAAKmK,KAAOuP,EAAOhoB,cACzB,GAAhB05B,EAdY,iBAiBnC,OAFAp9B,EAAUo9B,GAAalL,OAASrgB,EAfG,UAiB7Byd,eAAI,CACN/rB,KAAM5B,IAAQyW,sBACd1U,QAAS1D,IAnBsB,4CADxC,wCA0BQ,SAAUmuB,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAK0M,IACL1M,gBAAK4M,MAHE,wC,8BCpIEc,I,aAuDQnP,IAvDlB,SAAUmP,KAAV,kEAEH,OAFG,SAEGlP,qBAAUzsB,IAAQiY,cAAT,WAAwB,WAAW8R,GAAX,kFAEpB,OAFoB,SAEd8D,kBAAOj1B,MAFO,UAE7BF,EAF6B,wDAInC,OAJmC,SAI7Bi1B,eAAI,CACN/rB,KAAM5B,IAAQmY,4BACdpW,SAAS,IANsB,OAUnC,OADI4iB,EAAS,SATsB,UAU7BgJ,eAAI,CACN/rB,KAAM5B,IAAQoY,qBACdrW,QAAS4iB,IAZsB,QAenC,OADIE,EAAS8J,OAASiF,OAda,UAe7BjG,eAAI,CACN/rB,KAAM5B,IAAQsY,0BACdvW,QAAS8iB,IAjBsB,QAsBX,OAtBW,UAsBLnsB,EAAOu3B,IAAI,+DAtBN,QAuBT,OADpBrI,EAtB6B,iBAuBHlvB,EAAOu3B,IAAI,gCAvBR,QAwBX,OADlB2L,EAvB6B,iBAwBLljC,EAAOu3B,IAAI,iCAxBN,QA2BnC,OAHM4L,EAxB6B,iBA2B7BlO,eAAI,CACN/rB,KAAM5B,IAAQmY,4BACdpW,SAAS,IA7BsB,QAgCnC,OADA4iB,EAAS,QA/B0B,UAgC7BgJ,eAAI,CACN/rB,KAAM5B,IAAQoY,qBACdrW,QAAS4iB,IAlCsB,WAqCZ,MAAnBiD,GAAgD,MAArBgU,GAAgD,MAAnBC,EArCzB,sDAsC9BjU,GAAoBgU,GAAsBC,EAtCZ,mDAwCnC,OAxCmC,UAwC7BlO,eAAI,CACN/rB,KAAM5B,IAAQkY,cACdnW,QAAS,CACL+5B,OAAQlU,EAAgB1lB,MACxB65B,SAAUH,EAAkB15B,MAC5B85B,OAAQH,EAAgB35B,SA7CG,4CAFpC,wCAuDQ,SAAUsqB,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAK0N,MAFE,wC,iBCvDExyB,I,aAcQqjB,IAdlB,SAAUrjB,KAAV,kEACH,OADG,SACGsjB,qBAAUzsB,IAAQiJ,QAAT,WAAkB,WAAW8gB,GAAX,kEAE7B,OAF6B,SAEvB4D,eAAI,CACN/rB,KAAO5B,IAAQkJ,YACfnH,QAAS,CACd4kB,QAAUoD,EAAOhoB,QAAQ4kB,QACzB/kB,KAAOmoB,EAAOhoB,QAAQH,QANQ,2CAD9B,wCAcQ,SAAU4qB,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAK9kB,MAFE,wC,iBCfE8yB,I,aAuBQzP,IAvBlB,SAAUyP,KAAV,kEAEN,OAFM,SAEAxP,qBAAUzsB,IAAQk8B,UAAT,WAAoB,WAAUnS,GAAV,0EAEX,OAFW,SAEL8D,kBAAOp1B,MAFF,UAEtBE,EAFsB,wDAMd,OANc,SAMRA,EAASs3B,IAAI,oBANL,UAMtB9E,EANsB,0DAU5B,OAV4B,UAUtBwC,eAAI,CACN/rB,KAAM5B,IAAQkrB,UACdnpB,QAAS,CACRopB,MAAOA,KAbgB,4CAF7B,wCAuBQ,SAAUqB,KAAV,kEACd,OADc,SACRwB,eAAI,CACTC,gBAAKgO,MAFQ,wC,0BChBEvgC,I,aAMAiR,I,aAoBAwvB,I,aAoBAC,I,aAgFA1vB,I,aA6CA2vB,I,aA0BA5vB,I,aAgBAH,I,aAgBAE,I,aAiBAD,I,aAwBAF,I,aAcAiwB,I,aA2HQ9P,IAvZlB,SAAU9wB,KAAV,kEACH,OADG,SACG+wB,qBAAUzsB,IAAQ8K,kBAAT,WAA4B,WAAWif,GAAX,sGADxC,wCAMA,SAAUpd,KAAV,kEACH,OADG,SACG8f,qBAAUzsB,IAAQgL,oBAAT,WAA8B,WAAW+e,GAAX,4EACxB,OADwB,SAClB8D,kBAAOp1B,MADW,UACnCw/B,EADmC,OAGO,UAA5C15B,OAAOC,aAAa+9B,qBAAoCh+B,OAAOC,aAAa+9B,oBAHvC,iDAKzB,OALyB,SAKnB5P,gBAAK6P,GAAsBvE,GALR,OAOzC,OAFMlL,EALmC,iBAOnCY,eAAI,CACN/rB,KAAM5B,IAAQ2L,QACd5J,QAjBU,OAQ2B,QAatB,OAbsB,UAahB0rB,gBAAKV,GAbW,QAcrC,OADMhD,EAb+B,iBAc/B4D,eAAI5D,GAd2B,oEAD1C,wCAoBA,SAAUoS,KAAV,kEACH,OADG,SACG1P,qBAAUzsB,IAAQ+K,kBAAT,WAA4B,WAAWgf,GAAX,0EAKvC,IAAW0S,KAFPC,EAAU,EAES3S,EAAOhoB,QACtBgoB,EAAOhoB,QAAQgyB,eAAe0I,KAC9BC,GAAW3S,EAAOhoB,QAAQ06B,GAAUh5B,QAI5C,OAXuC,SAWjCkqB,eAAI,CACN/rB,KAAM5B,IAAQoL,4BACdrJ,QAAS26B,IAb0B,2CADxC,wCAoBA,SAAUN,KAAV,kEACH,OADG,SACG3P,qBAAUzsB,IAAQiL,qBAAT,WAA+B,WAAW8e,GAAX,kFAE3B,OAF2B,SAErB8D,kBAAO70B,MAFc,OAGtB,OADdN,EAFoC,gBAGhBm1B,kBAAO1yB,MAHS,OAI7B,OADTE,EAHsC,gBAIvBwyB,kBAAOl0B,MAJgB,UAIpCC,EAJoC,OAKtCgI,EAAO,OAEP+6B,EAAe,CACfhW,QAAU,GACV/kB,KAAO,IAGqB,kBAApBmoB,EAAOhoB,QAZuB,iBAce,OAdf,KAcf4yB,MAde,sCAcqBj8B,EAAO88B,WAd5B,QAcrB,OAdqB,4DAc+CoH,mBAAmB7S,EAAOhoB,QAAQwD,UAdjF,KAc6F,CAC/H4vB,OAAQ,MACR0H,YAAa,aACbjI,QAAS,CAAE,cAAiB,UAAYh7B,EAAKkjC,aAjBX,WAcrB,mBAIdC,MAAK,SAACC,GAAD,OAASA,EAAIC,UAChBF,MAAK,SAACG,GACH,IAAI/3B,GAAM,EACV,IACIA,EAAMg4B,IAAIC,gBAAgBr6B,aAAcm6B,IAC1C,MAAO3I,GACL3H,QAAQ2H,MAAMA,GAGlB,OAAIpvB,IAGO,KAGd6vB,OAAM,SAACT,GACJ,OAAO,KAlCuB,QAchC8I,EAdgC,OAqCtCz7B,EAAOmoB,EAAOhoB,QAAQH,KAEtB+6B,EAAahW,QAAUoD,EAAOhoB,QAAQkU,MAEtC8T,EAAOhoB,QAAQwD,QAAU83B,EAzCa,wBA4CtCV,EAAahW,QAAUoD,EAAOhoB,QAC9BH,EAAO,eA7C+B,QAkE1C,OAnBA+6B,EAAa/6B,KAAOA,EAGhBvG,EAAcuG,GACdvG,EAAcuG,GAAMoH,KAAK+gB,EAAOhoB,SAG5B1G,EAD4B,kBAApB0uB,EAAOhoB,QACF,2BACN1G,GADM,kBAERuG,EAAO,CAAC,eAAKmoB,EAAOhoB,YAGZ,2BACN1G,GADM,kBAERuG,EAAO,CAACmoB,EAAOhoB,WA7Dc,UAkEpC4rB,eAAI,CACN/rB,KAAO07B,GAA6BhV,kBACpCvmB,QAAU46B,IApE4B,QAuE1C,OAvE0C,UAuEpChP,eAAI,CACN/rB,KAAM5B,IAAQ+K,kBACdhJ,QAAS1G,IAzE6B,4CAD3C,wCAgFA,SAAUqR,KAAV,kEACH,OADG,SACG+f,qBAAUzsB,IAAQkL,2BAAT,WAAqC,WAAW6e,GAAX,gFAE5B,OAF4B,SAEtB8D,kBAAO1yB,MAFe,OAIhD,IAFIE,EAF4C,QAI9B0uB,EAAOhoB,QAAQ06B,UAAW,CAExC,IADIc,EAAiB,GACZ35B,EAAI,EAAGA,GAAKvI,EAAc0uB,EAAOhoB,QAAQ06B,UAAUh5B,OAAQG,IAC5DvI,EAAc0uB,EAAOhoB,QAAQ06B,UAAU74B,IACnCA,IAAMmmB,EAAOhoB,QAAQgH,KACrBw0B,EAAev0B,KAAK3N,EAAc0uB,EAAOhoB,QAAQ06B,UAAU74B,IAMvE,GAAI25B,EAAe95B,OACfpI,EAAc0uB,EAAOhoB,QAAQ06B,UAAYc,MACtC,CAEH,IAAWd,KADPe,EAAmB,GACAniC,EACfA,EAAc04B,eAAe0I,IACzBA,IAAa1S,EAAOhoB,QAAQ06B,WAC5Be,EAAgB,2BACTA,GADS,kBAEXf,EAFW,eAGLphC,EAAcohC,OAMrCphC,EAAgBmiC,GAIxB,OAnCgD,SAmC1C7P,eAAI,CACN/rB,KAAM5B,IAAQ+K,kBACdhJ,QAAS1G,IArCmC,2CADjD,wCA6CA,SAAUghC,KAAV,kEACH,OADG,SACG5P,qBAAUzsB,IAAQqL,gBAAT,WAA0B,WAAW0e,GAAX,qEAEF,IAA/BA,EAAOhoB,QAAQ07B,YAFkB,gBAGjC,OAHiC,SAG3B9P,eAAI,CACN/rB,KAAM5B,IAAQ4L,iBACd7J,QAASsuB,KAAKY,MAAMlH,EAAOhoB,QAAQ4kB,WALN,gCAOK,IAA/BoD,EAAOhoB,QAAQ07B,YAPW,gBAQjC,OARiC,SAQ3B9P,eAAI,CACN/rB,KAAM5B,IAAQ6L,gBACd9J,QAASsuB,KAAKY,MAAMlH,EAAOhoB,QAAQ4kB,WAVN,2CADtC,wCA0BA,SAAUla,KAAV,kEACH,OADG,SACGggB,qBAAUzsB,IAAQyL,qBAAT,WAA+B,WAAWse,GAAX,kEAC1C,OAD0C,SACpC4D,eAAI,CACN/rB,KAAM5B,IAAQsL,aACdvJ,QAAS,CACL27B,YAAa,EACbC,SAAU,GACVC,UAAW,MACXC,YAAa,GACbC,aAAc,GACdC,eAAgBhU,EAAOhoB,WATW,2CAD3C,wCAgBA,SAAUuK,KAAV,kEACH,OADG,SACGmgB,qBAAUzsB,IAAQuL,kBAAT,WAA4B,WAAWwe,GAAX,kEACvC,OADuC,SACjC4D,eAAI,CACN/rB,KAAM5B,IAAQsL,aACdvJ,QAAS,CACL27B,YAAa,EACbC,SAAU,GACVC,UAAW,MACXC,YAAa,GACbC,aAAc,GACdC,eAAgB,MATe,2CADxC,wCAgBA,SAAUvxB,KAAV,kEACH,OADG,SACGigB,qBAAUzsB,IAAQwL,oBAAT,WAA8B,WAAWue,GAAX,kEACzC,OADyC,SACnC4D,eAAI,CACN/rB,KAAM5B,IAAQsL,aACdvJ,QAAS,CACL27B,YAAa,EACbC,SAAU,GACVC,UAAW,MACXC,YAAa,GACbC,aAAc,GACdC,eAAgBhU,EAAOhoB,WATU,2CAD1C,wCAiBA,SAAUwK,KAAV,kEACH,OADG,SACGkgB,qBAAUzsB,IAAQ0L,mBAAT,WAA6B,WAAWqe,GAAX,8EAGf,OAFrBiU,GAAY,EADwB,SAGTnQ,kBAAOvyB,MAHE,OAIP,OAD3B2iC,EAHkC,gBAIDpQ,kBAAOryB,MAJN,UAIlC0iC,EAJkC,QAMpCD,IAAoBC,EANgB,iBAQZ,OARY,mBAQND,EAAiBE,OAAO,sBARlB,QAQ1B1iC,EAR0B,OAShCuiC,EAAsC,kBAAjBviC,GAA6C,SAAhBA,EATlB,kFAYpCuiC,GAAY,EAZwB,QAexC,OAfwC,UAelCrQ,eAAI,CACN/rB,KAAM5B,IAAQ8L,mBACd/J,QAASi8B,IAjB2B,0DADzC,wCAwBA,SAAU3xB,KAAV,kEACH,OADG,SACGogB,qBAAUzsB,IAAQsL,aAAT,WAAuB,WAAW8yB,GAAX,wEAET,OAFS,SAEHvQ,kBAAOvyB,MAFJ,OAGD,OAD3B2iC,EAF4B,gBAGKpQ,kBAAOryB,MAHZ,OAKlC,GALkC,OAM9B,IACIyiC,EAAiBE,OAAO,cAAeC,EAAQr8B,SACjD,MAAOwyB,IARqB,2CADnC,wCAcA,SAAU+H,KAAV,kEACH,OADG,SACG7P,qBAAUzsB,IAAQ+L,cAAT,WAAwB,WAAWge,GAAX,sEAEZ,IAAnBA,EAAOhoB,QAFwB,gBAG/B,OAH+B,SAGzB4rB,eAAI,CACN/rB,KAAM5B,IAAQ0L,qBAJa,6BAO/B,OAP+B,SAOzBiiB,eAAI,CACN/rB,KAAM5B,IAAQ8L,mBACd/J,SAAS,IATkB,2CADpC,wCAgBP,SAASy6B,GAAqBvE,GAI1B,OAAOjL,wBAAa,SAAAqR,OAuGT,SAAU7R,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAKvyB,IACLuyB,gBAAKthB,IACLshB,gBAAKvhB,IACLuhB,gBAAKkO,IACLlO,gBAAKmO,IACLnO,gBAAK3hB,IACL2hB,gBAAKzhB,IACLyhB,gBAAK1hB,IACL0hB,gBAAKxhB,IACLwhB,gBAAKoO,IACLpO,gBAAK5hB,IACL4hB,gBAAKqO,MAbE,wC,iBC5ZE9T,I,aAgBA8V,I,aAcQ9R,IA9BlB,SAAUhE,KAAV,kEACH,OADG,SACGiE,qBAAUzsB,GAAQsoB,kBAAT,WAA4B,WAAWyB,GAAX,wEAInB,OADpBwU,aAAM1I,KAAKvT,MAAMkc,UAAU,gCAAkCzU,EAAOhoB,QAAQ4kB,QAAS,CAAC/kB,KAAMmoB,EAAOhoB,QAAQH,KAAM68B,UAAW,QAHrF,SAIb5Q,kBAAOnyB,MAJM,OAOvC,OAHIL,EAJmC,QAKzB2N,KAAK+gB,EAAOhoB,SALa,SAOjC4rB,eAAI,CACN/rB,KAAO5B,GAAQ+K,kBACfhJ,QAAU1G,IATyB,gDADxC,wCAgBA,SAAUijC,KAAV,kEACH,OADG,SACG7R,qBAAUsB,IAAe9kB,QAAhB,WAAyB,WAAW8gB,GAAX,wEAEhB,OAFgB,SAEV8D,kBAAOnyB,MAFG,OAKpC,OAHIL,EAFgC,QAGtB2N,KAAK+gB,EAAOhoB,SAHU,SAK9B4rB,eAAI,CACN/rB,KAAO5B,GAAQ+K,kBACfhJ,QAAU1G,IAPsB,2CADrC,wCAcQ,SAAUmxB,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAKzF,IACLyF,gBAAKqQ,MAHE,wC,iBC7BEvoB,I,aASAC,I,aAqHQwW,IA9HlB,SAAUzW,KAAV,kEACH,OADG,SACG0W,qBAAUzsB,IAAQ0V,iBAAT,WAA2B,WAAWqU,GAAX,kEACtC,OADsC,SAChC4D,eAAI,CACN/rB,KAAM88B,IAAgB/uB,oBACtB5N,QAAS,UAHyB,2CADvC,wCASA,SAAUiU,KAAV,kEACH,OADG,SACGyW,qBAAUzsB,IAAQwV,WAAT,WAAqB,WAAWuU,GAAX,kFAE5B,OAF4B,kBAEtB4D,eAAI,CACN/rB,KAAM5B,IAAQ2V,yBACd5T,SAAS,IAJe,OAOb,OAPa,SAOP8rB,kBAAO70B,MAPA,UAOtBN,EAPsB,wDAUN,OAVM,UAUAA,EAAOu3B,IAAIlG,EAAOhoB,SAVlB,WAYP,OAFf48B,EAVsB,SAYEA,GAAkBA,EAAcz8B,MAZlC,sDAaO,IAA/By8B,EAAcz8B,MAAMuB,OAbI,sDAexBm7B,EAAO,GACRD,EAAc,oBACbC,EAAO15B,aAAmBy5B,EAAc,oBAExCxkC,EAAOwkC,EAAcz8B,MACrBjK,EAAS,GACD,GAEZ2rB,EAAQzpB,EAAKu1B,IAAL,yCAAS,WAAOmP,EAAGC,GAAV,kBAAA5K,EAAA,yDAIT6K,EADQ,KAATH,EACqBI,GAAiBH,EAAEI,YAAaL,GAEhCC,EAAEI,YAErBJ,EAAEK,UARM,gBASTjnC,EAAO+Q,KAAK,CACRwR,GAAIskB,EACJ7oB,MAAO4oB,EAAEM,MACTC,YAAaL,EACbx5B,QAAS,+BACTguB,KAAMsL,EAAEQ,QACRC,aAAc,CAAEC,SAAUV,EAAEU,SAAUC,UAAWX,EAAEW,UAAWC,QAASZ,EAAEY,SACzEC,YAAab,EAAEc,YAhBV,2BAoBLx6B,EAAMy6B,mBAAmBf,EAAEK,UAAUW,MApBhC,uBAuBL5nC,EAAO+Q,KAAK,CACRwR,GAAIskB,EACJ7oB,MAAO4oB,EAAEM,MACTC,YAAaL,EACbx5B,QAASJ,EACTm6B,aAAc,CAAEC,SAAUV,EAAEU,SAAUC,UAAWX,EAAEW,UAAWC,QAASZ,EAAEY,SACzEC,YAAab,EAAEc,UACfpM,KAAMsL,EAAEQ,UA9BP,kBAgCEl6B,GAhCF,2CAAT,0DAmDJye,EAAMngB,OA1EkB,iBA2ExB,OA3EwB,UA2ElBmD,QAAQonB,IAAIpK,GA3EM,QA+ExB,OA/EwB,UA+ElB+J,eAAI,CACN/rB,KAAM5B,IAAQyV,WACd1T,QAAS9J,EAAO6nC,YAjFI,QAoFxB,OApFwB,UAoFlBnS,eAAI,CACN/rB,KAAM5B,IAAQ2V,yBACd5T,SAAS,IAtFW,0DAyFd6qB,QAAQC,IAAR,MAzFc,0DADjC,wCA+FP,SAASmS,GAAiBI,EAAaR,GACnC,IAAKQ,EAAa,MAAO,GACzB,IACMW,EAAO,mBACTC,EAAqB,GACrBC,EAAY,GAEhB,GADAD,EAAqBZ,EAAYc,MAJX,uCAMlB,IAAI,IAAIt8B,EAAI,EAAGA,EAAIo8B,EAAmBv8B,OAAQG,KAC1Cq8B,EAAYD,EAAmBp8B,GAAGs8B,MAAMH,MAEpCX,EAAcA,EAAY35B,QAAQs6B,GAAM,SAAUG,EAAO9L,GACrD,MAAO,yBAA2BwK,EAAOqB,EAAU,GAAK,QAO3E,OAAOb,EAGO,SAAU5S,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAKjY,IACLiY,gBAAKlY,MAHE,wC,2BC9HEoqB,I,aA2BQ3T,IA3BlB,SAAU2T,KAAV,kEACH,OADG,SACGC,sBAAWpgC,IAAQ8P,yBAAT,WAAmC,WAAWia,GAAX,0EAGxB,OAHwB,SAGlB8D,kBAAOjyB,MAHW,OAIlB,OADvBE,EAHyC,gBAIZ+xB,kBAAO9xB,MAJK,UAIzCskC,EAJyC,QAM1CvkC,EAN0C,oBAOtCukC,EAPsC,iBAQvC,OARuC,UAQjC1S,eAAI,CACN/rB,KAAO5B,IAAQ+P,kBACfhO,SAAU,IAVyB,QAYvC,OAZuC,UAYjCotB,iBAAM,KAZ2B,QAiB/C,OAjB+C,UAiBzCxB,eAAI,CACN/rB,KAAO5B,IAAQ2P,oBACf5N,QAAUgoB,EAAOhoB,UAnB0B,4CADhD,wCA2BQ,SAAUyqB,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAKkS,MAFE,wC,iBC7BEnoB,I,aAsBAD,I,aAqBAuoB,I,aAuGAzoB,I,aAiCQ2U,IAnLlB,SAAUxU,KAAV,kEACH,OADG,SACGyU,qBAAUzsB,KAAQ4X,gBAAT,WAA0B,WAAWmS,GAAX,0EAKrB,OAFhB6C,QAAQC,IAAI,mBAHyB,SAKfgB,kBAAOvxB,MALQ,OAcrC,OATIE,EALiC,OAMjC+jC,EAAmB,GACvB/jC,EAAUsM,SAAQ,SAAC03B,EAAU58B,GACpB48B,EAAShmB,KAAOuP,EAAOhoB,UACxBy+B,EAASC,QAAS,GAEtBF,EAAiBv3B,KAAKw3B,MAXW,SAc/B7S,eAAI,CACN/rB,KAAO5B,KAAQuX,cACfxV,QAAUw+B,IAhBuB,2CADtC,wCAsBA,SAAUxoB,KAAV,kEACH,OADG,SACG0U,qBAAUzsB,KAAQ2X,iBAAT,WAA2B,WAAWoS,GAAX,0EAItB,OAFhB6C,QAAQC,IAAI,oBAF0B,SAIhBgB,kBAAOvxB,MAJS,OAatC,OATIE,EAJkC,OAKlC+jC,EAAmB,GACvB/jC,EAAUsM,SAAQ,SAAC03B,EAAU58B,GACpB48B,EAAShmB,KAAOuP,EAAOhoB,UACxBy+B,EAASC,QAAS,GAEtBF,EAAiBv3B,KAAKw3B,MAVY,SAahC7S,eAAI,CACN/rB,KAAO5B,KAAQuX,cACfxV,QAAUw+B,IAfwB,2CADvC,wCAqBA,SAAUD,KAAV,kEACH,OADG,SACG7T,qBAAUzsB,KAAQsX,cAAT,WAAwB,WAAWyS,GAAX,wEA+F/B,OA9FEvtB,EAAY,CACd,CACIge,GAAK,EACLiiB,SAAW,EACXhD,KAAO,+BACPgH,QAAS,EACT59B,KAAO,oEACP69B,MAAQ,gBACRtB,YAAc,4XAElB,CACI5kB,GAAK,EACLiiB,SAAW,EACXhD,KAAO,+BACPgH,QAAS,EACT59B,KAAO,oEACP69B,MAAQ,gBACRtB,YAAc,4XAElB,CACI5kB,GAAK,EACLiiB,SAAW,EACXhD,KAAO,+BACPgH,QAAS,EACT59B,KAAO,yDACP69B,MAAQ,gBACRtB,YAAa,yUAEjB,CACI5kB,GAAK,EACLiiB,SAAW,EACXhD,KAAO,kBACPgH,QAAS,EACT59B,KAAO,2CACP69B,MAAQ,gBACRtB,YAAa,kUAEjB,CACI5kB,GAAK,EACLiiB,SAAW,EACXhD,KAAO,6BACPgH,QAAS,EACT59B,KAAO,qDACP69B,MAAQ,gBACRtB,YAAa,6aAEjB,CACI5kB,GAAK,EACLiiB,SAAW,EACXhD,KAAO,qBACPgH,QAAS,EACT59B,KAAO,8CACP69B,MAAQ,gBACRtB,YAAa,8cAEjB,CACI5kB,GAAK,EACLiiB,SAAW,EACXhD,KAAO,+BACPgH,QAAS,EACT59B,KAAO,wDACP69B,MAAQ,gBACRtB,YAAa,4eAEjB,CACI5kB,GAAK,EACLiiB,SAAW,EACX1S,OAAS,8BACT0P,KAAO,gCACPgH,QAAS,EACT59B,KAAO,uDACP69B,MAAQ,gBACRtB,YAAa,4iBAEjB,CACI5kB,GAAK,EACLiiB,SAAW,EACXhD,KAAO,8BACPgH,QAAS,EACT59B,KAAO,uDACP69B,MAAQ,gBACRtB,YAAa,4hBAEjB,CACI5kB,GAAK,GACLiiB,SAAW,EACXhD,KAAO,2BACPgH,QAAS,EACT59B,KAAO,uDACP69B,MAAQ,gBACRtB,YAAa,qmBA3Fc,SA+FzBzR,eAAI,CACN/rB,KAAO5B,KAAQuX,cACfxV,QAAUvF,IAjGiB,2CADpC,wCAuGA,SAAUqb,KAAV,kEACH,OADG,SACG4U,qBAAUzsB,KAAQwX,wBAAT,WAAkC,WAAWuS,GAAX,wEAqB7C,OAnBM4W,EAAqB,CACvB,CACInmB,GAAK,EACLif,KAAO,WACPmH,OAAS,QAEb,CACIpmB,GAAK,EACLif,KAAO,gBACPmH,OAAS,UAEb,CACIpmB,GAAK,EACLif,KAAO,KACPmH,OAAS,WAhB4B,SAqBvCjT,eAAI,CACN/rB,KAAO5B,KAAQyX,wBACf1V,QAAU4+B,IAvB+B,OA0B7C,OA1B6C,SA0BvChT,eAAI,CACN/rB,KAAO5B,KAAQsX,gBA3B0B,2CAD9C,wCAiCQ,SAAUkV,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAKqS,IACLrS,gBAAKpW,IACLoW,gBAAKjW,IACLiW,gBAAKlW,MALE,wC,iBCjLE8oB,I,aAaQrU,IAblB,SAAUqU,KAAV,kEACH,OADG,SACGT,sBAAWU,IAAgBnxB,oBAAjB,WAAsC,WAAWoa,GAAX,qEAE5CA,EAAOhoB,QAAQsO,KAF6B,gBAG9C,OAH8C,SAGxCsd,eAAI,CACN/rB,KAAO5B,IAAQsf,gBACfvd,QAAU,KALgC,2CADnD,wCAaQ,SAAUyqB,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAK4S,MAFE,wC,iBCdEE,I,aA4EAC,I,aAgCQxU,IA5GlB,SAAUuU,KAAV,kEACH,OADG,SACGtU,qBAAUzsB,IAAQmf,eAAT,WAAyB,WAAW4K,GAAX,2FAE9BlG,EAAgBkG,EAAOhoB,QAFO,gBAKhC,OALgC,SAK1B4rB,eAAI,CACN/rB,KAAM5B,IAAQkf,aACdnd,QAAS,KAPmB,OAShC,OATgC,SAS1B4rB,eAAI,CACN/rB,KAAMuwB,IAAYvxB,uBAClBmB,QAAS,IAXmB,OAmCpC,IApBMk/B,EAAc,SAAC/M,EAAGgN,GACpB,OAAIhN,EAAEiN,MAAMhH,SAAW+G,EAAEC,MAAMhH,UACnB,EAGRjG,EAAEiN,MAAMhH,SAAW+G,EAAEC,MAAMhH,SACpB,EAGJ,GAGP1B,EAAe,CACfE,MAAO,GACPC,SAAU,GACVC,KAAM,IAEJF,EAAQhK,OAAS6E,OAAO,cACxBoF,EAAWjK,OAASnoB,IAAI,EAAG,OAAOgtB,OAAO,cAEtC5vB,EAAI,EAAGA,GAAKigB,EAAcpgB,OAAQG,IACnCigB,EAAcjgB,KACRw9B,EAAcvd,EAAcjgB,IAElBu9B,SACNE,EAAY1S,KAAOyS,EAAYD,MAAMhH,UAAU3G,OAAO,iBAC1CmF,EACdF,EAAaE,MAAM3vB,KAAKo4B,GACjBC,IAAczI,EACrBH,EAAaG,SAAS5vB,KAAKo4B,GAE3B3I,EAAaI,KAAK7vB,KAAKo4B,IAavC,OAPA3I,EAAaE,MAAM2I,KAAKL,GACxBxI,EAAaE,MAAMmH,UACnBrH,EAAaG,SAAS0I,KAAKL,GAC3BxI,EAAaG,SAASkH,UACtBrH,EAAaI,KAAKyI,KAAKL,GACvBxI,EAAaI,KAAKiH,UAzDkB,UA2D9BnS,eAAI,CACN/rB,KAAM5B,IAAQkf,aACdnd,QAAS02B,IA7DuB,QAmEpC,OAHiB,EACjB8I,EAAa9I,EAAaE,MAAMl1B,OAASg1B,EAAaG,SAASn1B,OAjE3B,UAmE9BkqB,eAAI,CACN/rB,KAAMuwB,IAAYvxB,uBAClBmB,QAASw/B,IArEuB,4CADrC,wCA4EA,SAAUP,KAAV,kEAEH,OAFG,SAEGvU,qBAAUzsB,IAAQif,aAAT,WAAuB,WAAW8K,GAAX,gFAEnB,OAFmB,SAEb8D,kBAAOj1B,MAFM,UAE5BF,EAF4B,wDAWb,OAXa,SAOxB8oC,EAAW7S,OAAS8S,cACpBC,EAAc/S,OAASnoB,IAAI,EAAG,QAAQi7B,cAExCt8B,EAV0B,yCAUcq8B,EAVd,wBAUsCE,EAVtC,qBAWP/U,gBAAKj0B,EAAOu3B,IAAK9qB,GAXV,WAcd,OAHVif,EAXwB,SAcLA,EAdK,sDAezBA,EAASliB,MAfgB,mDAiB9B,OAjB8B,UAiBxByrB,eAAI,CACN/rB,KAAM5B,IAAQmf,eACdpd,QAASqiB,EAASliB,QAnBQ,0DAuB9B0qB,QAAQ2H,MAAR,MAvB8B,0DAFnC,wCAgCQ,SAAU/H,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAK+S,IACL/S,gBAAK8S,MAHE,wC,wBCrGEY,I,aAoOQnV,IApOlB,SAAUmV,KAAV,kEACH,OADG,SACGlV,qBAAUzsB,EAAQ2lB,YAAT,WAAsB,WAAWoE,GAAX,oFAChB,OADgB,SACV8D,kBAAOp1B,MADG,UAC3BE,EAD2B,2DAO7Be,EAAU,GAET6E,OAAOC,aAAa+yB,OATQ,iBAWf,OAXe,mBAWT54B,EAASs3B,IAAI,YAXJ,QAWzBv2B,EAXyB,yDAazBkzB,QAAQC,IAAI,8BAba,iCAgB7BnzB,EAAU,IACFy9B,OAAS,CAAElR,KAAM,GAAIC,OAAQ,GAAIC,MAAO,IAjBnB,YAoBlB,MAAXzsB,GAAsC,MAAlBA,EAAQy9B,SAAmB54B,OAAOC,aAAa+yB,SACnEgN,aAAM1I,KAAKvT,MAAMkc,UAAU,oBAAqB,CAACC,UAAW,QAGjD,MAAX/kC,GAAqC,MAAlBA,EAAQy9B,QAAkBz9B,EAAQy9B,OAAOlR,OAAS,IACrEsY,aAAM1I,KAAKvT,MAAMkc,UAAU,qBAAsB,CAACC,UAAW,SAG9D/kC,EAAQy9B,OAAOpD,eAAe,UA5BA,iBA8B7B,OA9B6B,UA8BvBpG,eAAI,CACN/rB,KAAM5B,EAAQ6lB,mBACd9jB,QAASrI,EAAQy9B,OAAO/Q,SAhCC,WAkCM,eAAhC1sB,EAAQy9B,OAAO/Q,OAAOlkB,MAlCI,iBAmCzB,OAnCyB,UAmCnByrB,eAAI,CACN/rB,KAAMixB,IAAcriB,YACpBzO,QAAS,CACLuiB,QAAS,KAtCQ,WA0CM,aAAhC5qB,EAAQy9B,OAAO/Q,OAAOlkB,MA1CI,iBA2CzB,OA3CyB,UA2CnByrB,eAAI,CACN/rB,KAAMixB,IAAcriB,YACpBzO,QAAS,CACLuiB,QAAS,KA9CQ,WAkDM,WAAhC5qB,EAAQy9B,OAAO/Q,OAAOlkB,MAlDI,iBAmDzB,OAnDyB,UAmDnByrB,eAAI,CACN/rB,KAAMixB,IAAcriB,YACpBzO,QAAS,CACLuiB,QAAS,KAtDQ,eA0DtB5qB,EAAQy9B,OAAO/Q,OA1DO,QAiLpB,OArHT7nB,OAAOC,aAAa+yB,SAEpB73B,EAAQy9B,OAAOlR,KAAKjd,KAAK,CACrBsuB,UAAW,OACXsK,OAAQ,oBACR3rB,MAAO,KAGXvc,EAAQy9B,OAAOjR,OAAOld,KAAK,CACvBsuB,UAAW,YACXuK,UAAW,OACXC,qBAAqB,EACrB7rB,MAAO,SACP8rB,SAAS,IAkBbroC,EAAQy9B,OAAOjR,OAAOld,KAAK,CACvBsuB,UAAW,YACXuK,UAAW,OACXC,qBAAqB,EACrB7rB,MAAO,QACP8rB,SAAS,IAGbroC,EAAQy9B,OAAOjR,OAAOld,KAAK,CACvBsuB,UAAW,SACXuK,UAAW,OACX5rB,MAAO,iBAIXvc,EAAQy9B,OAAOhR,MAAMnd,KAAK,CACtB,UAAa,eACb,MAAS,+DACT,QAAW,kKACX,gBAAmB,qEACnB,SAAW,IAmDftP,EAAQy9B,OAAOhR,MAAMnd,KAAK,CACtBsuB,UAAW,eACXuK,UAAW,OACX5rB,MAAO,cACP6rB,qBAAqB,EACrBC,SAAS,IAGbroC,EAAQy9B,OAAOhR,MAAMnd,KAAK,CACtBsuB,UAAW,YACXuK,UAAW,OACX5rB,MAAO,gBA7KkB,UAiLd4X,kBAAOvzB,MAjLO,mBAmL7BZ,EAnL6B,iBAoL7B6E,OAAOyjC,kBAAmB,EACtBC,GAAQ,EArLiB,eAsLRvoC,EAAQy9B,QAtLA,kDAsLpBE,EAtLoB,YAuLrB39B,EAAQy9B,OAAOpD,eAAesD,GAvLT,gCAyLJ39B,EAAQy9B,OAAOE,IAzLX,8DA0LL,OADPhnB,EAzLY,iEA8LK,SAAnBA,EAAKinB,WAAuC,KAAfjnB,EAAK4F,OAAgC,sBAAhB5F,EAAKuxB,SAAgCrjC,OAAOyjC,kBAAmB,GACpHpV,QAAQC,IAAI,cAAcxc,GACH,SAAnBA,EAAKinB,WAA2C,SAAnBjnB,EAAKinB,WAA2C,cAAnBjnB,EAAKinB,WAAgD,cAAnBjnB,EAAKinB,WAAgD,iBAAnBjnB,EAAKinB,WAAmD,WAAnBjnB,EAAKinB,WAA6C,eAAnBjnB,EAAKinB,WAAiD,eAAnBjnB,EAAKinB,WAAgD,QAAlBjnB,EAAKinB,WAAyC,kBAAlBjnB,EAAKinB,YACzSjnB,EAAKyxB,qBAAsB,GAE5BzxB,EAAKmnB,SACJnnB,EAAKmnB,QAAQ1uB,SAAQ,SAACqN,EAAQ2oB,GACN,MAAjB3oB,EAAOA,QAAkBA,EAAOhR,MAC/B88B,GAAQ,MAtMH,wHAAArK,IAAA,6CAgN7B,OAHGr5B,OAAOC,aAAa+yB,SACnB0Q,GAAQ,GA9MiB,UAgNvBtU,eAAI,CACN/rB,KAAM5B,EAAQgmB,kBACdjkB,QAASkgC,IAlNgB,QAoN7B,OApN6B,UAoNvBjO,GAAgBt6B,GApNO,QAqN7B,OArN6B,UAqNvBi0B,eAAI,CACN/rB,KAAM5B,EAAQ4lB,YACd7jB,QAASrI,EAAQy9B,SAvNQ,wEADlC,wCAoOQ,SAAU3K,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAK0T,MAFE,wCC/OR,IAAMO,GAAsB,SAAChS,EAAa3J,GAC7C,IAAI4b,EAAU,GAEd,IAAKjS,EAAYV,sBAAuB,CACpC,IAAI4S,EAAe7b,EAAK6M,QAAO,SAAU/iB,GAAQ,MAAqB,WAAdA,EAAKzO,QAC7DugC,EAAUA,EAAQv8B,OAAOw8B,GAO7B,OAHuB,IAAnBD,EAAQ1+B,SACR0+B,EAAU5b,GAEP4b,G,aCLM9jB,I,aAmJAE,I,aAiCA8jB,I,aAcAC,I,aAmBQ9V,IArNlB,SAAUnO,KAAV,kEACH,OADG,SACGoO,qBAAUzsB,IAAQ8d,SAAT,WAAmB,WAAWiM,GAAX,kFAEf,OAFe,SAET8D,kBAAOp1B,MAFE,OAGV,OADdC,EAFwB,gBAGJm1B,kBAAOj1B,MAHH,OAIV,OADdC,EAHwB,gBAIJg1B,kBAAOh0B,MAJH,UAIxB0oC,EAJwB,OAMzB7pC,EANyB,gEAStB6tB,EAAO,IAEPhoB,OAAOC,aAAa25B,QAAyC,KAA/B55B,OAAOC,aAAa25B,QAAkD,KAAjC55B,OAAOC,aAAaw4B,SAXjE,iBAYT,OAZS,UAYHwL,GAAmB3pC,EAAY0pC,EAAYhM,QAZxC,mCAcX,OAdW,UAcL79B,EAAOu3B,IAAIlG,EAAOhoB,QAAQ6/B,QAdrB,QAclBrb,EAdkB,+BAkBG,OAFrBqG,QAAQC,IAAI,6BAhBM,UAkBSgB,kBAAO/0B,MAlBhB,QAmBN,OADNC,EAlBY,iBAmBAA,EAAay8B,WAnBb,QAsBlB,OAFa,OADTpB,EAnBc,SAoBCxH,QAAQC,IAAI,wBApBb,UAsBZ4V,GAAYF,EAAYpS,mBAAmB,WAAcvD,QAAQC,IAAI,yBAA2BuH,GAAO2I,KAAvG,wBAA4G,uBAAA7I,EAAA,sEACjGwO,GAAcH,EAAYpS,mBADuE,cAC9G5J,EAD8G,gBAGxGoH,eAAI,CACN/rB,KAAM5B,IAAQ+d,SACdhc,QAAQ,eACFgoB,EAAOhoB,QAAQ06B,SAAuB1S,EAAOhoB,QAAQ06B,SAA3B,UAAsClW,KANoC,4CAtBhG,YAoCvBwD,EAAOhoB,QApCgB,oBAqCY,MAA9BxD,OAAOC,aAAa25B,QAAiD,KAA/B55B,OAAOC,aAAa25B,OArCxC,iBAsCX,OAtCW,UAsCLz/B,EAAOu3B,IAAIlG,EAAOhoB,QAAQ6/B,QAtCrB,QAsClBrb,EAtCkB,kBAyCV,MAARA,GAAiBA,GAAQA,IAAS,GAzChB,mDA+CtB,OAFAA,EAAO2b,GAAoBK,EAAahc,GA7ClB,UA+ChBoH,eAAI,CACN/rB,KAAM5B,IAAQ+d,SACdhc,QAAQ,eACFgoB,EAAOhoB,QAAQ06B,SAAuB1S,EAAOhoB,QAAQ06B,SAA3B,UAAsClW,KAlDpD,2DAwD1BqG,QAAQ2H,MAAR,MAxD0B,2DAD/B,wCAgEP,IAAMiO,GAAkB,yCAAG,WAAO9pC,EAAO69B,GAAd,wBAAArC,EAAA,yDACiB,MAApC31B,OAAOC,aAAamkC,cAA6D,KAArCpkC,OAAOC,aAAamkC,cAA4D,SAArCpkC,OAAOC,aAAamkC,aADxF,0CACwH,GADxH,UAEnBC,EAAQrkC,OAAOC,aAAamkC,aAChC/V,QAAQC,IAAI,iBAAkB+V,GACT,kBAAVA,IAAoBA,EAAQvS,KAAKY,MAAM1yB,OAAOC,aAAamkC,gBAElE98B,MAAMmtB,QAAQ4P,GANK,gCAODA,GAPC,cAAA1O,EAAA,qCAAAA,EAAA,6DAOV2O,EAPU,iBAQSnqC,EAAOu3B,IAAP,4DAAgE4S,EAAhE,MART,UASE,OADXpR,EARS,SASsD,MAA5CA,EAAUvvB,MAAMwvB,MAAK,SAAAC,GAAC,OAAIA,EAAEnX,IAAMqoB,KAT5C,6CASmE,IATnE,6XAYhB,GAZgB,gEAAH,wDAelBJ,GAAc,SAACK,EAAeC,EAAS3O,GAAzB,OAAmC,IAAIxtB,QAAJ,yCAAY,WAAOC,EAASm8B,GAAhB,gBAAA9O,EAAA,sEAG3D31B,OAAO0kC,OAAOC,WAAW3kC,OAAOC,aAAa25B,OAAQ,CACjD1D,QAAS,EACTsO,QAASA,EACT3O,MAAOA,IANgD,SAQnC+O,GAASL,EAAe,KAAM1O,GARK,OAQvDgP,EARuD,OAS3Dv8B,EAAQu8B,GATmD,gDAa3Dv8B,IAb2D,yDAAZ,0DAiBjDs8B,GAAW,SAAChT,EAAmBpG,EAAQqK,GAA5B,OAAsC,IAAIxtB,SAAQ,SAACC,EAASm8B,GACzE,IACIzkC,OAAO0kC,OAAOI,IAAI,CACdC,SAAUnT,EACVoT,eAAiD,wCAAhChlC,OAAOC,aAAaglC,SAAqD,YAAc,WACxGpP,MAAOA,IACR,SAAUgP,EAAaK,GAEtB,GAAmB,MAAfL,EAAqB,CAAC,IAAD,EACjB7O,EAAQ,GAERA,EAD+B,QAAhC,UAAAh2B,OAAO2yB,oBAAP,eAAqB12B,QACZ,qDAEA,2CAEZoyB,QAAQC,IAAI0H,GACZgK,aAAMhK,EAAO,CAACkK,UAAW,QACzB53B,EAAQ,MAIC,MAAT48B,GAEA58B,EAAQ,MAGE,MAAVkjB,GACAA,IAIJljB,EAAQu8B,MAGd,MAAO7O,GAAS1tB,EAAQ,WAIxB67B,GAAgB,SAACvS,GAAD,OAAuB,IAAIvpB,SAAQ,SAACC,EAASm8B,GAC/DzkC,OAAO0kC,OAAOS,aAAaC,KAAK,CAAErC,KAAM,IAAK,SAAUmC,EAAOt8B,GAG7C,MAATs8B,GAEAT,EAAO,SAAWS,EAAMG,KAAO,KAAOH,EAAM9c,SAEhD9f,EAAQM,EAAOuoB,KAAI,SAAAwE,GAAO,OAAO,2BAAKA,GAAZ,IAAehkB,MAAOgkB,EAAE2P,KAAMC,aAAa,eAKtE,SAAUvlB,KAAV,kEACH,OADG,SACGkO,qBAAUzsB,IAAQge,gBAAT,WAA0B,WAAW+L,GAAX,6EAEhB,MAAjBxrB,OAAO0kC,QAA2C,MAAzB1kC,OAAO0kC,OAAOc,SAA+C,MAA5BxlC,OAAO0kC,OAAOc,QAAQC,GAF/C,iDAsBpB,OAtBoB,SAM3BC,EAAa,kBAAM,IAAIr9B,QAAJ,yCAAY,WAAOC,EAASm8B,GAAhB,UAAA9O,EAAA,sDAGjC31B,OAAO0kC,OAAOiB,QAAQP,MAAK,SAAUF,EAAOt8B,GAG3B,MAATs8B,GACAT,EAAO,SAAWS,EAAMG,KAAO,KAAOH,EAAM9c,SAIhD9f,EAAQM,MAXqB,2CAAZ,0DANQ,SAsBd88B,IAtBc,OAwBjC,OAFI98B,EAtB6B,gBAwB3BwmB,eAAI,CACN/rB,KAAM5B,IAAQie,gBACdlc,QAASoF,IA1BoB,mHADtC,wCAiCA,SAAUk7B,KAAV,kEACH,OADG,SACG5V,qBAAUzsB,IAAQke,WAAT,WAAqB,WAAW6L,GAAX,qEACV,MAAlBA,EAAOhoB,QADqB,iDAEhC,OAFgC,SAE1B4rB,eAAI,CACN/rB,KAAMuwB,IAAY9wB,qBAClBU,QAAS,CACLG,MAAO6nB,EAAOhoB,QACdI,QAAS,WANe,2CADjC,wCAcA,SAAUmgC,KAAV,kEACH,OADG,SACG7V,qBAAUzsB,IAAQme,cAAT,WAAwB,WAAW4L,GAAX,iFACb,MAAlBA,EAAOhoB,QADwB,iDAEX,OAFW,SAEL8rB,kBAAO3zB,MAFF,kBAE7BiqC,EAF6B,kBAGhCA,GAHgC,UAGhCA,EAAiBzgB,gBAHe,QAGhC,EAA2B0gB,YAHK,gBAO/B,OAHMC,EAJyB,OAIRF,QAJQ,IAIRA,GAJQ,UAIRA,EAAiBzgB,gBAJT,aAIR,EAA2B0gB,YAAYhR,QAAO,SAAAkR,GACjEA,EAAK9pB,GAAMuP,EAAOhoB,WALS,SAOzB4rB,eAAI,CACN/rB,KAAMuwB,IAAY9wB,qBAClBU,QAAS,CACLG,MAAOmiC,EACPliC,QAAS,WAXc,2CADpC,wCAmBQ,SAAUqqB,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAK5P,IACL4P,gBAAK1P,IACL0P,gBAAKoU,IACLpU,gBAAKqU,MALE,wC,iBCxNEltB,I,aAqDQoX,IArDlB,SAAUpX,KAAV,kEACH,OADG,SACGqX,qBAAUzsB,KAAQ+U,6BAAT,WAAuC,WAAWgV,GAAX,4EAGnC,OAHmC,SAG7B8D,kBAAOj1B,MAHsB,UAG5CF,EAH4C,wDAO1B,OAP0B,SAOpBA,EAAOu3B,IAAI,iEAPS,OASlD,OAFMrI,EAP4C,iBAS5C+F,eAAI,CACN/rB,KAAO5B,KAAQiV,6BACflT,SAAU,IAXoC,QAalD,OAbkD,UAa5C4rB,eAAI,CACN/rB,KAAO5B,KAAQgV,6BACfjT,QAAU,KAfoC,WAiB9CwiC,EAAqB,IACpB3c,EAAgB1lB,MAlB6B,sBAmBrC6nB,EAAOhoB,QAnB8B,OAoBrC,SApBqC,QAuBrC,UAvBqC,QA0BrC,eA1BqC,gCAqBtCwiC,EAAqB3c,EAAgB1lB,MAAMkxB,QAAO,SAAC/iB,GAAD,OAAWA,EAAKopB,KAAKr0B,SAAS,WArB1C,oCAwBtCm/B,EAAqB3c,EAAgB1lB,MAAMkxB,QAAO,SAAC/iB,GAAD,OAAWA,EAAKopB,KAAKr0B,SAAS,WAxB1C,oCA2BtCm/B,EAAqB3c,EAAgB1lB,MAAMkxB,QAAO,SAAC/iB,GAAD,OAAWA,EAAKopB,KAAKr0B,SAAS,WA3B1C,6BA+B9C,OA/B8C,UA+BxCuoB,eAAI,CACN/rB,KAAO5B,KAAQgV,6BACfjT,QAAUwiC,IAjCgC,QAoC9C,OApC8C,UAoCxC5W,eAAI,CACN/rB,KAAO5B,KAAQiV,6BACflT,SAAU,IAtCgC,gCAyC9C,OAzC8C,UAyCxC4rB,eAAI,CACN/rB,KAAO5B,KAAQiV,6BACflT,SAAU,IA3CgC,4CADnD,wCAqDQ,SAAUyqB,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAK7Y,MAFE,wC,iBCnDEovB,I,aAQAC,I,aAoBQjY,IA5BlB,SAAUgY,KAAV,kEACH,OADG,SACG/X,qBAAUuL,IAAYzkB,eAAb,WAA6B,WAAWwW,GAAX,kEACxC,OADwC,SAClC4D,eAAI,CACN/rB,KAAO5B,GAAQgoB,kBAFqB,2CADzC,wCAQA,SAAUyc,KAAV,kEACH,OADG,SACGhY,qBAAUzsB,GAAQgoB,gBAAT,WAA0B,WAAW+B,GAAX,0EAEhB,OAFgB,kBAEV4K,MAAM,8CAFI,OAGpB,OADPE,EAF2B,gBAGdA,EAASQ,OAHK,YAG3Bl7B,EAH2B,yBAM7B,OAN6B,UAMvBwzB,eAAI,CACN/rB,KAAO5B,GAAQioB,gBACflmB,QAAU5H,IARe,0DAYjCyyB,QAAQC,IAAR,MAZiC,0DADtC,wCAoBQ,SAAUL,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAKwW,IACLxW,gBAAKuW,MAHE,wC,iBC5BEE,I,aAQAC,I,aAoBQnY,IA5BlB,SAAUkY,KAAV,kEACH,OADG,SACGjY,qBAAUuL,IAAYzkB,eAAb,WAA6B,WAAWwW,GAAX,kEACxC,OADwC,SAClC4D,eAAI,CACN/rB,KAAO5B,GAAQmoB,qBAFqB,2CADzC,wCAQA,SAAUwc,KAAV,kEACH,OADG,SACGlY,qBAAUzsB,GAAQmoB,mBAAT,WAA6B,WAAW4B,GAAX,0EAEnB,OAFmB,kBAEb4K,MAAM,6CAFO,OAGvB,OADPE,EAF8B,gBAGjBA,EAASQ,OAHQ,YAG9Bl7B,EAH8B,yBAMhC,OANgC,UAM1BwzB,eAAI,CACN/rB,KAAO5B,GAAQooB,mBACfrmB,QAAU5H,IARkB,0DAYpCyyB,QAAQC,IAAR,MAZoC,0DADzC,wCAoBQ,SAAUL,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAK0W,IACL1W,gBAAKyW,MAHE,wC,iBC3BEjoB,I,aA6CAmoB,I,aA4CAC,I,aAuFQrY,IAhLlB,SAAU/P,KAAV,kEACH,OADG,SACGgQ,qBAAUzsB,IAAQkc,gBAAT,WAA0B,WAAW6N,GAAX,4FAEb,OAFa,SAEP8D,kBAAOx2B,MAFA,OAItB,OAFTG,EAF+B,gBAIhBq2B,kBAAOp1B,MAJS,UAI/BC,EAJ+B,wDAOxB,OAPwB,UAOlBA,EAAOu3B,IAAI,uBAPO,WASzB,OAFN6U,EAP+B,SAShBA,EATgB,wDAYlB,GAAfA,EAAKrhC,QAAgBqhC,EAAKrhC,SAAuC,IAA3BjM,EAAgBiM,QAAkBjM,GAAmBA,EAAgB,GAAGutC,KAAOD,EAAK,GAAGtqB,KAZ5F,oBAc7BwqB,EAAUxtC,EAAgB47B,QAAO,SAAAE,GAAC,OAAKwR,EAAKpT,MAAK,SAAAuT,GAAE,OAAIA,EAAGzqB,IAAM8Y,EAAE9Y,WACvD,MAAXwqB,GAAmBA,EAAQvhC,OAAS,GAfP,gCAiBfuhC,GAjBe,2DAkBzB,OADK1R,EAjBoB,kBAkBnB4R,KAAY/Y,WAAWmH,EAAE9Y,IAlBN,wHAAAod,IAAA,oCAsBnBkN,GAtBmB,8DAsBxBxR,EAtBwB,kBAyBb,OADRhsB,EAAOvE,aAAcuwB,EAAEpjB,QAxBF,wDA0BzB,OA1ByB,UA0BnBg1B,KAAYC,QAAQ7R,EAAE9Y,GAAIlT,GA1BP,eA2BlBgsB,EAAEpjB,MA3BgB,0DA6BlBojB,EAAEpjB,MA7BgB,wHAAA0nB,IAAA,qBAiCjC,OAjCiC,UAiC3BjK,eAAI,CACN/rB,KAAM5B,IAAQmc,gBACdpa,QAAS+iC,IAnCoB,uFADtC,wCA6CA,SAAUF,KAAV,kEACH,OADG,SACGnY,qBAAUzsB,IAAQqc,iBAAT,WAA2B,WAAW0N,GAAX,0EAErB,OAFqB,SAEf8D,kBAAOp1B,MAFQ,UAEhCE,EAFgC,wDAKvB,OALuB,SAKjBA,EAASq9B,OAAO,mBAAqBjM,EAAOhoB,QAASgoB,EAAOhoB,SAAS,GALpD,YAKhCoF,EALgC,6BAO9BA,EAAO2tB,GAPuB,iBAQ9B,OAR8B,UAQxBnH,eAAI,CACN/rB,KAAM5B,IAAQkc,kBATY,QAY9B,OAZ8B,UAYxByR,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,wBACT/kB,KAAM,aAhBgB,gCAqB9B,OArB8B,UAqBxB+rB,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,uBACT/kB,KAAM,WAzBgB,QA6BlCwjC,GAAMC,QAAQr8B,KAAK,wBA7Be,wBA+BlC,OA/BkC,UA+B5B2kB,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,uBACT/kB,KAAM,WAnCoB,4CADvC,wCA4CA,SAAUijC,KAAV,kEACH,OADG,SACGpY,qBAAUzsB,IAAQic,iBAAT,WAA2B,WAAW8N,GAAX,oFAEzB,OAFyB,SAEnB8D,kBAAOl0B,MAFY,OAGrB,OADXC,EAFgC,gBAGfi0B,kBAAOp1B,MAHQ,UAGhCE,EAHgC,2DAMlC2sC,EAAa,CACbrvB,MAAO8T,EAAOhoB,QAAQkU,MACtBpT,KAAMknB,EAAOhoB,QAAQc,KACrBuN,WAAYxW,EAAK8qB,aAAa6gB,QAAQ9L,KACtC+L,SAAU5rC,EAAK8qB,aAAa6gB,QAAQE,eACpClS,KAAM,IAAI9E,KAAK1E,EAAOhoB,QAAQwxB,MAAMkO,cACpCvE,QAASnT,EAAOhoB,QAAQm7B,SAGxB/H,EAAS,QACTpL,EAAOhoB,QAAQoE,KAhBmB,iBAiBnB,OAjBmB,UAiBbM,aAAasjB,EAAOhoB,QAAQoE,KAAK,IAjBpB,QAiB5Bu/B,EAjB4B,OAmBlCJ,EAAU,2BACHA,GADG,IAENp1B,MAAOw1B,IArBuB,YAyBlC3b,EAAOhoB,QAAQyY,GAzBmB,oBA0BlC2a,EAAS,MACTmQ,EAAU,2BACHA,GADG,IAEN9qB,GAAIuP,EAAOhoB,QAAQyY,GACnBpK,WAAY2Z,EAAOhoB,QAAQqO,WAC3Bo1B,SAAUzb,EAAOhoB,QAAQyjC,WAGxBzb,EAAOhoB,QAAQoE,OAAQ4jB,EAAOhoB,QAAQ4jC,aAlCT,iBAmCf,OAnCe,UAmCTt+B,aAAa0iB,EAAOhoB,QAAQ4jC,cAnCnB,QAmCxBD,EAnCwB,OAqC9BJ,EAAU,2BACHA,GADG,IAENp1B,MAAOw1B,IAvCmB,WA4ClCv+B,GAAS,EACE,SAAXguB,EA7CkC,iBA8CzB,OA9CyB,UA8CnBx8B,EAASy3B,KAAK,eAAgBkV,GAAY,GA9CvB,QA8ClCn+B,EA9CkC,+BAgDzB,OAhDyB,UAgDnBxO,EAASg1B,IAAI,eAAgB2X,GAAY,GAhDtB,QAgDlCn+B,EAhDkC,mBAkDlCA,EAAO2tB,GAlD2B,iBAmDlC,OAnDkC,UAmD5BnH,eAAI,CACN/rB,KAAM5B,IAAQkc,kBApDgB,WAsDnB,QAAXiZ,EAtD8B,iBAwD9B,OAxD8B,UAwDxBxH,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,uBACT/kB,KAAM,aA5DgB,gCAgE9B,OAhE8B,UAgExB+rB,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,wBACT/kB,KAAM,aApEgB,QAwElCwjC,GAAMC,QAAQr8B,KAAK,wBAxEe,wBA0ElC,OA1EkC,UA0E5B2kB,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,uBACT/kB,KAAM,WA9EoB,4CADvC,wCAuFQ,SAAU4qB,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAK4W,IACL5W,gBAAKxR,IACLwR,gBAAK2W,MAJE,wC,iBClLE/iB,I,aAqEQ2K,IArElB,SAAU3K,KAAV,kEACH,OADG,SACG4K,qBAAUzsB,IAAQyhB,YAAT,WAAsB,WAAWsI,GAAX,0FACjC,OADiC,SAC3B4D,eAAI,CACN/rB,KAAM5B,IAAQ4hB,iCACd7f,SAAS,IAHoB,OAKlB,OALkB,SAKZ8rB,kBAAOp1B,MALK,OAMb,OADdC,EAL2B,gBAMPm1B,kBAAOhzB,MANA,UAM3B+qC,EAN2B,OAQ5BltC,EAR4B,mDASpB,OAToB,UASdA,EAAOu3B,IAAI,uBATG,WAWrB,OAFN6U,EAT2B,SAWZA,EAXY,sDAajCA,EAAKpV,KAAI,SAAC4D,EAAG1vB,GACT,GAAI0vB,EAAEpjB,MAAO,CACT,IAAI5I,EAAOvE,aAAcuwB,EAAEpjB,OACvB21B,EAAY1I,IAAIC,gBAAgB91B,GACpCgsB,EAAEpjB,MAAQ21B,EACVvS,EAAEhsB,KAAOA,EAEb,OAAO,KAGQ,GAAfw9B,EAAKgB,OAvBwB,iBAwB7B,OAxB6B,UAwBvBnY,eAAI,CACN/rB,KAAM5B,IAAQ0hB,YACd3f,QAAS,KA1BgB,YA+B7B+iC,EAAKrhC,UAA2B,MAAfmiC,GAA8C,IAAvBA,EAAYniC,QAAkBmiC,GAAeA,EAAY,GAAGb,KAAOD,EAAK,GAAGtqB,IA/BtF,oBAuCzB0Y,EAAM0S,EAAYxS,QAAO,SAAAE,GAAC,OAAKwR,EAAKpT,MAAK,SAAAuT,GAAE,OAAIA,EAAGzqB,IAAM8Y,EAAE9Y,WACnD,MAAP0Y,GAAeA,EAAIzvB,OAAS,GAxCH,gCA0CXyvB,GA1CW,2DA2CrB,OADKI,EA1CgB,kBA2Cf4R,KAAY/Y,WAAWmH,EAAE9Y,IA3CV,wHAAAod,IAAA,oCA+CfkN,GA/Ce,8DAgDX,OADTxR,EA/CoB,SAgDnBhsB,KAhDmB,wDAiDzB,OAjDyB,UAiDnB49B,KAAYC,QAAQ7R,EAAE9Y,GAAI8Y,EAAEhsB,MAjDT,eAkDlBgsB,EAAEpjB,aACFojB,EAAEhsB,KAnDgB,wHAAAswB,IAAA,qBAsD7B,OAtD6B,UAsDvBjK,eAAI,CACN/rB,KAAM5B,IAAQ0hB,YACd3f,QAAS+iC,IAxDgB,QA4DjC,OA5DiC,UA4D3BnX,eAAI,CACN/rB,KAAM5B,IAAQ4hB,iCACd7f,SAAS,IA9DoB,+EADlC,wCAqEQ,SAAUyqB,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAKpM,MAFE,wC,iBCrEExX,I,aA2BAG,I,aA4BAC,I,aA4BAC,I,aA2BAC,I,aA2BAC,I,aA2BAC,I,aA2BQ2hB,IA/LlB,SAAUniB,KAAV,kEACH,OADG,SACGoiB,qBAAUzsB,KAAQoJ,aAAT,WAAuB,WAAW2gB,GAAX,0EAClC,OADkC,SAC5B4D,eAAI,CACN/rB,KAAM5B,KAAQwJ,2BACdzH,SAAS,IAHqB,OAKnB,OALmB,SAKb8rB,kBAAOp1B,MALM,UAK5BC,EAL4B,wDASpB,OAToB,SASdA,EAAOu3B,IAAI,kBATG,UAUrB,OADPl1B,EAT4B,SAUZA,EAVY,mDAa9B,OAb8B,UAaxB4yB,eAAI,CACN/rB,KAAM5B,KAAQqJ,aACdtH,QAAShH,IAfiB,QAmBlC,OAnBkC,UAmB5B4yB,eAAI,CACN/rB,KAAM5B,KAAQwJ,2BACdzH,SAAS,IArBqB,4CADnC,wCA2BA,SAAUyI,KAAV,kEACH,OADG,SACGiiB,qBAAUzsB,KAAQyJ,yBAAT,WAAmC,WAAWsgB,GAAX,4EAC9C,OAD8C,SACxC4D,eAAI,CACN/rB,KAAM5B,KAAQwJ,2BACdzH,SAAS,IAHiC,OAK/B,OAL+B,SAKzB8rB,kBAAOp1B,MALkB,OAM1B,OADdC,EALwC,gBAMpBm1B,kBAAOrjB,IANa,UAMxCu7B,EANwC,OAQzCrtC,EARyC,mDAShC,OATgC,UAS1BA,EAAOu3B,IAAP,mDAAuDlG,EAAOhoB,UATpC,WAUjC,OADPhH,EATwC,SAUxBA,EAVwB,uDAY1CA,EAAM0I,UAA6B,MAAlBsiC,EAAY,IAA8B,MAAfA,GAA8C,IAAvBA,EAAYtiC,QAAoC,MAAlBsiC,EAAY,IAAcA,EAAY,GAAGC,MAAQjrC,EAAM,GAAGirC,KAZjH,iBAc1C,OAd0C,UAcpCrY,eAAI,CACN/rB,KAAM5B,KAAQ0J,yBACd3H,QAAShH,IAhB6B,QAoB9C,OApB8C,UAoBxC4yB,eAAI,CACN/rB,KAAM5B,KAAQwJ,2BACdzH,SAAS,IAtBiC,4CAD/C,wCA4BA,SAAU0I,KAAV,kEACH,OADG,SACGgiB,qBAAUzsB,KAAQ2J,kBAAT,WAA4B,WAAWogB,GAAX,4EACvC,OADuC,SACjC4D,eAAI,CACN/rB,KAAM5B,KAAQwJ,2BACdzH,SAAS,IAH0B,OAKxB,OALwB,SAKlB8rB,kBAAOp1B,MALW,OAMnB,OADdC,EALiC,gBAMbm1B,kBAAOpjB,IANM,UAMjCs7B,EANiC,OAQlCrtC,EARkC,mDAUzB,OAVyB,UAUnBA,EAAO03B,KAAP,oCAAiDrG,EAAOhoB,SAVrC,WAW1B,OADPhH,EAViC,iEAalCA,EAAM0I,QAAW1I,EAAM0I,SAA6B,MAAlBsiC,EAAY,IAA8B,MAAfA,GAA8C,IAAvBA,EAAYtiC,QAAoC,MAAlBsiC,EAAY,IAAcA,EAAY,GAAGC,MAAQjrC,EAAM,GAAGirC,MAb1I,iBAcnC,OAdmC,UAc7BrY,eAAI,CACN/rB,KAAM5B,KAAQ4J,kBACd7H,QAAShH,IAhBsB,QAoBvC,OApBuC,UAoBjC4yB,eAAI,CACN/rB,KAAM5B,KAAQwJ,2BACdzH,SAAS,IAtB0B,4CADxC,wCA4BA,SAAU2I,KAAV,kEACH,OADG,SACG+hB,qBAAUzsB,KAAQ6J,UAAT,WAAoB,WAAWkgB,GAAX,4EAC/B,OAD+B,SACzB4D,eAAI,CACN/rB,KAAM5B,KAAQwJ,2BACdzH,SAAS,IAHkB,OAKhB,OALgB,SAKV8rB,kBAAOp1B,MALG,OAMX,OADdC,EALyB,gBAMLm1B,kBAAOnjB,IANF,UAMzBq7B,EANyB,OAQ1BrtC,EAR0B,mDASjB,OATiB,UASXA,EAAOu3B,IAAP,qCAAyClG,EAAOhoB,UATrC,WAUlB,OADPhH,EATyB,SAUTA,EAVS,uDAY3BA,EAAM0I,UAA6B,MAAlBsiC,EAAY,IAA8B,MAAfA,GAA8C,IAAvBA,EAAYtiC,QAAoC,MAAlBsiC,EAAY,IAAcA,EAAY,GAAGC,MAAQjrC,EAAM,GAAGirC,KAZhI,iBAa3B,OAb2B,UAarBrY,eAAI,CACN/rB,KAAM5B,KAAQ8J,UACd/H,QAAShH,IAfc,QAmB/B,OAnB+B,UAmBzB4yB,eAAI,CACN/rB,KAAM5B,KAAQwJ,2BACdzH,SAAS,IArBkB,4CADhC,wCA2BA,SAAU4I,KAAV,kEACH,OADG,SACG8hB,qBAAUzsB,KAAQ+J,aAAT,WAAuB,WAAWggB,GAAX,4EAClC,OADkC,SAC5B4D,eAAI,CACN/rB,KAAM5B,KAAQwJ,2BACdzH,SAAS,IAHqB,OAKnB,OALmB,SAKb8rB,kBAAOp1B,MALM,OAMd,OADdC,EAL4B,gBAMRm1B,kBAAOljB,IANC,UAM5Bo7B,EAN4B,OAQ7BrtC,EAR6B,mDASpB,OAToB,UASdA,EAAOu3B,IAAP,wCAA4ClG,EAAOhoB,UATrC,WAUrB,OADPhH,EAT4B,SAUZA,EAVY,uDAY9BA,EAAM0I,UAA6B,MAAlBsiC,EAAY,IAA8B,MAAfA,GAA8C,IAAvBA,EAAYtiC,QAAoC,MAAlBsiC,EAAY,IAAcA,EAAY,GAAGC,MAAQjrC,EAAM,GAAGirC,KAZ7H,iBAa9B,OAb8B,UAaxBrY,eAAI,CACN/rB,KAAM5B,KAAQgK,aACdjI,QAAShH,IAfiB,QAmBlC,OAnBkC,UAmB5B4yB,eAAI,CACN/rB,KAAM5B,KAAQwJ,2BACdzH,SAAS,IArBqB,4CADnC,wCA2BA,SAAU6I,KAAV,kEACH,OADG,SACG6hB,qBAAUzsB,KAAQiK,WAAT,WAAqB,WAAW8f,GAAX,4EAChC,OADgC,SAC1B4D,eAAI,CACN/rB,KAAM5B,KAAQwJ,2BACdzH,SAAS,IAHmB,OAKjB,OALiB,SAKX8rB,kBAAOp1B,MALI,OAMZ,OADdC,EAL0B,gBAMNm1B,kBAAOjjB,IAND,UAM1Bm7B,EAN0B,OAQ3BrtC,EAR2B,mDASlB,OATkB,UASZA,EAAOu3B,IAAP,sCAA0ClG,EAAOhoB,UATrC,WAUnB,OADPhH,EAT0B,SAUVA,EAVU,uDAY5BA,EAAM0I,UAA6B,MAAlBsiC,EAAY,IAA8B,MAAfA,GAA8C,IAAvBA,EAAYtiC,QAAoC,MAAlBsiC,EAAY,IAAcA,EAAY,GAAGC,MAAQjrC,EAAM,GAAGirC,KAZ/H,iBAa5B,OAb4B,UAatBrY,eAAI,CACN/rB,KAAM5B,KAAQkK,WACdnI,QAAShH,IAfe,QAmBhC,OAnBgC,UAmB1B4yB,eAAI,CACN/rB,KAAM5B,KAAQwJ,2BACdzH,SAAS,IArBmB,4CADjC,wCA2BA,SAAU8I,KAAV,kEACH,OADG,SACG4hB,qBAAUzsB,KAAQmK,WAAT,WAAqB,WAAW4f,GAAX,0EAChC,OADgC,SAC1B4D,eAAI,CACN/rB,KAAM5B,KAAQwJ,2BACdzH,SAAS,IAHmB,OAKjB,OALiB,SAKX8rB,kBAAOp1B,MALI,UAK1BC,EAL0B,wDASlB,OATkB,SASZA,EAAOu3B,IAAP,sCAA0ClG,EAAOhoB,QAAQypB,WAAzD,qBAAgFzB,EAAOhoB,QAAQkkC,WATnF,UAUnB,OADPlrC,EAT0B,SAUVA,EAVU,mDAa5B,OAb4B,UAatB4yB,eAAI,CACN/rB,KAAM5B,KAAQoK,WACdrI,QAAShH,IAfe,QAmBhC,OAnBgC,UAmB1B4yB,eAAI,CACN/rB,KAAM5B,KAAQwJ,2BACdzH,SAAS,IArBmB,4CADjC,wCA2BQ,SAAUyqB,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAK5jB,IACL4jB,gBAAKzjB,IACLyjB,gBAAKxjB,IACLwjB,gBAAKvjB,IACLujB,gBAAKtjB,IACLsjB,gBAAKrjB,IACLqjB,gBAAKpjB,MARE,wC,iBCnLE+J,I,aA0BAD,I,aA+CAuxB,I,aAiGAC,I,aA6CQ3Z,IAvNlB,SAAU5X,KAAV,kEACH,OADG,SACG6X,qBAAUzsB,IAAQkU,kBAAT,WAA4B,WAAW6V,GAAX,0EAEvC,OAFuC,SAEjC4D,eAAI,CACN/rB,KAAM5B,IAAQuU,gCACdxS,SAAS,IAJ0B,OAMxB,OANwB,SAMlB8rB,kBAAOp1B,MANW,UAMjCC,EANiC,wDAUjB,OAViB,SAUXA,EAAOu3B,IAAI,uBAVA,OAYvC,OAFM0O,EAViC,iBAYjChR,eAAI,CACN/rB,KAAM5B,IAAQuU,gCACdxS,SAAS,IAd0B,QAiBvC,OAjBuC,UAiBjC4rB,eAAI,CACN/rB,KAAM5B,IAAQmU,kBACdpS,QAAS48B,IAnB0B,4CADxC,wCA0BA,SAAUhqB,KAAV,kEACH,OADG,SACG8X,qBAAUzsB,IAAQqU,kBAAT,WAA4B,WAAW0V,GAAX,4FAEb,OAFa,SAEP8D,kBAAO31B,MAFA,OAGnB,OADdC,EAFiC,gBAGb01B,kBAAO91B,MAHM,OAIxB,OADTquC,EAHiC,gBAIlBvY,kBAAOp1B,MAJW,UAIjCC,EAJiC,0DAOxB,OAPwB,UAOlBA,EAAOu3B,IAAI,yBAPO,WASzB,OAFRh4B,EAPiC,SAShBA,EATgB,wDAYlB,GAAjBA,EAAOwL,QAAgBxL,EAAOwL,SAAyC,IAA7BtL,EAAkBsL,QAAkBtL,GAAqBA,EAAkB,GAAG4sC,KAAO9sC,EAAO,GAAGuiB,KAZtG,qBAe/BriB,EAf+B,2BAgB1BiuC,QAhB0B,IAgB1BA,MAAa3iC,OAhBa,gCAkBb2iC,GAlBa,2DAmBvB,OADK9S,EAlBkB,kBAmBjB4R,KAAY/Y,WAAWmH,EAAE9Y,IAnBR,wHAAAod,IAAA,oCAyBrB3/B,GAzBqB,2DA4B3B,OAHCq7B,EAzB0B,kBA2BvBhsB,EAAOvE,cAAcuwB,EAAEpjB,OA3BA,UA4BrBg1B,KAAYC,QAAQ7R,EAAE9Y,GAAIlT,GA5BL,eA6BpBgsB,EAAEpjB,MA7BkB,0DA+BpBojB,EAAEpjB,MA/BkB,wHAAA0nB,IAAA,qBAmCnC,OAnCmC,UAmC7BjK,eAAI,CACN/rB,KAAM5B,IAAQsU,kBACdvS,QAAS9J,IArCsB,uFADxC,wCA+CA,SAAUiuC,KAAV,kEACH,OADG,SACGzZ,qBAAUzsB,IAAQwU,kBAAT,WAA4B,WAAWuV,GAAX,oFAE1B,OAF0B,SAEpB8D,kBAAOl0B,MAFa,OAGtB,OADXC,EAFiC,gBAGhBi0B,kBAAOp1B,MAHS,UAGjCE,EAHiC,2DAMnC2sC,EAAa,CACbrvB,MAAO8T,EAAOhoB,QAAQkU,MACtBpT,KAAMknB,EAAOhoB,QAAQc,KACrBuN,WAAYxW,EAAK8qB,aAAa6gB,QAAQ9L,KACtC+L,SAAU5rC,EAAK8qB,aAAa6gB,QAAQE,eACpCpE,UAAW,IAAI5S,KAAK1E,EAAOhoB,QAAQs/B,WAAWI,cAC9C4E,QAAS,IAAI5X,KAAK1E,EAAOhoB,QAAQskC,SAAS5E,cAC1CvE,QAASnT,EAAOhoB,QAAQm7B,SAGxB/H,EAAS,QACTpL,EAAOhoB,QAAQoE,KAjBoB,iBAkBpB,OAlBoB,UAkBdM,aAAasjB,EAAOhoB,QAAQoE,KAAK,IAlBnB,QAkB7Bu/B,EAlB6B,OAoBnCJ,EAAU,2BACHA,GADG,IAENp1B,MAAOw1B,IAtBwB,YA0BnC3b,EAAOhoB,QAAQyY,GA1BoB,oBA2BnC2a,EAAS,MACTmQ,EAAU,2BACHA,GADG,IAEN9qB,GAAIuP,EAAOhoB,QAAQyY,GACnBpK,WAAY2Z,EAAOhoB,QAAQqO,WAC3Bo1B,SAAUzb,EAAOhoB,QAAQyjC,WAGxBzb,EAAOhoB,QAAQoE,OAAQ4jB,EAAOhoB,QAAQ4jC,aAnCR,iBAoChB,OApCgB,UAoCVt+B,aAAa0iB,EAAOhoB,QAAQ4jC,cApClB,QAoCzBD,EApCyB,OAsC/BJ,EAAU,2BACHA,GADG,IAENp1B,MAAOw1B,IAxCoB,WA6CnCv+B,GAAS,EACE,SAAXguB,EA9CmC,iBA+C1B,OA/C0B,UA+CpBx8B,EAASy3B,KAAK,iBAAkBkV,GAAY,GA/CxB,QA+CnCn+B,EA/CmC,+BAiD1B,OAjD0B,UAiDpBxO,EAASg1B,IAAI,iBAAkB2X,GAAY,GAjDvB,QAiDnCn+B,EAjDmC,mBAmDnCA,EAnDmC,qBAoD/BA,EAAO2tB,GApDwB,iBAqD/B,OArD+B,UAqDzBnH,eAAI,CACN/rB,KAAM5B,IAAQkU,oBAtDa,WAwDhB,QAAXihB,EAxD2B,iBAyD3B,OAzD2B,UAyDrBxH,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,kBACT/kB,KAAM,aA7Da,gCAiE3B,OAjE2B,UAiErB+rB,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,mBACT/kB,KAAM,aArEa,QAyE/BwjC,GAAMC,QAAQr8B,KAAK,uBAzEY,wBA2E/B,OA3E+B,UA2EzB2kB,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,uBACT/kB,KAAM,WA/EiB,gCAoFnC,OApFmC,UAoF7B+rB,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,uBACT/kB,KAAM,WAxFqB,4CADxC,wCAiGA,SAAUukC,KAAV,kEACH,OADG,SACG1Z,qBAAUzsB,IAAQyU,mBAAT,WAA6B,WAAWsV,GAAX,0EAEvB,OAFuB,SAEjB8D,kBAAOp1B,MAFU,OAIzB,OAFTE,EAFkC,gBAInBA,EAASq9B,OAAO,qBAAuBjM,EAAOhoB,QAASgoB,EAAOhoB,SAAU,GAJrD,YAIlCoF,EAJkC,6BAOhCA,EAAO2tB,GAPyB,iBAQhC,OARgC,UAQ1BnH,eAAI,CACN/rB,KAAM5B,IAAQqU,oBATc,QAYhC,OAZgC,UAY1BsZ,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,mBACT/kB,KAAM,aAhBkB,QAmBhCwjC,GAAMC,QAAQr8B,KAAK,uBAnBa,wBAsBhC,OAtBgC,UAsB1B2kB,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,uBACT/kB,KAAM,WA1BkB,gCA+BpC,OA/BoC,UA+B9B+rB,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,uBACT/kB,KAAM,WAnCsB,4CADzC,wCA6CQ,SAAU4qB,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAKrZ,IACLqZ,gBAAKtZ,IACLsZ,gBAAKkY,IACLlY,gBAAKiY,MALE,wC,2BCnOE9uB,I,aA+BAC,I,aA8BQmV,IA7DlB,SAAUpV,KAAV,kEACH,OADG,SACGqV,qBAAUzsB,IAAQ8W,SAAT,WAAmB,WAAWiT,GAAX,4EAC9B,OAD8B,SACxB4D,eAAI,CACN/rB,KAAM5B,IAAQgX,uBACdjV,SAAS,IAHiB,OAMf,OANe,SAMT8rB,kBAAOp1B,MANE,OAOhB,OADRC,EANwB,gBAOVm1B,kBAAOj2B,MAPG,UAOxBmD,EAPwB,OASzBrC,EATyB,mDAUjB,OAViB,UAUXA,EAAOu3B,IAAI,+BAVA,WAYlB,OAFNn4B,EAVwB,SAYTA,EAZS,uDAe1BA,EAAK2L,UAA6B,IAAjB1I,EAAM0I,QAAkB1I,GAASA,EAAM,GAAGgqC,KAAOjtC,EAAK,GAAG0iB,IAfhD,iBAiB1B,OAjB0B,UAiBpBmT,eAAI,CACN/rB,KAAM5B,IAAQ+W,SACdhV,QAASjK,IAnBa,QAuB9B,OAvB8B,UAuBxB61B,eAAI,CACN/rB,KAAM5B,IAAQgX,uBACdjV,SAAS,IAzBiB,4CAD/B,wCA+BA,SAAUsV,KAAV,kEACH,OADG,SACGoV,qBAAUzsB,IAAQ8W,SAAT,WAAmB,WAAWiT,GAAX,4EAC9B,OAD8B,SACxB4D,eAAI,CACN/rB,KAAM5B,IAAQmX,iCACdpV,SAAS,IAHiB,OAMf,OANe,SAMT8rB,kBAAOp1B,MANE,OAOhB,OADRC,EANwB,gBAOVm1B,kBAAOt1B,MAPG,UAOxBwC,EAPwB,OASzBrC,EATyB,mDAUlB,OAVkB,UAUZA,EAAOu3B,IAAI,uBAVC,WAWnB,OADLqW,EAVwB,SAWVA,EAXU,uDAa1BA,EAAI7iC,UAA6B,IAAjB1I,EAAM0I,QAAkB1I,GAASA,EAAM,GAAGgqC,KAAOuB,EAAI,GAAG9rB,IAb9C,iBAe1B,OAf0B,UAepBmT,eAAI,CACN/rB,KAAM5B,IAAQkX,mBACdnV,QAASukC,IAjBa,QAqB9B,OArB8B,UAqBxB3Y,eAAI,CACN/rB,KAAM5B,IAAQmX,iCACdpV,SAAS,IAvBiB,4CAD/B,wCA8BQ,SAAUyqB,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAK7W,IACL6W,gBAAK5W,MAHE,wC,iBC9DE0H,I,aAmDQyN,IAnDlB,SAAUzN,KAAV,kEACH,OADG,SACG0N,qBAAUzsB,IAAQ2e,UAAT,WAAoB,WAAWoL,GAAX,gFAC/B,OAD+B,SACzB4D,eAAI,CACR/rB,KAAO5B,IAAQ8e,uBACf/c,SAAU,IAHmB,OAKhB,OALgB,SAKV8rB,kBAAOp1B,MALG,UAKzBC,EALyB,wDASjB,OATiB,SASXA,EAAOu3B,IAAI,eATA,UAWlB,OAFPsW,EATyB,SAWTA,EAXS,mDAc/B,OAd+B,UAczB5Y,eAAI,CACN/rB,KAAM5B,IAAQ4e,UACd7c,QAASwkC,IAhBkB,QAmB/B,OAnB+B,UAmBzB5Y,eAAI,CACR/rB,KAAO5B,IAAQ8e,uBACf/c,SAAU,IArBmB,QAwBP,OAxBO,UAwBD8rB,kBAAO3zB,MAxBN,WAwBzBiqC,EAxByB,SAyB3BqC,EAzB2B,OAyBTrC,QAzBS,IAyBTA,GAzBS,UAyBTA,EAAiBzgB,gBAzBR,aAyBT,EAA2B6iB,OAzBlB,iBAsC3B,OAXAA,EAAMz9B,SAAQ,SAAA6jB,GACV,IAAImS,EAAQ0H,EAAgB9K,WAAU,SAAA+K,GAAc,OAAIA,EAAeC,SAAW/Z,EAAK+Z,UACpF5H,GAAS,IAC6B,gBAAlC0H,EAAgB1H,GAAOna,QAA4C,eAAhBgI,EAAKhI,QAEf,gBAAlC6hB,EAAgB1H,GAAOna,UAD7B6hB,EAAgB1H,GAAOna,OAASgI,EAAKhI,WA/BtB,UAsCrBgJ,eAAI,CACN/rB,KAAMuwB,IAAY9wB,qBAClBU,QAAS,CACLG,MAAOskC,EACPrkC,QAAS,WA1CU,4CADhC,wCAmDQ,SAAUqqB,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAKlP,MAFE,wC,iBCjDE4nB,I,aAyBAxsB,I,aAiHAI,I,aAkFAqsB,I,aA2GAvsB,I,aAmDQmS,IA1XlB,SAAUma,KAAV,kEACH,OADG,SACGla,qBAAUzsB,KAAQ+Z,iBAAT,WAA2B,WAAWgQ,GAAX,0EAEjB,OAFiB,SAEX8D,kBAAOz1B,MAFI,OAGvB,OADTyuC,EAFgC,gBAGjBhZ,kBAAOp1B,MAHU,uEAQvB,OAHTquC,EAAW,OAGMA,GARe,wDAUf,GAAnBA,EAASrjC,QAAgBqjC,EAASrjC,SAAoC,IAAxBojC,EAAapjC,QAAkBojC,GAAgBA,EAAa,GAAG9B,KAAO+B,EAAS,GAAGtsB,KAV9F,iBAYlC,OAZkC,UAY5BmT,eAAI,CACN/rB,KAAM5B,KAAQ8Z,iBACd/X,QAAS+kC,IAdqB,4CADvC,wCAyBA,SAAU3sB,KAAV,kEACH,OADG,SACGsS,qBAAUzsB,KAAQ6Z,kBAAT,WAA4B,WAAWkQ,GAAX,4FAC1B,OAD0B,SACpB8D,kBAAOl0B,MADa,OAEtB,OAFsB,gBAEhBk0B,kBAAOp1B,MAFS,OAGnB,OADdE,EAFiC,gBAGbkB,KAHa,UAGjCq2B,EAHiC,OAKlCv3B,EALkC,mDA+C9B,OAxCLouC,EAAkB,CAClBC,WAAY,GACZC,QAASld,EAAOhoB,QAAQkU,MACxBmf,KAAMrL,EAAOhoB,QAAQqzB,KACrB8R,aAAc,EACdC,UAAW,GACXC,aAAc,GACdC,YAAanX,EAAYoX,YAAcpX,EAAYoX,YAAc,IAGjEhC,EAAa,CACbiC,SAAUxd,EAAOhoB,QAAQwlC,SACzBC,cAAezd,EAAOhoB,QAAQylC,cAC9BC,WAAY1d,EAAOhoB,QAAQ0lC,WAC3BC,SAAU3d,EAAOhoB,QAAQ2lC,SACzBC,IAAK5d,EAAOhoB,QAAQ4lC,IACpBC,WAAY7d,EAAOhoB,QAAQ6lC,WAC3BC,eAAgB9d,EAAOhoB,QAAQ8lC,eAC/BC,QAAS/d,EAAOhoB,QAAQ+lC,QACxBC,aAAche,EAAOhoB,QAAQgmC,aAC7BC,MAAOje,EAAOhoB,QAAQimC,MACtBC,aAAcle,EAAOhoB,QAAQkmC,aAC7BC,iBAAkBne,EAAOhoB,QAAQmmC,iBACjCC,aAAcpe,EAAOhoB,QAAQomC,aAC7BC,YAAare,EAAOhoB,QAAQqmC,aAc5BjhC,GAAS,EA7C0B,UA+CxBxO,EAASy3B,KAAK,wBAAyB2W,GA/Cf,WA+CvC5/B,EA/CuC,OAiDnCsyB,EAAO6L,EAAWiC,SACnBjC,EAAWkC,gBAAe/N,GAAQ,IAAM6L,EAAWkC,eACtD/N,GAAQ,IAAM6L,EAAWmC,YAErBtgC,EArDmC,iBAsDX,OAtDW,UAsDL0mB,kBAAO3zB,MAtDF,QAmEnC,OAbMiqC,EAtD6B,QAuD/B0C,EAvD+B,OAuDhB1C,QAvDgB,IAuDhBA,GAvDgB,UAuDhBA,EAAiBzgB,gBAvDD,aAuDhB,EAA2B6iB,SAC5BM,EAAe,IACjCA,EAAa79B,KAAK,CACd09B,OAAQv/B,EAAOu/B,OACfjN,KAAMA,EACN9U,OAAQxd,EAAOwd,OACf/iB,KAAMmlC,EAAgBC,WACtBqB,SAAU,WACVC,aAAc7Z,KAAKO,MACnBuZ,WAAY9Z,KAAKO,MACjBwZ,QAAS,gBAjEsB,UAmE7B7a,eAAI,CACN/rB,KAAMuwB,IAAY9wB,qBAClBU,QAAS,CACLG,MAAO2kC,EACP1kC,QAAS,WAvEkB,QA0ElB,OA1EkB,UA0EZ0rB,kBAAOz1B,MA1EK,QA8EnC,OAJM0uC,EA1E6B,OA2E/B0B,EAAU1B,EACdxB,EAAU,OAAan+B,EAAOu/B,OAC9B8B,EAAQx/B,KAAKs8B,GA7EsB,UA8E7B3X,eAAI,CACN/rB,KAAM5B,KAAQ8Z,iBACd/X,QAAQymC,IAhFuB,QA2FnC,OA3FmC,UA2F7B7a,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,0BACT/kB,KAAM,aA/FqB,QAmGnCwjC,GAAMC,QAAQr8B,KAAK,2BAnGgB,wBAqGnC,OArGmC,UAqG7B2kB,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,uBACT/kB,KAAM,WAzGqB,4CADxC,wCAiHA,SAAU2Y,KAAV,kEACH,OADG,SACGkS,qBAAUzsB,KAAQia,oBAAT,WAA8B,WAAW8P,GAAX,4FAC5B,OAD4B,SACtB8D,kBAAOl0B,MADe,OAExB,OAFwB,gBAElBk0B,kBAAOp1B,MAFW,OAGrB,OADdE,EAFmC,gBAGfkB,KAHe,iBAKpClB,EALoC,mDA6BjB,OAvBpBouC,EAAkB,CAClB0B,OAAQ1e,EAAOhoB,QAAQyY,GACvBysB,QAASld,EAAOhoB,QAAQA,QAAQkU,MAChCmf,KAAMrL,EAAOhoB,QAAQA,QAAQqzB,KAC7B8R,aAAc,EACdC,UAAW,GACXC,aAAc,IAGd9B,EAAa,CACbiC,SAAUxd,EAAOhoB,QAAQwlC,SACzBC,cAAezd,EAAOhoB,QAAQylC,cAC9BC,WAAY1d,EAAOhoB,QAAQ0lC,WAC3BC,SAAU3d,EAAOhoB,QAAQ2lC,SACzBC,IAAK5d,EAAOhoB,QAAQ4lC,IACpBC,WAAY7d,EAAOhoB,QAAQ6lC,WAC3BC,eAAgB9d,EAAOhoB,QAAQ8lC,eAC/BC,QAAS/d,EAAOhoB,QAAQ+lC,QACxBC,aAAche,EAAOhoB,QAAQgmC,aAC7BC,MAAOje,EAAOhoB,QAAQimC,OAzBe,UA6BXna,kBAAO3zB,MA7BI,WA6BnCiqC,EA7BmC,OA8BrCuE,EA9BqC,OA8BpBvE,QA9BoB,IA8BpBA,GA9BoB,UA8BpBA,EAAiBzgB,gBA9BG,aA8BpB,EAA2B6iB,MAC5CzH,EAAQ4J,EAAehN,WAAU,SAAA8M,GAAO,OAAIA,EAAQ9B,QAAUK,EAAgB0B,UAE9EhP,EAAO6L,EAAWiC,SACnBjC,EAAWkC,gBAAe/N,GAAQ,IAAM6L,EAAWkC,eACtD/N,GAAQ,IAAM6L,EAAWmC,aAGtB3I,GAAS,GAtC6B,iBA8CrC,OAPI4J,EAAe5J,KAAQ4J,EAAiB,IAC5CA,EAAe5J,GAAf,2BACO4J,EAAe5J,IADtB,IAEQrF,KAAMA,EACN73B,KAAMmlC,EAAgBC,WACtBuB,WAAY9Z,KAAKO,QA5CY,UA8C/BrB,eAAI,CACN/rB,KAAMuwB,IAAY9wB,qBAClBU,QAAS,CACLG,MAAOwmC,EACPvmC,QAAS,WAlDoB,QAqDpB,OArDoB,UAqDd0rB,kBAAOz1B,MArDO,QAyDjC,OAJE0uC,EArD+B,OAuDjC6B,GADAH,EAAU1B,GACOpL,WAAU,SAAA8M,GAAO,OAAIA,EAAQ9B,QAAUK,EAAgB0B,UACxED,EAAQG,GAAUrD,EAxDe,UAyD3B3X,eAAI,CACN/rB,KAAM5B,KAAQ8Z,iBACd/X,QAAQymC,IA3DqB,QA6DjC,OA7DiC,UA6D3B7a,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,yBACT/kB,KAAM,aAjEmB,QAoErCwjC,GAAMC,QAAQr8B,KAAK,2BApEkB,wBAsErC,OAtEqC,UAsE/B2kB,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,uBACT/kB,KAAM,WA1EuB,4CAD1C,wCAkFA,SAAUglC,KAAV,kEACH,OADG,SACGna,qBAAUzsB,KAAQga,oBAAT,WAA8B,WAAW+P,GAAX,4FAE5B,OAF4B,SAEtB8D,kBAAOl0B,MAFe,OAGxB,OAHwB,gBAGlBk0B,kBAAOp1B,MAHW,OAIrB,OADdE,EAHmC,gBAIfkB,KAJe,UAInCq2B,EAJmC,OAMpCv3B,EANoC,mDAyChC,OAjCLouC,EAAkB,CAClBC,WAAY,GACZC,QAASld,EAAOhoB,QAAQkU,MACxBmf,KAAMrL,EAAOhoB,QAAQqzB,KACrB8R,aAAc,EACdC,UAAW,GACXS,WAAY,GACZP,YAAanX,EAAYoX,YAAcpX,EAAYoX,YAAc,IAGjEhC,EAAa,CACbiC,SAAUxd,EAAOhoB,QAAQwlC,SACzBC,cAAezd,EAAOhoB,QAAQylC,cAC9BC,WAAY1d,EAAOhoB,QAAQ0lC,WAC3BG,WAAY7d,EAAOhoB,QAAQ6lC,WAC3BI,MAAOje,EAAOhoB,QAAQimC,MACtBY,cAAe7e,EAAOhoB,QAAQ6mC,cAC9BC,YAAa9e,EAAOhoB,QAAQ8mC,YAC5BC,cAAe/e,EAAOhoB,QAAQ+mC,eAa9B3hC,GAAS,EAvC4B,UAyC1BxO,EAASy3B,KAAK,wBAAyB2W,GAzCb,WAyCzC5/B,EAzCyC,OA2CrCsyB,EAAO6L,EAAWiC,SACnBjC,EAAWkC,gBAAe/N,GAAQ,GAAK6L,EAAWkC,eACrD/N,GAAQ6L,EAAWmC,YAEftgC,EA/CqC,iBAgDb,OAhDa,UAgDP0mB,kBAAO3zB,MAhDA,QA6DrC,OAbMiqC,EAhD+B,QAiDjC0C,EAjDiC,OAiDlB1C,QAjDkB,IAiDlBA,GAjDkB,UAiDlBA,EAAiBzgB,gBAjDC,aAiDlB,EAA2B6iB,SAC5BM,EAAe,IACjCA,EAAa79B,KAAK,CACd09B,OAAQv/B,EAAOu/B,OACfjN,KAAMA,EACN9U,OAAQxd,EAAOwd,OACf/iB,KAAMmlC,EAAgBC,WACtBqB,SAAU,cACVC,aAAc7Z,KAAKO,MACnBuZ,WAAY9Z,KAAKO,MACjBwZ,QAAS,gBA3DwB,UA6D/B7a,eAAI,CACN/rB,KAAMuwB,IAAY9wB,qBAClBU,QAAS,CACLG,MAAO2kC,EACP1kC,QAAS,WAjEoB,QAoEpB,OApEoB,UAoEd0rB,kBAAOz1B,MApEO,QAwErC,OAJM0uC,EApE+B,OAqEjC0B,EAAU1B,EACdxB,EAAU,OAAan+B,EAAOu/B,OAC9B8B,EAAQx/B,KAAKs8B,GAvEwB,UAwE/B3X,eAAI,CACN/rB,KAAM5B,KAAQ8Z,iBACd/X,QAAQymC,IA1EyB,QAqFrC,OArFqC,UAqF/B7a,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,iCACT/kB,KAAM,aAzFuB,QA6FrCwjC,GAAMC,QAAQr8B,KAAK,2BA7FkB,wBA+FrC,OA/FqC,UA+F/B2kB,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,uBACT/kB,KAAM,WAnGuB,4CAD1C,wCA2GA,SAAUyY,KAAV,kEACH,OADG,SACGoS,qBAAUzsB,KAAQka,oBAAT,WAA8B,WAAW6uB,GAAX,kFACxB,OADwB,SAClBlb,kBAAOp1B,MADW,UACnCE,EADmC,wDAgBhC,OAXLoxB,EAAS,CACT0e,OAAQM,EAAahnC,QACrBklC,QAAS,qBACT7R,KAAK,oDAGL+R,UAAW,GACXD,aAAc,EACdE,aAAc,KAEL,EAf4B,SAgB1BzuC,EAASy3B,KAAK,uBAAwBrG,GAhBZ,OAkBjB,OAlBiB,iBAkBX8D,kBAAO3zB,MAlBI,WAkBnCiqC,EAlBmC,OAmBrC0C,EAnBqC,OAmBtB1C,QAnBsB,IAmBtBA,GAnBsB,UAmBtBA,EAAiBzgB,gBAnBK,aAmBtB,EAA2B6iB,SAE1CzH,EAAQ+H,EAAanL,WAAU,SAAA8M,GAAO,OAAIA,EAAQ9B,QAAUqC,EAAahnC,aACjE,GAtB6B,iBAyBrC,OAFA8kC,EAAa/H,GAAOna,OAAS,cAvBQ,UAyB/BgJ,eAAI,CACN/rB,KAAMuwB,IAAY9wB,qBAClBU,QAAS,CACLG,MAAO2kC,EACP1kC,QAAS,WA7BoB,QAkCjC,OAlCiC,UAkC3BwrB,eAAI,CACN/rB,KAAM5B,KAAQ+Z,mBAnCe,QAsCjC,OAtCiC,UAsC3B4T,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,2BACT/kB,KAAM,aA1CmB,QA8CrCwjC,GAAMC,QAAQr8B,KAAK,2BA9CkB,4CAD1C,wCAmDQ,SAAUwjB,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAK0Y,IACL1Y,gBAAK9T,IACL8T,gBAAK2Y,IACL3Y,gBAAK5T,IACL4T,gBAAK1T,MANE,wC,iBC1XEoB,I,aAqBAF,I,aA2FAK,I,aA2EAD,I,aA4CAD,I,aAmDQ4Q,IA1RlB,SAAU7Q,KAAV,kEACH,OADG,SACG8Q,qBAAUzsB,KAAQqb,mBAAT,WAA6B,WAAW0O,GAAX,0EAEjB,OAFiB,SAEX8D,kBAAOlS,IAFI,OAGzB,OADT+sB,EAFkC,gBAGnB7a,kBAAOp1B,MAHY,uEAQzB,OAHTquC,EAAW,OAGMA,GARiB,wDAUjB,GAAnBA,EAASrjC,QAAgBqjC,EAASrjC,SAAsC,IAA1BilC,EAAejlC,QAAkBilC,GAAkBA,EAAe,GAAG3D,KAAO+B,EAAS,GAAGtsB,KAVlG,iBAYpC,OAZoC,UAY9BmT,eAAI,CACN/rB,KAAM5B,KAAQob,mBACdrZ,QAAS+kC,IAduB,4CADzC,wCAqBA,SAAUrrB,KAAV,kEACH,OADG,SACGgR,qBAAUzsB,KAAQmb,oBAAT,WAA8B,WAAW4O,GAAX,0FAC5B,OAD4B,SACtB8D,kBAAOl0B,MADe,OAExB,OAFwB,gBAElBk0B,kBAAOp1B,MAFW,OAGrB,OADdE,EAFmC,gBAGfkB,KAHe,UAGnCq2B,EAHmC,OAKpCv3B,EALoC,mDAwBhC,OAjBLouC,EAAkB,CAClBC,WAAY,EACZC,QAASld,EAAOhoB,QAAQkU,MACxBmf,KAAMrL,EAAOhoB,QAAQqzB,KACrB8R,aAAc,EACdC,UAAW,GACXC,aAAc,GACdC,YAAanX,EAAYoX,YAAcpX,EAAYoX,YAAc,IAGjEhC,EAAa,CACbsC,WAAY7d,EAAOhoB,QAAQ6lC,WAC3BoB,UAAWjf,EAAOhoB,QAAQinC,UAC1BrB,IAAK5d,EAAOhoB,QAAQknC,QAGpB9hC,GAAS,EAvB4B,UAwB1BxO,EAASy3B,KAAK,wBAAyB2W,GAxBb,aAwBzC5/B,EAxByC,yBA8Bb,OA9Ba,UA8BP0mB,kBAAO3zB,MA9BA,QA6CrC,OAfMiqC,EA9B+B,QA+BjCuE,EA/BiC,OA+BhBvE,QA/BgB,IA+BhBA,GA/BgB,UA+BhBA,EAAiBzgB,gBA/BD,aA+BhB,EAA2B6iB,SAC5BmC,EAAiB,IACrCA,EAAe1/B,KAAK,CAChB09B,OAAQv/B,EAAOu/B,OACf/hB,OAAQxd,EAAOwd,OACf/iB,KAAMmlC,EAAgBC,WACtBkC,MAAO5D,EAAWsC,WAClBD,IAAKrC,EAAWqC,IAChBqB,UAAW1D,EAAW0D,UACtBX,SAAwC,aAA9B/C,EAAW0D,UAAU9mC,MAAuB,YAAc,cACpEinC,mBAAoB,gBAAgBzV,EAAGjF,KAAKO,MAC5CuZ,WAAY9Z,KAAKO,QA1CgB,UA6C/BrB,eAAI,CACN/rB,KAAMuwB,IAAY9wB,qBAClBU,QAAS,CACLG,MAAOwmC,EACPvmC,QAAS,WAjDoB,QAoDpB,OApDoB,UAoDd0rB,kBAAOlS,IApDO,QAwDrC,OAJMmrB,EApD+B,OAqDjC0B,EAAU1B,EACdxB,EAAU,OAAan+B,EAAOu/B,OAC9B8B,EAAQx/B,KAAKs8B,GAvDwB,UAwD/B3X,eAAI,CACN/rB,KAAM5B,KAAQob,mBACdrZ,QAAQymC,IA1DyB,QAqErC,OArEqC,UAqE/B7a,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,4BACT/kB,KAAM,aAzEuB,QA6ErCwjC,GAAMC,QAAQr8B,KAAK,yBA7EkB,wBA+ErC,OA/EqC,UA+E/B2kB,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,uBACT/kB,KAAM,WAnFuB,4CAD1C,wCA2FA,SAAUka,KAAV,kEACH,OADG,SACG2Q,qBAAUzsB,KAAQub,sBAAT,WAAgC,WAAWwO,GAAX,0FAC9B,OAD8B,SACxB8D,kBAAOl0B,MADiB,OAE1B,OAF0B,gBAEpBk0B,kBAAOp1B,MAFa,OAGvB,OADdE,EAFqC,gBAGjBkB,KAHiB,iBAKtClB,EALsC,mDAsBnB,OAhBpBouC,EAAkB,CAClB0B,OAAQ1e,EAAOhoB,QAAQyY,GACvBysB,QAASld,EAAOhoB,QAAQA,QAAQkU,MAChCmf,KAAMrL,EAAOhoB,QAAQA,QAAQqzB,KAC7B8R,aAAc,EACdC,UAAW,GACXC,aAAc,IAGd9B,EAAa,CACbsC,WAAY7d,EAAOhoB,QAAQA,QAAQ6lC,WACnCoB,UAAWjf,EAAOhoB,QAAQA,QAAQinC,UAClCC,OAAQlf,EAAOhoB,QAAQA,QAAQknC,QAlBQ,UAsBbpb,kBAAO3zB,MAtBM,WAsBrCiqC,EAtBqC,OAuBvCuE,EAvBuC,OAuBtBvE,QAvBsB,IAuBtBA,GAvBsB,UAuBtBA,EAAiBzgB,gBAvBK,aAuBtB,EAA2B6iB,MAC5CzH,EAAQ4J,EAAehN,WAAU,SAAA8M,GAAO,OAAIA,EAAQ9B,QAAUK,EAAgB0B,YAC/E3J,GAAS,GAzB+B,iBAoCvC,OAVI4J,EAAe5J,KAAQ4J,EAAiB,IAC5CA,EAAe5J,GAAf,2BACO4J,EAAe5J,IADtB,IAEIl9B,KAAMmlC,EAAgBC,WACtBkC,MAAO5D,EAAWsC,WAClBD,IAAKrC,EAAW2D,OAChBD,UAAW1D,EAAW0D,UACtBX,SAAwC,aAA9B/C,EAAW0D,UAAU9mC,MAAuB,YAAc,cACpEqmC,WAAY9Z,KAAKO,QAlCkB,UAoCjCrB,eAAI,CACN/rB,KAAMuwB,IAAY9wB,qBAClBU,QAAS,CACLG,MAAOwmC,EACPvmC,QAAS,WAxCsB,QA2CtB,OA3CsB,UA2ChB0rB,kBAAOlS,IA3CS,QAkDnC,OAPEmrB,EA3CiC,OA6CnChI,GADA0J,EAAU1B,GACMpL,WAAU,SAAA8M,GAAO,OAAIA,EAAQ9B,QAAUK,EAAgB0B,UACvED,EAAQ1J,GAAR,2BACO0J,EAAQ1J,IADf,IAEIwG,eAhD+B,UAkD7B3X,eAAI,CACN/rB,KAAM5B,KAAQob,mBACdrZ,QAAQymC,IApDuB,QAsDnC,OAtDmC,UAsD7B7a,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,2BACT/kB,KAAM,aA1DqB,QA6DvCwjC,GAAMC,QAAQr8B,KAAK,yBA7DoB,wBA+DvC,OA/DuC,UA+DjC2kB,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,uBACT/kB,KAAM,WAnEyB,4CAD5C,wCA2EA,SAAUia,KAAV,kEACH,OADG,SACG4Q,qBAAUzsB,KAAQsb,sBAAT,WAAgC,WAAWyO,GAAX,0EAE1B,OAF0B,SAEpB8D,kBAAOp1B,MAFa,UAErCE,EAFqC,wDAK5B,OAL4B,SAKtBA,EAASq9B,OAAO,mBAAqBjM,EAAOhoB,SALtB,YAKrCoF,EALqC,6BAOnCA,EAAO2tB,GAP4B,iBAQnC,OARmC,UAQ7BnH,eAAI,CACN/rB,KAAM5B,KAAQqb,qBATiB,QAYnC,OAZmC,UAY7BsS,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,4BACT/kB,KAAM,aAhBqB,gCAqBnC,OArBmC,UAqB7B+rB,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,uBACT/kB,KAAM,WAzBqB,QA6BvCwjC,GAAMC,QAAQr8B,KAAK,yBA7BoB,wBA+BvC,OA/BuC,UA+BjC2kB,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,uBACT/kB,KAAM,WAnCyB,4CAD5C,wCA4CA,SAAUga,KAAV,kEACH,OADG,SACG6Q,qBAAUzsB,KAAQwb,sBAAT,WAAgC,WAAWutB,GAAX,kFAC1B,OAD0B,SACpBlb,kBAAOp1B,MADa,UACrCE,EADqC,wDAgBlC,OAXLoxB,EAAS,CACT0e,OAAQM,EAAahnC,QACrBklC,QAAS,qBACT7R,KAAK,oDAGL+R,UAAW,GACXD,aAAc,EACdE,aAAc,KAEL,EAf8B,SAgB5BzuC,EAASy3B,KAAK,uBAAwBrG,GAhBV,OAkBnB,OAlBmB,iBAkBb8D,kBAAO3zB,MAlBM,WAkBrCiqC,EAlBqC,OAmBvCzb,EAnBuC,OAmBvByb,QAnBuB,IAmBvBA,GAnBuB,UAmBvBA,EAAiBzgB,gBAnBM,aAmBvB,EAA2B6iB,SAE3CzH,EAAQpW,EAAcgT,WAAU,SAAA8M,GAAO,OAAIA,EAAQ9B,QAAUqC,EAAahnC,aAClE,GAtB+B,iBAyBvC,OAFA2mB,EAAcoW,GAAOna,OAAS,cAvBS,UAyBjCgJ,eAAI,CACN/rB,KAAMuwB,IAAY9wB,qBAClBU,QAAS,CACLG,MAAOwmB,EACPvmB,QAAS,WA7BsB,QAkCnC,OAlCmC,UAkC7BwrB,eAAI,CACN/rB,KAAM5B,KAAQqb,qBAnCiB,QAsCnC,OAtCmC,UAsC7BsS,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,6BACT/kB,KAAM,aA1CqB,QA8CvCwjC,GAAMC,QAAQr8B,KAAK,2BA9CoB,4CAD5C,wCAmDQ,SAAUwjB,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAKtS,IACLsS,gBAAKxS,IACLwS,gBAAKpS,IACLoS,gBAAKrS,IACLqS,gBAAKnS,MANE,wC,iBC1RE4E,I,aAqBAF,I,aAiKA4oB,I,aA4CQ5c,IAlOlB,SAAU9L,KAAV,kEACH,OADG,SACG+L,qBAAUzsB,KAAQqgB,sBAAT,WAAgC,WAAW0J,GAAX,0EAEjB,OAFiB,SAEX8D,kBAAOnN,IAFI,OAG5B,OADT2oB,EAFqC,gBAGtBxb,kBAAOp1B,MAHe,uEAQ5B,OAHTquC,EAAW,OAGMA,GARoB,wDAUpB,GAAnBA,EAASrjC,QAAgBqjC,EAASrjC,SAAyC,IAA7B4lC,EAAkB5lC,QAAkB4lC,GAAqBA,EAAkB,GAAGtE,KAAO+B,EAAS,GAAGtsB,KAVxG,iBAYvC,OAZuC,UAYjCmT,eAAI,CACN/rB,KAAM5B,KAAQogB,sBACdre,QAAS+kC,IAd0B,4CAD5C,wCAqBA,SAAUtmB,KAAV,kEACH,OADG,SACGiM,qBAAUzsB,KAAQmgB,uBAAT,WAAiC,WAAW4J,GAAX,0FAC/B,OAD+B,SACzB8D,kBAAOl0B,MADkB,OAE3B,OAF2B,gBAErBk0B,kBAAOp1B,MAFc,OAGxB,OADdE,EAFsC,gBAGlBkB,KAHkB,UAGtCq2B,EAHsC,OAKvCv3B,EALuC,mDAiCnC,OA1BLouC,EAAkB,CAClBC,WAAY,EACZC,QAASld,EAAOhoB,QAAQkU,MACxBmf,KAAMrL,EAAOhoB,QAAQqzB,KACrB8R,aAAc,EACdC,UAAW,GACXC,aAAc,GACdC,YAAanX,EAAYoX,YAAcpX,EAAYoX,YAAc,IAGjEhC,EAAa,CACbyC,aAAche,EAAOhoB,QAAQgmC,cAa7B5gC,GAAS,EA/B+B,UAiC7BxO,EAASy3B,KAAK,wBAAyB2W,GAjCV,aAiC5C5/B,EAjC4C,yBAsChB,OAtCgB,UAsCV0mB,kBAAO3zB,MAtCG,QAiDxC,OAXMiqC,EAtCkC,QAuCpC0C,EAvCoC,OAuCrB1C,QAvCqB,IAuCrBA,GAvCqB,UAuCrBA,EAAiBzgB,gBAvCI,aAuCrB,EAA2B6iB,SAC5BM,EAAe,IACjCA,EAAa79B,KAAK,CACd09B,OAAQv/B,EAAOu/B,OACf/hB,OAAQxd,EAAOwd,OACf/iB,KAAMmlC,EAAgBC,WACtBsB,aAAc7Z,KAAKO,MACnBuZ,WAAY9Z,KAAKO,MACjBwZ,QAAS,qBA/C2B,UAiDlC7a,eAAI,CACN/rB,KAAMuwB,IAAY9wB,qBAClBU,QAAS,CACLG,MAAO2kC,EACP1kC,QAAS,WArDuB,QAyDvB,OAzDuB,UAyDjB0rB,kBAAOnN,IAzDU,QA6DxC,OAJMomB,EAzDkC,OA0DpC0B,EAAU1B,EACdxB,EAAU,OAAan+B,EAAOu/B,OAC9B8B,EAAQx/B,KAAKs8B,GA5D2B,UA6DlC3X,eAAI,CACN/rB,KAAM5B,KAAQogB,sBACdre,QAAQymC,IA/D4B,QAsExC,OAtEwC,UAsElC7a,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,+BACT/kB,KAAM,aA1E0B,QA8ExCwjC,GAAMC,QAAQr8B,KAAK,0BA9EqB,wBAgFxC,OAhFwC,UAgFlC2kB,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,uBACT/kB,KAAM,WApF0B,4CAD7C,wCAiKA,SAAUwnC,KAAV,kEACH,OADG,SACG3c,qBAAUzsB,KAAQsgB,yBAAT,WAAmC,WAAWyJ,GAAX,kEAE7B,OAF6B,SAEvB8D,kBAAOp1B,MAFgB,sEAM1C0O,OAN0C,qBAOtCA,OAAO2tB,GAP+B,iBAQtC,OARsC,SAQhCnH,eAAI,CACN/rB,KAAM5B,KAAQqgB,wBAToB,OAYtC,OAZsC,UAYhCsN,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,+BACT/kB,KAAM,aAhBwB,gCAqBtC,OArBsC,UAqBhC+rB,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,uBACT/kB,KAAM,WAzBwB,QA6B1CwjC,GAAMC,QAAQr8B,KAAK,2BA7BuB,wBA+B1C,OA/B0C,UA+BpC2kB,eAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,uBACT/kB,KAAM,WAnC4B,4CAD/C,wCA4CQ,SAAU4qB,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAKvN,IACLuN,gBAAKzN,IACLyN,gBAAKmb,MAJE,wC,iBCnOEE,I,aAsEA/nB,I,aA8GQiL,IApLlB,SAAU8c,KAAV,kEACH,OADG,SACG7c,qBAAUzsB,KAAQohB,UAAT,WAAoB,WAAW2I,GAAX,gFAEb,OAFa,SAEP8D,kBAAO1xB,MAFA,kEAQX,OARW,SAQL0xB,kBAAOj1B,MARF,UASZ,OADbC,EARyB,2DAWX,OAXW,UAWLA,EAAYo3B,IAAI,mBAXX,WAYZ,OADbsZ,EAXyB,2DAmB/B,GALIrtC,EAAQ,GAERstC,EAAY,GACE,GAEdD,EAAYrnC,MACZ,IAAS0B,EAAI,EAAGA,GAAK2lC,EAAYrnC,MAAMuB,OAAQG,IACvC2lC,EAAYrnC,MAAM0B,IAAK,WACvB,IAAI6lC,EAAOF,EAAYrnC,MAAM0B,GAE7B,IACI4lC,EAAUxgC,KAAK,IAAIpC,SAAQ,SAACC,EAASm8B,GACjC,IAAI7oC,EAAO,GACXtB,EAAYo3B,IAAI,UAAYwZ,EAAKjvB,GAAK,gBAAiB,cAAc,QAAQuiB,MAAK,SAAC2M,GAC3EA,IACAvvC,EAAK+V,MAAQ,0BAA4B,IAAIugB,UAAOC,KAAKgZ,EAAW,UAAU/Y,SAAS,WAE3F93B,EAAYo3B,IAAI,UAAYwZ,EAAKjvB,IAAIuiB,MAAK,SAAC4M,GACvB,MAAZA,GAAkB9iC,EAAQ,2BAAK1M,GAASwvC,IAC5C3G,cAMd,MAAOzO,GACL3H,QAAQC,IAAI0H,IAnBO,GA0BpB,OA/CgB,UA+CV3tB,QAAQgjC,WAAWJ,GA/CT,QA6D/B,OA7D+B,OAiDtB1gC,SAAQ,SAAC2gC,GACK,aAAfA,EAAK9kB,QACTzoB,EAAM8M,KAAK,CACPywB,KAAMgQ,EAAKvnC,MAAM0vB,YACjBpQ,OAAQioB,EAAKvnC,MAAMsY,GACnBqvB,iBAAiB,EACjBC,MAAOL,EAAKvnC,MAAMgO,MAClB65B,OAAQN,EAAKvnC,MAAM6nC,OAASN,EAAKvnC,MAAM6nC,OAAS,GAChDC,SAAU,QAzDa,UA6DzBrc,eAAI,CACN/rB,KAAM5B,KAAQqhB,UACdtf,QAAS7F,IA/DkB,4CADhC,wCAsEA,SAAUqlB,KAAV,kEACH,OADG,SACGkL,qBAAUzsB,KAAQshB,oBAAT,WAA8B,WAAWyI,GAAX,sFACrB,OADqB,SACf8D,kBAAOj1B,MADQ,OAE3B,OADRC,EADmC,gBAErBg1B,kBAAO7xB,MAFc,OAIpB,OAFfE,EAFmC,gBAIdrD,EAAYo3B,IAAI,UAAYlG,EAAOhoB,QAAU,aAJ/B,UAInCkoC,EAJmC,OAMrCC,EAAiB,IACH,EACdC,EAAW,GACXvmB,EAAQ,IAERqmB,EAAa/nC,MAXwB,iBAYrC,IAZqC,WAY3B0B,GACFqmC,EAAa/nC,MAAM0B,IAEnBggB,EAAM5a,KAAK,IAAIpC,SAAQ,SAACC,EAASm8B,GAC7B,IAAM3yB,EAAO45B,EAAa/nC,MAAM0B,GAChCyM,EAAKmR,OAASuI,EAAOhoB,QACrBsO,EAAK+5B,UACLvjC,EAAQwJ,QAPVzM,EAAI,EAAGA,GAAKqmC,EAAa/nC,MAAMuB,OAAQG,IAAO,EAA9CA,GAkBK,OA9BsB,UA8BhBgD,QAAQgjC,WAAWhmB,GA9BH,eA+B5B9a,SAAQ,SAACuH,GACW,YAArBA,EAAKuhB,cAGLvhB,EAAKuhB,YAAc,YAFnBsY,EAAelhC,KAAKqH,MAO5BnU,EAAM4M,SAAQ,SAAC2gC,EAAM7lC,GACb6lC,EAAKjoB,SAAWuI,EAAOhoB,UACvB0nC,EAAI,2BACGA,GADH,IAEAI,iBAAiB,EACjBG,SAAUC,EAAa/nC,SAI/BioC,EAASnhC,KAAKygC,MAjDmB,wBAsDrCvtC,EAAM4M,SAAQ,SAAC2gC,EAAM7lC,GACb6lC,EAAKjoB,SAAWuI,EAAOhoB,UACvB0nC,EAAI,2BACGA,GADH,IAEAI,iBAAiB,EACjBG,SAAUE,KAIlBC,EAASnhC,KAAKygC,MA/DmB,QAmEzC,OAnEyC,UAmEnC9b,eAAI,CACN/rB,KAAM5B,KAAQqhB,UACdtf,QAASooC,IArE4B,4CAD1C,wCA8GQ,SAAU3d,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAKqb,IACLrb,gBAAK1M,MAHE,wC,iBCnLE8oB,I,aAgCAC,I,aA+BAC,I,aAmCAC,I,aAkCAC,I,aA6BAC,I,aAqIQle,IAtSlB,SAAU6d,KAAV,kEACH,OADG,SACG5d,qBAAUzsB,KAAQ+M,uBAAT,WAAiC,WAAWgd,GAAX,4EAC5C,OAD4C,SACtC4D,eAAI,CACN/rB,KAAM5B,KAAQ0N,eACd3L,SAAS,IAH+B,OAK1B,OAL0B,SAKpB8rB,kBAAO1xB,MALa,kEAUxB,OADhBwuC,EAAkB,GATsB,UAUlB9c,kBAAOj1B,MAVW,WAWzB,OADbC,EAVsC,2DAavB,OAbuB,UAajBA,EAAYo3B,IAAI,iBAAiBlG,EAAOhoB,SAbvB,aAatC6oC,EAbsC,QAc5B1oC,MAd4B,iBAkBxC,OAHA0oC,EAAa1oC,MAAM4G,SAAQ,SAAA3B,GACvBwjC,EAAgB3hC,KAAK,CAAC6hC,UAAS,EAAMpR,KAAMtyB,EAAOyqB,YAAakZ,MAAO3jC,EAAOqT,GAAIuvB,OAAQ5iC,EAAO4iC,YAhB5D,UAkBlCpc,eAAI,CACN/rB,KAAM5B,KAAQ8M,eACd/K,QAAS4oC,IApB2B,QAwB5C,OAxB4C,UAwBtChd,eAAI,CACN/rB,KAAM5B,KAAQ0N,eACd3L,SAAS,IA1B+B,4CAD7C,wCAgCA,SAAUuoC,KAAV,kEACH,OADG,SACG7d,qBAAUzsB,KAAQgN,uBAAT,WAAiC,WAAW+c,GAAX,4EAC5C,OAD4C,SACtC4D,eAAI,CACN/rB,KAAM5B,KAAQ0N,eACd3L,SAAS,IAH+B,OAK1B,OAL0B,SAKpB8rB,kBAAO1xB,MALa,kEAUxB,OADhBwuC,EAAkB,GATsB,UAUlB9c,kBAAOj1B,MAVW,WAWzB,OADbC,EAVsC,2DAavB,OAbuB,UAajBA,EAAYo3B,IAAI,UAAUlG,EAAOhoB,QAAQ+oC,MAAM,WAb9B,aAatCF,EAbsC,QAc5B1oC,MAd4B,iBAkBxC,OAHA0oC,EAAa1oC,MAAM4G,SAAQ,SAAA3B,GACvBwjC,EAAgB3hC,KAAK,CAAC6hC,UAAU,EAAMpR,KAAMtyB,EAAOsyB,KAAMqR,MAAO/gB,EAAOhoB,QAAQ+oC,MAAOC,OAAQ5jC,EAAOqT,GAAIuvB,OAAQ5iC,EAAO4iC,YAhBpF,UAkBlCpc,eAAI,CACN/rB,KAAM5B,KAAQiN,qBACdlL,QAAS4oC,IApB2B,QAuB5C,OAvB4C,UAuBtChd,eAAI,CACN/rB,KAAM5B,KAAQ0N,eACd3L,SAAS,IAzB+B,4CAD7C,wCA+BA,SAAUwoC,KAAV,kEACH,OADG,SACG9d,qBAAUzsB,KAAQkN,gCAAT,WAA0C,WAAW6c,GAAX,4EACrD,OADqD,SAC/C4D,eAAI,CACN/rB,KAAM5B,KAAQ0N,eACd3L,SAAS,IAHwC,OAKnC,OALmC,SAK7B8rB,kBAAO1xB,MALsB,kEAUjC,OADhBwuC,EAAkB,GAT+B,UAU3B9c,kBAAOj1B,MAVoB,WAWlC,OADbC,EAV+C,2DAYhC,OAZgC,UAY1BA,EAAYo3B,IAAI,UAAWlG,EAAOhoB,QAAQ+oC,MAAO,WAAY/gB,EAAOhoB,QAAQgpC,OAAS,kBAZ3D,aAY/CH,EAZ+C,QAarC1oC,MAbqC,iBAsBjD,OARA0oC,EAAa1oC,MAAM4G,SAAQ,SAAA3B,GACpBA,EAAO6jC,OACNL,EAAgB3hC,KAAK,CAAC6hC,UAAU,EAAMpR,KAAMtyB,EAAOsyB,KAAMqR,MAAO/gB,EAAOhoB,QAAQ+oC,MAAOC,OAAOhhB,EAAOhoB,QAAQgpC,OAAQ16B,KAAKlJ,EAAOqT,GAAIuvB,OAAQ5iC,EAAO4iC,SAEnJY,EAAgB3hC,KAAK,CAAC6hC,UAAU,EAAOpR,KAAMtyB,EAAOsyB,KAAMqR,MAAO/gB,EAAOhoB,QAAQ+oC,MAAOC,OAAOhhB,EAAOhoB,QAAQgpC,OAAQ16B,KAAKlJ,EAAOqT,GAAIuvB,OAAQ5iC,EAAO4iC,YAlB3G,UAsB3Cpc,eAAI,CACN/rB,KAAM5B,KAAQmN,8BACdpL,QAAS4oC,IAxBoC,QA2BrD,OA3BqD,UA2B/Chd,eAAI,CACN/rB,KAAM5B,KAAQ0N,eACd3L,SAAS,IA7BwC,4CADtD,wCAmCA,SAAUyoC,KAAV,kEACH,OADG,SACG/d,qBAAUzsB,KAAQoN,wBAAT,WAAkC,WAAW2c,GAAX,4EAC7C,OAD6C,SACvC4D,eAAI,CACN/rB,KAAM5B,KAAQ0N,eACd3L,SAAS,IAHgC,OAK3B,OAL2B,SAKrB8rB,kBAAO1xB,MALc,kEAUzB,OADhBwuC,EAAkB,GATuB,UAUnB9c,kBAAOj1B,MAVY,WAW1B,OADbC,EAVuC,2DAYxB,OAZwB,UAYlBA,EAAYo3B,IAAI,UAAWlG,EAAOhoB,QAAQ+oC,MAAO,WAAY/gB,EAAOhoB,QAAQgpC,OAAQ,UAAWhhB,EAAOhoB,QAAQsO,KAAO,aAZnG,aAYvCu6B,EAZuC,QAa7B1oC,MAb6B,iBAqBzC,OAPA0oC,EAAa1oC,MAAM4G,SAAQ,SAAA3B,GACpBA,EAAO6jC,OACNL,EAAgB3hC,KAAK,CAAC6hC,UAAU,EAAMpR,KAAMtyB,EAAOsyB,KAAMqR,MAAO/gB,EAAOhoB,QAAQ+oC,MAAOC,OAAQhhB,EAAOhoB,QAAQgpC,OAAQ16B,KAAMlJ,EAAOqT,GAAKuvB,OAAQ5iC,EAAO4iC,SAEtJY,EAAgB3hC,KAAK,CAAC6hC,UAAU,EAAOpR,KAAMtyB,EAAOsyB,KAAMqR,MAAO/gB,EAAOhoB,QAAQ+oC,MAAOC,OAAQhhB,EAAOhoB,QAAQgpC,OAAQ16B,KAAMlJ,EAAOqT,GAAKuvB,OAAQ5iC,EAAO4iC,YAlBtH,UAqBnCpc,eAAI,CACN/rB,KAAM5B,KAAQqN,sBACdtL,QAAS4oC,IAvB4B,QA0B7C,OA1B6C,UA0BvChd,eAAI,CACN/rB,KAAM5B,KAAQ0N,eACd3L,SAAS,IA5BgC,4CAD9C,wCAkCA,SAAU0oC,KAAV,kEACH,OADG,SACGhe,qBAAUzsB,KAAQsN,iBAAT,WAA2B,WAAWyc,GAAX,sEAEnCA,EAAOhoB,QAF4B,qBAG/BgoB,EAAOhoB,QAAQqD,SAAS,cAHO,gBAI9B,OAJ8B,SAIxBuoB,eAAI,CACN/rB,KAAM5B,KAAQsN,mBALY,WAQ/Byc,EAAOhoB,QAAQqD,SAAS,SARO,gBAS9B,OAT8B,SASxBuoB,eAAI,CACN/rB,KAAM5B,KAAQuN,yBAVY,WAa/Bwc,EAAOhoB,QAAQqD,SAAS,iBAbO,iBAc9B,OAd8B,UAcxBuoB,eAAI,CACN/rB,KAAM5B,KAAQwN,kCAfY,YAkB/Buc,EAAOhoB,QAAQqD,SAAS,UAlBO,iBAmB9B,OAnB8B,UAmBxBuoB,eAAI,CACN/rB,KAAM5B,KAAQyN,0BApBY,4CADvC,wCA6BA,SAAUi9B,KAAV,kEACH,OADG,SACGje,qBAAUzsB,KAAQ2N,mBAAT,WAA6B,WAAWoc,GAAX,kCA+E/BkhB,EA/E+B,0EACvB,OA8ERA,EA/E+B,SA+EhBC,GAGpB,IAFA,IAAMC,EAAe7nC,KAAK4nC,GACpBE,EAAY,IAAIznC,WAAWwnC,EAAa1nC,QACrCG,EAAI,EAAGA,EAAIunC,EAAa1nC,OAAQG,IACvCwnC,EAAUxnC,GAAKunC,EAAatnC,WAAWD,GAEzC,OAAOwnC,GArF6B,SACjBvd,kBAAOp1B,MADU,OAEpB,OADd4yC,EADkC,gBAEdxd,kBAAOj1B,MAFO,OAGxB,OADVC,EAFkC,gBAGlBwyC,EAAS7V,WAHS,OAIrB,OADbqB,EAHkC,iBAIfh+B,EAAY28B,WAJG,QAKf,OADnB8V,EAJkC,iBAKTzd,kBAAO70B,MALE,QAMhB,OADlBuyC,EALkC,iBAMVA,EAAiB/V,WANP,kBAOlChB,EAASj2B,OAAOi2B,OAAS,0BACzBgX,EAASjtC,OAAOi2B,OAAS,uBARS,UAUrCzK,EAAOhoB,eAV8B,QAUrC,EAAgB0pC,MAVqB,iBAWb,OAXa,UAWP9W,MAAM,mDAAD,OAAoD5K,EAAOhoB,QAAQ2pC,QACrG,CACI9W,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB,UAAY0W,KAhBD,QAmBrB,OARTK,EAX8B,iBAmBfA,EAAetW,OAnBA,QAmBhCR,EAnBgC,OAoBpC+W,EAAc/W,EAAS,gCApBa,4BAsB9B9K,EAAOhoB,QAAQ8pC,aAAf,UAA8B9hB,EAAOhoB,eAArC,QAA8B,EAAgB6pC,YAtBhB,iBAuBpCA,EAAc7hB,EAAOhoB,QAAQ6pC,YAvBO,wBAyBT,OAzBS,UAyBHjX,MAAM,2CAAD,OAA4C5K,EAAOhoB,QAAQ+pC,QAA3D,kBAA4E/hB,EAAOhoB,QAAQ2pC,OAA3F,YAClC,CACI9W,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB,UAAY0W,KA9BL,QAyB1BK,EAzB0B,OAiChCC,EAAcD,EAAexmC,IAjCG,WAoCd,OAAvB4kB,EAAOhoB,QAAQH,KApCsB,iBAqCV,OArCU,UAqCJ+yB,MAAM6W,EAAQ,SAAW5O,mBAAoBgP,GAC7E,CACIhX,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB,UAAYiC,EAC7B,mBAAsB,UAAYyU,KA3CN,QAqCpCS,EArCoC,+BA+CV,OA/CU,UA+CJpX,MAAMH,EAAQ,SAASzK,EAAOhoB,QAAQH,KAAK,QAAUg7B,mBAAoBgP,GACzG,CACIhX,QAAS,CACL,OAAU,mBACV,eAAgB,mBAChB,cAAiB,UAAYiC,EAC7B,mBAAsB,UAAYyU,KArDN,QA+CpCS,EA/CoC,kBAoEnCA,EAAwBjX,GApEW,wBAqEpClI,QAAQ2H,MAAM,kBAAkBwX,GArEI,kBAsE7B,MAtE6B,QAyEnB,OAzEmB,UAyEbA,EAAwB1W,OAAOL,OAAM,SAAAC,GAE5D,OADArI,QAAQ2H,MAAR,8BAAqCU,EAArC,eAAsD8W,GAC/C,QA3E6B,WA6EZ,KAJtB7W,EAzEkC,QA6EvBzxB,OA7EuB,0CA6EF,MA7EE,WAuFlCuoC,EAAaf,EAAe/V,GAC9B+W,EAAW,iBACZliB,EAAOhoB,QAAQkqC,WAAUA,EAAWliB,EAAOhoB,QAAQkqC,UAQtDrf,QAAQC,IAAI,aAAc9C,EAAOhoB,QAAQmqC,YAEzCtf,QAAQC,IAAI,WAAWmf,GACS,eAA7BjiB,EAAOhoB,QAAQoqC,UApGsB,iBA6G7B,OARPhnC,EAAG,kBAAc4kB,EAAOhoB,QAAQmqC,WAAWnB,OAAxC,UACChhB,EAAOhoB,QAAQmqC,WAAWE,SAC1BjnC,GAAG,WAAQ4kB,EAAOhoB,QAAQmqC,WAAWE,UAGrCjnC,EAAG,kBAAc4kB,EAAOhoB,QAAQmqC,WAAWnB,OAAxC,SAEP5lC,GAAG,YAAS8mC,EAAT,YAAqBliB,EAAOhoB,QAAQH,KAApC,aA5GiC,UA6GvB/I,EAAY80B,IAAIxoB,EAAK6mC,GA7GE,QA6GpCj4B,EA7GoC,kBA+GR,UAA7BgW,EAAOhoB,QAAQoqC,UA/GsB,iBAgH7B,OAhH6B,UAgHvBtzC,EAAY80B,IAAZ,kBAA2B5D,EAAOhoB,QAAQmqC,WAAWG,cAArD,kBAA4EtiB,EAAOhoB,QAAQmqC,WAAWlB,OAAOxwB,GAA7G,aAAoHyxB,EAApH,YAAgIliB,EAAOhoB,QAAQH,KAA/I,aAAgKoqC,GAhHzI,QAgHpCj4B,EAhHoC,kBAkHR,UAA7BgW,EAAOhoB,QAAQoqC,UAlHsB,iBAmH7B,OAnH6B,UAmHvBtzC,EAAY80B,IAAZ,kBAA2B5D,EAAOhoB,QAAQmqC,WAAWJ,QAArD,kBAAsE/hB,EAAOhoB,QAAQmqC,WAAWR,OAAhG,aAA2GO,EAA3G,YAAuHliB,EAAOhoB,QAAQH,KAAtI,aAAuJoqC,GAnHhI,QAmHpCj4B,EAnHoC,eAuHxC,OAvHwC,UAuHlC4Z,eAAI,CACN/rB,KAAM0qC,KAAcp3B,kBACpBnT,QAASgS,IAzH2B,QA2HxC,OA3HwC,UA2HlC4Z,eAAI,CACN/rB,KAAM0qC,KAAcn3B,gBACpBpT,QAASmzB,IA7H2B,4CADzC,wCAqIQ,SAAU1I,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAKoc,IACLpc,gBAAKqc,IACLrc,gBAAKsc,IACLtc,gBAAKuc,IACLvc,gBAAKwc,IACLxc,gBAAKyc,MAPE,wC,iBCrSE6B,I,aAeAC,I,aAmCPC,I,aA0BAC,I,aAqDOC,I,aASA9R,I,aAyBA9oB,I,aAgCA66B,I,aAePC,I,aA0BergB,IA5OlB,SAAU+f,KAAV,kEACH,OADG,SACG9f,qBAAUzsB,KAAQkR,WAAT,WAAqB,WAAW6Y,GAAX,0EAEZ,OADPA,EAAOhoB,QADY,SAEN8rB,kBAAO9vB,MAFD,OAGb,OADbC,EAF0B,gBAGP6vB,kBAAO5vB,MAHA,OAIhC,OADMC,EAH0B,gBAI1ByvB,eAAI,CACN/rB,KAAM5B,KAAQwR,iBACdzP,QAAS/D,EAAcE,IANK,OAQhC,OARgC,UAQ1ByvB,eAAI,CACN/rB,KAAM5B,KAAQuR,oBACdxP,SAAS,IAVmB,4CADjC,wCAeA,SAAUyqC,KAAV,kEACH,OADG,SACG/f,qBAAUzsB,KAAQiR,WAAT,WAAqB,WAAW8Y,GAAX,4EAEd,OAFc,SAER8D,kBAAO1xB,MAFC,kEAOZ,OAPY,SAON0xB,kBAAOj1B,MAPD,OAQnB,OADPC,EAP0B,iBAQbg1B,kBAAOjwB,MARM,kBASd,EACC,MAAf/E,EAV4B,mDAWb,OAXa,UAWPg1B,kBAAO5vB,MAXA,WAW1BC,EAX0B,QAgB7BK,OAAOC,aAAasuC,eAhBS,iBAiBb,OAjBa,UAiBPj0C,EAAYo3B,IAAZ,kBAA2B1xB,OAAOC,aAAasuC,eAA/C,qMAA0P5uC,EAA1P,0BAjBO,YAiB5B6uC,EAjB4B,QAkBX7qC,MAAMuB,OAlBK,iBAmBT,OAnBS,UAmBH5K,EAAYo3B,IAAZ,yaAAkb/xB,EAAlb,0BAnBG,QAmBxB6uC,EAnBwB,uCAsBb,OAtBa,UAsBPl0C,EAAYo3B,IAAZ,yaAAkb/xB,EAAlb,0BAtBO,QAsB5B6uC,EAtB4B,mBAwB7BA,EAAa,mBAxBgB,iBAyB5B,OAzB4B,UAyBtBN,GAAoBM,EAAa,mBAAoBA,EAAa7qC,OAzB5C,gCA2B5B,OA3B4B,UA2BtB+rB,gBAAKye,GAAaK,GA3BI,4CADjC,wCAmCP,SAAUN,GAAoBO,EAAUC,GAAxC,4EAC0B,OAD1B,SACgCpf,kBAAO1xB,MADvC,kEAY4B,OAZ5B,SAYkC0xB,kBAAOj1B,MAZzC,UAa2B,OADbC,EAZd,2DAgB2B,OAFfq0C,EAAeF,EAASvnC,QAAQ,mCAAmC,IAd/E,UAgBiC5M,EAAYo3B,IAAIid,GAhBjD,YAgBYH,EAhBZ,QAiBqB7qC,MAAQ+qC,EAAkBrnC,OAAOmnC,EAAa7qC,QACxD6qC,EAAa,mBAlBxB,iBAmBY,OAnBZ,UAmBkBN,GAAoBM,EAAa,mBAAoBA,EAAa7qC,OAnBpF,gCAqBY,OArBZ,UAqBkB+rB,gBAAKye,GAAaK,GArBpC,yCA0BA,SAAUL,GAAYS,GAAtB,+EACQC,GAAa,EAEZD,GAAmBA,EAAe,mBAH3C,gBAIQ,OAJR,SAIcxf,eAAI,CACN/rB,KAAM5B,KAAQsR,wBACdvP,SAAS,IANrB,iBASQorC,QATR,IASQA,MAAgBjrC,MAAMuB,OAT9B,gBAUQ2pC,EAAaD,EAAejrC,MAVpC,uBAYQ,OAZR,UAYcyrB,eAAI,CACN/rB,KAAM5B,KAAQuR,oBACdxP,SAAS,IAdrB,0CAmBwB,OAnBxB,UAmB8B8rB,kBAAOj1B,MAnBrC,WAoBuB,MApBvB,0DAsBiB,OAtBjB,UAsBuBi1B,kBAAOjwB,MAtB9B,QA+BI,KATIE,EAtBR,UAwBQA,EAAS,IAID,GACc,GAEjB8F,EAAI,EAAGA,GAAKwpC,EAAW3pC,OAAQG,IAChCwpC,EAAWxpC,IAAK,WAEhB,IACIypC,EAASD,EAAWxpC,GAEpBypC,EAAOC,YACgBxvC,EAAO4zB,MAAK,SAAC6b,GAAD,OAAiBA,EAAY/yB,IAAM6yB,EAAO7yB,OAGzE1c,EAAOkL,KAAKqkC,IATJ,GAexB,OA/CJ,UA+CU1f,eAAI,CACN/rB,KAAM5B,KAAQkR,WACdnP,QAASjE,IAjDjB,yCAqDO,SAAU6uC,KAAV,kEACH,OADG,SACGvM,sBAAW,CAACpgC,KAAQqR,qBAAsBrR,KAAQiR,YAAxC,WAAqD,WAAW8Y,GAAX,kEACjE,OADiE,SAC3D4D,eAAI,CACN/rB,KAAM5B,KAAQuR,oBACdxP,SAAS,IAHoD,2CADlE,wCASA,SAAU84B,KAAV,kEACH,OADG,SACGpO,qBAAUzsB,KAAQyR,kBAAT,WAA4B,WAAWsY,GAAX,gFACnB,OADmB,SACb8D,kBAAOj1B,MADM,UAEpB,OADbC,EADiC,yDAGxB,OAHwB,SAGlBA,EAAYo3B,IAAZ,iBAA0BlG,EAAOhoB,QAAjC,wBAAgE,eAH9C,OAS1B,OANPwuB,EAHiC,OAInCrgB,EAAQ,OACRqgB,IACArgB,EAAQ,0BAA4B,IAAIugB,UAAOC,KAAKH,EAAQ,UAAUI,SAAS,WAN5C,UASpB9C,kBAAOjwB,MATa,WASnCE,EATmC,QAYnB,IADhB29B,EAAc39B,EAAO49B,WAAU,SAACrrB,GAAD,OAAUA,EAAKmK,KAAOuP,EAAOhoB,YAXzB,iBAenC,OAFAjE,EAAO29B,GAAalL,OAASrgB,EAbM,UAe7Byd,eAAI,CACN/rB,KAAM5B,KAAQ0R,mBACd3P,QAASjE,IAjBsB,4CADxC,wCAyBA,SAAUiU,KAAV,kEACH,OADG,SACG0a,qBAAUzsB,KAAQ4R,gBAAT,WAA0B,WAAWmY,GAAX,8EACjB,OADiB,SACX8D,kBAAOj1B,MADI,UAElB,OADbC,EAD+B,yDAMlB,OANkB,kBAMZA,EAAYo3B,IAAZ,iBAA0BlG,EAAOhoB,QAAjC,cANY,UAOnB,OADR4iB,EAN2B,2DAUpB,OAVoB,UAUdkJ,kBAAOjwB,MAVO,QAiBjC,OAPIE,EAV6B,OAY7B29B,EAAc39B,EAAO49B,WAAU,SAACrrB,GAAD,OAAUA,EAAKmK,IAAMuP,EAAOhoB,WAE/DjE,EAAO29B,GAAa9W,OAASA,EAAO6oB,aACpC1vC,EAAO29B,GAAagS,SAAW9oB,EAAO6oB,aAfL,UAiB3B7f,eAAI,CACN/rB,KAAM5B,KAAQkR,WACdnP,QAASjE,IAnBoB,oHADtC,wCAgCA,SAAU8uC,KAAV,wEACI,OADJ,SACUnf,gBAAKztB,KAAQ2R,kBADvB,mCAIoB,OAJpB,SAI0Bsc,gBAAK4e,IAJ/B,OAMC,OAFMxd,EAJP,gBAMO5B,gBAAKztB,KAAQ6R,iBANpB,OAOC,OAPD,UAOOyd,kBAAOD,GAPd,gEAeP,SAAUwd,KAAV,0FAG0B,OAH1B,SAGgChf,kBAAOjwB,MAHvC,QAGgB8vC,EAHhB,QAIwBjqC,SACRiqC,EAAUA,EAAQvpC,MAAM,EAAG,IAGtBP,EAAI,EARzB,YAQ4BA,GAAK8pC,EAAQjqC,QARzC,qBASoBiqC,EAAQ9pC,GAT5B,iBAUoB,OAVpB,UAU0B+pB,eAAI,CACN/rB,KAAM5B,KAAQ4R,gBACd7P,QAAS2rC,EAAQ9pC,GAAG4W,KAZ5C,QAQiD5W,IARjD,uBAiBY,OAjBZ,UAiBkBurB,iBAAM,KAjBxB,+BAoBY,OApBZ,oBAoBkBC,uBApBlB,oCAqBYxC,QAAQC,IAAI,gBArBxB,uFA0Be,SAAUL,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAKue,IACLve,gBAAKse,IACLte,gBAAK0e,IACL1e,gBAAK4M,IACL5M,gBAAK2e,IACL3e,gBAAKlc,MAPE,wC,sBClPT47B,G,cACF,aAAe,IAAD,iCAkBdC,MAAQ,SAAC5J,GACL,EAAK6J,UAAL,2BACO,EAAKA,WADZ,IAEIrzB,GAAKwpB,KArBC,KAyBd8J,UAAY,SAACC,GACT,EAAKF,UAAL,2BACO,EAAKA,WADZ,IAEIE,OAASA,KA5BH,KAgCdC,WAAa,SAAC9Q,GACV,EAAK2Q,UAAL,2BACO,EAAKA,WADZ,IAEI3Q,QAAUA,KAnCJ,KAuCd+Q,QAAU,SAACtX,GACP,EAAKkX,UAAL,2BACO,EAAKA,WADZ,IAEIlX,KAAMA,KA1CA,KA8CduX,QAAU,SAAC3a,GAA0B,IAApBC,EAAmB,wDAC1B2a,EAAaxf,KAAO4E,EAAMC,GAChC,EAAKqa,UAAL,2BACO,EAAKA,WADZ,IAEIja,KAAOua,EAAWva,OAClBjF,OAAQwf,EACR5a,KAAMA,KApDA,KAwDd6a,gBAAkB,SAAC7a,GACf,EAAKsa,UAAL,2BACO,EAAKA,WADZ,IAEIQ,aAAc9a,KA3DR,KA+Dd+a,SAAW,SAACr4B,GACR,EAAK43B,UAAL,2BACO,EAAKA,WADZ,IAEI53B,MAAQA,KAlEF,KAsEds4B,QAAU,SAAC3sC,GACP,EAAKisC,UAAL,2BACO,EAAKA,WADZ,IAEIjsC,KAAOA,KAzED,KA6Ed4sC,YAAc,SAACnR,GACX,EAAKwQ,UAAL,2BACO,EAAKA,WADZ,IAEIxQ,SAAWA,KAhFL,KAoFdoR,YAAc,SAACC,GACX,EAAKb,UAAL,2BACO,EAAKA,WADZ,IAEIa,SAAUA,KAvFJ,KA2FdC,OAAS,SAACxR,GACN,EAAK0Q,UAAL,2BACO,EAAKA,WADZ,IAEI1oC,IAAMg4B,KA9FA,KAkGdyR,OAAS,SAAC3e,GACN,EAAK4d,UAAL,2BACO,EAAKA,WADZ,IAEI5d,IAAMA,KArGA,KAyGd4e,cAAgB,WACZ,IAAM,IAAMxX,KAAY,EAAKwW,UACzB,GAAK,EAAKA,UAAU9Z,eAAesD,IACd,QAAbA,GAAmC,aAAbA,GAAwC,SAAbA,GAAmC,iBAAZA,GAA0C,QAAZA,IAChG,EAAKwW,UAAUxW,GAEjB,OADAzK,QAAQC,IAAI,0BAA4BwK,IACjC,EAMvB,OAAO,EAAKwW,WApHZhY,KAAKgY,UAAY,CACbE,QAAS,EACT7Q,SAAU,EACVtJ,MAAO,EACPjF,QAAS,EACT1Y,OAAQ,EACRonB,UAAW,EACXl4B,KAAM,EACNqV,IAAK,EACL5Y,MAAM,EACN8sC,UAAU,EACV/X,MAAM,EACN0X,cAAc,EACdpe,KAAK,MA2GF0d,M,sBClHEmB,I,aA8JPpyB,I,aAyDAqyB,I,aA+BAC,I,aA4BAC,I,aA4EAC,I,aAiFOC,I,aAiBAC,I,aAgOQ5iB,IAhqBlB,SAAUsiB,KAAV,kEACH,OADG,SACGriB,qBAAUzsB,KAAQ0Y,4BAAT,WAAsC,WAAWqR,GAAX,kIAEjD,OAFiD,SAE3C4D,eAAI,CACN/rB,KAAM5B,KAAQ4Y,uBACd7W,SAAS,IAJoC,OAS9B,OAHfoxB,EAAW,GACXkc,GAAa,EACXp5B,EAAQ8T,EAAOhoB,QAAQkU,MARoB,SASxB4X,kBAAOjxB,MATiB,UAS7C0yC,EAT6C,QAW7CvlB,EAAOhoB,UAAWgoB,EAAOhoB,QAAQA,QAXY,gCAY1BgoB,EAAOhoB,QAAQA,SAZW,8DAapB,eADhBoU,EAZoC,SAa9BA,OAb8B,iBAczB,OAdyB,UAcnBwW,gBAAKsiB,GAAmB94B,EAAOwgB,KAAMxgB,EAAOhR,IAAK8Q,EAAOE,EAAOA,QAd5C,SAcjCpb,EAdiC,UAgBjCo4B,EAAQ,uBACDA,GADC,aAEDp4B,KAlB0B,WAuBpB,OAAjBob,EAAOA,OAvB8B,iBAwBzB,OAxByB,UAwBnBwW,gBAAKqiB,GAAY74B,EAAOhR,IAAK8Q,GAxBV,QAwBjClb,EAxBiC,QAyB5B,QAAL,EAAAA,SAAA,eAAO0I,QAAS,IAChB1I,EAAQA,EAAM20B,KAAI,SAAA9rB,GAElB,OADAA,EAAE2rC,OAASt5B,EACJrS,MAEP7I,IACAo4B,EAAQ,uBACDA,GADC,aAEDp4B,KAjC0B,QAsCpB,MAAjBob,EAAOA,QAAgC,GAAdA,EAAOhR,MAChCkqC,GAAa,GAvCwB,wHAAAzX,IAAA,wBA4C3CqJ,EAAc,SAAC/M,EAAGgN,GACpB,OAAIhN,EAAEN,KAAOsN,EAAEtN,MACH,EAGRM,EAAEN,KAAOsN,EAAEtN,KACJ,EAGJ,IAIPr1B,OAAOC,aAAa+yB,SAAU8d,EAzDe,qBA0D1C9wC,OAAOC,aAAa+yB,OA1DsB,iBA2D/B,OA3D+B,UA2DzB5E,gBAAKoiB,IA3DoB,SA2DvCh0C,EA3DuC,UA6DzCo4B,EAAQ,uBACDA,GADC,aAEDp4B,KA/DkC,QAqE5B,OArE4B,UAqEtB4xB,gBAAKjQ,IArEiB,QAqEzC8yB,EArEyC,OAsEzCjxC,OAAOC,aAAa+yB,QAepB4B,EAASmO,KAAKL,GACd,UAAIuO,SAAJ,OAAI,EAAY/rC,SACZ+rC,EAAaA,EAAW9f,KAAI,SAAA9rB,GAExB,OADAA,EAAE2rC,OAASt5B,EACJrS,KAEPuvB,EADAqc,EAAW9d,MAAK,SAAA4B,GAAC,OAAkB,MAAdA,EAAEob,YACZc,EAEAA,EAAW5pC,OAAOutB,OAtBvB,QAAV,EAAAqc,SAAA,eAAY/rC,QAAS,IACrB+rC,EAAaA,EAAW9f,KAAI,SAAA9rB,GAE5B,OADAA,EAAE2rC,OAASt5B,EACJrS,OAEX4rC,EAAU,uBAAOA,GAAP,aAAsBF,EAAalc,QAAO,SAAAxvB,GAAC,MAAc,MAAVA,EAAEhC,MAAgBgC,EAAE2rC,QAAUt5B,UAEnFkd,EAAQ,uBACDA,GADC,aAEDqc,KAGXrc,EAASmO,KAAKL,IAnF2B,wBAkG7C9N,EAASmO,KAAKL,GAlG+B,QAqGlC,OArGkC,UAqG5BpT,kBAAOjxB,MArGqB,WAsGjD0yC,GADAA,EArGiD,QAsGrBlc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,KACpDkd,EAAWA,EAASM,OAAO,EAAG,IAE1BP,EAAMoc,EAAalc,QAAO,SAAAE,GAAC,OAAKH,EAASzB,MAAK,SAAAuT,GAAE,OAAIA,EAAGzqB,IAAM8Y,EAAE9Y,YAC5D,OAAH0Y,QAAG,IAAHA,OAAA,EAAAA,EAAKzvB,QAAS,GAAK0vB,EAAS1vB,OAAS,GA1GQ,gCA2G/ByvB,GA3G+B,2DA4GzC,OADKI,EA3GoC,kBA4GnC4R,KAAY/Y,WAAWmH,EAAE9Y,IA5GU,wHAAAod,IAAA,qBAwHtC,OARP6X,EAAWtc,EAASC,QAAO,SAAAj5B,GAC3B,OAAOm1C,EAAa5d,MAAK,SAAAuB,GACrB,GAAG94B,EAAKk0C,cAAgBpb,EAAQob,cAAgC,cAAhBpb,EAAQrxB,MAAwBqxB,EAAQzY,IAAMrgB,EAAKqgB,GAC/F,OAAOrgB,QAnH8B,UAwHhC+qC,KAAYr8B,OAxHoB,WAwH7CA,EAxH6C,OAyH7C6mC,EAzH6C,UAyH3B7mC,EAAKuqB,QAAO,SAAAuc,GAAC,OAA6B,GAAzBA,EAAEzsC,QAAQ,qBAzHA,aAyH3B,EAA8CO,OAChEmsC,EAAmBN,EAAalc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,KAAOxS,UAE3D,OAAHyvB,QAAG,IAAHA,OAAA,EAAAA,EAAKzvB,QAAS,GAAK0vB,EAAS1vB,OAAS,IAAe,OAARgsC,QAAQ,IAARA,OAAA,EAAAA,EAAUhsC,QAAS,GAAK0vB,EAAS1vB,OAAS,GAA+B,IAAZ,QAAZ,EAAA6rC,SAAA,eAAc7rC,UAAuB,QAAR,EAAA0vB,SAAA,eAAU1vB,QAAS,IAAmB,QAAZ,EAAA6rC,SAAA,eAAc7rC,WAAd,UAAyB0vB,SAAzB,aAAyB,EAAU1vB,SAAU0vB,EAAS1vB,OAAS,GA5HvK,iBA6HlC,OA7HkC,UA6H5BkpB,gBAAKuiB,GAAa/b,GA7HU,QA8H9B,OADfA,EA7H6C,iBA8HxBtF,kBAAOjxB,MA9HiB,QAiI7C,OADAizC,GADAA,GADIA,EA9HyC,QA+HzBzc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,MACxBrQ,OAAOutB,GAhIkB,UAiIvCxF,eAAI,CACN/rB,KAAM5B,KAAQyY,4BACd1W,QAAS8tC,IAnIgC,WAuI9CH,GAAmBE,EAvI2B,kBAwI9B,OAxI8B,UAwIxB/hB,kBAAOjxB,MAxIiB,QA0I9B,OADf0yC,GADAA,EAxI6C,QAyIjBlc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,KAzIP,UA0IxB0W,gBAAKuiB,GAAaI,GA1IM,QA2I9B,OADfA,EA1I6C,kBA2IxBzhB,kBAAOjxB,MA3IiB,SAgJ7C,OAHAizC,GADAA,GADIA,EA3IyC,QA4IzBzc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,MACxBrQ,OAAO0pC,IAClBhO,KAAKL,GA9I+B,WAgJvCtT,eAAI,CACN/rB,KAAM5B,KAAQyY,4BACd1W,QAAS8tC,IAlJgC,SAsJjD,OAtJiD,WAsJ3CliB,eAAI,CACN/rB,KAAM5B,KAAQ4Y,uBACd7W,SAAS,IAxJoC,gFADlD,wCA8JP,SAAU2a,KAAV,sFAEsB,OAFtB,SAE4BmR,kBAAOjxB,MAFnC,OAGmB,OADT1B,EAFV,gBAGyB2yB,kBAAOp1B,MAHhC,UAGUC,EAHV,wDAMiB,OANjB,UAMuBA,EAAOu3B,IAAI,qBANlC,WAQgB,OAFN6U,EANV,SAQyBA,EARzB,uDAUQA,EAAKrhC,UAAyB,MAAbvI,GAA0C,IAArBA,EAAUuI,QAAkBvI,GAAaA,EAAU,GAAGsf,KAAOsqB,EAAK,GAAGtqB,IAVnH,iBAasBtf,EAAUk4B,QAAO,SAAAE,GAAC,OAAKwR,EAAKpT,MAAK,SAAAuT,GAAE,OAAIA,EAAGzqB,IAAM8Y,EAAE9Y,SAbxE,eAgBsBsqB,GAhBtB,8DAgBiBxR,EAhBjB,kBAmB4B,OADRhsB,EAAOvE,aAAcuwB,EAAEpjB,SACC,IAAR5I,EAnBpC,wDAoBgB,OApBhB,UAoBsB49B,KAAYC,QAAQ7R,EAAE9Y,GAAIlT,GApBhD,eAqBuBgsB,EAAEpjB,MArBzB,0DAuBuBojB,EAAEpjB,MAvBzB,wHAAA0nB,IAAA,qBA4BqB,OA5BrB,UA4B2BkY,GAAqBhL,GA5BhD,eA4BQiL,EA5BR,yBA6BWA,GA7BX,sE,SAgCeD,G,mFAAf,WAAoChL,GAApC,sBAAA5Q,EAAA,sDAEI,IAASnrB,KADLgnC,EAAa,GACDjL,EACRA,EAAK/7B,KACCsH,EAAOy0B,EAAK/7B,IAEdinC,EAAa,IAAIrC,IACVG,UAAUz9B,EAAKD,YAC1B4/B,EAAWhC,WAAW39B,EAAK6sB,SAC3B8S,EAAW9B,QAAQ79B,EAAKkjB,MACxByc,EAAW1B,SAASj+B,EAAK4F,OACzB+5B,EAAWpC,MAAMv9B,EAAKmK,IACtBw1B,EAAWzB,QAAQ,UACnByB,EAAWvB,YAAYp+B,EAAKq+B,UAC5BsB,EAAWxB,YAAY,0BAGnBwB,EAAWnB,iBACXkB,EAAW/mC,KAAKgnC,EAAWnB,kBAlB3C,yBAsBWkB,GAtBX,4C,sBAyBA,SAAUhB,KAAV,4EAEyB,OAFzB,kBAE+Bpa,MAAM,oDAFrC,OAGqB,OADPE,EAFd,gBAG2BA,EAASQ,OAHpC,cAGcyP,EAHd,OAKYiL,EAAa,GAEjBjL,EAAKh8B,SAAQ,SAACuH,EAAMzM,GAEhB,IAAIosC,EAAa,IAAIrC,GACrBqC,EAAWlC,UAAUz9B,EAAK09B,QAC1BiC,EAAWhC,WAAW39B,EAAK6sB,SAC3B8S,EAAW9B,QAAQ79B,EAAKkjB,KAAM,uBAC9Byc,EAAW1B,SAASj+B,EAAK4F,OACzB+5B,EAAWxB,YAAYn+B,EAAKH,OAC5B8/B,EAAWrB,OAAOt+B,EAAKxN,MACvBmtC,EAAWpC,MAAMv9B,EAAKmK,IACtBw1B,EAAWzB,QAAQ,WACfyB,EAAWnB,iBACXkB,EAAW/mC,KAAKgnC,EAAWnB,oBAnB3C,kBAuBekB,GAvBf,kCA0BQnjB,QAAQC,IAAR,MA1BR,uDA+BA,SAAUmiB,GAAW7pC,EAAK8Q,GAA1B,sFAEqB,OAFrB,SAE2B4X,kBAAOp1B,MAFlC,OAGuB,OADbE,EAFV,gBAG6Bk1B,kBAAOjxB,MAHpC,OAQmB,OAJf0yC,GADIA,EAHR,QAIgClc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,KACxC,GACRg6B,EAAS,GANjB,mBAQyBt3C,EAASs3B,IAAI,kBAAoB2M,mBAAmBz3B,GAAM,GAAI,QAC1E43B,MAAK,SAAC7H,GAAD,OAAkBgb,SAAgBhb,MATpD,QAgB0B,OANX,QAFH/6B,EARZ,cAUe,IAAJA,KAAM+V,OAAN,OAAe/V,QAAf,IAAeA,GAAf,UAAeA,EAAM+V,aAArB,OAAe,EAAa/K,MAC3B8qC,EAAM,OAAG91C,QAAH,IAAGA,GAAH,UAAGA,EAAM+V,aAAT,aAAG,EAAa/K,KAE1BhL,EAAKY,MAAQZ,EAAKY,MAAMoJ,MAAM,EAAG,IAE7BgvB,EAAWh5B,EAAKY,MAAMq4B,QAAO,SAAAyL,GAAC,eAA6B,IAAZ,QAAZ,EAAAyQ,SAAA,eAAc7rC,WAAsB,UAAC6rC,SAAD,OAAC,EAAc5d,MAAK,SAAA9tB,GAAC,MAAc,OAAVA,EAAEhC,MAAiBgC,EAAE4W,IAAMqkB,EAAErkB,IAAM5W,EAAE2rC,QAAUt5B,SAf3J,UAgBgCk6B,GAAchd,EAAU8c,GAhBxD,eAmBQG,GAHIA,EAhBZ,QAmBkCxqC,OAAO0pC,EAAalc,QAAO,SAAAxvB,GAAC,MAAc,OAAVA,EAAEhC,MAAiBgC,EAAE2rC,QAAUt5B,MAnBjG,kBAoBem6B,GApBf,yCAuBQxjB,QAAQC,IAAI,oBAvBpB,kBAwBe,IAxBf,uDA4BA,SAAUoiB,GAAkBtY,EAAM1G,EAAKha,EAAOE,GAA9C,qGACS8Z,EADT,uBAEQrD,QAAQC,IAAI,+BAFpB,0BAO2B,OAP3B,kBAOiCgB,kBAAOjxB,MAPxC,OAUuB,OAFf0yC,GADIA,EAPZ,QAQoClc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,GAASrS,EAAEhC,MAAQuU,KACnEk6B,EAAe,GAT3B,UAU6BxiB,kBAAO70B,MAVpC,QAWyB,OADXN,EAVd,iBAW+Bm1B,kBAAOp1B,MAXtC,QAY4B,OAZ5B,iBAYkCo1B,kBAAOj1B,MAZzC,kBAaaF,EAbb,wBAcYk0B,QAAQC,IAAI,kCAdxB,2BAkB6B,OAlB7B,UAkBmCn0B,EAAOu3B,KAAKA,EAAI7qB,SAAS,KAAO6qB,EAAI5qB,MAAM,KAAK,GAAK4qB,GAAO,6EAlB9F,WAmB4B,OADdqgB,EAlBd,SAmBqCA,GAAiBA,EAAapuC,MAnBnE,sDAoB0C,IAA9BouC,EAAapuC,MAAMuB,OApB/B,mDAkC0B,OAXdtJ,EAAOm2C,EAAapuC,MACpBixB,EAAWh5B,EAAKi5B,QAAO,SAAAyL,GAAC,eAA6B,IAAZ,QAAZ,EAAAyQ,SAAA,eAAc7rC,WAAsB,UAAC6rC,SAAD,OAAC,EAAc5d,MAAK,SAAA9tB,GAAC,MAAc,cAAVA,EAAEhC,MAAwBgC,EAAE4W,IAAM,WAAaqkB,EAAEkG,GAAGpU,kBAC9I4f,EAAWjB,EAAalc,QAAO,SAAAxvB,GAAC,OAAKzJ,EAAKu3B,MAAK,SAAAmN,GAAC,MAAI,WAAaA,EAAEkG,IAAMnhC,EAAE4W,QAAQ2Y,EAASzB,MAAK,SAAA4B,GAAC,MAAI,WAAaA,EAAEyR,IAAMnhC,EAAE4W,UAGrH,QAAR,EAAA2Y,SAAA,eAAU1vB,QAAS,IACnB0vB,EAAWA,EAASzD,KAAI,SAAU4D,GAC9B,OAAO,2BAAKA,GAAZ,IAAeyR,GAAI,WAAazR,EAAEyR,GAAGpU,WAAYgG,KAAMA,QA9BvE,UAkCgC6Z,GAAyBrd,EAAUlD,GAlCnE,QA4DiC,OA1BrBmgB,EAlCZ,QAmCuB,QAAX,EAAAA,SAAA,eAAa3sC,QAAS,IACtB2sC,EAAcA,EAAY1gB,KAAI,SAAA9rB,GAE9B,OADAA,EAAE2rC,OAASt5B,EACJrS,OAGC,OAAR2sC,QAAQ,IAARA,OAAA,EAAAA,EAAU9sC,QAAS,IACnB6rC,EAAeA,EAAalc,QAAO,SAAAC,GAAC,OAAKkd,EAAS7e,MAAK,SAAA+e,GAAC,OAAIA,EAAEj2B,IAAM6Y,EAAE7Y,UAG1E61B,EAAel2C,EAAKi5B,QAAO,SAAAj5B,GACvB,OAAOm1C,EAAa5d,MAAK,SAAAuB,GACrB,GAAG94B,EAAKu2C,UAAYzd,EAAQob,cAAgC,cAAhBpb,EAAQrxB,MAAwBqxB,EAAQzY,IAAM,WAAYrgB,EAAK4qC,GAAGpU,WAC1G,OAAOx2B,SAMH,QAAZ,EAAAk2C,SAAA,eAAc5sC,QAAS,IACvB4sC,EAAeA,EAAa3gB,KAAI,SAAU4D,GACtC,OAAO,2BAAKA,GAAZ,IAAeyR,GAAI,WAAazR,EAAEyR,GAAGpU,WAAYgG,KAAMA,QAxDvE,UA4DuC6Z,GAAyBH,EAAcpgB,GA5D9E,eA4DY0gB,EA5DZ,QA6D8B,QAAlB,EAAAA,SAAA,eAAoBltC,QAAS,IAC7BktC,EAAqBA,EAAmBjhB,KAAI,SAAA9rB,GAE5C,OADAA,EAAE2rC,OAASt5B,EACJrS,OAEW,QAAlB,EAAA+sC,SAAA,eAAoBltC,QAAS,IAC7B6rC,EAAeA,EAAalc,QAAO,SAAAH,GAAO,OAAK0d,EAAmBjf,MAAK,SAAAkf,GAAM,MAAoB,cAAhB3d,EAAQrxB,MAAwBqxB,EAAQzY,IAAMo2B,EAAOp2B,UAnElJ,yCAwEmB41B,GAxEnB,aAwEmCd,GAxEnC,aAwEoDqB,KAxEpD,yCAyEmB/jB,QAAQC,IAAI,kCAAmC,KAAGlG,SAzErE,kBAyEsF,IAzEtF,uDA4EA,SAAUuoB,GAAY/b,GAAtB,gFAE6B,OADrBvP,EAAQ,GADhB,SAEmCiK,kBAAO70B,MAF1C,YAEUC,EAFV,wBAI4C,OAJ5C,SAIkDA,EAAiBu8B,WAJnE,OAI0Bqb,EAJ1B,cAMqB,OANrB,UAM2BhjB,kBAAOp1B,MANlC,QAOkB,OADRE,EANV,iBAOwBA,EAAS68B,WAPjC,WAOQqB,EAPR,OAUIjT,EAAQuP,EAASzD,IAAT,yCAAa,WAAOrf,EAAMyuB,GAAb,oBAAA5K,EAAA,yDAEA,cAAb7jB,EAAKzO,KAFQ,oBAIRkvC,MAAMxV,SAASjrB,EAAK09B,SAJZ,gCAKoB90C,EAAiBg3B,IAAI5f,EAAKsmB,KAAO,yBAA2BtmB,EAAK09B,OAAS,KAL9F,QAKHgD,EALG,SAQDA,EAAe5R,QAEfhM,EAAS2L,GAAOiP,OAASgD,EAAe5R,OAVvC,cAgBP6R,EAhBO,iCAAA9c,EAAA,MAgBO,uCAAAA,EAAA,yDACK,0BAAjB7jB,EAAKgtB,SADO,yCACsC,CAAEA,SAAU,OADlD,WAEiC,IAA7C,UAAAhtB,EAAKgtB,gBAAL,eAAen6B,QAAQ,mBAFX,yCAE2C,CAAEm6B,SAAUhtB,EAAKgtB,WAF5D,cAKZ4T,EAAa3rC,aAAgB+K,EAAK6gC,WAAa7gC,EAAK6gC,WAAa7gC,EAAKgtB,SAAU,GAChFl4B,EAAMy3B,mBAAmBqU,GANb,SASCtc,MAAM,qBAAD,OAAsBxvB,GAAO,CAC/CgwB,OAAQ,MACR0H,YAAa,aACbjI,QAAS,CACL,cAAiB,UAAYiC,EAAS,mBAAsBga,KAEjE7b,OAAM,SAACC,GAAU,OAAO,QAfX,WAShBJ,EATgB,SAiBEA,EAASC,GAjBX,0CAiBsB,MAjBtB,yBAmBMD,EAASoI,OAnBf,QAmBVC,EAnBU,OAoBA,GApBA,UAwBZ51B,EAAOvE,aAAcm6B,GAxBT,4EA0BM,MA1BN,WA2BX51B,EA3BW,0CA2BE,MA3BF,mCA6BV49B,KAAYC,QAAQ90B,EAAKmK,GAAIlT,GA7BnB,oFAgCI,MAhCJ,iCAiCT,CACH+1B,SAAU,yBACV6T,WAAY7gC,EAAK6gC,WAAa7gC,EAAK6gC,WAAa7gC,EAAKgtB,WAnCzC,mEAhBP,8DAuDW6H,KAAYiM,QAAQhe,EAAS2L,GAAOtkB,IAvD/C,UAwDM,OADf42B,EAvDS,SAwD6B,IAAfA,EAxDd,kCAwDqDJ,IAxDrD,QAwDiCI,EAxDjC,eAyDTA,IAAaje,EAAS2L,GAAT,2BAAuB3L,EAAS2L,IAAWsS,IAzD/C,4CAAb,0DAgEJxtB,EAAMngB,OA1Ed,iBA2EQ,OA3ER,UA2EcmD,QAAQonB,IAAIpK,GA3E1B,iCA8EWuP,GA9EX,yCAiFO,SAAUgc,KAAV,kEACH,OADG,SACG1iB,qBAAUzsB,KAAQ6Y,qBAAT,WAA+B,WAAWkR,GAAX,qEACpB,MAAlBA,EAAOhoB,QAD+B,iDAI1C,OADA6qB,QAAQC,IAAI,mBAH8B,SAIpCc,eAAI,CACN/rB,KAAMuwB,IAAY9wB,qBAClBU,QAAS,CACLG,MAAO6nB,EAAOhoB,QACdI,QAAS,gBARyB,2CAD3C,wCAiBA,SAAUitC,KAAV,wEA4EH,OA1EMiC,EAFH,WAEY,SAATA,IAAS,8FAGG,OAHH,SAGSxjB,kBAAOjxB,MAHhB,OAIE,OADP7B,EAHK,gBAIQ8yB,kBAAO3zB,MAJf,UAKC,OADNC,EAJK,0DAOPm3C,EAPO,UAOOn3C,EAAKupB,gBAPZ,aAOO,EAAe6tB,cAE7BD,EAAc,IAGdE,EAAY,GACD,EAbJ,eAgBMz2C,GAhBN,IAgBX,IAhBW,iBAgBFsV,EAhBE,QAkBP,GAAIse,OAASiF,OAASvjB,EAAKujB,MAAQ,MAE/BvjB,EAAKohC,QAAS,MACX,CACHphC,EAAKohC,QAAS,EAGd,IAAIC,EAAaJ,EAAY5f,MAAK,SAAC9tB,GAAD,OAAOA,EAAEuB,MAAQkL,EAAKlL,OACpDusC,GACIA,EAAWD,SACXphC,EAAKohC,QAAS,GAKP,GAAfphC,EAAKohC,QACLte,EAECme,EAAY5f,MAAK,SAAC9tB,GAAD,OAAOA,EAAEuB,MAAQkL,EAAKlL,QACxCmsC,EAAYtoC,KAAK,CACb7D,IAAKkL,EAAKlL,IACVssC,OAAQphC,EAAKohC,OACbx7B,MAAO5F,EAAKk/B,UAxBxB,uBAAyB,IAhBd,0BAAA3X,IAAA,eA+CM0Z,GA/CN,IA+CX,IA/CW,iBA+CFjhC,EA/CE,QAgDStV,EAAM22B,MAAK,SAAC9tB,GAAD,OAAOA,EAAEuB,MAAQkL,EAAKlL,QAE7CqsC,EAAUxoC,KAAK,CACX7D,IAAKkL,EAAKlL,IACVssC,OAAQphC,EAAKohC,OACbx7B,MAAO5F,EAAK4F,SANxB,uBAA+B,IA/CpB,0BAAA2hB,IAAA,IA0Dc,GAApB4Z,EAAU/tC,QAAqC,GAAtB6tC,EAAY7tC,SACrC4sB,KAAKC,UAAUkhB,EAAU9hB,KAAI,SAAA4D,GAAC,OAAIA,EAAEnuB,SAASkrB,KAAKC,UAAUghB,EAAY5hB,KAAI,SAAA4D,GAAC,OAAIA,EAAEnuB,SACpF,UAAChL,EAAKupB,gBAAN,OAAC,EAAe6tB,WA5DT,iBA8DP,OA9DO,UA8DD5jB,eAAI,CACN/rB,KAAMuwB,IAAY9wB,qBAClBU,QAAS,CACLG,MAAOsvC,EACPrvC,QAAS,gBAlEV,qCAATkvC,MAFH,SA4EG5kB,qBAAU0F,IAAYhxB,uBAAb,WAAqC,WAAW4oB,GAAX,wEAC9B,OAD8B,SACxB8D,kBAAOpwB,MADiB,UAC1Cw7B,EAD0C,QAKzB,IAAnBlP,EAAOhoB,UAAoBk3B,EALiB,gBAM5C,OAN4C,SAMtCoY,IANsC,2CA5EjD,OAsFH,OAtFG,SAsFG5kB,qBAAUzsB,KAAQ4Y,uBAAT,WAAiC,WAAWmR,GAAX,wEAC1B,OAD0B,SACpB8D,kBAAOpzB,MADa,UACtCw+B,EADsC,QAKrB,IAAnBlP,EAAOhoB,UAAoBk3B,EALa,gBAMxC,OANwC,SAMlCoY,IANkC,2CAtF7C,wC,SAiGQb,G,qFAAf,WAAwCz1C,EAAOk1B,GAA/C,8BAAAiE,EAAA,sDAEI,IAASnrB,KADLqnC,EAAc,GACFr1C,EACRA,EAAMgO,KACAsH,EAAOtV,EAAMgO,GAEf5D,EAAMD,aAAmBmL,EAAK9J,KAAK,aACnCypC,EAAa,IAAIrC,GAClBt9B,EAAI,uBAA6BA,EAAI,sBAA0B,GAC9D2/B,EAAWlC,UAAUz9B,EAAI,sBAA0B,IAEnD2/B,EAAWlC,UAAUz9B,EAAKshC,UAE9B3B,EAAWhC,WAAW39B,EAAKuhC,eAAiBC,GAAuBxhC,EAAKuhC,eAAgBzsC,EAAtB,UAA2BkL,EAAK9J,YAAhC,aAA2B,EAAWurC,kBAAmB/oC,GAAMsH,EAAK4uB,YAAc5uB,EAAK4uB,YAAc,IACvK+Q,EAAW9B,QAAQ79B,EAAK0hC,mBAAqB1hC,EAAK0hC,mBAAqB1hC,EAAKgvB,SAC5E2Q,EAAW5B,gBAAgB/9B,EAAKqgC,UAChCV,EAAW1B,SAASj+B,EAAK8uB,OACzB6Q,EAAWrB,OAAOxpC,EAAIS,OAAJ,UAAWyK,EAAK9J,YAAhB,aAAW,EAAWurC,oBACxC9B,EAAWpC,MAAMv9B,EAAK00B,IACtBiL,EAAWzB,QAAQ,cACnByB,EAAWxB,YAAX,UAAuBn+B,EAAK2hC,sBAA5B,aAAuB,EAAqBnS,KAC5CmQ,EAAW/B,QAAQ59B,EAAKsmB,MACxBqZ,EAAWpB,OAAO3e,GAKd+f,EAAWnB,iBACXuB,EAAYpnC,KAAKgnC,EAAWnB,kBA5B5C,yBAiCWuB,GAjCX,4C,+BAoCeD,G,qFAAf,WAA6Bp1C,EAAOk1C,GAApC,4BAAA/b,EAAA,sDAEI,IAASnrB,KADLqnC,EAAc,GACFr1C,EACRA,EAAMgO,KACAsH,EAAOtV,EAAMgO,IACfinC,EAAa,IAAIrC,IACVG,UAAWz9B,EAAK4hC,QAAQ,GAAK5hC,EAAK4hC,QAAQ,GAAGxY,KAAOyY,KAAKj8B,OACpE+5B,EAAWhC,WAAY39B,EAAK6sB,QAAU7sB,EAAK6sB,QAAU7sB,EAAK+uB,aAC1D4Q,EAAW9B,QAAQ79B,EAAK8hC,WACxBnC,EAAW1B,SAASj+B,EAAK4F,OACzB+5B,EAAWxB,YAAY,UAAAn+B,EAAK+hC,WAAW,UAAhB,SAAoBjtC,IAApB,UAA0BkL,EAAK+hC,WAAW,UAA1C,aAA0B,EAAoBjtC,IAAM8qC,GAC3ED,EAAWrB,OAAX,UAAkBt+B,EAAKgiC,MAAM,UAA7B,aAAkB,EAAeltC,KACjC6qC,EAAWpC,MAAMv9B,EAAKmK,IACtBw1B,EAAWzB,QAAQ,OAEfyB,EAAWnB,iBACXuB,EAAYpnC,KAAKgnC,EAAWnB,kBAhB5C,yBAqBWuB,GArBX,4C,sBAwBA,SAASyB,GAAuB3U,EAAS0B,EAAM0T,EAAOvpC,GAClD,IAAKm0B,EAAS,MAAO,GACrB,IAOQqV,EACAC,EALFC,EAAQ,4DAERC,EAAc,gDAMhB,GAFAH,EAASrV,EAAQgD,MAAMwS,GACvBF,EAAWtV,EAAQgD,MAJD,uCAKfqS,GAAUC,EAAU,CACnBtV,EAAUA,EAAQz3B,QAAQitC,EAAa,IACvC,IAFmB,eAEX9uC,GACD2uC,EAAO3uC,IAAM4uC,EAAS5uC,KACrBs5B,EAAUA,EAAQz3B,QAAQ+sC,EAAS5uC,IAAI,SAASs8B,EAAO9L,GACpD,OAAQoe,EAAS5uC,GAAG2uC,EAAO3uC,QAH9BA,EAAI,EAAGA,EAAE2uC,EAAO9uC,OAAQG,IAAM,EAA9BA,GAQhB,IAkCI+uC,EACJ,IAFAzV,GADAA,GADAA,GAHAA,GANAA,GAFAA,GAJAA,GAJAA,GAJAA,GAJAA,EAAUA,EAAQz3B,QAJJ,0FAImB,SAACy6B,EAAO7C,GACzC,MAAM,aAAN,OAAoBA,EAApB,YAGkB53B,QANC,iFAMmB,SAACy6B,EAAO7C,GAC9C,MAAM,aAAN,OAAoBA,EAApB,YAGkB53B,QAjCL,cAiCmB,SAAUy6B,EAAO9L,GAC7C,MAAO,yBAA2BwK,EAAO,QAG3Bn5B,QApCN,aAoCmB,SAAUy6B,EAAO9L,GAC5C,MAAO,QAAUwK,EAAO,QAGVn5B,QArCC,wFAqCmB,KAEpBA,QAzCN,qDAyCmB,KAMbmtC,WAFO,wIAEsB,KAG7BntC,QAAQ,WAAY,OACpBmtC,WAAW,cAAe,aAC1BA,WAAW,gBAAgB,IAEtCD,EAAOF,EAAMI,KAAK3V,IAAU,CAC/B,IAAI4V,EAAQH,EAAK,GAAGltC,QAAQ,UAAW,iBACnCktC,EAAK,KAAIzV,EAAUA,EAAQz3B,QAAQktC,EAAK,GAArB,wKAAsLI,UAAUD,GAAhM,wLAG3B,OAAO5V,EAII,SAAU1Q,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAK6gB,IACL7gB,gBAAKmhB,IACLnhB,gBAAKkhB,MAJE,wC,ICxqBT6D,G,cACF,aAAe,IAAD,iCAmBdpF,MAAQ,SAAC5J,GACL,EAAKiP,WAAL,2BACO,EAAKA,YADZ,IAEIz4B,GAAKwpB,KAtBC,KA0Bd8J,UAAY,SAACC,GACT,EAAKkF,WAAL,2BACO,EAAKA,YADZ,IAEIlF,OAASA,KA7BH,KAiCdC,WAAa,SAAC9Q,GACV,EAAK+V,WAAL,2BACO,EAAKA,YADZ,IAEI/V,QAAUA,KApCJ,KAwCd+Q,QAAU,SAACtX,GACP,EAAKsc,WAAL,2BACO,EAAKA,YADZ,IAEItc,KAAMA,KA3CA,KA+Cduc,eAAiB,SAAC9T,GACd,EAAK6T,WAAL,2BACO,EAAKA,YADZ,IAEI7T,YAAaA,KAlDP,KAsDd8O,QAAU,SAAC3a,GAA0B,IAApBC,EAAmB,wDAC1B2a,EAAaxf,KAAO4E,EAAMC,GAChC,EAAKyf,WAAL,2BACO,EAAKA,YADZ,IAEIrf,KAAOua,EAAWva,OAClBjF,OAAQwf,EACR5a,KAAMA,KA5DA,KAgEd+a,SAAW,SAACr4B,GACR,EAAKg9B,WAAL,2BACO,EAAKA,YADZ,IAEIh9B,MAAQA,KAnEF,KAuEds4B,QAAU,SAAC3sC,GACP,EAAKqxC,WAAL,2BACO,EAAKA,YADZ,IAEIrxC,KAAOA,KA1ED,KA+EduxC,UAAY,SAACC,GACT,EAAKH,WAAL,2BACO,EAAKA,YADZ,IAEIG,OAAQA,KAlFF,KAsFd5E,YAAc,SAACnR,GACX,EAAK4V,WAAL,2BACO,EAAKA,YADZ,IAEI5V,SAAWA,KAzFL,KA6FdoR,YAAc,SAACC,GACX,EAAKuE,WAAL,2BACO,EAAKA,YADZ,IAEIvE,SAAUA,KAhGJ,KAoGdC,OAAS,SAACxR,GACN,EAAK8V,WAAL,2BACO,EAAKA,YADZ,IAEI9tC,IAAMg4B,KAvGA,KA2GdiR,gBAAkB,SAAC7a,GACf,EAAK0f,WAAL,2BACO,EAAKA,YADZ,IAEI5E,aAAe9a,KA9GT,KAkHd8f,eAAiB,WAYb,OAAO,EAAKJ,YA7HZpd,KAAKod,WAAa,CACdlF,QAAS,EACT7Q,SAAU,EACVtJ,MAAO,EACPjF,QAAS,EACT1Y,MAAQ,GACRonB,UAAW,EACXl4B,KAAM,EACNqV,IAAK,EACL5Y,MAAM,EACN8sC,UAAU,EACVtP,aAAa,EACbgU,QAAQ,EACRzc,MAAM,EACN0X,cAAc,MAmHX2E,M,aC5HEM,I,aA8KPC,I,aAoFAC,I,aAgGAtE,I,aAgFOC,I,aAoBAC,I,aA8LQ5iB,IApoBlB,SAAU8mB,KAAV,kEACH,OADG,SACG7mB,qBAAUzsB,KAAQ4c,6BAAT,WAAuC,WAAWmN,GAAX,kIAElD,OAFkD,SAE5C4D,eAAI,CACN/rB,KAAM5B,KAAQ8c,wBACd/a,SAAS,IAJqC,OAO/B,OADfoxB,EAAW,GANmC,SAOzBtF,kBAAO/wB,MAPkB,UAO9CwyC,EAP8C,OAS5Cr5B,EAAQ8T,EAAOhoB,QAAQkU,MACzBuhB,EAAUzN,EAAOhoB,QAAQA,QAVqB,iBAa9B,OAb8B,UAaxB8rB,kBAAOr0B,MAbiB,WAaxCE,EAbwC,OAc1C61C,EAAShnC,aAAQ7O,EAASuc,GAdgB,mDAgB9CuhB,EAAU+X,EAAO/X,QAhB6B,YAoB9CA,EApB8C,gCAqB3BA,GArB2B,8DAuBrB,eAFhBrhB,EArBqC,SAuB/BA,OAvB+B,iBA4B1B,OAJoB,GAA5BA,EAAOhR,IAAIjC,QAAQ,MAAmC,MAArBiT,EAAOs9B,YAA2C,IAArBt9B,EAAOs9B,aACrEt9B,EAAOhR,KAAOgR,EAAOs9B,YAzBa,UA4BpB9mB,gBAAK6mB,GAAoBr9B,EAAOwgB,KAAMxgB,EAAOhR,IAAKgR,EAAO+mB,QAASjnB,GA5B9C,SA4BlClb,EA5BkC,UA8BlCo4B,EAAQ,uBACDA,GADC,aAEDp4B,KAhC2B,WA4DrB,UAAjBob,EAAOA,OA5D+B,iBA6D1B,OA7D0B,UA6DpBwW,gBAAK4mB,IA7De,QA6DlCx4C,EA7DkC,OA8DjB,IAAZ,QAAL,EAAAA,SAAA,eAAO0I,QACP1I,EAAQu0C,EAAalc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,MACjC,QAAL,EAAAlb,SAAA,eAAO0I,QAAS,IACvB1I,EAAQA,EAAM20B,KAAI,SAAA9rB,GAAyB,OAAlBA,EAAE2rC,OAASt5B,EAAcrS,MAGlD7I,IACAo4B,EAAQ,uBACDA,GADC,aAEDp4B,KAvE2B,wHAAA68B,IAAA,qBA4FnC,OAdTqJ,EAAc,SAAC/M,EAAGgN,GACpB,OAAIhN,EAAEN,KAAOsN,EAAEtN,MACH,EAGRM,EAAEN,KAAOsN,EAAEtN,KACJ,EAGJ,GAvFuC,UA4F7B/F,kBAAO/wB,MA5FsB,WA6FlDwyC,GADAA,EA5FkD,QA6FtBlc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,KAGpDkd,EAASmO,KAAKL,GAGd9N,EAAWA,EAASM,OAAO,EAAG,IAE1BP,EAAMoc,EAAalc,QAAO,SAAAE,GAAC,OAAKH,EAASzB,MAAK,SAAAuT,GAAE,OAAIA,EAAGzqB,IAAM8Y,EAAE9Y,YAC5D,OAAH0Y,QAAG,IAAHA,OAAA,EAAAA,EAAKzvB,QAAS,GAAK0vB,EAAS1vB,OAAS,GAtGS,gCAuGhCyvB,GAvGgC,2DAwG1C,OADKI,EAvGqC,kBAwGpC4R,KAAY/Y,WAAWmH,EAAE9Y,IAxGW,wHAAAod,IAAA,qBAmHvC,OAPP6X,EAAWtc,EAASC,QAAO,SAAAj5B,GAC3B,OAAOm1C,EAAa5d,MAAK,SAAAuB,GACrB,GAAG94B,EAAKk0C,cAAgBpb,EAAQob,cAAgC,cAAhBpb,EAAQrxB,MAAwBqxB,EAAQzY,IAAMrgB,EAAKqgB,GAC/F,OAAOrgB,QA/G+B,UAmHjC+qC,KAAYr8B,OAnHqB,WAmH9CA,EAnH8C,OAoH9C6mC,EApH8C,UAoH5B7mC,EAAKuqB,QAAO,SAAAuc,GAAC,OAA+B,GAA3BA,EAAEzsC,QAAQ,uBApHC,aAoH5B,EAAgDO,OAClEmsC,EAAmBN,EAAalc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,KAAOxS,UAE3D,OAAHyvB,QAAG,IAAHA,OAAA,EAAAA,EAAKzvB,QAAS,GAAK0vB,EAAS1vB,OAAS,IAAe,OAARgsC,QAAQ,IAARA,OAAA,EAAAA,EAAUhsC,QAAS,GAAK0vB,EAAS1vB,OAAS,GAA+B,IAAZ,QAAZ,EAAA6rC,SAAA,eAAc7rC,UAAuB,QAAR,EAAA0vB,SAAA,eAAU1vB,QAAS,IAAmB,QAAZ,EAAA6rC,SAAA,eAAc7rC,WAAd,UAAyB0vB,SAAzB,aAAyB,EAAU1vB,UAAkB,QAAR,EAAA0vB,SAAA,eAAU1vB,QAAS,GAvHvK,iBA0HnC,OA1HmC,UA0H7BkpB,gBAAKuiB,GAAa/b,GA1HW,QA4H/B,OAFfA,EA1H8C,iBA4HzBtF,kBAAO/wB,MA5HkB,QA+H9C,OADA+yC,GADAA,GADIA,EA5H0C,QA6H1Bzc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,MACxBrQ,OAAOutB,GA9HmB,UA+HxCxF,eAAI,CACN/rB,KAAM5B,KAAQ2c,6BACd5a,QAAS8tC,IAjIiC,WAqI/CH,GAAmBE,EArI4B,kBAsI/B,OAtI+B,UAsIzB/hB,kBAAO/wB,MAtIkB,QAwI/B,OADfwyC,GADAA,EAtI8C,QAuIlBlc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,KAvIN,UAwIzB0W,gBAAKuiB,GAAaI,GAxIO,QAyI/B,OADfA,EAxI8C,iBAyIzBzhB,kBAAO/wB,MAzIkB,QA8I9C,OAHA+yC,GADAA,GADIA,EAzI0C,QA0I1Bzc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,MACxBrQ,OAAO0pC,IAClBhO,KAAKL,GA5IgC,WA8IxCtT,eAAI,CACN/rB,KAAM5B,KAAQ2c,6BACd5a,QAAS8tC,IAhJiC,SAuJlD,OAvJkD,WAuJ5CliB,eAAI,CACN/rB,KAAM5B,KAAQ8c,wBACd/a,SAAS,IAzJqC,gFADnD,wCA+JP,IAAM2xC,GAAoB,SAACxW,GAYvB,OAFAA,GAPAA,EAAUA,EAAQz3B,QAFL,+BAEmB,SAAUy6B,EAAO9L,GAC7C,IAAIne,EAAQiqB,EAAMA,MAAM,UACpBr9B,EAAOq9B,EAAMA,MAAM,wBACvB,OAAgB,MAAZjqB,EAAM,IAAyB,MAAXpT,EAAK,GAAmB,GAC1C,sDAAN,OAA4DoT,EAAM,GAAlE,4FAAuJpT,EAAK,GAA5J,aAGc4C,QAAQ,kBAAmB,YAKjD,SAAU8tC,KAAV,sFAMuB,OANvB,SAM6B1lB,kBAAO/wB,MANpC,OAOmB,OADTE,EANV,gBAOyB6wB,kBAAO30B,MAPhC,OAQqB,OADXR,EAPV,gBAQ2Bm1B,kBAAOp1B,MARlC,OASwB,OATxB,iBAS8Bo1B,kBAAOj1B,MATrC,kBAWSF,EAXT,mDAciB,OAdjB,UAcuBA,EAAOu3B,IAAI,6DAdlC,WAcQ0jB,EAdR,OAgBQhwB,EAAW,GAED,MAAVgwB,GAAmBA,EAlB3B,sDAmB0B,IAAlBA,EAAOlwC,OAnBf,sDAqBkB,MAAVkwC,EArBR,iBAsBYC,EAAgBD,EAAOE,WAAWzgB,QAAO,SAAA0gB,GAAC,OAAuB,IAAnBA,EAAEC,gBACpDpwB,EAAWgwB,EAAOhwB,SAASyP,QAAO,SAAA0gB,GAAC,OAAIF,EAAcliB,MAAK,SAAAwC,GAAC,OAAIA,EAAE1Z,IAAMs5B,EAAEt5B,SAvBjF,eA0BsBmJ,GA1BtB,+HA0BiBmwB,EA1BjB,QA2BgB5f,EAAI0f,EAAcliB,MAAK,SAAAwC,GAAC,OAAIA,EAAE1Z,IAAMs5B,EAAEt5B,MAC1Cs5B,EAAEE,UAAY9f,EAEVtD,EAAO+iB,EAAOE,WAAWniB,MAAK,SAAA/oB,GAAC,OAAIA,EAAE6R,IAAMs5B,EAAEG,aACjDH,EAAEljB,KAAOA,EAGK,OADVwiB,EAjChB,UAiCyBO,EAAOE,WAAWniB,MAAK,SAAA/oB,GAAC,OAAIA,EAAE6R,IAAMs5B,EAAEt5B,aAjC/D,aAiCyB,EAA2C44B,QAjCpE,iBAoCgBU,EAAEV,OAAS,GApC3B,eAqC8BA,GArC9B,0DAsCgC,OADPc,EArCzB,kBAsCsCx7C,EAAOu3B,IAAP,+CAAmDikB,EAAE15B,GAArD,UAtCtC,QAuCiC,OADT25B,EAtCxB,SAuCuCL,EAAEV,OAAOpqC,KAAKmrC,GAvCrD,uHAAAvc,IAAA,yRAAAA,IAAA,yBA6CQjU,EAASlgB,UAAkC,IAAtBzG,EAAWyG,QAAkBzG,GAAcA,EAAW,GAAGwd,KAAOmJ,EAAS,GAAGnJ,IA7CzG,iBA8Ce,OA9Cf,UA8CqB45B,GAAiBzwB,GA9CtC,iDAgDe,OAhDf,UAgDqBywB,GAAiBzwB,GAhDtC,2EAkDW,GAlDX,8D,SAqDeywB,G,mFAAf,WAAgCC,GAAhC,4BAAAngB,EAAA,sDAEI,IAASnrB,KADLurC,EAAc,GACFD,EACRA,EAAMtrC,KACAsH,EAAOgkC,EAAMtrC,IAEfwrC,EAAc,IAAIvB,IACVlF,UAAZ,UAAsBz9B,EAAKugB,YAA3B,aAAsB,EAAW4jB,WAEjCD,EAAYvG,WAAW0F,GAAiB,UAACrjC,EAAK+kB,YAAN,aAAC,EAAWqf,OACpDF,EAAYrG,QAAQ79B,EAAKqkC,YAEzBH,EAAY5F,OAAOt+B,EAAKskC,SACxBJ,EAAY3G,MAAM,GAAKv9B,EAAKmK,IAC5B+5B,EAAYhG,QAAQ,UAED,MAAfl+B,EAAK+iC,QAAkB/iC,EAAK+iC,QAC5BmB,EAAYpB,UAAU9iC,EAAK+iC,QAG/BmB,EAAY/F,YAAZ,UAAwBn+B,EAAKugB,YAA7B,aAAwB,EAAWgkB,aAE/BL,EAAYlB,kBACZiB,EAAYtrC,KAAKurC,EAAYlB,mBAvB7C,yBA2BWiB,GA3BX,4C,sBA+BA,SAAUd,GAAmB7c,EAAM1G,EAAK4kB,EAAU5+B,GAAlD,uGACSga,EADT,uBAEQrD,QAAQC,IAAI,+BAFpB,0BAOuB,OAFfwjB,EAAe,GALvB,SAO6BxiB,kBAAO/wB,MAPpC,OASmB,OADfwyC,GADIA,EAPR,QAQgClc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,KARxD,UASyB4X,kBAAO70B,MAThC,QAUqB,OADXN,EATV,iBAU2Bm1B,kBAAOp1B,MAVlC,kBAaSC,EAbT,mDAmByB,OAJI,GAArBu3B,EAAI/sB,QAAQ,OACZ+sB,GAAO,kCAhBf,UAmB+Bv3B,EAAOu3B,IAAIA,GAnB1C,WAqBwB,OAFdqgB,EAnBV,SAqBiCA,GAAiBA,EAAapuC,MArB/D,sDAsBsC,IAA9BouC,EAAapuC,MAAMuB,OAtB3B,sDAwBQtJ,EAAOm2C,EAAapuC,MACpBixB,EAAWh5B,EAAKi5B,QAAO,SAAAyL,GAAC,eAA6B,IAAZ,QAAZ,EAAAyQ,SAAA,eAAc7rC,WAAsB,UAAC6rC,SAAD,OAAC,EAAc5d,MAAK,SAAA9tB,GAAC,MAAc,cAAVA,EAAEhC,MAAwBgC,EAAE4W,IAAM,aAAeqkB,EAAEkG,GAAGpU,kBAChJ4f,EAAWjB,EAAalc,QAAO,SAAAxvB,GAAC,OAAKzJ,EAAKu3B,MAAK,SAAAmN,GAAC,MAAI,aAAeA,EAAEkG,IAAMnhC,EAAE4W,QAAQ2Y,EAASzB,MAAK,SAAA4B,GAAC,MAAI,aAAeA,EAAEyR,IAAMnhC,EAAE4W,UAGzH,QAAR,EAAA2Y,SAAA,eAAU1vB,QAAS,IACnB0vB,EAAWA,EAASzD,KAAI,SAAU4D,GAC9B,OAAO,2BAAKA,GAAZ,IAAeyR,GAAI,aAAezR,EAAEyR,GAAGpU,WAAYgG,KAAMA,SAKrD,OAAR4Z,QAAQ,IAARA,OAAA,EAAAA,EAAU9sC,QAAS,IACnB6rC,EAAeA,EAAalc,QAAO,SAAAC,GAAC,OAAKkd,EAAS7e,MAAK,SAAA+e,GAAC,OAAIA,EAAEj2B,IAAM6Y,EAAE7Y,UAG1E61B,EAAel2C,EAAKi5B,QAAO,SAAAj5B,GACvB,OAAOm1C,EAAa5d,MAAK,SAAAuB,GACrB,GAAG94B,EAAKu2C,UAAYzd,EAAQob,cAAgC,cAAhBpb,EAAQrxB,MAAwBqxB,EAAQzY,IAAM,aAAcrgB,EAAK4qC,GAAGpU,WAC5G,OAAOx2B,SAKH,QAAZ,EAAAk2C,SAAA,eAAc5sC,QAAS,IACvB4sC,EAAeA,EAAa3gB,KAAI,SAAU4D,GACtC,OAAO,2BAAKA,GAAZ,IAAeyR,GAAI,aAAezR,EAAEyR,GAAGpU,WAAYgG,KAAMA,QAK7Dme,EAAW,MACXD,EAxDR,oBAyDQC,EAAWzkB,KAAKY,MAAM4jB,GAzD9B,mDAiEsB,OAjEtB,UAiE4BE,GAAqB5hB,EAAU2hB,GAjE3D,QA+E6B,OAdrB1E,EAjER,QAkEmB,QAAX,EAAAA,SAAA,eAAa3sC,QAAS,IACtB2sC,EAAcA,EAAY1gB,KAAI,SAAA9rB,GAE9B,OADAA,EAAE2rC,OAASt5B,EACJrS,OAGC,OAAR2sC,QAAQ,IAARA,OAAA,EAAAA,EAAU9sC,QAAS,IAAG6rC,EAAeA,EAAalc,QAAO,SAAAC,GAAC,OAAKkd,EAAS7e,MAAK,SAAA+e,GAAC,OAAIA,EAAEj2B,IAAM6Y,EAAE0R,UAxEpG,UA+EmCgQ,GAAqB1E,EAAcyE,GA/EtE,eA+EQnE,EA/ER,QAgF0B,QAAlB,EAAAA,SAAA,eAAoBltC,QAAS,IAC7BktC,EAAqBA,EAAmBjhB,KAAI,SAAA9rB,GAE5C,OADAA,EAAE2rC,OAASt5B,EACJrS,OAEW,QAAlB,EAAA+sC,SAAA,eAAoBltC,QAAS,IAC7B6rC,EAAeA,EAAalc,QAAO,SAAAH,GAAO,OAAK0d,EAAmBjf,MAAK,SAAAkf,GAAM,MAAoB,cAAhB3d,EAAQrxB,MAAwBqxB,EAAQzY,IAAMo2B,EAAOp2B,UAtF9I,yCA2Fe41B,GA3Ff,aA2F+Bd,GA3F/B,aA2FgDqB,KA3FhD,yCAgGA,SAAUzB,GAAY/b,GAAtB,gFAG6B,OAFrBvP,EAAQ,GADhB,SAGmCiK,kBAAO70B,MAH1C,YAGUC,EAHV,wBAK4C,OAL5C,SAKkDA,EAAiBu8B,WALnE,OAK0Bqb,EAL1B,cAOqB,OAPrB,UAO2BhjB,kBAAOp1B,MAPlC,QAQkB,OADRE,EAPV,iBAQwBA,EAAS68B,WARjC,WAQQqB,EARR,OAYIjT,EAAQuP,EAASzD,IAAT,yCAAa,WAAOrf,EAAMyuB,GAAb,oBAAA5K,EAAA,yDAEA,cAAb7jB,EAAKzO,KAFQ,oBAKRkvC,MAAMxV,SAASjrB,EAAK09B,SALZ,gCAMoB90C,EAAiBg3B,IAAI5f,EAAKsmB,KAAO,yBAA2BtmB,EAAK09B,OAAS,KAN9F,QAMHgD,EANG,SAUDA,EAAe5R,QAEfhM,EAAS2L,GAAOiP,OAASgD,EAAe5R,OAZvC,cAiBP6R,EAjBO,iCAAA9c,EAAA,MAiBO,WAAO7jB,GAAP,wBAAA6jB,EAAA,yDACK,MAAjB7jB,EAAKgtB,SADO,yCACkB,CAAEA,SAAU,OAD9B,UAEK,0BAAjBhtB,EAAKgtB,SAFO,yCAEsC,CAAEA,SAAU,OAFlD,WAGgC,GAA5ChtB,EAAKgtB,SAASn6B,QAAQ,kBAHV,yCAG0C,CAAEm6B,SAAUhtB,EAAKgtB,WAH3D,cAKZ4T,EAAa3rC,aAAgB+K,EAAK6gC,WAAa7gC,EAAK6gC,WAAa7gC,EAAKgtB,SAAU,GAChFl4B,EAAMy3B,mBAAmBqU,GANb,UAQKtc,MAAM,qBAAD,OAAsBxvB,GAAO,CACnDgwB,OAAQ,MACR0H,YAAa,aACbjI,QAAS,CACL,cAAiB,UAAYiC,EAC7B,mBAAsBga,KAE3B7b,OAAM,SAACC,GAAU,OAAO,QAfX,mBAQZJ,EARY,kBAiBXA,KAAUC,GAjBC,0CAiBU,MAjBV,yBAmBMD,EAASoI,OAnBf,QAmBVC,EAnBU,OAoBA,GApBA,UAwBZ51B,EAAOvE,aAAcm6B,GAxBT,4EAyBM,MAzBN,WA2BX51B,EA3BW,0CA2BE,MA3BF,yBA4BV49B,KAAYC,QAAQ90B,EAAKmK,GAAIlT,GA5BnB,iCA8BT,CACH+1B,SAAU,yBACV6T,WAAY7gC,EAAK6gC,WAAa7gC,EAAK6gC,WAAa7gC,EAAKgtB,WAhCzC,2DAjBP,+DAqDW6H,KAAYiM,QAAQhe,EAAS2L,GAAOtkB,IArD/C,UAsDM,OADf42B,EArDS,SAsD6B,IAAfA,EAtDd,kCAsDqDJ,EAAY7d,EAAS2L,IAtD1E,QAsDiCsS,EAtDjC,eAuDTA,IAAaje,EAAS2L,GAAT,2BAAuB3L,EAAS2L,IAAWsS,IAvD/C,4CAAb,0DA2DJxtB,EAAMngB,OAvEd,iBAwEQ,OAxER,UAwEcmD,QAAQonB,IAAIpK,GAxE1B,iCA2EWuP,GA3EX,yCAgFO,SAAUgc,KAAV,kEACH,OADG,SACG1iB,qBAAUzsB,KAAQ+c,sBAAT,WAAgC,WAAWgN,GAAX,qEACrB,MAAlBA,EAAOhoB,QADgC,iDAO3C,OADA6qB,QAAQC,IAAI,qBAN+B,SAOrCc,eAAI,CACN/rB,KAAMuwB,IAAY9wB,qBAClBU,QAAS,CACLG,MAAO6nB,EAAOhoB,QACdI,QAAS,kBAX0B,2CAD5C,wCAoBA,SAAUitC,KAAV,wEAyEH,OAvEMiC,EAFH,WAEY,SAATA,IAAS,kGAGG,OAHH,SAGSxjB,kBAAO/wB,MAHhB,OAIE,OADP/B,EAHK,gBAIQ8yB,kBAAO3zB,MAJf,OAKO,OADZC,EAJK,gBAKa0zB,kBAAOpzB,MALpB,OAMa,OADlBw+B,EALK,iBAMmBpL,kBAAOnwB,MAN1B,WAMLs3C,EANK,OAQC,MAAR76C,GAAiB8+B,GAAc+b,GAAoC,IAAZ,OAALj6C,QAAK,IAALA,OAAA,EAAAA,EAAO0I,QARlD,oDAUP6tC,EAVO,UAUOn3C,EAAKupB,gBAVZ,aAUO,EAAeuxB,gBAE7B3D,EAAc,IAGdE,EAAY,GAfL,eAkBMz2C,GAlBN,IAkBX,IAlBW,iBAkBFsV,EAlBE,QAoBP,GAAIse,OAASiF,OAASvjB,EAAKujB,MAAQ,MAE/BvjB,EAAKohC,QAAS,MACX,CACHphC,EAAKohC,QAAS,EAGd,IAAIC,EAAaJ,EAAY5f,MAAK,SAAC9tB,GAAD,OAAOA,EAAEuB,MAAQkL,EAAKlL,OACpDusC,GACIA,EAAWD,SACXphC,EAAKohC,QAAS,GAKrBH,EAAY5f,MAAK,SAAC9tB,GAAD,OAAOA,EAAEuB,MAAQkL,EAAKlL,QACxCmsC,EAAYtoC,KAAK,CACb7D,IAAKkL,EAAKlL,IACVoqC,OAAQl/B,EAAKk/B,OACbkC,OAAQphC,EAAKohC,UArBzB,uBAAyB,IAlBd,0BAAA7Z,IAAA,eA6CM0Z,GA7CN,IA6CX,IA7CW,iBA6CFjhC,EA7CE,QA8CStV,EAAM22B,MAAK,SAAC9tB,GAAD,OAAOA,EAAEuB,MAAQkL,EAAKlL,QAE7CqsC,EAAUxoC,KAAK,CACX7D,IAAKkL,EAAKlL,IACVoqC,OAAQl/B,EAAKk/B,OACbkC,OAAQphC,EAAKohC,UANzB,uBAA+B,IA7CpB,0BAAA7Z,IAAA,IAuDc,GAApB4Z,EAAU/tC,QAAqC,GAAtB6tC,EAAY7tC,SACrC4sB,KAAKC,UAAUkhB,EAAU9hB,KAAI,SAAA4D,GAAC,OAAIA,EAAEnuB,SAASkrB,KAAKC,UAAUghB,EAAY5hB,KAAI,SAAA4D,GAAC,OAAIA,EAAEnuB,SACpF,UAAChL,EAAKupB,gBAAN,OAAC,EAAeuxB,aAzDT,iBA2DP,OA3DO,UA2DDtnB,eAAI,CACN/rB,KAAMuwB,IAAY9wB,qBAClBU,QAAS,CACLG,MAAOsvC,EACPrvC,QAAS,kBA/DV,qCAATkvC,MAFH,SAyEG5kB,qBAAU0F,IAAYhxB,uBAAb,WAAqC,WAAW4oB,GAAX,kEAC9B,OAD8B,SACxB8D,kBAAOnwB,MADiB,kCAI5C,OAJ4C,SAItC2zC,IAJsC,2CAzEjD,OAiFH,OAjFG,SAiFG5kB,qBAAUzsB,KAAQ8c,wBAAT,WAAkC,WAAWiN,GAAX,wEAC3B,OAD2B,SACrB8D,kBAAOpzB,MADc,UACvCw+B,EADuC,QAGtB,IAAnBlP,EAAOhoB,UAAoBk3B,EAHc,gBAIzC,OAJyC,SAInCoY,IAJmC,2CAjF9C,wC,SA2FQ0D,G,qFAAf,WAAoCV,EAAOS,GAA3C,kBAAA5gB,EAAA,sDAMI,IAASnrB,KALLurC,EAAc,GAKFD,EACRA,EAAMtrC,IAAO,WAAD,UAKE,IAJVsH,EAAOgkC,EAAMtrC,GACbm0B,EAAU,KACVkC,EAAc,KAEd0V,KACuC,IAAnC,UAAAA,EAAS5X,eAAT,eAAkBh6B,QAAQ,QAC1Bg6B,EAAU4X,EAAS5X,QAAQz3B,QAAQ,YAAY,SAAUy6B,EAAO9L,GAC5D,OAAI/jB,EAAK+jB,GAAe/jB,EAAK+jB,GACtB,QAG4B,IAAvC,UAAA0gB,EAAS1V,mBAAT,eAAsBl8B,QAAQ,QAC9Bk8B,EAAc0V,EAAS1V,YAAY35B,QAAQ,YAAY,SAAUy6B,EAAO9L,GACpE,OAAI/jB,EAAK+jB,GAAe/jB,EAAK+jB,GACtB,SAInB/jB,EAAI,2BACGA,GADH,IAEAmK,GAAInK,EAAK00B,GACTgJ,OAAQ19B,EAAKshC,SACb17B,MAAe,OAAR6+B,QAAQ,IAARA,KAAU7+B,MAAQ5F,EAAKykC,EAAS7+B,OAAS5F,EAAK8uB,MACrDjC,QAAWA,GAAU7sB,EAAI,eACzBsW,QAAWyY,GAAc/uB,EAAI,YAC7BgtB,SAAkB,OAARyX,QAAQ,IAARA,KAAU5kC,MAAQG,EAAKykC,EAAS5kC,OAAhC,UAAyCG,EAAK2hC,sBAA9C,aAAyC,EAAqBnS,IACxE16B,IAAKkL,EAAKsmB,MAAQtmB,EAAI,MAAY,cAAgBA,EAAI,MAAUuiC,WAAW,IAAK,KAAO,QAAU,IAEjGrf,KAAc,OAARuhB,QAAQ,IAARA,KAAUvhB,KAAOljB,EAAKykC,EAASvhB,MAAQljB,EAAKgvB,QAClD6V,YAAiB,QAAJ,EAAA7kC,SAAA,SAAMqgC,SAAWrgC,EAAKqgC,SAAWrgC,EAAKgvB,WAG9ChC,UAAuC,kBAAnBhtB,EAAKgtB,UAA9B,UAAwDhtB,EAAKgtB,gBAA7D,OAAwD,EAAewC,MAAKxvB,EAAKgtB,SAAWhtB,EAAKgtB,SAASwC,KAE9G,IAAI0U,EAAc,IAAIvB,GACtBuB,EAAYzG,UAAUz9B,EAAK09B,QAC3BwG,EAAYvG,WAAW6D,GAAuBxhC,EAAK6sB,QAAS7sB,EAAKlL,MACjEovC,EAAYrG,QAAQ79B,EAAKkjB,MACzBghB,EAAY5F,OAAOt+B,EAAKlL,KACxBovC,EAAYjG,SAASj+B,EAAK4F,OAC1Bs+B,EAAYrB,eAAe7iC,EAAKsW,SAChC4tB,EAAY3G,MAAMv9B,EAAKmK,IACvB+5B,EAAYhG,QAAQ,cACpBgG,EAAYtG,QAAQ59B,EAAKsmB,MACzB4d,EAAYnG,gBAAgB/9B,EAAK6kC,aAEZ,MAAjB7kC,EAAKgtB,SACLkX,EAAY/F,YAAY,0BAExB+F,EAAY/F,YAAYn+B,EAAKgtB,UAG7BkX,EAAYlB,kBACZiB,EAAYtrC,KAAKurC,EAAYlB,kBAtDpB,GAPzB,yBAiEWiB,GAjEX,4C,sBAqEA,SAASzC,GAAuB3U,EAAS/3B,GACrC,GAAe,MAAX+3B,EAAJ,CACA,IAkBIyV,EAfEF,EAAQ,4DAgBd,IAHAvV,GAFAA,GAJAA,GAJAA,EAAUA,EAAQz3B,QANL,cAMmB,SAAUy6B,EAAO9L,GAC7C,MAAO,yBAA2BlvB,aAAmBC,GAAO,QAG9CM,QATN,aASmB,SAAUy6B,EAAO9L,GAC5C,MAAO,QAAUlvB,aAAmBC,GAAO,QAG7BM,QAVC,wFAUmB,KAEpBA,QAdN,qDAcmB,IAGxBktC,EAAOF,EAAMI,KAAK3V,IAAU,CAC/B,IAAI4V,EAAQH,EAAK,GAAGltC,QAAQ,UAAW,iBACnCktC,EAAK,KAAIzV,EAAUA,EAAQz3B,QAAQktC,EAAK,GAArB,wKAAsLI,UAAUD,GAAhM,wLAG3B,OAAO5V,GAII,SAAU1Q,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAKqlB,IACLrlB,gBAAKmhB,IACLnhB,gBAAKkhB,MAJE,wC,IC5oBTgG,G,cACF,aAAe,IAAD,iCAiBdvH,MAAQ,SAAC5J,GACL,EAAKoR,UAAL,2BACO,EAAKA,WADZ,IAEI56B,GAAKwpB,KApBC,KAwBduK,QAAU,SAAC3sC,GACP,EAAKwzC,UAAL,2BACO,EAAKA,WADZ,IAEIxzC,KAAOA,KA3BD,KA+BdksC,UAAY,SAACC,GACT,EAAKqH,UAAL,2BACO,EAAKA,WADZ,IAEIrH,OAASA,KAlCH,KAsCdE,QAAU,SAACtX,GACP,EAAKye,UAAL,2BACO,EAAKA,WADZ,IAEIze,KAAMA,KAzCA,KA6CdqX,WAAa,SAAC9Q,GACV,EAAKkY,UAAL,2BACO,EAAKA,WADZ,IAEIlY,QAAUA,KAhDJ,KAoDdgR,QAAU,SAAC3a,GAA0B,IAApBC,EAAmB,wDAC1B2a,EAAaxf,KAAO4E,EAAMC,GAChC,EAAK4hB,UAAL,2BACO,EAAKA,WADZ,IAEIxhB,KAAOua,EAAWva,OAClBjF,OAASwf,KAzDH,KA6DdC,gBAAkB,SAAC7a,GACf,EAAK6hB,UAAL,2BACO,EAAKA,WADZ,IAEI/G,aAAc9a,KAhER,KAoEd+a,SAAW,SAACr4B,GACR,EAAKm/B,UAAL,2BACO,EAAKA,WADZ,IAEIn/B,MAAQA,KAvEF,KA2Edu4B,YAAc,SAACnR,GACX,EAAK+X,UAAL,2BACO,EAAKA,WADZ,IAEI/X,SAAWA,KA9EL,KAkFdsR,OAAS,SAACxR,GACN,EAAKiY,UAAL,2BACO,EAAKA,WADZ,IAEIjwC,IAAMg4B,KArFA,KAyFdsR,YAAc,SAACC,GACX,EAAK0G,UAAL,2BACO,EAAKA,WADZ,IAEI1G,SAAUA,KA5FJ,KAgGd2G,gBAAkB,SAACC,GACf,EAAKF,UAAL,2BACO,EAAKA,WADZ,IAEIG,aAAeD,KAnGT,KAuGdE,cAAgB,WACZ,IAAM,IAAMne,KAAY,EAAK+d,UACzB,GAAK,EAAKA,UAAUrhB,eAAesD,IACd,QAAbA,GAAmC,aAAbA,GAAwC,iBAAbA,GAA4C,aAAbA,GAAwC,SAAbA,GAAmC,iBAAZA,IAC5H,EAAK+d,UAAU/d,GAEjB,OADAzK,QAAQC,IAAI,qBAAuBwK,IAC5B,EAMvB,OAAO,EAAK+d,WAlHZvf,KAAKuf,UAAY,CACbrH,QAAS,EACT7Q,SAAU,EACVtJ,MAAO,EACPjF,QAAS,EACT1Y,OAAQ,EACRonB,UAAW,EACXl4B,KAAM,EACNqV,IAAK,EACL5Y,MAAO,EACP2zC,cAAc,EACd7G,UAAU,EACV/X,MAAM,EACN0X,cAAc,MAyGX8G,M,aC/GEM,I,aA0MP73B,I,aAgFA83B,I,aAgCAC,I,aAmDAC,I,aAgCAC,I,aAqFA3G,I,aA4Je1iB,IA9nBlB,SAAUipB,KAAV,kEACH,OADG,SACGhpB,qBAAUzsB,KAAQgiB,4BAAT,WAAsC,WAAW+H,GAAX,kQAI7C,OAJ6C,SAIvC4D,eAAI,CACN/rB,KAAM5B,KAAQiiB,wBACdlgB,SAAS,IANgC,OAW1B,OAHfoxB,EAAW,GACXkc,GAAa,EACXp5B,EAAQ8T,EAAOhoB,QAAQkU,MAVgB,SAWpB4X,kBAAOpxB,MAXa,UAWzC6yC,EAXyC,QAazCvlB,EAAOhoB,UAAWgoB,EAAOhoB,QAAQA,QAbQ,gCActBgoB,EAAOhoB,QAAQA,SAdO,8DAehB,eADhBoU,EAdgC,SAe1BA,OAf0B,iBAgBrB,OAhBqB,UAgBfwW,gBAAKkpB,GAAoB1/B,EAAOwgB,KAAMxgB,EAAOhR,IAAK8Q,EAAOE,EAAOA,QAhBjD,QAgB7Bpb,EAhB6B,QAiBxB,QAAL,EAAAA,SAAA,eAAO0I,QAAS,IAChB1I,EAAQA,EAAM20B,KAAI,SAAA9rB,GAEd,OADAA,EAAE2rC,OAASt5B,EACJrS,MAGX7I,IACAo4B,EAAQ,uBACDA,GADC,aAEDp4B,KA1BsB,WA+BhB,QAAjBob,EAAOA,OA/B0B,iBAgCrB,OAhCqB,UAgCfwW,gBAAK+oB,GAAcv/B,EAAOhR,KAhCX,QAgC7BpK,EAhC6B,QAiCxB,QAAL,EAAAA,SAAA,eAAO0I,QAAS,IAChB1I,EAAQA,EAAM20B,KAAI,SAAA9rB,GAEd,OADAA,EAAE2rC,OAASt5B,EACJrS,MAGX7I,IACAo4B,EAAQ,uBACDA,GADC,aAEDp4B,KA1CsB,WA+ChB,OAAjBob,EAAOA,OA/C0B,iBAgDrB,OAhDqB,UAgDfwW,gBAAKgpB,GAAax/B,EAAOhR,IAAK8Q,GAhDf,QAgD7Blb,EAhD6B,QAiDxB,QAAL,EAAAA,SAAA,eAAO0I,QAAS,IAChB1I,EAAQA,EAAM20B,KAAI,SAAA9rB,GAEd,OADAA,EAAE2rC,OAASt5B,EACJrS,MAGX7I,IACAo4B,EAAQ,uBACDA,GADC,aAEDp4B,KA1DsB,QA+DhB,MAAjBob,EAAOA,QAAgC,GAAdA,EAAOhR,MAChCkqC,GAAa,GAhEoB,wHAAAzX,IAAA,wBAiFvCqJ,EAAc,SAAC/M,EAAGgN,GACpB,OAAIhN,EAAEN,KAAOsN,EAAEtN,MACH,EAGRM,EAAEN,KAAOsN,EAAEtN,KACJ,EAGJ,IAIPr1B,OAAOC,aAAa+yB,SAAW8d,EA9FU,qBA+FtC9wC,OAAOC,aAAa+yB,OA/FkB,iBAgGhB,OAhGgB,UAgGV5E,gBAAKipB,IAhGK,SAgG/BE,EAhG+B,UAkGjC3iB,EAAQ,uBACDA,GADC,aAED2iB,KApG0B,QAwGvB,OAxGuB,UAwGjBnpB,gBAAK/O,GAAgB3H,GAxGJ,QAwGrC8/B,EAxGqC,OAyGrCx3C,OAAOC,aAAa+yB,QAexB4B,EAASmO,KAAKL,GAEV,UAAI8U,SAAJ,OAAI,EAAatyC,SACTsyC,EAAcA,EAAYrmB,KAAI,SAAA9rB,GAE9B,OADAA,EAAE2rC,OAASt5B,EACJrS,KAEPuvB,EADA4iB,EAAYrkB,MAAK,SAAA4B,GAAC,OAAkB,MAAdA,EAAEob,YACbqH,EAEAA,EAAYnwC,OAAOutB,OAvBvB,QAAX,EAAA4iB,SAAA,eAAatyC,QAAS,IACtBsyC,EAAcA,EAAYrmB,KAAI,SAAA9rB,GAE9B,OADAA,EAAE2rC,OAASt5B,EACJrS,OAEXmyC,EAAW,uBAAOA,GAAP,aAAuBzG,EAAalc,QAAO,SAAAxvB,GAAC,MAAc,MAAVA,EAAEhC,MAAgBgC,EAAE2rC,QAAUt5B,UAErFkd,EAAQ,uBACDA,GADC,aAED4iB,KAGX5iB,EAASmO,KAAKL,IAtHuB,wBAuIzC9N,EAASmO,KAAKL,GAvI2B,QA0I9B,OA1I8B,UA0IxBpT,kBAAOpxB,MA1IiB,WA2I7C6yC,GADAA,EA1I6C,QA2IjBlc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,KACpDkd,EAAWA,EAASM,OAAO,EAAG,IAC1BP,EAAMoc,EAAalc,QAAO,SAAAE,GAAC,OAAKH,EAASzB,MAAK,SAAAuT,GAAE,OAAIA,EAAGzqB,IAAM8Y,EAAE9Y,YAC5D,OAAH0Y,QAAG,IAAHA,OAAA,EAAAA,EAAKzvB,QAAS,GAAK0vB,EAAS1vB,OAAS,GA9II,gCA+I3ByvB,GA/I2B,2DAgJrC,OADKI,EA/IgC,kBAgJ/B4R,KAAY/Y,WAAWmH,EAAE9Y,IAhJM,wHAAAod,IAAA,qBAmJlC,OAnJkC,UAmJ5BsN,KAAYr8B,OAnJgB,WAmJzCA,EAnJyC,OAoJzC6mC,EApJyC,UAoJvB7mC,EAAKuqB,QAAO,SAAAuc,GAAC,OAA8B,GAA1BA,EAAEzsC,QAAQ,sBApJJ,aAoJvB,EAA+CO,OACjEmsC,EAAmBN,EAAalc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,KAAOxS,OAE/DgsC,EAAWtc,EAASC,QAAO,SAAAj5B,GAC3B,OAAOm1C,EAAa5d,MAAK,SAAAuB,GACrB,GAAG94B,EAAKk0C,cAAgBpb,EAAQob,cAAgC,cAAhBpb,EAAQrxB,MAAwBqxB,EAAQzY,IAAMrgB,EAAKqgB,GAC/F,OAAOrgB,WAKX,OAAH+4B,QAAG,IAAHA,OAAA,EAAAA,EAAKzvB,QAAS,GAAK0vB,EAAS1vB,OAAS,IAAe,OAARgsC,QAAQ,IAARA,OAAA,EAAAA,EAAUhsC,QAAS,GAAK0vB,EAAS1vB,OAAS,GAA+B,IAAZ,QAAZ,EAAA6rC,SAAA,eAAc7rC,UAAuB,QAAR,EAAA0vB,SAAA,eAAU1vB,QAAS,IAAmB,QAAZ,EAAA6rC,SAAA,eAAc7rC,WAAd,UAAyB0vB,SAAzB,aAAyB,EAAU1vB,SAAU0vB,EAAS1vB,OAAS,GA/J3K,iBAkK9B,OAlK8B,UAkKxBkpB,gBAAKuiB,GAAa/b,GAlKM,QAmK1B,OADfA,EAlKyC,iBAmKpBtF,kBAAOpxB,MAnKa,QAwKzC,OAHAozC,GADAA,GADIA,EAnKqC,QAoKrBzc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,MACxBrQ,OAAOutB,IAClBmO,KAAKL,GAtK2B,UAwKnCtT,eAAI,CACN/rB,KAAM5B,KAAQ+hB,4BACdhgB,QAAS8tC,IA1K4B,WAgL9CH,GAAmBE,EAhL2B,kBAiL1B,OAjL0B,WAiLpB/hB,kBAAOpxB,MAjLa,SAmL1B,OADf6yC,GADAA,EAjLyC,QAkLblc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,KAlLX,WAmLpB0W,gBAAKuiB,GAAaI,GAnLE,SAoL1B,OADfA,EAnLyC,kBAoLpBzhB,kBAAOpxB,MApLa,SAyLzC,OAHAozC,GADAA,GADIA,EApLqC,QAqLrBzc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,MACxBrQ,OAAO0pC,IAClBhO,KAAKL,GAvL2B,WAyLnCtT,eAAI,CACN/rB,KAAM5B,KAAQ+hB,4BACdhgB,QAAS8tC,IA3L4B,SA+L7C,OA/L6C,WA+LvCliB,eAAI,CACN/rB,KAAM5B,KAAQiiB,wBACdlgB,SAAS,IAjMgC,+IAoM7C6qB,QAAQC,IAAR,MApM6C,wDADlD,wCA0MP,SAAUjP,GAAe3H,GAAzB,gGACmB,OADnB,SACyB4X,kBAAOp1B,MADhC,OAEwB,OADdC,EADV,gBAE8Bm1B,kBAAOj1B,MAFrC,OAGsB,OADZC,EAFV,gBAG4Bg1B,kBAAOpxB,MAHnC,UAGUE,EAHV,OAISjE,GAAWG,EAJpB,mDAKkB,OALlB,UAKwBH,EAAOu3B,IAAI,qBALnC,WAQiB,OAHPr1B,EALV,SAQ0BA,EAR1B,sDAUQgpB,EAAQhpB,EAAM80B,IAAN,yCAAU,WAAO4D,EAAG1vB,GAAV,oBAAAswB,EAAA,yDAEH,MAAXZ,EAAEpjB,MAFY,wDAGlBojB,EAAEhsB,KAAOvE,aAAcuwB,EAAEpjB,OAHP,0BAORqgB,EAPQ,OAQVrgB,EAAQ,0BAA4B,IAAIugB,UAAOC,KAAKH,EAAQ,UAAUI,SAAS,UAC/ErpB,EAAOvE,aAAcmN,GACTitB,IAAIC,gBAAgB91B,GACpCgsB,EAAE0iB,WAAa1uC,EAXD,4CAAV,0DAcRsc,EAAMngB,OAxBd,iBAyBQ,OAzBR,UAyBcmD,QAAQonB,IAAIpK,GAzB1B,YA8BQhpB,EAAM6I,UAAiC,IAArB9G,EAAU8G,QAAkB9G,GAAaA,EAAU,GAAG6d,KAAO5f,EAAM,GAAG4f,IA9BhG,oBAiCY0Y,EAAMv2B,EAAUy2B,QAAO,SAAAE,GAAC,OAAK14B,EAAM82B,MAAK,SAAAuT,GAAE,OAAIA,EAAGzqB,IAAM8Y,EAAE9Y,WAClD,MAAP0Y,GAAeA,EAAIzvB,OAAS,GAlCxC,gCAoC0ByvB,GApC1B,2DAqCgB,OADKI,EApCrB,kBAqCsB4R,KAAY/Y,WAAWmH,EAAE9Y,IArC/C,wHAAAod,IAAA,oCA0CsBh9B,GA1CtB,8DA2C0B,OADT04B,EA1CjB,SA2CkBhsB,KA3ClB,wDA4CY,OA5CZ,UA4CkB49B,KAAYC,QAAQ7R,EAAE9Y,GAAI8Y,EAAEhsB,MA5C9C,eA6CmBgsB,EAAEpjB,aACFojB,EAAEhsB,KA9CrB,wHAAAswB,IAAA,qBAkDsB,OAlDtB,UAkD4Bqe,GAAiBr7C,EAAOqb,GAlDpD,eAkDQigC,EAlDR,yBAmDWA,GAnDX,4E,SAuDeD,G,qFAAf,WAAgCr7C,EAAOqb,GAAvC,sBAAAie,EAAA,sDAEI,IAASnrB,KADLmtC,EAAc,GACFt7C,EAERA,EAAMmO,KACAsH,EAAOzV,EAAMmO,IACfotC,EAAa,IAAIC,IAEVxI,MAAMv9B,EAAKmK,IACtB27B,EAAWrI,UAAUz9B,EAAK09B,QAC1BoI,EAAWnI,WAAW39B,EAAK6sB,SAC3BiZ,EAAWjI,QAAQ79B,EAAKkjB,MACxB4iB,EAAW7H,SAASj+B,EAAK4F,OACzBkgC,EAAW5H,QAAQ,UACnB4H,EAAW3H,YAAY,0BACvB2H,EAAW1H,YAAYp+B,EAAKq+B,UAC5ByH,EAAW3H,YAAYn+B,EAAKH,OACxBimC,EAAWX,iBACXU,EAAYltC,KAAKmtC,EAAWX,kBAlB5C,yBAsBWU,GAtBX,4C,sBAyBA,SAAUR,GAAavwC,GAAvB,4EAGyB,OAHzB,kBAG+BwvB,MAAMxvB,GAHrC,OAIsB,OADR0vB,EAHd,gBAI4BA,EAASQ,OAJrC,cAIcz6B,EAJd,OAMYs7C,EAAc,GAElBt7C,EAAMkO,SAAQ,SAACuH,EAAMzM,GAEjB,IAAIuyC,EAAa,IAAIC,GACrBD,EAAWvI,MAAMv9B,EAAKmK,IACtB27B,EAAWrI,UAAUz9B,EAAK09B,QAC1BoI,EAAWnI,WAAW39B,EAAK6sB,SAC3BiZ,EAAWjI,QAAQ79B,EAAKkjB,MACxB4iB,EAAW7H,SAASj+B,EAAK4F,OACzBkgC,EAAW3H,YAAYn+B,EAAKH,OAC5BimC,EAAWxH,OAAOt+B,EAAKlL,IAAMkL,EAAKlL,IAAMkL,EAAKxN,MAC7CszC,EAAW5H,QAAQ,QAEf4H,EAAWX,iBACXU,EAAYltC,KAAKmtC,EAAWX,oBArB5C,kBAyBeU,GAzBf,kCA4BQtpB,QAAQC,IAAR,MA5BR,uDAgCA,SAAU8oB,GAAYxwC,EAAK8Q,GAA3B,gFAEqB,OAFrB,SAE2B4X,kBAAOp1B,MAFlC,OAGuB,OADbE,EAFV,gBAG6Bk1B,kBAAOpxB,MAHpC,OAQmB,OAJf6yC,GADIA,EAHR,QAIgClc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,KACxC,GALhB,mBAQyBtd,EAASs3B,IAAI,kBAAoB2M,mBAAmBz3B,GAAM,GAAI,QAC1E43B,MAAK,SAAC7H,GAAD,OAAkBgb,SAAgBhb,MATpD,QAc0B,OANd/6B,EARZ,QAWaY,MAAQZ,EAAKY,MAAMoJ,MAAM,EAAG,IAE7BgvB,EAAWh5B,EAAKY,MAAMq4B,QAAO,SAAAyL,GAAC,eAA6B,IAAZ,QAAZ,EAAAyQ,SAAA,eAAc7rC,WAAsB,UAAC6rC,SAAD,OAAC,EAAc5d,MAAK,SAAA9tB,GAAC,MAAc,OAAVA,EAAEhC,MAAiBgC,EAAE4W,IAAMqkB,EAAErkB,IAAM5W,EAAE2rC,QAAUt5B,SAb3J,UAcgCk6B,GAAchd,GAd9C,eAiBQid,GAHIA,EAdZ,QAiBkCxqC,OAAO0pC,EAAalc,QAAO,SAAAxvB,GAAC,MAAc,OAAVA,EAAEhC,MAAiBgC,EAAE2rC,QAAUt5B,MAjBjG,kBAkBem6B,GAlBf,yCAqBQxjB,QAAQC,IAAI,oBArBpB,kBAsBe,IAtBf,uD,SA0BesjB,G,mFAAf,WAA6Bp1C,GAA7B,0BAAAm5B,EAAA,sDAEI,IAASnrB,KADLqnC,EAAc,GACFr1C,EACRA,EAAMgO,KACFsH,EAAOtV,EAAMgO,IAEbotC,EAAa,IAAIC,IACVtI,UAAWz9B,EAAK4hC,QAAQ,GAAK5hC,EAAK4hC,QAAQ,GAAGxY,KAAOyY,KAAKj8B,OACpEkgC,EAAWnI,WAAY39B,EAAK6sB,QAAU7sB,EAAK6sB,QAAU7sB,EAAK+uB,aAC1D+W,EAAWjI,QAAQ79B,EAAK8hC,WACxBgE,EAAW7H,SAASj+B,EAAK4F,OACzBkgC,EAAW3H,YAAX,UAAuBn+B,EAAK+hC,WAAW,UAAvC,aAAuB,EAAoBjtC,KAC3CgxC,EAAWxH,OAAX,UAAkBt+B,EAAKgiC,MAAM,UAA7B,aAAkB,EAAeltC,KACjCgxC,EAAWvI,MAAMv9B,EAAKmK,IACtB27B,EAAW5H,QAAQ,OAEf4H,EAAWX,iBACXpF,EAAYpnC,KAAKmtC,EAAWX,kBAjB5C,yBAsBWpF,GAtBX,4C,sBAyBA,SAAUwF,KAAV,4EAGyB,OAHzB,kBAG+BjhB,MAAM,oDAHrC,OAIsB,OADRE,EAHd,gBAI4BA,EAASQ,OAJrC,cAIcz6B,EAJd,OAMYs7C,EAAc,GAElBt7C,EAAMkO,SAAQ,SAACuH,EAAMzM,GAEjB,IAAIuyC,EAAa,IAAIC,GACrBD,EAAWvI,MAAMv9B,EAAKmK,IACtB27B,EAAWrI,UAAUz9B,EAAK09B,QAC1BoI,EAAWnI,WAAW39B,EAAK6sB,SAC3BiZ,EAAWjI,QAAQ79B,EAAKkjB,KAAM,uBAC9B4iB,EAAW7H,SAASj+B,EAAK4F,OACzBkgC,EAAW3H,YAAYn+B,EAAKH,OAC5BimC,EAAWxH,OAAOt+B,EAAKxN,MACvBszC,EAAW5H,QAAQ,WAEf4H,EAAWX,iBACXU,EAAYltC,KAAKmtC,EAAWX,oBArB5C,kBAyBeU,GAzBf,kCA4BQtpB,QAAQC,IAAR,MA5BR,uDAgCA,SAAUgpB,GAAmBlf,EAAM1G,EAAKha,EAAOE,GAA/C,qGACS8Z,EADT,uBAEQrD,QAAQC,IAAI,+BAFpB,0BAQ2B,OAR3B,SAOYwjB,EAAe,GAP3B,SAQiCxiB,kBAAOpxB,MARxC,OAUuB,OADf6yC,GADIA,EARZ,QASoClc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,GAASrS,EAAEhC,MAAQuU,KAT/E,UAU6B0X,kBAAO70B,MAVpC,QAWyB,OADXN,EAVd,iBAW+Bm1B,kBAAOp1B,MAXtC,QAY4B,OAZ5B,iBAYkCo1B,kBAAOj1B,MAZzC,kBAaaF,EAbb,wBAcYk0B,QAAQC,IAAI,kCAdxB,2BAkB2B,OAlB3B,UAkBiCn0B,EAAOu3B,IAAIA,EAAI7qB,SAAS,KAAO6qB,EAAMA,EAAM,0OAlB5E,WAqB4B,OAHhBqgB,EAlBZ,SAqBqCA,GAAiBA,EAAapuC,MArBnE,iBAsB2B,OAtB3B,UAsBiCxJ,EAAOu3B,KAAKA,EAAI7qB,SAAS,KAAO6qB,EAAI5qB,MAAM,KAAK,GAAK4qB,GAAO,4NAtB5F,QAsBYqgB,EAtBZ,kBAyB4B,MAAhBA,GAAyBA,GAAiBA,EAAapuC,MAzBnE,sDA0B0C,IAA9BouC,EAAapuC,MAAMuB,OA1B/B,mDA2C0B,OAfdtJ,EAAOm2C,EAAapuC,MAEpBixB,EAAWh5B,EAAKi5B,QAAO,SAAAyL,GAAC,eAA6B,IAAZ,QAAZ,EAAAyQ,SAAA,eAAc7rC,WAAsB,UAAC6rC,SAAD,OAAC,EAAc5d,MAAK,SAAA9tB,GAAC,MAAc,cAAVA,EAAEhC,MAAwBgC,EAAE4W,IAAM,YAAcqkB,EAAEkG,GAAGpU,kBAI/I4f,EAAWjB,EAAalc,QAAO,SAAAxvB,GAAC,OAAKzJ,EAAKu3B,MAAK,SAAAmN,GAAC,MAAI,YAAcA,EAAEkG,IAAMnhC,EAAE4W,QAAQ2Y,EAASzB,MAAK,SAAA4B,GAAC,MAAI,YAAcA,EAAEyR,IAAMnhC,EAAE4W,UAGvH,QAAR,EAAA2Y,SAAA,eAAU1vB,QAAS,IACnB0vB,EAAWA,EAASzD,KAAI,SAAU4D,GAAI,IAAD,EACjC,OAAO,2BAAKA,GAAZ,IAAeyR,GAAI,uBAAczR,EAAEyR,UAAhB,aAAc,EAAMpU,YAAYgG,KAAMA,QAvCzE,UA2CgC0f,GAAqBljB,GA3CrD,QAoEiC,OAzBrBid,EA3CZ,QA4CuB,QAAX,EAAAA,SAAA,eAAa3sC,QAAS,IACtB2sC,EAAcA,EAAY1gB,KAAI,SAAA9rB,GAE9B,OADAA,EAAE2rC,OAASt5B,EACJrS,OAGC,OAAR2sC,QAAQ,IAARA,OAAA,EAAAA,EAAU9sC,QAAS,IACnB6rC,EAAeA,EAAalc,QAAO,SAAAC,GAAC,OAAKkd,EAAS7e,MAAK,SAAA+e,GAAC,OAAIA,EAAEj2B,IAAM6Y,EAAE7Y,UAG1E61B,EAAel2C,EAAKi5B,QAAO,SAAAj5B,GACvB,OAAOm1C,EAAa5d,MAAK,SAAAuB,GACrB,GAAG94B,EAAKu2C,UAAYzd,EAAQob,cAAgC,cAAhBpb,EAAQrxB,MAAwBqxB,EAAQzY,IAAM,YAAargB,EAAK4qC,GAAGpU,WAC3G,OAAOx2B,SAKH,QAAZ,EAAAk2C,SAAA,eAAc5sC,QAAS,IACvB4sC,EAAeA,EAAa3gB,KAAI,SAAU4D,GACtC,OAAO,2BAAKA,GAAZ,IAAeyR,GAAI,YAAczR,EAAEyR,GAAGpU,WAAYgG,KAAMA,QAhExE,UAoEuC0f,GAAqBhG,GApE5D,eAoEYM,EApEZ,QAqE8B,QAAlB,EAAAA,SAAA,eAAoBltC,QAAS,IAC7BktC,EAAqBA,EAAmBjhB,KAAI,SAAA9rB,GAE5C,OADAA,EAAE2rC,OAASt5B,EACJrS,OAEW,QAAlB,EAAA+sC,SAAA,eAAoBltC,QAAS,IAC7B6rC,EAAeA,EAAalc,QAAO,SAAAH,GAAO,OAAK0d,EAAmBjf,MAAK,SAAAkf,GAAM,MAAoB,cAAhB3d,EAAQrxB,MAAwBqxB,EAAQzY,IAAMo2B,EAAOp2B,UA3ElJ,yCAgFkB41B,GAhFlB,aAgFkCd,GAhFlC,aAgFmDqB,KAhFnD,yCAiFmB/jB,QAAQ2H,MAAR,MAAmB3H,QAAQC,IAAI,kCAjFlD,kBAiF4F,IAjF5F,uDAqFA,SAAUqiB,GAAY/b,GAAtB,kFAG6B,OADrBvP,EAAQ,GAFhB,SAGmCiK,kBAAO70B,MAH1C,YAGUC,EAHV,wBAK4C,OAL5C,SAKkDA,EAAiBu8B,WALnE,OAK0Bqb,EAL1B,cAOqB,OAPrB,UAO2BhjB,kBAAOp1B,MAPlC,QAQkB,OADRE,EAPV,iBAQwBA,EAAS68B,WARjC,WAQQqB,EARR,OAWIjT,EAAQuP,EAASzD,IAAT,yCAAa,WAAOrf,EAAMyuB,GAAb,kBAAA5K,EAAA,yDAEA,cAAb7jB,EAAKzO,KAFQ,oBAKRkvC,MAAMxV,SAASjrB,EAAK09B,SALZ,gCAMc90C,EAAiBg3B,IAAI5f,EAAKsmB,KAAO,yBAA2BtmB,EAAK09B,OAAS,KANxF,QAMTgD,EANS,SAUDA,EAAe5R,QAEfhM,EAAS2L,GAAOiP,OAASgD,EAAe5R,OAZvC,cAkBP6R,EAlBO,iCAAA9c,EAAA,MAkBO,2CAAAA,EAAA,yDACK,0BAAjB7jB,EAAKgtB,SADO,yCACsC,CAAEA,SAAU,OADlD,WAEiC,IAA7C,UAAAhtB,EAAKgtB,gBAAL,eAAen6B,QAAQ,mBAFX,yCAE2C,CAAEm6B,SAAUhtB,EAAKgtB,WAF5D,cAIZ4T,EAAa3rC,aAAgB+K,EAAK6gC,WAAa7gC,EAAK6gC,WAAa7gC,EAAKgtB,SAAU,GAChFl4B,EAAMy3B,mBAAmBqU,GALb,SAQCtc,MAAM,qBAAD,OAAsBxvB,GAAO,CAC/CgwB,OAAQ,MACR0H,YAAa,aACbjI,QAAS,CACL,cAAiB,UAAYiC,EAAS,mBAAsBga,KAEjE7b,OAAM,SAACC,GAAU,OAAO,QAdX,WAQhBJ,EARgB,SAgBEA,EAASC,GAhBX,0CAgBsB,MAhBtB,yBAkBMD,EAASoI,OAlBf,QAkBVC,EAlBU,OAmBA,GAnBA,UAuBRA,IAAS51B,EAAOvE,aAAcm6B,IAvBtB,4EAwBM,MAxBN,WA0BX51B,IAAQypC,EA1BG,kCA2BOl4C,YAAYo3B,IAAI,UAAY8gB,EAAc,kBAAwB,gBAAiB,eA3B1F,QA2BRxgB,EA3BQ,OA4BRrgB,EAAQ,0BAA4B,IAAIugB,UAAOF,EAAQ,UAAUI,SAAS,UAC9ErpB,EAAOvE,aAAcmN,GA7BT,WAgCX5I,EAhCW,0CAgCE,MAhCF,yBAiCV49B,KAAYC,QAAQ90B,EAAKmK,GAAIlT,GAjCnB,iCAmCT,CACH+1B,SAAU,yBACV6T,WAAY7gC,EAAK6gC,WAAa7gC,EAAK6gC,WAAa7gC,EAAKgtB,WArCzC,2DAlBP,8DA2DW6H,KAAYiM,QAAQhe,EAAS2L,GAAOtkB,IA3D/C,UA4DM,OADf42B,EA3DS,SA4D6B,IAAfA,EA5Dd,kCA4DqDJ,IA5DrD,QA4DiCI,EA5DjC,eA6DTA,IAAaje,EAAS2L,GAAT,2BAAuB3L,EAAS2L,IAAWsS,IA7D/C,4CAAb,0DAiEJxtB,EAAMngB,OA5Ed,iBA6EQ,OA7ER,UA6EcmD,QAAQonB,IAAIpK,GA7E1B,iCAgFWuP,GAhFX,yC,SAmFekjB,G,mFAAf,WAAoCz7C,GAApC,8BAAAs5B,EAAA,sDAEI,IAASnrB,KADLmtC,EAAc,GACFt7C,EACRA,EAAMmO,KACAsH,EAAOzV,EAAMmO,GAEf5D,EAAMD,aAAmBmL,EAAK9J,KAAK,cACnC4vC,EAAa,IAAIC,IACVtI,UAAUz9B,EAAI,cAAoBA,EAAI,cAAoBA,EAAI,SAAeA,EAAI,SAAeA,EAAKimC,OAASjmC,EAAKimC,OAAL,GAAoBjmC,EAAKimC,QAClJH,EAAWnI,WAAW39B,EAAKuhC,eAAiBC,GAAuBxhC,EAAKuhC,eAAgBzsC,EAAtB,UAA2BkL,EAAK9J,YAAhC,aAA2B,EAAWurC,kBAAmB/oC,GAAMsH,EAAK4uB,YAAc5uB,EAAK4uB,YAAc,IACvKkX,EAAWjI,QAAQ79B,EAAK0hC,mBAAqB1hC,EAAK0hC,mBAAqB1hC,EAAKgvB,SAC5E8W,EAAW7H,SAASj+B,EAAK8uB,OACzBgX,EAAW/H,gBAAgB/9B,EAAKqgC,UAChCyF,EAAWvI,MAAMv9B,EAAK00B,IACtBoR,EAAW5H,QAAQ,cACnB4H,EAAWxH,OAAOxpC,EAAIS,OAAJ,UAAWyK,EAAK9J,YAAhB,aAAW,EAAWurC,oBACxCqE,EAAWd,iBAAgB,GAC3Bc,EAAW3H,YAAX,UAAuBn+B,EAAK2hC,sBAA5B,aAAuB,EAAqBnS,KAC5CsW,EAAWlI,QAAQ59B,EAAKsmB,MAEpBwf,EAAWX,iBACXU,EAAYltC,KAAKmtC,EAAWX,kBArB5C,yBAyBWU,GAzBX,4C,sBA4BA,SAASrE,GAAuB3U,EAAS0B,EAAM0T,EAAOvpC,GAClD,IAAKm0B,EAAS,MAAO,GACrB,IAOQqV,EACAC,EA0BJG,EA/BEF,EAAQ,4DAERC,EAAc,gDAMhB,GAFAH,EAASrV,EAAQgD,MAAMwS,GACvBF,EAAWtV,EAAQgD,MAJD,uCAKfqS,GAAUC,EAAU,CACnBtV,EAAUA,EAAQz3B,QAAQitC,EAAa,IACvC,IAFmB,eAEX9uC,GACD2uC,EAAO3uC,IAAM4uC,EAAS5uC,KACrBs5B,EAAUA,EAAQz3B,QAAQ+sC,EAAS5uC,IAAI,SAASs8B,EAAO9L,GACpD,OAAQoe,EAAS5uC,GAAG2uC,EAAO3uC,QAH9BA,EAAI,EAAGA,EAAE2uC,EAAO9uC,OAAQG,IAAM,EAA9BA,GAsBhB,IAHAs5B,GAFAA,GAFAA,GAJAA,GAJAA,EAAUA,EAAQz3B,QApBL,cAoBmB,SAAUy6B,EAAO9L,GAC7C,MAAO,yBAA2BwK,EAAO,QAG3Bn5B,QAvBN,aAuBmB,SAAUy6B,EAAO9L,GAC5C,MAAO,QAAUwK,EAAO,QAGVn5B,QAxBC,wFAwBmB,KAEpBA,QA5BN,qDA4BmB,KAEbA,QAAQ,WAAY,MAG/BktC,EAAOF,EAAMI,KAAK3V,IAAU,CAC/B,IAAI4V,EAAQH,EAAK,GAAGltC,QAAQ,UAAW,iBACnCktC,EAAK,KAAIzV,EAAUA,EAAQz3B,QAAQktC,EAAK,GAArB,wKAAsLI,UAAUD,GAAhM,wLAG3B,OAAO5V,EAGI,SAAU1Q,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAKwnB,MAFE,wC,iBClnBEc,I,aAkDQ/pB,IAhEnBgqB,GAAmB,SAACC,EAAQC,GAK9B,IAJA,IAAIjzC,EAASgvB,KAAKkkB,IAAIF,EAAOhzC,OAAQizC,EAAOjzC,QACtBmzC,EAAkB,EACpCzjB,EAAW,GAEN2L,EAAQ,EAAGA,EAAQr7B,EAAQq7B,IAC3B4X,EAAOhlB,MAAK,SAAAwC,GAAC,OAAIA,EAAE1Z,IAAMi8B,EAAO3X,GAAOtkB,QACxCo8B,IACAzjB,EAASnqB,KAAKytC,EAAO3X,GAAOtkB,KAGpC,MAAO,CAAEq8B,WAAYD,EAAiBzjB,SAAUA,IAG7C,SAAUojB,KAAV,kEACH,OADG,SACG9pB,qBAAUzsB,KAAQ82C,uBAAT,WAAiC,WAAW/sB,GAAX,sFAG5C,MADgB,GAF4B,SAGtC4D,eAAI,CACN/rB,KAAM5B,KAAQuqB,uBACdxoB,SAAS,IAL+B,OAO7B,OAP6B,SAOvB8rB,kBAAOp1B,MAPgB,OASzB,OAFbC,EAPsC,gBASnBm1B,kBAAO5wB,MATY,UASxC85C,EATwC,OAYzB,OADbC,EAAc3mB,KAAKY,MAAL,UAAW1yB,OAAOC,oBAAlB,aAAW,EAAqBrB,QAXR,mDAcxCA,EAAQ,GACE4sB,EAAOhoB,QAAQkU,MAfe,eAiBzB+gC,GAjByB,kHAkB7B,OADN7f,EAjBmC,8BAkBpC+a,EAlBoC,OAmBvCx5C,EAAOu3B,IAAI,gBAAkBkH,EAAOhyB,IAAK,GAAI,QACzC43B,MAAK,SAAC7H,GAAD,OAAkBgb,SAAgBhb,MAExC6hB,EAAarlB,MAAK,SAAAkG,GAAC,OAAIA,EAAE3hB,OAASi8B,EAAKj8B,UACnCghC,EAAUF,EAAa55C,MAAMu0B,MAAK,SAAAkG,GAAC,OAAIA,EAAE3hB,OAASi8B,EAAKj8B,SAC3Di8B,EAAKgF,YAAcD,EAAQC,YAC3BhF,EAAK/e,SAAW8jB,EAAQ9jB,SAEpBgkB,EAAaX,GAAiBtE,EAAKn3C,MAAOk8C,EAAQl8C,OACtDm3C,EAAKgF,YAAchF,EAAKgF,YAAcC,EAAWN,WACjD3E,EAAK/e,SAASnqB,KAAKmuC,EAAWhkB,YAE9B+e,EAAKgF,YAAc,EACnBhF,EAAK/e,SAAW,IAEpBh2B,EAAM6L,KAAKkpC,GAlC6B,uPAAAta,IAAA,qBAqC5C,OArC4C,UAqCtCjK,eAAI,CACN/rB,KAAM5B,KAAQwqB,uBACdzoB,QAAS5E,IAvC+B,QAyC5C,OAzC4C,UAyCtCwwB,eAAI,CACN/rB,KAAM5B,KAAQuqB,uBACdxoB,SAAS,IA3C+B,iEAD7C,wCAkDQ,SAAUyqB,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAKsoB,MAFE,wC,IC8BAa,G,cAnGX,aAAe,IAAD,iCAgBdxJ,MAAQ,SAAC5J,GACL,EAAKqT,YAAL,2BACO,EAAKA,aADZ,IAEI78B,GAAKwpB,KAnBC,KAuBdsT,cAAgB,SAAChC,GACb,EAAK+B,YAAL,2BACO,EAAKA,aADZ,IAEIE,WAAajC,KA1BP,KA8BdkC,SAAW,SAACC,GACR,EAAKJ,YAAL,2BACO,EAAKA,aADZ,IAEIK,MAAQD,KAjCF,KAqCd3J,UAAY,SAACC,GACT,EAAKsJ,YAAL,2BACO,EAAKA,aADZ,IAEItJ,OAASA,KAxCH,KA4CdoF,UAAY,SAACC,GACT,EAAKiE,YAAL,2BACO,EAAKA,aADZ,IAEIjE,OAAQA,KA/CF,KAmDdpF,WAAa,SAAC9Q,GACV,EAAKma,YAAL,2BACO,EAAKA,aADZ,IAEIna,QAAUA,KAtDJ,KAyDdya,aAAe,SAACC,GACZ,EAAKP,YAAL,2BACO,EAAKA,aADZ,IAEIzjB,KAAOgkB,EACPjpB,OAAQA,KAAOiF,KAAKgkB,MA7Dd,KAiEdtJ,SAAW,SAACr4B,GACR,EAAKohC,YAAL,2BACO,EAAKA,aADZ,IAEIphC,MAAQA,KApEF,KAwEds4B,QAAU,SAAC3sC,GACP,EAAKy1C,YAAL,2BACO,EAAKA,aADZ,IAEIz1C,KAAOA,KA3ED,KA+Ed4sC,YAAc,SAACnR,GACX,EAAKga,YAAL,2BACO,EAAKA,aADZ,IAEIha,SAAWA,KAlFL,KAsFdsR,OAAS,SAACxR,GACN,EAAKka,YAAL,2BACO,EAAKA,aADZ,IAEIlyC,IAAMg4B,KAzFA,KA6Fd0a,gBAAkB,WAEd,OAAO,EAAKR,aA9FZxhB,KAAKwhB,YAAc,CACftJ,QAAS,EACTna,MAAO,EACPjF,QAAS,EACT1Y,MAAQ,GACRonB,UAAW,EACXl4B,KAAM,EACNqV,IAAK,EACL5Y,MAAM,EACN81C,MAAQ,EACRH,YAAY,EACZnE,QAAQ,M,aCHH0E,I,aAqHPC,I,aA6CAC,I,aA2GO7I,I,aAgBAC,I,aAyIQ5iB,IAtalB,SAAUsrB,KAAV,kEACH,OADG,SACGrrB,qBAAUzsB,KAAQ8gB,8BAAT,WAAwC,WAAWiJ,GAAX,oHAEnD,OAFmD,SAE7C4D,eAAI,CACN/rB,KAAM5B,KAAQghB,yBACdjf,SAAS,IAJsC,OAOhC,OADfoxB,EAAW,GANoC,SAO1BtF,kBAAOzwB,MAPmB,UAO/CkyC,EAP+C,OAS7Cr5B,EAAQ8T,EAAOhoB,QAAQkU,QACvBuhB,EAAUzN,EAAOhoB,QAAQA,SAVoB,gCAc5By1B,GAd4B,8DAgBtB,YAFhBrhB,EAdsC,SAgBhCA,OAhBgC,iBAiB3B,OAjB2B,UAiBrBwW,gBAAKorB,GAAiB5hC,EAAOwgB,KAAMxgB,EAAOhR,IAAKgR,EAAO+mB,QAAS/mB,EAAO8hC,WAAYhiC,GAjB7D,QAiBnClb,EAjBmC,OAkBlB,IAAZ,QAAL,EAAAA,SAAA,eAAO0I,QACP1I,EAAQu0C,EAAalc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,MACjC,QAAL,EAAAlb,SAAA,eAAO0I,QAAS,IACvB1I,EAAQA,EAAM20B,KAAI,SAAA9rB,GAAyB,OAAlBA,EAAE2rC,OAASt5B,EAAcrS,MAGlD7I,IACAo4B,EAAQ,uBACDA,GADC,aAEDp4B,KA3B4B,WAgCtB,UAAjBob,EAAOA,OAhCgC,iBAiC3B,OAjC2B,UAiCrBwW,gBAAKqrB,GAAgB/hC,GAjCA,QAiCnClb,EAjCmC,OAkClB,IAAZ,QAAL,EAAAA,SAAA,eAAO0I,QACP1I,EAAQu0C,EAAalc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,MACjC,QAAL,EAAAlb,SAAA,eAAO0I,QAAS,IACvB1I,EAAQA,EAAM20B,KAAI,SAAA9rB,GAAyB,OAAlBA,EAAE2rC,OAASt5B,EAAcrS,MAGlD7I,IACAo4B,EAAQ,uBACDA,GADC,aAEDp4B,KA3C4B,wHAAA68B,IAAA,qBA8DpC,OAZTqJ,EAAc,SAAC/M,EAAGgN,GACpB,OAAIhN,EAAEN,KAAOsN,EAAEtN,MACH,EAGRM,EAAEN,KAAOsN,EAAEtN,KACJ,EAGJ,GA3DwC,UA8D9B/F,kBAAOzwB,MA9DuB,WA+DnDkyC,GADAA,EA9DmD,QA+DvBlc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,KAGpDkd,EAASmO,KAAKL,GAGd9N,EAAWA,EAASM,OAAO,EAAG,IAE1BP,EAAMoc,EAAalc,QAAO,SAAAE,GAAC,OAAKH,EAASzB,MAAK,SAAAuT,GAAE,OAAIA,EAAGzqB,IAAM8Y,EAAE9Y,YAC5D,OAAH0Y,QAAG,IAAHA,OAAA,EAAAA,EAAKzvB,QAAS,GAAK0vB,EAAS1vB,OAAS,GAxEU,gCAyEjCyvB,GAzEiC,2DA0E3C,OADKI,EAzEsC,kBA0ErC4R,KAAY/Y,WAAWmH,EAAE9Y,IA1EY,wHAAAod,IAAA,2BA8E3C,OAAH1E,QAAG,IAAHA,OAAA,EAAAA,EAAKzvB,QAAS,GAAK0vB,EAAS1vB,OAAS,GAA+B,IAAZ,QAAZ,EAAA6rC,SAAA,eAAc7rC,UAAuB,QAAR,EAAA0vB,SAAA,eAAU1vB,QAAS,IAAmB,QAAZ,EAAA6rC,SAAA,eAAc7rC,WAAd,UAAyB0vB,SAAzB,aAAyB,EAAU1vB,SAAU0vB,EAAS1vB,OAAS,GA9EpH,iBAmFhC,OAnFgC,UAmF1BoqB,kBAAOzwB,MAnFmB,QAuF/C,OAFAyyC,GADAA,GADIA,EAnF2C,QAoF3Bzc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,MACxBrQ,OAAOutB,GArFoB,UAuFzCxF,eAAI,CACN/rB,KAAM5B,KAAQ6gB,8BACd9e,QAAS8tC,IAzFkC,QA6FnD,OA7FmD,UA6F7CliB,eAAI,CACN/rB,KAAM5B,KAAQghB,yBACdjf,SAAS,IA/FsC,+EADpD,wCAqHP,SAAUg2C,GAAgBphB,EAAMnC,EAAQ0I,EAASqa,EAAYthC,GAA7D,qFAESue,EAFT,uBAGQ5H,QAAQC,IAAI,4BAHpB,0BAO4B,OAP5B,kBAOkCgB,kBAAOzwB,MAPzC,OAQyB,OARzB,gBAQ+BywB,kBAAOp1B,MARtC,UAQcE,EARd,OASYu/C,EAAavpB,OAASwpB,UAEtBC,GAAS,IAAI3pB,MAAO4pB,oBACxBH,GAAqC,IAATE,EAAc,KASd,GAAxB5jB,EAAOtxB,QAAQ,OACkB,KAA7BsxB,EAAOA,EAAO/wB,OAAS,KAAW+wB,GAAU,KAChDA,GAAU,gCAAkC0jB,EAAa,YAGxDv/C,EA1Bb,mDA2BsB,OA3BtB,UA2B4BA,EAASs3B,IAAI,kBAAoB2M,mBAAmBpI,GAAU,gBAAiB,GAAI,QA3B/G,aA2Bcz5B,EA3Bd,oCA6BgBu9C,EA7BhB,UA6B+BjoB,KAAKY,MAAMl2B,UA7B1C,aA6B+B,EAAmBw9C,aA7BlD,IAgCgBD,MAAc70C,OAhC9B,iBAiCuB,OAjCvB,UAiC6B+0C,GAAmBF,EAAc3hB,EAAMnC,EAAQ0I,EAASqa,GAjCrF,mGAsCQ3qB,QAAQC,IAAR,MAtCR,kCAyCW,GAzCX,uDA6CA,SAAUmrB,GAAe/hC,GAAzB,sFAMuB,OANvB,SAM6B4X,kBAAOzwB,MANpC,OAQmB,OADfkyC,GADIA,EANR,QAOgClc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,KAPxD,SAQyB4X,kBAAO30B,MARhC,OASqB,OADXR,EARV,gBAS2Bm1B,kBAAOp1B,MATlC,OAUwB,OAVxB,iBAU8Bo1B,kBAAOj1B,MAVrC,kBAYSF,EAZT,mDAeiB,OAfjB,UAeuBA,EAAOu3B,IAAI,6DAflC,WAeQ0jB,EAfR,OAiBQhwB,EAAW,GAED,MAAVgwB,GAAmBA,EAnB3B,sDAoB0B,IAAlBA,EAAOlwC,OApBf,sDAsBkB,MAAVkwC,EAtBR,iBAuBY54C,EAAQ44C,EAAOE,WAAWzgB,QAAO,SAAA0gB,GAAC,OAAuB,IAAnBA,EAAEC,cAAmC,UAAVD,EAAElyC,QACvE+hB,EAAWgwB,EAAOhwB,SAASyP,QAAO,SAAA0gB,GAAC,OAAI/4C,EAAM22B,MAAK,SAAAwC,GAAC,OAAIA,EAAE1Z,IAAMs5B,EAAEt5B,SAxBzE,eA2BsBmJ,GA3BtB,+HA2BiBmwB,EA3BjB,QA4BgB5f,EAAIn5B,EAAM22B,MAAK,SAAAwC,GAAC,OAAIA,EAAE1Z,IAAMs5B,EAAEt5B,MAClCs5B,EAAEE,UAAY9f,EAEVtD,EAAO+iB,EAAOE,WAAWniB,MAAK,SAAA/oB,GAAC,OAAIA,EAAE6R,IAAMs5B,EAAEG,aACjDH,EAAEljB,KAAOA,IAELwiB,EAlChB,UAkCyBO,EAAOE,WAAWniB,MAAK,SAAA/oB,GAAC,OAAIA,EAAE6R,IAAMs5B,EAAEt5B,aAlC/D,aAkCyB,EAA2C44B,QAlCpE,iBAqCgBU,EAAEV,OAAS,GArC3B,eAsC8BA,GAtC9B,0DAuCgC,OADPc,EAtCzB,kBAuCsCx7C,EAAOu3B,IAAP,+CAAmDikB,EAAE15B,GAArD,UAvCtC,QAwCiC,OADT25B,EAvCxB,SAwCuCL,EAAEV,OAAOpqC,KAAKmrC,GAxCrD,uHAAAvc,IAAA,yRAAAA,IAAA,yBA8CQjU,EAASlgB,UAAoC,IAAxB6rC,EAAa7rC,QAAkB6rC,GAAgBA,EAAa,GAAG90B,KAAOmJ,EAAS,GAAGnJ,IA9C/G,iBA+Ce,OA/Cf,UA+CqBi+B,GAAiB90B,GA/CtC,iDAiDe,OAjDf,UAiDqB80B,GAAiB90B,GAjDtC,2EAmDW,GAnDX,8D,SAsDe80B,G,mFAAf,WAAgC19C,GAAhC,gCAAAm5B,EAAA,sDAEI,IAASnrB,KADL2vC,EAAa,GACD39C,EACRA,EAAMgO,KACAsH,EAAOtV,EAAMgO,IAEf4vC,EAAe,IAAIvB,IACVtJ,UAAb,UAAuBz9B,EAAKugB,YAA5B,aAAuB,EAAW4jB,WAClCmE,EAAa3K,WAAW4K,GAAkB,UAACvoC,EAAK+kB,YAAN,aAAC,EAAWqf,OACtDkE,EAAahB,aAAb,UAA0BhpB,KAAOte,EAAKqkC,mBAAtC,aAA0B,EAAyByD,WACnDQ,EAAahK,OAAOt+B,EAAKskC,SACzBgE,EAAa/K,MAAM,GAAKv9B,EAAKmK,IAC7Bm+B,EAAanB,SAAb,UAAsBnnC,EAAKwoC,gBAA3B,aAAsB,EAAengB,OACrCigB,EAAapK,QAAQ,UAEF,MAAfl+B,EAAK+iC,QAAkB/iC,EAAK+iC,QAC5BuF,EAAaxF,UAAU9iC,EAAK+iC,QAGhCuF,EAAanK,YAAb,UAAyBn+B,EAAKugB,YAA9B,aAAyB,EAAWgkB,aAEhC+D,EAAad,mBACba,EAAW1vC,KAAK2vC,EAAad,oBAtB7C,yBA0BWa,GA1BX,4C,sBA6BA,IAAME,GAAqB,SAAC1b,GAqBxB,OAFAA,GARAA,GAPAA,EAAUA,EAAQz3B,QAHL,+BAGmB,SAAUy6B,EAAO9L,GAC7C,IAAIne,EAAQiqB,EAAMA,MAAM,UACpBr9B,EAAOq9B,EAAMA,MAAM,wBACvB,OAAgB,MAAZjqB,EAAM,IAAyB,MAAXpT,EAAK,GAAmB,GAC1C,sDAAN,OAA4DoT,EAAM,GAAlE,4FAAuJpT,EAAK,GAA5J,aAGc4C,QATJ,yBASmB,SAAUy6B,EAAO9L,GAClC8L,EAAMA,MAAM,cACxB,OAAOA,MAMOz6B,QAAQ,kBAAmB,YAK1C,SAAU0pC,KAAV,kEACH,OADG,SACG1iB,qBAAUzsB,KAAQihB,uBAAT,WAAiC,WAAW8I,GAAX,qEACtB,MAAlBA,EAAOhoB,QADiC,iDAG5C,OAH4C,SAGtC4rB,eAAI,CACN/rB,KAAMuwB,IAAY9wB,qBAClBU,QAAS,CACLG,MAAO6nB,EAAOhoB,QACdI,QAAS,kBAP2B,2CAD7C,wCAgBA,SAAUitC,KAAV,wEAyEH,OAvEMiC,EAFH,WAEY,SAATA,IAAS,kGAEG,OAFH,SAESxjB,kBAAOzwB,MAFhB,OAGE,OADPrC,EAFK,gBAGQ8yB,kBAAO3zB,MAHf,OAIO,OADZC,EAHK,gBAIa0zB,kBAAOpzB,MAJpB,OAKa,OADlBw+B,EAJK,iBAKmBpL,kBAAOlwB,MAL1B,WAKLm7C,EALK,OAOC,MAAR3+C,GAAiB8+B,GAAc6f,GAAoC,IAAZ,OAAL/9C,QAAK,IAALA,OAAA,EAAAA,EAAO0I,QAPlD,oDASP6tC,EATO,UASOn3C,EAAKupB,gBATZ,aASO,EAAeq1B,gBAE7BzH,EAAc,IAGdE,EAAY,GAdL,eAgBMz2C,GAhBN,IAgBX,IAhBW,iBAgBFsV,EAhBE,QAmBP,GAAKihC,EAAY7tC,OAEV,CAEH,IAAIiuC,EAAaJ,EAAY5f,MAAK,SAAC9tB,GAAD,OAAOA,EAAE4W,KAAOnK,EAAKmK,MACvDnK,EAAKohC,QAAS,EACVC,GACIA,EAAWD,SACXphC,EAAKohC,QAAS,QAPtBphC,EAAKohC,QAAS,EAYbH,EAAY5f,MAAK,SAAC9tB,GAAD,OAAOA,EAAE4W,KAAOnK,EAAKmK,OACvCg3B,EAAUxoC,KAAK,CACXwR,GAAInK,EAAKmK,GACTi3B,OAAQphC,EAAKohC,OACblC,OAAQl/B,EAAKk/B,UApBzB,uBAAyB,IAhBd,0BAAA3X,IAAA,eA0CM0Z,GA1CN,IA0CX,IA1CW,iBA0CFjhC,EA1CE,QA2CStV,EAAM22B,MAAK,SAAC9tB,GAAD,OAAOA,EAAE4W,KAAOnK,EAAKmK,OAE5Cg3B,EAAUxoC,KAAK,CACXwR,GAAInK,EAAKmK,GACT+0B,OAAQl/B,EAAKk/B,OACbkC,OAAQphC,EAAKohC,UANzB,uBAA+B,IA1CpB,0BAAA7Z,IAAA,IAuDc,GAApB4Z,EAAU/tC,QAAqC,GAAtB6tC,EAAY7tC,SACrC4sB,KAAKC,UAAUkhB,EAAU9hB,KAAI,SAAA4D,GAAC,OAAIA,EAAE9Y,QAAQ6V,KAAKC,UAAUghB,EAAY5hB,KAAI,SAAA4D,GAAC,OAAIA,EAAE9Y,QACnF,UAACrgB,EAAKupB,gBAAN,OAAC,EAAeq1B,aAzDT,iBA4DP,OADAnsB,QAAQC,IAAI,sBA3DL,UA4DDc,eAAI,CACN/rB,KAAMuwB,IAAY9wB,qBAClBU,QAAS,CACLG,MAAOsvC,EACPrvC,QAAS,kBAhEV,qCAATkvC,MAFH,SAyEG5kB,qBAAU0F,IAAYhxB,uBAAb,WAAqC,WAAW4oB,GAAX,kEAC9B,OAD8B,SACxB8D,kBAAOlwB,MADiB,kCAI5C,OAJ4C,SAItC0zC,IAJsC,2CAzEjD,OAkFH,OAlFG,SAkFG5kB,qBAAUzsB,KAAQghB,yBAAT,WAAmC,WAAW+I,GAAX,wEAC5B,OAD4B,SACtB8D,kBAAOpzB,MADe,UACxCw+B,EADwC,QAGvB,IAAnBlP,EAAOhoB,UAAoBk3B,EAHe,gBAI1C,OAJ0C,SAIpCoY,IAJoC,2CAlF/C,wCA4FP,SAAS2H,GAAoB9b,GAQzB,OAJAA,EAAUA,EAAQz3B,QAFL,WAEmB,SAAUy6B,EAAO9L,GAC7C,MAAO,2B,SAMAokB,G,2FAAf,WAAkCF,EAAc3hB,EAAMxxB,EAAK+3B,EAASqa,GAApE,0BAAArjB,EAAA,sDAEI,IAASnrB,KADLkwC,EAAe,GACHX,EACRA,EAAavvC,KACPsH,EAAOioC,EAAavvC,IAEtB4vC,EAAe,IAAIvB,IACVtJ,UAAUz9B,EAAK6oC,gBAC5BP,EAAa3K,WAAWgL,GAAoB3oC,EAAKib,UAE7C8sB,GAAS,IAAI3pB,MAAO4pB,oBACpBT,EAAYvnC,EAAK8oC,UAAuB,IAATf,EAAc,IAEjDO,EAAahB,aAAaC,GAC1Be,EAAahK,OAAOhY,GACpBgiB,EAAarB,cAAcC,GAC3BoB,EAAa/K,MAAM,WAAav9B,EAAK00B,IACrC4T,EAAapK,QAAQ,WACrBoK,EAAanB,SAASnnC,EAAK+oC,OAEF,MAArB/oC,EAAKgpC,aACLV,EAAanK,YAAY,0BAEzBmK,EAAanK,YAAY7X,EAAOtmB,EAAKgpC,aAAa5zC,QAAQ,WAAY,cAGtEkzC,EAAad,mBACboB,EAAajwC,KAAK2vC,EAAad,oBA3B/C,yBA+BWoB,GA/BX,4C,sBAkCe,SAAUzsB,KAAV,kEACX,OADW,SACLwB,eAAI,CACNC,gBAAK6pB,IACL7pB,gBAAKmhB,IACLnhB,gBAAKkhB,MAJE,wC,2BC9XU3iB,IAAV,SAAUA,GAAS8sB,GAAnB,kEACd,OADc,SACRtrB,eAAI,CACTurB,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACMC,KACNC,KACAC,KACAC,KACAC,KACMC,eACAC,KACNC,KACAC,KACMC,KACNC,eACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,eAEAC,KACAC,KACAC,OA5Ca,wC,iCC3CT3W,IAAU4W,EADM3tB,EAAQ,IAAW4tB,wBAEnCC,GAAoBC,4BAAiB/W,IAErCgX,GAAiBC,oBACjBC,GAAc,CAACF,GAAgBF,IAM/BK,GAAgB,CAClBzzC,IAAK,OACL0zC,QAASvwB,KACTwwB,UAAW,CAAC,gBAAiB,SAAS,UAAW,OAAQ,UAAW,WAAY,QAAS,eAAgB,eAGvGC,GAAmBC,aAAeJ,GAAexwB,IAiBxC6wB,WAff,SAAwBC,GACpB,IAAM1X,EAAQ2X,sBACVJ,GACAK,kBAAQC,kBAAe,WAAf,EAAmBV,MAE3BW,EAAYC,aAAa/X,GAM7B,OALG7mC,OAAO6+C,cACNF,EAAUG,QAEdhB,GAAeiB,IAAI9wB,IAEZ,CAAE4Y,QAAO8X,YAAW7X,YAIhBwX,I,6BC1Cf,IAAM78C,EAAU,CACf0rB,eAAiB,iBACdgB,iBAAmB,mBACtBkB,+BAAiC,iCACjC2vB,aAAe,SAACx7C,GAAD,MAAc,CAC5BH,KAAO5B,EAAQ0rB,eACf3pB,QAAUA,IAGRsqB,eAAiB,SAACtqB,GAAD,MAAc,CACjCH,KAAO5B,EAAQ0sB,iBACf3qB,QAAUA,KAIG/B,O,6BCff,IAAMA,EAAU,CACf82C,uBAAyB,yBACzBtsB,uBAAyB,yBACzBC,qBAAuB,uBACvBF,uBAAyB,yBACzBttB,qBAAuB,SAAE8E,EAASkU,GAAX,MAAuB,CAC7CrU,KAAO5B,EAAQ82C,uBACf/0C,QAAU,CAAEkU,MAAOA,EAAOlU,QAASA,KAEpCy7C,kBAAoB,SAAEz7C,GAAF,MAAgB,CACnCH,KAAO5B,EAAQyqB,qBACf1oB,QAAUA,KAIG/B,O,yDCXTy9C,EAAar7B,UAAOC,IAAV,iWAKAS,IACLA,IACDA,KAeK26B,O,gDCxBFC,E,KAAat7B,QAAOC,IAAV,uN,eCgBRs7B,uBANS,SAACrmD,EAAOsmD,GAC5B,MAAO,CACHr5B,SAAUjtB,EAAM8yB,OAAO7F,YAIhBo5B,EAdI,SAAAr7B,GAAK,OACvB,cAAC,EAAD,CAAmBa,UAAYb,EAAMiC,SAAW,WAAa,S,sGCFjDs5B,EAAS,SAAAv7B,GAAK,OAAIw7B,cAAJ,ifAeJC,MAaG37B,UAAOC,IAAV,8GAQWD,UAAOC,IAAV,sZAgBR07B,KAIG37B,UAAOC,IAAV,8CAIED,UAAOC,IAAV,2jBA0BC07B,M,gPChFVC,EAAU57B,UAAOC,IAAV,oFACF,SAAAC,GAAK,OAAKA,EAAM27B,aAAwB37B,EAAM27B,aAAe,KAA9B,UAExC,SAAA37B,GAAK,OAAKA,EAAM47B,eAAgC,GARvC,mEAWf,SAAA57B,GAAK,OAAIA,EAAM67B,SAAW,UAAY77B,EAAM67B,SAAW,IAAM,MAC7D,SAAA77B,GAAK,OAAIA,EAAM87B,OAAS,yDAA2D,MAYzEjf,GATc/c,UAAOC,IAAV,yJAEAS,KAOHV,UAAOi8B,GAAV,6HACJ,SAAA/7B,GAAK,OAAKA,EAAMe,MAAkB,QAAV,UAE3BP,IAAuBxjB,UAGtBwjB,IAAuBvjB,WAItB++C,EAAgBl8B,UAAOC,IAAV,sDAIbk8B,EAAqBn8B,UAAOC,IAAV,wDAMlBm8B,EAAOp8B,UAAO8R,EAAV,olBAQNpR,IAAuBxjB,UAMlBwjB,IAAuBxjB,UAQ3BwjB,IAAuBvjB,SAEjBujB,IAAuBvjB,W,mECtE5Bk/C,EAAcr8B,UAAOC,IAAV,wGAMXq8B,EAAOt8B,UAAOC,IAAV,0IAMX,SAAAC,GAAK,MAAuB,SAAnBA,EAAM67B,SAAsB,cAAgB,iBACrDN,K,OCHSc,IARI,SAAAr8B,GAAK,OACvB,cAAC,EAAD,UACC,cAAC,EAAD,CAAaa,UAAYb,EAAMiC,SAAW,WAAa,GAAK45B,SAAU77B,EAAM67B,e,6DCJjES,EAAkBx8B,UAAOC,IAAV,iZAyBfw8B,EAAWz8B,UAAOC,IAAV,wFAKRy8B,EAAQ18B,UAAO28B,MAAV,kDAILC,EAAiB58B,UAAOC,IAAV,oQ,OCXZw8B,IArBE,SAAAv8B,GAAK,OACrB,eAAC,EAAD,WACC,cAAC,EAAD,UAAeA,EAAMy8B,QACrB,eAAC,EAAD,CAAwB57B,UAAYb,EAAM28B,QAAU,SAAW,GAA/D,UACE,uBACOr9C,KAAK,WACLq9C,QAAS38B,EAAM28B,QACfC,SAAU58B,EAAM48B,WAExB,cAAC,EAAD,CAAuB/7B,UAAYb,EAAM28B,QAAU,SAAW,a,6BCbjE,IAAMj/C,EAAU,CACfm/C,SAAW,WACXz0B,SAAW,WAEX00B,QAAU,SAAEr9C,GAAF,MAAgB,CACzBH,KAAO5B,EAAQm/C,SACfp9C,QAAUA,KAIG/B,O,6BCVf,IAAMA,EAAU,CACfq/C,UAAY,YACZr0B,UAAY,YACXs0B,UAAa,YACd3hC,SAAW,SAAE5b,GAAF,MAAgB,CAC3BH,KAAO5B,EAAQs/C,UACfv9C,QAAUA,IAEVw9C,SAAW,SAAEx9C,GAAF,MAAgB,CAC1BH,KAAO5B,EAAQq/C,UACft9C,QAAUA,KAIG/B,O,6BCdf,IAAMA,EAAU,CACfk8B,UAAY,YACZhR,UAAY,YACZs0B,SAAU,SAACz9C,GAAD,MAAc,CACvBH,KAAM5B,EAAQk8B,UACdn6B,QAAUA,KAIG/B,O,4CCTTy/C,EAAc,CAChB,GAAM,CACFjlD,OAAQ,KACRmpB,UAAQ,GACJ+7B,MAAO,YACPC,UAAW,aACXC,aAAc,gBACdC,aAAc,kBACdC,aAAc,iBACdC,aAAc,YACdC,iBAAkB,oDAClBC,aAAc,yCACdC,WAAY,gBACZC,YAAa,aACblsC,OAAQ,SACRwgB,QAAS,UACT2rB,UAAW,QACXC,SAAU,OACVC,UAAW,QACXC,SAAU,OACV38B,MAAO,QACPQ,SAAU,WACVo8B,YAAa,eACbtkD,MAAO,QACPukD,QAAS,UACTl6B,KAAM,OACN7C,SAAU,WACVyN,eAAgB,iCAChBE,qBAAsB,6BACtBqvB,gBAAiB,oBACjBC,eAAgB,kBAChBC,uBAAwB,uCACxBC,KAAM,OACNr6C,IAAK,MACLs6C,KAAM,OACNhlB,OAAQ,SACRE,OAAQ,SACR+kB,KAAM,OACNC,aAAc,WACdlc,KAAM,OACNmc,WAAY,sBACZC,YAAa,eACbvoB,MAAO,QACPC,SAAU,WACV9T,SAAU,WACVq8B,gBAAiB,oBACjBC,KAAM,OACNpoB,OAAQ,UACRqoB,SAAU,aACVC,WAAY,cACZC,kBAAmB,qBACnBC,eAAgB,2BAChBvpD,OAAQ,SACRoG,UAAW,YACXojD,YAAa,wBACbC,YAAa,8BACbC,gBAAiB,kBACjBC,aAAc,gBACdt3B,UAAW,YACXu3B,eAAgB,wBAChBC,WAAY,cACZC,aAAc,gBACdC,aAAc,uBACdl0C,OAAQ,SACRm0C,aAAc,8BACdj0B,IAAK,MACLk0B,QAAS,UACT97C,MAAO,QACP+7C,WAAY,aACZC,OAAQ,SACRC,aAAc,gBACdC,UAAW,aACXC,OAAQ,UACRC,OAAQ,yBACRC,IAAK,SACLC,GAAI,KACJC,OAAQ,UAzEJ,wBA0EK,WA1EL,mBA2EA,MA3EA,qCA4EkB,oLA5ElB,2CA6EwB,+CA7ExB,2BA8EQ,6MA9ER,+BA+EY,0EA/EZ,yBAgFM,aAhFN,0BAiFO,cAjFP,8BAkFW,iBAlFX,qBAmFE,QAnFF,4BAoFS,mBApFT,qBAqFE,QArFF,6BAsFU,mOAtFV,kCAuFe,qMAvFf,kCAwFe,4MAxFf,wBAyFK,WAzFL,qBA0FE,aA1FF,iCA2Fc,oGA3Fd,gCA4Fa,8CA5Fb,iCA6Fc,uBA7Fd,yBA8FM,4DA9FN,+BA+FY,uBA/FZ,qBAgGE,8BAhGF,mBAiGA,MAjGA,6BAkGU,iBAlGV,oCAmGiB,6BAnGjB,yCAoGsB,kBApGtB,uBAqGI,UArGJ,wBAsGK,WAtGL,+BAuGY,mCAvGZ,2CAwGwB,uDAxGxB,qBAyGE,QAzGF,+BA0GY,4BA1GZ,sCA2GmB,uIA3GnB,2BA4GQ,uDA5GR,8BA6GW,0DA7GX,yBA8GM,YA9GN,qBA+GE,QA/GF,qBAgHE,QAhHF,gCAiHa,gCAjHb,+BAkHY,mBAlHZ,gCAmHa,oCAnHb,mBAoHA,MApHA,2BAqHQ,+NArHR,iCAsHc,qIAtHd,uBAuHI,UAvHJ,6BAwHU,+BAxHV,gCAyHa,8BAzHb,0BA0HO,cA1HP,mCA2HgB,iFA3HhB,4BA4HS,kBA5HT,qBA6HE,UA7HF,qBA8HE,QA9HF,gCA+Ha,wBA/Hb,gCAgIa,4BAhIb,kCAiIe,0EAjIf,qCAkIkB,uFAlIlB,8BAmIW,6BAnIX,gCAoIa,oCApIb,0BAqIO,iBArIP,qCAsIkB,sCAtIlB,kCAuIe,+EAvIf,oCAwIiB,4BAxIjB,sBAyIG,SAzIH,uBA0II,WA1IJ,0BA2IO,cA3IP,kCA4Ie,uQA5If,6BA6IU,iBA7IV,2BA8IQ,gBA9IR,yBA+IM,aA/IN,0BAgJO,kBAhJP,2BAiJQ,eAjJR,kCAkJe,sBAlJf,iCAmJc,sBAnJd,+BAoJY,oBApJZ,oBAqJC,OArJD,sBAsJG,SAtJH,qBAuJE,QAvJF,sBAwJG,SAxJH,qBAyJE,QAzJF,6BA0JU,gBA1JV,yBA2JM,YA3JN,uBA4JI,UA5JJ,4BA6JS,iBA7JT,+BA8JY,mBA9JZ,6BA+JU,6OA/JV,+BAgKY,kNAhKZ,oCAiKiB,mDAjKjB,+BAkKY,uLAlKZ,sCAmKmB,+CAnKnB,iCAoKc,yHApKd,kCAqKe,+BArKf,6BAsKU,gKAtKV,uBAuKI,WAvKJ,sBAwKG,SAxKH,mCAyKgB,iEAzKhB,8BA0KW,iTA1KX,oBA2KC,OA3KD,mBA4KA,MA5KA,uBA6KI,cA7KJ,uBA8KI,UA9KJ,0BA+KO,aA/KP,2BAgLQ,oBAhLR,yBAiLM,YAjLN,wBAkLK,WAlLL,wBAmLK,WAnLL,6BAoLU,uBApLV,0BAqLO,aArLP,qBAsLE,QAtLF,qBAuLE,QAvLF,uBAwLI,UAxLJ,uBAyLI,UAzLJ,+BA0LY,qBA1LZ,qBA2LE,QA3LF,0BA4LO,aA5LP,iCA6Lc,qBA7Ld,uBA8LI,UA9LJ,+BA+LY,sBA/LZ,2BAgMQ,eAhMR,+BAiMY,mBAjMZ,mCAkMgB,0OAlMhB,4BAmMS,gBAnMT,yBAoMM,cApMN,8BAqMW,UArMX,2BAsMQ,aAtMR,+BAuMY,eAvMZ,wBAwMK,YAxML,yBAyMM,cAzMN,6BA0MU,eA1MV,8BA2MW,iBA3MX,+BA4MY,wBA5MZ,wBA6MI,iBA7MJ,gCA8Ma,oYA9Mb,mCA+MgB,uaA/MhB,qCAgNkB,2RAhNlB,kCAiNe,qWAjNf,6BAkNU,mBAlNV,iCAmNc,qBAnNd,6BAoNU,oBApNV,4BAqNS,6BArNT,oCAsNiB,yBAtNjB,4BAuNS,0BAvNT,8BAwNW,mBAxNX,0BAyNO,iBAzNP,2CA0NwB,+EA1NxB,8CA2N2B,2CA3N3B,qCA4NkB,sCA5NlB,oCA6NiB,mCA7NjB,+BA8NY,eA9NZ,6CA+N0B,kDA/N1B,iCAgOc,qCAhOd,kCAiOe,sEAjOf,0BAkOO,cAlOP,4BAmOS,eAnOT,sBAoOG,SApOH,oBAqOC,OArOD,iCAsOc,4BAtOd,+BAuOY,4CAvOZ,IA0OZ,GAAM,CACFnoD,OAAQ,KACRmpB,UAAQ,GACJ+7B,MAAO,QACPC,UAAW,eACXC,aAAc,gBACdC,aAAc,wBACdC,aAAc,gBACdC,aAAc,gBACdC,iBAAkB,uGAClBC,aAAc,6DACdC,WAAY,mBACZC,YAAa,iBACblsC,OAAQ,YACRwgB,QAAS,SACT2rB,UAAW,QACXC,SAAU,OACVC,UAAW,QACXC,SAAU,OACV38B,MAAO,QACPQ,SAAU,WACVo8B,YAAa,YACbtkD,MAAO,QACPukD,QAAS,YACTl6B,KAAM,OACN7C,SAAU,eACVyN,eAAgB,gDAChBE,qBAAsB,gCACtBqvB,gBAAiB,2BACjBC,eAAgB,kBAChBC,uBAAwB,6CACxBC,KAAM,OACN/kB,OAAQ,SACRt1B,IAAK,YACLs6C,KAAM,WACN9kB,OAAQ,UACR+kB,KAAM,OACNC,aAAc,aACdlc,KAAM,SACNmc,WAAY,yBACZC,YAAa,iBACbvoB,MAAO,UACPC,SAAU,SACV9T,SAAU,YACVq8B,gBAAiB,mBACjBC,KAAM,aACNpoB,OAAQ,aACRqoB,SAAU,aACVC,WAAY,gBACZC,kBAAmB,oBACnBC,eAAgB,2CAChBvpD,OAAQ,cACRoG,UAAW,eACXojD,YAAa,yCACbC,YAAa,yBACbC,gBAAiB,gBACjBC,aAAc,gBACdt3B,UAAW,aACXu3B,eAAgB,oBAChBC,WAAY,gBACZC,aAAc,iBACdC,aAAc,wBACdl0C,OAAQ,SACRm0C,aAAc,qBACdj0B,IAAK,QACLk0B,QAAS,WACT97C,MAAO,YACP+7C,WAAY,YACZC,OAAQ,SACRC,aAAc,eACdC,UAAW,iBACXC,OAAQ,YACRC,OAAQ,qBACRC,IAAK,QACLC,GAAI,OACJC,OAAQ,WAzEJ,wBA0EK,aA1EL,mBA2EA,MA3EA,qCA4EkB,uLA5ElB,2CA6EwB,wDA7ExB,2BA8EQ,4OA9ER,+BA+EY,gEA/EZ,yBAgFM,aAhFN,0BAiFO,cAjFP,8BAkFW,cAlFX,qBAmFE,QAnFF,4BAoFS,kBApFT,qBAqFE,QArFF,6BAsFU,0OAtFV,kCAuFe,mMAvFf,kCAwFe,mNAxFf,wBAyFK,WAzFL,qBA0FE,kBA1FF,iCA2Fc,qGA3Fd,gCA4Fa,+CA5Fb,iCA6Fc,+BA7Fd,yBA8FM,uDA9FN,+BA+FY,yBA/FZ,qBAgGE,6BAhGF,mBAiGA,MAjGA,6BAkGU,iBAlGV,oCAmGiB,qBAnGjB,yCAoGsB,8BApGtB,uBAqGI,YArGJ,wBAsGK,aAtGL,+BAuGY,sBAvGZ,2CAwGwB,8DAxGxB,qBAyGE,QAzGF,+BA0GY,qBA1GZ,sCA2GmB,4IA3GnB,2BA4GQ,mDA5GR,8BA6GW,uDA7GX,yBA8GM,UA9GN,qBA+GE,YA/GF,qBAgHE,WAhHF,gCAiHa,8BAjHb,+BAkHY,sBAlHZ,gCAmHa,sCAnHb,mBAoHA,MApHA,2BAqHQ,0MArHR,iCAsHc,8IAtHd,uBAuHI,UAvHJ,6BAwHU,sBAxHV,gCAyHa,4BAzHb,0BA0HO,sBA1HP,mCA2HgB,iFA3HhB,4BA4HS,yBA5HT,qBA6HE,WA7HF,qBA8HE,aA9HF,gCA+Ha,yBA/Hb,gCAgIa,yCAhIb,kCAiIe,+DAjIf,qCAkIkB,yFAlIlB,8BAmIW,qBAnIX,gCAoIa,yCApIb,0BAqIO,gBArIP,qCAsIkB,iCAtIlB,kCAuIe,iFAvIf,oCAwIiB,4BAxIjB,sBAyIG,YAzIH,uBA0II,WA1IJ,0BA2IO,eA3IP,kCA4Ie,mSA5If,6BA6IU,kBA7IV,2BA8IQ,yBA9IR,yBA+IM,iBA/IN,0BAgJO,0BAhJP,2BAiJQ,gBAjJR,kCAkJe,wBAlJf,iCAmJc,0BAnJd,+BAoJY,wBApJZ,oBAqJC,SArJD,sBAsJG,UAtJH,qBAuJE,SAvJF,sBAwJG,UAxJH,qBAyJE,QAzJF,6BA0JU,eA1JV,yBA2JM,QA3JN,uBA4JI,QA5JJ,4BA6JS,yBA7JT,+BA8JY,gBA9JZ,6BA+JU,wOA/JV,+BAgKY,qMAhKZ,oCAiKiB,oDAjKjB,+BAkKY,8LAlKZ,sCAmKmB,6CAnKnB,iCAoKc,qJApKd,kCAqKe,yCArKf,6BAsKU,4KAtKV,uBAuKI,iBAvKJ,sBAwKG,SAxKH,mCAyKgB,oDAzKhB,8BA0KW,iVA1KX,oBA2KC,MA3KD,mBA4KA,OA5KA,uBA6KI,aA7KJ,uBA8KI,aA9KJ,0BA+KO,cA/KP,2BAgLQ,yBAhLR,yBAiLM,YAjLN,wBAkLK,aAlLL,wBAmLK,WAnLL,6BAoLU,sBApLV,0BAqLO,YArLP,qBAsLE,eAtLF,qBAuLE,QAvLF,uBAwLI,WAxLJ,uBAyLI,aAzLJ,+BA0LY,2BA1LZ,qBA2LE,aA3LF,0BA4LO,YA5LP,iCA6Lc,sBA7Ld,uBA8LI,eA9LJ,+BA+LY,kCA/LZ,2BAgMQ,uBAhMR,+BAiMY,oBAjMZ,mCAkMgB,0OAlMhB,4BAmMS,iBAnMT,yBAoMM,YApMN,8BAqMW,iBArMX,2BAsMQ,cAtMR,+BAuMY,kBAvMZ,wBAwMK,WAxML,yBAyMM,YAzMN,6BA0MU,gBA1MV,8BA2MW,mBA3MX,+BA4MY,oBA5MZ,wBA6MI,sBA7MJ,gCA8Ma,yZA9Mb,mCA+MgB,mbA/MhB,kCAgNe,sTAhNf,kCAiNe,iYAjNf,6BAkNU,iBAlNV,iCAmNc,qBAnNd,6BAoNU,oBApNV,4BAqNS,mCArNT,oCAsNiB,6BAtNjB,4BAuNS,iCAvNT,8BAwNW,qBAxNX,0BAyNO,qBAzNP,+BA0NY,sDA1NZ,2CA2NwB,gEA3NxB,8CA4N2B,0DA5N3B,qCA6NkB,iCA7NlB,oCA8NiB,oCA9NjB,+BA+NY,eA/NZ,6CAgO0B,gDAhO1B,iCAiOc,wCAjOd,kCAkOe,iFAlOf,0BAmOO,iBAnOP,4BAoOS,UApOT,sBAqOG,WArOH,oBAsOC,OAtOD,iCAuOc,+BAvOd,KA4ODlD,O,sECxdFmD,EAAexgC,kBAAOygC,IAAPzgC,CAAH,gDAKZ0gC,EAAU1gC,UAAOC,IAAV,qCACjB,SAAAC,GAAK,OAAIA,EAAMygC,KAAO,qCAAuC,yCAInDC,EAAO5gC,UAAO6gC,IAAV,oFAMJC,EAAO9gC,UAAOS,KAAV,+EAId,SAAAP,GAAK,OAAIA,EAAM6gC,UAAY,8BAAgC,wB,uBCmB/CC,4BAAczF,mBANL,SAACrmD,EAAOsmD,GAC5B,MAAO,CACHr5B,SAAUjtB,EAAM8yB,OAAO7F,YAIFo5B,EApCR,SAAAr7B,GAAK,OACtB,cAAC,EAAD,CAAqBa,UAAYb,EAAMiC,SAAW,WAAa,GAA/D,SACI,eAAC,EAAD,CAAgBw+B,MAAQzgC,EAAMe,MAA9B,UACKf,EAAM+gC,KAAO,KAAO,cAAC,EAAD,CAAaC,IAAKhhC,EAAMuhB,OAC5CvhB,EAAM+gC,KAEC,eAAC,EAAD,WAAc/gC,EAAMkc,UAAU,eAA9B,OAEJlc,EAAMe,MAEF,eAAC,EAAD,CAAa8/B,WAAS,EAAtB,UAAuB,iCAAS7gC,EAAMmX,OAAc,uBAAOnX,EAAM+Y,QAEjE,eAAC,EAAD,WACK/Y,EAAMkc,UAAU,cAAe,CAAEnD,KAAM/Y,EAAM+Y,KAAM5B,KAAMnX,EAAMmX,OADpE,KAC+EnX,EAAMkc,UAAU,mBAD/F,iB,6DCdP+kB,EAASnhC,UAAOohC,OAAV,qfAEJ1gC,IASMA,KAEf,SAAAR,GAAK,MAAuB,UAAnBA,EAAM67B,SAAuB,mCAAqC,M,OCAlEoF,IAbA,SAAAjhC,GAAK,OAChB,cAAC,EAAD,CAAec,MAAOd,EAAMc,MAAOqgC,QAASnhC,EAAMmhC,QAAStF,SAAU77B,EAAM67B,SAAU1/C,MAAO6jB,EAAM7jB,MAAlG,SACA6jB,EAAM2a,S,+BCNK,QAA0B,kC,6BCA1B,QAA0B,mC,4JCG5BymB,EAAWC,oBAAH,gLAaRC,EAAgBD,oBAAH,6EAOb5F,EAAqB4F,oBAAH,gI,6BCvB/B,IAAM3jD,EAAU,CACfisB,MAAQ,QAER8E,MAAO,iBAAO,CACbnvB,KAAM5B,EAAQisB,SAKDjsB,O,2LCNF6jD,EAAczhC,UAAO0hC,MAAV,sLAERhhC,KAUHihC,EAAgB3hC,UAAOC,IAAV,+gBAafS,IAEYA,IAMAA,KACnB,SAAAR,GAAK,OAAIA,EAAM0hC,SAAW,aAAe1hC,EAAM0hC,SAAW,KAMvClhC,KAIpB,SAAAR,GAAK,OAAIA,EAAM2hC,QAAU,6BAA+B,KAEpCnhC,KAOVohC,EAAY9hC,UAAOC,IAAV,yGAGNS,K,eC/CVqhC,E,kDAEF,WAAY7hC,GAAQ,IAAD,8BACf,cAAMA,IAOV8hC,mBAAqB,SAAC1wB,GAClB,EAAKpR,MAAMtiB,QAAQwf,cAAckU,EAAExsB,OAAOhF,QAN1C,EAAK5K,MAAQ,CACT+sD,aAAa,GAJF,E,gDAYnB,SAAap9C,GACLA,GAAOA,EAAMq9C,iBACjBzuB,KAAKvT,MAAMtiB,QAAQiQ,kBAAkB,gBAAiB,CAAEnC,OAAQ+nB,KAAKvT,MAAMoE,WAAY69B,WAAW,IAE7F1uB,KAAKvT,MAAMmE,iBACZoP,KAAKvT,MAAMtiB,QAAQuf,uBAAsB,K,oBAIjD,WACI,OACI,eAAC,IAAMilC,SAAP,WACiC,eAA/BjmD,OAAOC,aAAai2B,QAA2B,cAAC,IAAD,IAAmB,KAChE,eAAC,EAAD,CAAsB,WAAUoB,KAAKvT,MAAMkc,UAAU,UAAWylB,QAASpuB,KAAKvT,MAAM2hC,QAASQ,SAAU5uB,KAAKvT,MAAMmiC,SAAUT,SAAUnuB,KAAKvT,MAAM0hC,SAAjJ,UAEI,cAAC,EAAD,UACI,cAAC,IAAD,CAAiBngB,KAAM6gB,QAE3B,sBAAMC,SAAU9uB,KAAK+uB,aAAaC,KAAKhvB,MAAvC,SACI,cAAC,EAAD,CAAoBqpB,SAAUrpB,KAAKuuB,mBAAoBU,YAAajvB,KAAKvT,MAAMkc,UAAU,gBAAiBt8B,MAAO2zB,KAAKvT,MAAMoE,WAAamP,KAAKvT,MAAMoE,WAAa,iB,GAjCjKq+B,aAqDT3B,kCAAczF,mBAZL,SAACrmD,EAAOsmD,GAC5B,MAAO,CACHr5B,SAAUjtB,EAAM8yB,OAAO7F,SACvBmC,WAAapvB,EAAM+zB,OAAO3E,WAC1Bs+B,aAAc1tD,EAAMuE,SAAS1B,KAC7BssB,gBAAiBnvB,EAAM+zB,OAAO5E,gBAC9B3qB,eAAgBxE,EAAMuE,SAASC,mBAIZ,SAAAmpD,GAAQ,MAAK,CAAEjlD,QAASklD,6BAAmB,2BAAKllD,KAAYmlD,KAAiBF,MAE3EtH,CAA6CwG,K,wDC9DpEtB,EAAMzgC,UAAOC,IAAV,2dAESS,IAaHA,IAAyBxjB,UAC9BwjB,IAAwBxjB,UAGlBwjB,IAAyBvjB,SAC9BujB,IAAwBvjB,UAOpBsjD,O,6BC9Bf,4HAMauC,GANb,MAM0C,WAAkC,IAAjCC,EAAgC,wDAGnEC,EAAYl4B,UAAUk4B,UACtBC,EAAS,WACP,MAAO,qBAAqB5S,KAAK2S,IAC/B,cAAc3S,KAAK2S,IACnB,WAAW3S,KAAK2S,IAChB,UAAU3S,KAAK2S,IAEnBE,EAAmC,oBAAlBjnD,OAAOinD,QAAyBjnD,OAAOinD,QAAUjnD,OAAOknD,WACzEC,EAAmC,oBAAlBnnD,OAAOmnD,QAAyBnnD,OAAOmnD,QAAUnnD,OAAOonD,UACzEC,EAAyC,oBAArBrnD,OAAOqnD,WAA4BrnD,OAAOqnD,WAAajhD,SAASkhD,gBAAgBC,YACpGC,EAA2C,oBAAtBxnD,OAAOwnD,YAA6BxnD,OAAOwnD,YAAcphD,SAASkhD,gBAAgBG,aAAe,GACtHC,EAAcV,IAAW,KAAO,KAChCW,EAAeX,IAAW,KAAO,IACjCY,EAAIX,EAAU,EAAIjnD,OAAO6nD,OAAOC,MAAQb,EAAUA,EAClDv/B,EAAOqV,SAAS6qB,GAAKP,EAAaK,GAAe,EAAG,IACpD9/B,EAAQmV,SAASoqB,GAAWK,EAAcG,GAAgB,IAAK,IAC/DI,EAAW,GACK,OAAhBL,GACFK,EAASt9C,KAAK,SAAWi9C,GAEN,OAAjBC,GACFI,EAASt9C,KAAK,UAAYk9C,GAE5BI,EAASt9C,KAAK,QAAUid,GACxBqgC,EAASt9C,KAAK,OAASmd,GACvBmgC,EAASt9C,KAAK,gBAGd,IAAIu9C,EAAkB,QAClBC,EAAmBF,EAASG,KAAK,KACjCC,EAAerB,EAmBnB,OAjBI9mD,OAAO2yB,eACH3yB,OAAO2yB,aAAa6C,eAAe,mBACQ,IAAvCx1B,OAAO2yB,aAAaC,iBACpBu1B,GAAe,GAGnBA,GAAe,EAGfnoD,OAAO2yB,aAAa6C,eAAe,0BACc,IAA7Cx1B,OAAO2yB,aAAaG,uBACpBk1B,EAAkB,SAClBC,EAAmB,KAKxB,CACHD,kBACAC,mBACAE,kBAaKC,EAAY,WAAiF,IAAhFC,EAA+E,wDAA5DC,EAA4D,wDAAtC5+C,EAAsC,wDAArB6+C,EAAqB,wDAErG,OAAO,IAAIlgD,SAAQ,SAACC,EAASm8B,GAGzB,MAA4DoiB,GAA4Bn9C,GAAhFs+C,EAAR,EAAQA,gBAAiBC,EAAzB,EAAyBA,iBAAkBE,EAA3C,EAA2CA,aAErCK,EAAYF,GAA6B,8BAAbC,EAA2C,SAAW,IACpFJ,IACAM,EAAUD,EAAWR,EAAiBC,EAAkBv+C,GACxDpB,KAGJ,IAAIogD,GAAU,EACVL,GAAa3+C,IACbg/C,EAAO,aAASh/C,EAAQi/C,cAAjB,kBAAwCN,IAI/CK,EACAE,IACIF,GACA,WACID,EAAUD,EAAWR,EAAiBC,GACtC3/C,OAEJ,WACIA,MACD,MAGPmgD,EAAUD,EAAWR,EAAiBC,EAAkBv+C,GACxDpB,SAYCmgD,EAAY,WAAuH,IAAtHD,EAAqH,wDAAlGR,EAAkG,wDAAzEC,EAAyE,wDAA1BY,EAA0B,wDACxH7oD,OAAO6iD,KAAK2F,EAAWK,EAAgB,GAAKb,EAAgBl2B,KAAKC,UAAUy2B,GAAYP,K,2UClHjGa,G,MAAgB5kC,IAAqBJ,IAAxB,+dAMLS,IAAiCA,IAUhCA,IAAiCA,MAqB1CwkC,GAbUllC,UAAOC,IAAV,kNAOVS,IAAwBxjB,WAMT8iB,UAAOS,KAAV,gQAkBT0kC,EAAc9kC,IAAqBJ,IAAxB,2JAUXmlC,EAAUplC,UAAOC,IAAV,4PAKCS,IAMAA,KAOR2kC,EAAqBrlC,UAAOC,IAAV,8CAIlBqlC,EAAYtlC,UAAOC,IAAV,iLAQTslC,EAAkBvlC,UAAOC,IAAV,gXAKlBS,IAAwBxjB,UAIvBwjB,IAAwBvjB,SASnBujB,IAAyBvjB,UAIlB6iB,UAAOC,IAAV,mI,6LCvHPulC,EAAWxlC,UAAOylC,GAAV,kIAKlB,SAAAvlC,GAAK,OAAsB,sBAAjBA,EAAMwlC,QAAmD,qBAAjBxlC,EAAMwlC,SAAkChK,cAAhF,IAAD,kMAIYh7B,QAMrB,SAAAR,GAAK,MAAqB,aAAjBA,EAAMwlC,QAAyBhK,cAA/B,2FAkBCiK,GAViB3lC,UAAOylC,GAAV,yEAOEzlC,UAAOC,IAAV,uDAGOD,UAAOC,IAAV,2IAOjB2lC,EAAe5lC,UAAO6lC,GAAV,8VAITnlC,IAOOA,KAUpB,SAAAR,GAAK,MAAqB,sBAAjBA,EAAMwlC,QAAkChK,cAAxC,yDAGT,SAAAx7B,GAAK,OAAsB,sBAAjBA,EAAMwlC,QAAmD,qBAAjBxlC,EAAMwlC,SAAkChK,cAAhF,IAAD,yEAOT,SAAAx7B,GAAK,MAAqB,aAAjBA,EAAMwlC,QAAyBhK,cAA/B,gtBAkBYh7B,QAoBXolC,EAAoB9lC,UAAO28B,MAAV,gDAajBP,GATqBp8B,UAAO6lC,GAAV,yHAEfnlC,KAOIV,UAAO8R,EAAV,wtBACP,SAAA5R,GAAK,OAAIA,EAAMiC,SAAW,UAAY,YAsChCzB,MAaHqlC,EAAM/lC,UAAOgmC,IAAV,wFAEb,SAAA9lC,GAAK,MAAqB,sBAAjBA,EAAMwlC,QAAkChK,cAAxC,iHAEYh7B,QAMrB,SAAAR,GAAK,MAAqB,qBAAjBA,EAAMwlC,QAAiChK,cAAvC,4KAEYh7B,IAGAA,Q,gEC7KlBulC,E,kDAEF,WAAY/lC,GAAQ,IAAD,8BACf,cAAMA,IAiCVgmC,iBAAmB,WAOf,IAAI5uD,EAAU,EAAK6O,QAAQ,EAAK+Z,MAAM5oB,QAAS,cAC3C2E,EAAY,EAAKkK,QAAQ,EAAK+Z,MAAM5oB,QAAS,aAEjD,EAAK6uD,SAAS,CAAEC,aAAc9uD,EAAS2E,WAAqB,OAATA,QAAS,IAATA,OAAA,EAAAA,EAAWoF,QAAS,KA5CxD,EA+CnB8E,QAAU,SAACC,EAAKC,GAA6B,IAAlBC,EAAiB,uDAAP,GAC3BC,EAAID,EACV,GAAW,MAAPF,EASJ,OARAI,OAAOC,KAAKL,GAAKM,SAAQ,SAAAC,GACrB,IAAM7G,EAAQsG,EAAIO,GACd7G,IAAUuG,GAA8B,kBAAVvG,EAC9ByG,EAAEK,KAAKR,GACiB,kBAAVtG,GACd,EAAKqG,QAAQrG,EAAOuG,EAAWE,MAGhCA,GA1DQ,EA4FnB8/C,UAAY,WACR,EAAKnmC,MAAMtiB,QAAQ+e,YA7FJ,EAgGnB2pC,kBAAoB,SAAC3tD,EAAOw0C,GACxB,OAAOx0C,EAAMq4B,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,SAAF,OAAYA,QAAZ,IAAYA,OAAZ,EAAYA,EAAQt5B,QAAS0Y,IAAOiF,KAAKhwB,EAAEgwB,MAAQjF,MAASnoB,KAAK,GAAI,UAAiC,IAAtB,EAAKmiD,UAAU/kD,OAjGzG,EAoGnB+kD,UAAY,SAACt4C,GACT,IAAI4kC,EAAe,EAAK3yB,MAAMsmC,eAC1BvU,EAAK,OAAGY,QAAH,IAAGA,OAAH,EAAGA,EAAcvjB,MAAK,SAAC2iB,GAAD,OAAWA,EAAMlvC,MAAQkL,EAAKlL,OAC7D,OAAIkvC,IACQA,EAAM5C,QAxGH,EA6GnBoX,oBAAsB,SAACC,EAAG//C,GAAS,IAAD,EAC9B,OAAO,cAAC,EAAD,CACHoa,WAAY,YAAKb,MAAMymC,oBAAX,eAAyB9yC,SAAU6yC,EAAE7yC,MAAQ,aAAe,GACxE,WAAUlS,YAAsB+kD,EAAE7yC,OAClCsO,SAAU,EAAKjC,MAAMiC,SACrBk/B,QACI,kBAAM,EAAKnhC,MAAMtiB,QAAQiQ,kBAAiD,eAA9B,EAAKqS,MAAMxmB,gBAA0C,aAAe,CAAEma,MAAO6yC,EAAE7yC,SAL5H,SAOH,cAAC,EAAD,CAAqBkN,UAAY,EAAKb,MAAMiC,SAAW,WAAa,GAAKujC,OAAQ,EAAKxlC,MAAMwlC,OAA5F,SACI,eAAC,EAAD,WACK,EAAKY,kBAAkB,EAAKpmC,MAAMtlB,WAAY8rD,GAAGrlD,OAAS,EAAI,cAAC,IAAD,CAAQ2f,MAAO,CAAE+6B,SAAU,WAAYl4B,KAAM,OAAQ+iC,IAAK,OAAQC,OAAQ,EAAGC,SAAU,GAAIC,WAAY,OAAQ9C,MAAO,QAAU/iC,OAAQ,EAAKolC,kBAAkB,EAAKpmC,MAAMtlB,WAAY8rD,GAAGrlD,SAAa,KACrQ,cAAC,IAAD,CAAiBogC,KAAM,CAAC,MAAOilB,EAAEjlB,KAAOilB,EAAEjlB,KAAO,UACjD,cAAC,EAAD,UACKilB,EAAE7yC,cAZMlN,IA3GzB,EAAKzR,MAAQ,CACTkxD,aAAc,GACdnqD,WAAW,GALA,E,qDAUnB,WACIw3B,KAAK4yB,YAED5yB,KAAKuzB,OAAOC,cAAcxzB,KAAKuzB,OACnCvzB,KAAKuzB,MAAQE,YAAYzzB,KAAK4yB,UAAU5D,KAAKhvB,MAAO7wB,YAAM,KAC1D6wB,KAAKyyB,qB,kCAGT,WACIe,cAAcxzB,KAAKuzB,S,gCAGvB,SAAmBG,GAAY,IAAD,IACY,IAAlC,UAAAA,EAAU7vD,QAAQusB,YAAlB,eAAwBxiB,UAAe,UAAAoyB,KAAKvT,MAAM5oB,QAAQusB,YAAnB,eAAyBxiB,QAAS,GACzEoyB,KAAKyyB,mBAMTkB,IAAaC,Y,oBAmGjB,WAAU,IAAD,aAEL,OACI,eAAC,EAAD,CAAY3B,OAAQjyB,KAAKvT,MAAMwlC,OAAQrD,SAAU5uB,KAAKvT,MAAMmiC,SAA5D,UACI,cAAC,IAAD,IACA,eAAC,EAAD,CAAiBqD,OAAQjyB,KAAKvT,MAAMwlC,OAApC,UAEKjyB,KAAKv+B,MAAM+G,WACR,cAAC,EAAD,CAEI8kB,UAA0C,cAA9B0S,KAAKvT,MAAMxmB,eAAiC,aAAe,GACvE,WAAUiI,YAAsB8xB,KAAKvT,MAAMkc,UAAU,cACrDja,SAAUsR,KAAKvT,MAAMiC,SACrBk/B,QACI,kBAAM,EAAKnhC,MAAMtiB,QAAQiQ,kBAAiD,cAA9B,EAAKqS,MAAMxmB,gBAAyC,cANxG,SAQI,cAAC,EAAD,CAAqBqnB,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAAKujC,OAAQjyB,KAAKvT,MAAMwlC,OAA5F,SACI,eAAC,EAAD,WAEI,cAAC,IAAD,CAAiBjkB,KAAM,CAAC,MAAO,mBAE/B,cAAC,EAAD,UACKhO,KAAKvT,MAAMkc,UAAU,qBAb9B,OAoBX,UAAA3I,KAAKv+B,MAAMkxD,oBAAX,eAAyB/kD,QAAS,GAAKoyB,KAAKv+B,MAAMkxD,aAAa94B,IAAImG,KAAKgzB,qBAEzE,cAAC,EAAD,CAEI1lC,UAA0C,WAA9B0S,KAAKvT,MAAMxmB,eAA8B,aAAe,GACpE,WAAUiI,YAAsB8xB,KAAKvT,MAAMkc,UAAU,WACrDja,SAAUsR,KAAKvT,MAAMiC,SACrBk/B,QACI,kBAAM,EAAKnhC,MAAMtiB,QAAQiQ,kBAAiD,WAA9B,EAAKqS,MAAMxmB,gBAAsC,WANrG,SAQI,cAAC,EAAD,CAAqBqnB,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAAKujC,OAAQjyB,KAAKvT,MAAMwlC,OAA5F,SACI,eAAC,EAAD,WAEI,cAAC,IAAD,CAAiBjkB,KAAM6lB,MAEvB,cAAC,EAAD,UACK7zB,KAAKvT,MAAMkc,UAAU,kBAb9B,MAmBR,cAAC,EAAD,CAEIrb,UAA0C,UAA9B0S,KAAKvT,MAAMxmB,eAA6B,aAAe,GACnE,WAAUiI,YAAsB8xB,KAAKvT,MAAMkc,UAAU,UACrDja,SAAUsR,KAAKvT,MAAMiC,SACrBk/B,QACI,kBAAM,EAAKnhC,MAAMtiB,QAAQiQ,kBAAiD,UAA9B,EAAKqS,MAAMxmB,gBAAqC,UANpG,SAQI,cAAC,EAAD,CAAqBqnB,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAAKujC,OAAQjyB,KAAKvT,MAAMwlC,OAA5F,SACI,eAAC,EAAD,WACKjyB,KAAKvT,MAAMsO,KAAKhN,MAAQ,cAAC,IAAD,CAAQR,MAAO,CAAE+6B,SAAU,WAAYl4B,KAAM,OAAQ+iC,IAAK,OAAQC,OAAQ,EAAGC,SAAU,GAAIC,WAAY,OAAQ9C,MAAO,QAAU/iC,OAAQuS,KAAKvT,MAAMsO,KAAKhN,QAAY,KAC7L,cAAC,IAAD,CAAiBigB,KAAM8lB,MAEvB,cAAC,EAAD,UACK9zB,KAAKvT,MAAMkc,UAAU,iBAb9B,MAoBR,cAAC,EAAD,CAEIrb,UAA0C,aAA9B0S,KAAKvT,MAAMxmB,eAAgC,aAAe,GACtE,WAAUiI,YAAsB8xB,KAAKvT,MAAMkc,UAAU,aACrDja,SAAUsR,KAAKvT,MAAMiC,SACrBk/B,QACI,kBAAM,EAAKnhC,MAAMtiB,QAAQiQ,kBAAiD,aAA9B,EAAKqS,MAAMxmB,gBAAwC,aANvG,SASI,cAAC,EAAD,CAAqBqnB,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAAKujC,OAAQjyB,KAAKvT,MAAMwlC,OAA5F,SACI,eAAC,EAAD,WACKjyB,KAAKvT,MAAMsO,KAAK/M,cAAgB,cAAC,IAAD,CAAQT,MAAO,CAAE+6B,SAAU,WAAYl4B,KAAM,OAAQ+iC,IAAK,OAAQC,OAAQ,EAAGC,SAAU,GAAIC,WAAY,OAAQ9C,MAAO,QAAU/iC,OAAQuS,KAAKvT,MAAMsO,KAAK/M,gBAAoB,KAC7M,cAAC,IAAD,CAAiBggB,KAAM+lB,MACvB,cAAC,EAAD,UACK/zB,KAAKvT,MAAMkc,UAAU,oBAb9B,MAmBiC,SAAxCjgC,OAAOC,aAAaqrD,iBACjB,cAAC,EAAD,CAEI,WAAU9lD,YAAsB8xB,KAAKvT,MAAMkc,UAAU,YACrDja,SAAUsR,KAAKvT,MAAMiC,SACrBk/B,QACI,WACI,EAAKnhC,MAAM+iB,QAAQr8B,KAAK,+BACxB,EAAKsZ,MAAMtiB,QAAQiQ,mBAAkB,IAPjD,SAWI,cAAC,EAAD,CAAqBkT,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAAKujC,OAAQjyB,KAAKvT,MAAMwlC,OAA5F,SACI,eAAC,EAAD,YACK,UAAAjyB,KAAKvT,MAAMikB,aAAX,eAAkBnT,QAAO,SAAAxvB,GAAC,MAAgB,cAAZA,EAAE+gB,UAAwBlhB,QAAS,EAAI,cAAC,IAAD,CAAQ2f,MAAO,CAAE+6B,SAAU,WAAYl4B,KAAM,OAAQ+iC,IAAK,OAAQC,OAAQ,EAAGC,SAAU,GAAIC,WAAY,OAAQ9C,MAAO,QAAU/iC,OAAM,UAAEuS,KAAKvT,MAAMikB,aAAb,aAAE,EAAkBnT,QAAO,SAAAxvB,GAAC,MAAgB,cAAZA,EAAE+gB,UAAwBlhB,SAAa,KACnR,cAAC,IAAD,CAAiBogC,KAAMimB,MAEvB,cAAC,EAAD,UACKj0B,KAAKvT,MAAMkc,UAAU,mBAhB9B,gB,GAjObumB,aAkTJ3B,4BAAc2G,YAAWpM,mBAjBhB,SAACrmD,EAAOsmD,GAAc,IAAD,IACzC,MAAO,CACH9hD,eAAgBxE,EAAMuE,SAASC,eAC/B80B,KAAMt5B,EAAMwC,KACZysC,MAAOjvC,EAAM8zB,MAAMrwB,MACnBwpB,SAAUjtB,EAAM8yB,OAAO7F,SACvBlmB,UAAW/G,EAAM8G,SAASC,UAC1B2rD,kBAAmB1yD,EAAM8G,SAAS0mB,SAClC9nB,WAAY1F,EAAMyF,kBAAkBC,WACpC4rD,eAAc,UAAEtxD,EAAMwC,KAAKC,QAAQI,YAArB,iBAAE,EAAyBupB,gBAA3B,aAAE,EAAmCuxB,aACnD8T,aAAczxD,EAAMuE,SAAS1B,KAC7BT,QAASpC,EAAMmC,QAAQC,YAIJ,SAAAurD,GAAQ,MAAK,CAAEjlD,QAASklD,6BAAmB,2BAAKllD,KAAYiqD,KAAgBhF,MAE/DtH,CAA6C0K,M,8EC9TxErK,EAAU57B,UAAOC,IAAV,ggBAKjB,SAAAC,GAAK,OAAKA,EAAM47B,eAAgC,yBAVjC,6DAYf,SAAA57B,GAAK,OAAIA,EAAM67B,SAAW,UAAU77B,EAAM67B,SAAS,IAAM,MACzD,SAAA77B,GAAK,OAAIA,EAAM87B,OAAS,yDAA2D,MACnF,SAAA97B,GAAK,OAAIA,EAAM27B,aAAe,kBAAmB37B,EAAM27B,aAAe,MAAQ,MAC9E,SAAA37B,GAAK,OAAIA,EAAM4nC,UAAY,eAAgB5nC,EAAM4nC,UAAY,MAAQ,MAoB3D/qB,EAAQ/c,UAAOi8B,GAAV,+HACJ,SAAA/7B,GAAK,OAAKA,EAAMe,MAAkB,QAAV,UAG3BP,IAAuBxjB,UAGtBwjB,IAAuBvjB,UAItBi/C,EAAOp8B,UAAO8R,EAAV,0MAGNpR,IAAuBxjB,UAGtBwjB,IAAuBvjB,UAQtB4qD,EAAS/nC,UAAOS,KAAV,0MAGRC,IAAuBxjB,UAGtBwjB,IAAuBvjB,U,eCrCpBo+C,6BANS,SAACrmD,EAAOsmD,GAC5B,MAAO,CACHr5B,SAAWjtB,EAAM8yB,OAAO7F,YAIjBo5B,EA1BS,SAAAr7B,GAAK,OAC5B,eAAC,EAAD,CAAgBa,UAAWb,EAAM8nC,SAAUF,UAAW5nC,EAAM4nC,UAAWjM,aAAc37B,EAAM27B,aAAcE,SAAU77B,EAAM67B,SAAW77B,EAAM67B,SAAW,GAAID,eAAgB57B,EAAM47B,eAAgBE,OAAQ97B,EAAM87B,OAA7M,UACC,cAAC,EAAD,CAAcj7B,UAAYb,EAAMiC,SAAW,WAAa,GAAKlB,MAAOf,EAAMe,MAA1E,SAAkFf,EAAMrM,QACvFqM,EAAMuf,WAAavf,EAAM+nC,QACzB,cAAC,EAAD,CAAalnC,UAAYb,EAAMiC,SAAW,WAAa,GAAKrd,OAAO,SAASu8C,QAA2B,MAAjBnhC,EAAMmhC,QAAkBnhC,EAAMmhC,QAAU,KAAO6G,KAAMhoC,EAAM+nC,QAAjJ,SAA2J/nC,EAAMuf,YAEjK,cAAC,EAAD,CAAe1e,UAAYb,EAAMiC,SAAW,WAAa,GAAKk/B,QAA2B,MAAjBnhC,EAAMmhC,QAAkBnhC,EAAMmhC,QAAU,KAAhH,SAAwHnhC,EAAMuf,mB,mECJpHmc,EAAU57B,UAAOC,IAAV,+FACF,SAAAC,GAAK,OAAKA,EAAM27B,aAAwB37B,EAAM27B,aAAe,KAA9B,UAClC,SAAA37B,GAAK,OAAKA,EAAM4nC,UAAkB5nC,EAAM4nC,UAAY,KAAxB,OACxC,SAAA5nC,GAAK,OAAKA,EAAM47B,eAAgC,GARjC,6DAUf,SAAA57B,GAAK,OAAIA,EAAM67B,SAAW,UAAU77B,EAAM67B,SAAS,IAAM,MACzD,SAAA77B,GAAK,OAAIA,EAAM87B,OAAS,yDAA2D,MAGzEjf,EAAQ/c,UAAOi8B,GAAV,8IACJ,SAAA/7B,GAAK,OAAKA,EAAMe,MAAkB,QAAV,UAE5BP,IAECA,IAAuBxjB,UAGtBwjB,IAAuBvjB,UAItBi/C,EAAOp8B,UAAO8R,EAAV,2QAMNpR,IAAuBxjB,UAGtBwjB,IAAuBvjB,UAStB4qD,EAAS/nC,UAAOS,KAAV,mfAMRC,IAAuBxjB,UAKlBwjB,IAAuBxjB,UAO3BwjB,IAAuBvjB,SAGjBujB,IAAuBvjB,U,eCpC1Bo+C,uBANS,SAACrmD,EAAOsmD,GAC5B,MAAO,CACHr5B,SAAWjtB,EAAM8yB,OAAO7F,YAIjBo5B,EA1BC,SAAAr7B,GAAK,OACpB,eAAC,EAAD,CAAgB4nC,UAAW5nC,EAAM4nC,UAAWjM,aAAc37B,EAAM27B,aAAcE,SAAU77B,EAAM67B,SAAW77B,EAAM67B,SAAW,GAAID,eAAgB57B,EAAM47B,eAAgBE,OAAQ97B,EAAM87B,OAAlL,UACC,cAAC,EAAD,CAAcj7B,UAAYb,EAAMiC,SAAW,WAAa,GAAKlB,MAAOf,EAAMe,MAA1E,SAAkFf,EAAMrM,QACvFqM,EAAMuf,WAAavf,EAAM+nC,QACzB,cAAC,EAAD,CAAalnC,UAAYb,EAAMiC,SAAW,WAAa,GAAKrd,OAAO,SAASu8C,QAA2B,MAAjBnhC,EAAMmhC,QAAkBnhC,EAAMmhC,QAAU,KAAO6G,KAAMhoC,EAAM+nC,QAAjJ,SAA2J/nC,EAAMuf,YAEjK,cAAC,EAAD,CAAe1e,UAAYb,EAAMiC,SAAW,WAAa,GAAKk/B,QAA2B,MAAjBnhC,EAAMmhC,QAAkBnhC,EAAMmhC,QAAU,KAAhH,SAAwHnhC,EAAMuf,mB,2ICTpHgiB,EAAczhC,UAAO0hC,MAAV,wLAYXC,EAAgB3hC,UAAOC,IAAV,0JASb6hC,EAAY9hC,UAAOC,IAAV,yGAGNS,K,OCjBVqhC,E,4JACF,WACI,OACI,eAAC,EAAD,WACI,cAAC,EAAD,UACI,cAAC,IAAD,CAAiBtgB,KAAM6gB,QAEvB,cAAC,EAAD,CAAoB9iD,KAAK,OAAOs9C,SAAUrpB,KAAKvT,MAAM9C,cAAetd,MAAO2zB,KAAKvT,MAAMoE,oB,GAPlFq+B,aAaTZ,O,iCCtBf,IAAMnkD,EAAU,CACfgqB,iBAAmB,mBACnBugC,eAAgB,iBAEhBC,eAAgB,SAACzoD,GAAD,IAAU5H,EAAV,8DAA4B,CAC3CyH,KAAM5B,EAAQgqB,iBACdjoB,QAAU,CACTsO,KAAOtO,EACP5H,KAAOA,MAKK6F,O,+BCbf,IAAMA,EAAU,CACfkqB,+BAAiC,iCACjCugC,6BAA8B,+BAE9BC,2BAA4B,SAAC3oD,GAAD,IAAU5H,EAAV,8DAA4B,CACvDyH,KAAM5B,EAAQkqB,+BACdnoB,QAAU,CACTsO,KAAOtO,EACP5H,KAAOA,MAKK6F,O,0MCVF2qD,EAAoBvoC,UAAO8R,EAAV,wUAIpBpR,IAAwBxjB,UAIvBwjB,IAAwBvjB,SASnBujB,IAAyBvjB,UAI5ByjD,EAAO5gC,UAAO6gC,IAAV,oFAMJ2H,EAAOxoC,UAAOS,KAAV,2GAINC,IAAwBvjB,UAItB+2C,EAASl0B,UAAOS,KAAV,2GAIRC,IAAwBrjB,e,gCC1CnC,oEAIe,SAASorD,EAAT,GAuBX,IApBFC,EAoBC,EApBDA,YAIAC,EAgBC,EAhBDA,kBAGAhwD,EAaC,EAbDA,MAGAiwD,EAUC,EAVDA,aAGAC,EAOC,EAPDA,WAGAC,EAIC,EAJDA,WAGAC,EACC,EADDA,WAGMC,EAAYN,EAAc/vD,EAAM0I,OAAS,EAAI1I,EAAM0I,OAInD4nD,EAAgBN,EAAoB,aAAWC,EAG/CM,EAAe,SAAAxsB,GAAK,OAAKgsB,GAAehsB,EAAQ/jC,EAAM0I,QAGtD8nD,EAAO,SAAC,GAAsB,IAApBzsB,EAAmB,EAAnBA,MAAO1b,EAAY,EAAZA,MAGrB,OAAIkoC,EAAaxsB,GACN,qBAAK1b,MAAOA,EAAZ,SAAoB6nC,EAAWlwD,EAAM+jC,MAGzC,qBAAK1b,MAAOA,EAAZ,wBAGT,OACE,cAAC,IAAD,CACEkoC,aAAcA,EACdF,UAAWA,EACXC,cAAeA,EAHjB,SAKG,gBAAGG,EAAH,EAAGA,gBAAiBC,EAApB,EAAoBA,IAApB,OACC,cAAC,IAAD,CACEtoC,UAAU,OACVuoC,OAAQP,EACRC,UAAWA,EACXO,SAAUT,EACVM,gBAAiBA,EACjBC,IAAKA,EACLpF,MAAO,OAPT,SASGkF,S,yFC7DEzI,EAAU1gC,UAAOC,IAAV,oOAiBPupC,EAASxpC,kBAAOq7B,IAAPr7B,CAAH,0OAER,SAAAE,GAAK,OAAIA,EAAMupC,MAAQ,QAAU,MAClC,SAAAvpC,GAAK,OAAIA,EAAMupC,MAAQ,QAAU,MACxC,SAAAvpC,GAAK,OAAIA,EAAM0hC,SAAW,aAAe1hC,EAAM0hC,SAAW,MAIzD,SAAA1hC,GAAK,OAAIA,EAAMupC,MAAQ,2BAA6B,yDAOrD,SAAAvpC,GAAK,MAAqB,qBAAjBA,EAAMwlC,QAAiChK,cAAvC,kHAEYh7B,Q,eCjBT8oC,IAhBA,SAAAtpC,GAAK,OAChB,eAAC,EAAD,CAAgBmhC,QAASnhC,EAAMmhC,QAA/B,UACI,cAAC,IAAD,CAAiB5f,KAAM,CAAC,MAAO,SAC/B,cAAC,EAAD,CAAeikB,OAAQxlC,EAAMwlC,OAAS+D,MAAOvpC,EAAMupC,MAAO7H,SAAU1hC,EAAM0hC,SAA1E,SACI,qBAAK8H,IAAI,SAASxI,IAAKhhC,EAAMnM,gB,8JCN5B41C,EAAiB3pC,UAAOylC,GAAV,mEAGxB,SAAAvlC,GAAK,MAAqB,aAAjBA,EAAMwlC,QAAyBhK,cAA/B,woBAMeh7B,QA4BxB,SAAAR,GAAK,MAAqB,oBAAjBA,EAAMwlC,QAAgChK,cAAtC,8lBAMch7B,IACJA,IAiBEA,IAIAA,QAYXkpC,EAAe5pC,UAAOC,IAAV,4DAIZ4pC,EAAgB7pC,kBAAOO,IAAPP,CAAH,udAkCb8pC,EAAqB9pC,UAAO6lC,GAAV,8RAoB5B,SAAA3lC,GAAK,MAAqB,oBAAjBA,EAAMwlC,QAAgChK,cAAtC,yRAkBT,SAAAx7B,GAAK,MAAqB,aAAjBA,EAAMwlC,QAAyBhK,cAA/B,koBAQYh7B,Q,uBC3JlBipC,E,kDAEF,WAAYzpC,GAAQ,IAAD,8BACf,cAAMA,IAcV6pC,eAAiB,WACb,IAAIzyD,EAAU,EAAK6O,QAAQ,EAAK+Z,MAAM5oB,QAAQA,QAAS,MACvD,EAAK6uD,SAAS,CAAE6D,gBAAgB,EAAMC,IAAY,OAAP3yD,QAAO,IAAPA,OAAA,EAAAA,EAAS+J,QAAO,KAjB5C,EAoBnB8E,QAAU,SAACC,EAAKC,GAA6B,IAAlBC,EAAiB,uDAAP,GAC3BC,EAAID,EACV,GAAW,MAAPF,EASJ,OARAI,OAAOC,KAAKL,GAAKM,SAAQ,SAAAC,GACrB,IAAM7G,EAAQsG,EAAIO,GACd7G,IAAUuG,GAA8B,kBAAVvG,EAC9ByG,EAAEK,KAAKR,GACiB,kBAAVtG,GACd,EAAKqG,QAAQrG,EAAOuG,EAAWE,MAGhCA,GA5BP,EAAKrR,MAAQ,CACT80D,gBAAgB,EAChBC,IAAI,GALO,E,sDASnB,WAAsB,IAAD,KACZx2B,KAAKv+B,MAAM80D,iBAAkB,UAAAv2B,KAAKvT,MAAM5oB,QAAQA,eAAnB,mBAA4BusB,YAA5B,eAAkCxiB,QAAO,GACvEoyB,KAAKs2B,mB,oBAuBb,WAAU,IAAD,mBACL,OACI,eAAC,EAAD,CAAuBrE,OAAQjyB,KAAKvT,MAAMwlC,OAA1C,UACI,cAAC,EAAD,CAA2B3kC,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAAKujC,OAAQjyB,KAAKvT,MAAMwlC,OAAlG,SACI,cAAC,EAAD,CAAsB3kC,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAAK+nC,OAAK,EAACC,GAAG,IAAnF,SACI,cAAC,EAAD,CAAqB9I,QAAS,WACD,YAArB,EAAKnhC,MAAMwlC,QAAsB,EAAKxlC,MAAMtiB,QAAQiQ,mBAAkB,IAD9E,SAGI,iCAAM,cAAC,IAAD,CAAiB4zB,KAAM2oB,MAA7B,IAAwC,+BAAO32B,KAAKvT,MAAMkc,UAAU,wBAKvC,SAAxCjgC,OAAOC,aAAaqrD,iBACjB,cAAC,EAAD,CAA2B1mC,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAAKujC,OAAQjyB,KAAKvT,MAAMwlC,OAAlG,SACI,cAAC,EAAD,CAAsB3kC,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAAKgoC,GAAG,eAA7E,SACI,cAAC,EAAD,CAAqB9I,QAAS,WACD,YAArB,EAAKnhC,MAAMwlC,QAAsB,EAAKxlC,MAAMtiB,QAAQiQ,mBAAkB,IAD9E,SAGI,iCAAM,cAAC,IAAD,CAAiB4zB,KAAM4oB,MAA7B,IAA4C,+BAAO52B,KAAKvT,MAAMkc,UAAU,wBAMrF3I,KAAKvT,MAAM5oB,QAAQ4sB,cAAnB,UAAkC/nB,cAAlC,iBAAkC,EAAQ2yB,oBAA1C,iBAAkC,EAAsBI,cAAxD,aAAkC,EAA8BE,uBAAjE,UAAyFjzB,cAAzF,iBAAyF,EAAQ2yB,oBAAjG,iBAAyF,EAAsBI,cAA/G,aAAyF,EAA8BQ,qBACrH,cAAC,IAAM0yB,SAAP,UACI,cAAC,EAAD,CAA2BrhC,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAAKujC,OAAQjyB,KAAKvT,MAAMwlC,OAAlG,SACI,cAAC,EAAD,CAAsB3kC,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAAKgoC,GAAG,gBAA7E,SACI,cAAC,EAAD,CAAqB9I,QAAS,WACD,YAArB,EAAKnhC,MAAMwlC,QAAsB,EAAKxlC,MAAMtiB,QAAQiQ,mBAAkB,IAD9E,SAGI,iCAAM,cAAC,IAAD,CAAiB4zB,KAAM6oB,MAA7B,IAAyC,+BAAO72B,KAAKvT,MAAMkc,UAAU,yBAMzD,eAA/BjgC,OAAOC,aAAai2B,SACjB,cAAC,IAAM+vB,SAAP,UACI,cAAC,EAAD,CAA2BrhC,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAAKujC,OAAQjyB,KAAKvT,MAAMwlC,OAAlG,SACI,cAAC,EAAD,CAAsB3kC,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAAKgoC,GAAG,SAA7E,SACI,cAAC,EAAD,CAAqB9I,QAAS,WACD,YAArB,EAAKnhC,MAAMwlC,QAAsB,EAAKxlC,MAAMtiB,QAAQiQ,mBAAkB,IAD9E,SAGI,iCAAM,cAAC,IAAD,CAAiB4zB,KAAM8oB,MAA7B,IAAyC,+BAAO92B,KAAKvT,MAAMkc,UAAU,iC,GAjF5EumB,aAwGd3B,4BAAczF,mBAXL,SAACrmD,EAAOsmD,GAC5B,MAAO,CACH9hD,eAAgBxE,EAAMuE,SAASC,eAC/B80B,KAAMt5B,EAAMwC,KACZyqB,SAAUjtB,EAAM8yB,OAAO7F,SACvB7qB,QAASpC,EAAMmC,YAII,SAAAwrD,GAAQ,MAAK,CAAEjlD,QAASklD,6BAAmBllD,IAASilD,MAElDtH,CAA6CoO,K,iKC5GzDxM,G,WAuFQ/yB,GAvFlB,SAAU+yB,IAAV,iEACH,OADG,SACG9yB,oBAAUzsB,IAAQq/C,UAAT,UAAoB,WAAWt1B,GAAX,+GAEZ,OAFY,kBAEN8D,iBAAO70B,KAFD,OAIP,OAFdN,EAFqB,gBAIDm1B,iBAAOj1B,KAJN,OAKT,OADZC,EAJqB,gBAKHg1B,iBAAOnzB,KALJ,UAKrBiC,EALqB,OAMtBjE,EANsB,mDAQR,OARQ,UAQFA,EAAOu3B,KAAKlG,EAAOhoB,QAAQqD,SAAS,KAAO2kB,EAAOhoB,QAAQsD,MAAM,KAAK,GAAK0kB,EAAOhoB,SAAW,+KAR1F,WAWP,OAHhBuuC,EARuB,SAWEA,GAAiBA,EAAapuC,MAXhC,iBAYR,OAZQ,UAYFxJ,EAAOu3B,KAAKlG,EAAOhoB,QAAQqD,SAAS,KAAO2kB,EAAOhoB,QAAQsD,MAAM,KAAK,GAAK0kB,EAAOhoB,SAAW,iKAZ1F,QAYvBuuC,EAZuB,kBAeP,MAAhBA,GAAyBA,GAAiBA,EAAapuC,MAfhC,sDAgBO,IAA9BouC,EAAapuC,MAAMuB,OAhBI,mDAkBvBtJ,EAAOm2C,EAAapuC,MACpBtH,EAAQT,EAAKgK,MAAM,EAAG,IAAIurB,KAAI,SAAU4D,GACxC,MAAO,CAAEyR,GAAIzR,EAAE,gBAEf1P,EAAQ,GACZzpB,EAAOA,EAAKgK,MAAM,EAAG,IACZP,EAAI,EAxBc,aAwBXA,GAAKzJ,EAAKsJ,QAxBC,qBAyBnBtJ,EAAKyJ,GAzBc,iBA8BI,OAJjBi7B,EAAI1kC,EAAKyJ,GAETgpD,EAAoB/tB,EAAC,cAAoBA,EAAC,cAAoBA,EAAEyX,OAAF,GAC9DuW,EAAiB9iC,EAAOhoB,QAAQqD,SAAS,QAAU2kB,EAAOhoB,QAAQsD,MAAM,QAAQ,GAAK0kB,EAAOhoB,QA7B/E,UA8BUrJ,EAAOu3B,IAAI48B,EAAiB,yBAA2BD,EAAmB,KA9BpF,QAgCJ,OAFT7b,EA9Ba,iBAgCEl4C,EAAYo3B,IAAI,UAAY8gB,EAAc,kBAAwB,gBAAiB,eAhCrF,QAgCbxgB,EAhCa,OAkCfrgB,GAAQ,EAERqgB,IACArgB,EAAQ,0BAA4B,IAAIugB,EAAOF,EAAQ,UAAUI,SAAS,WAG9E/1B,EAAMgJ,GAAK,CACP4W,GAAIqkB,EAAE,YACN5oB,MAAO4oB,EAAEM,MACTC,YAAaP,EAAEI,YACf15B,QAAS2K,EACTqjB,KAAMsL,EAAEQ,QACRl6B,IAAK05B,EAAEiuB,cACP/e,OAAQgD,EAAc,OA/CP,QAwBOntC,IAxBP,4BAuDvBggB,EAAMngB,OAvDiB,iBAwDvB,OAxDuB,UAwDjBmD,QAAQonB,IAAIpK,GAxDK,YA2DvBhpB,EAAM6I,UAAiC,IAArB9G,EAAU8G,QAAkB9G,GAAaA,EAAU,GAAGooC,KAAOnqC,EAAM,GAAG4f,IA3DjE,oBA6DnB0Y,EAAMv2B,EAAUy2B,QAAO,SAAAE,GAAC,OAAK14B,EAAM82B,MAAK,SAAAuT,GAAE,OAAIA,EAAGzqB,IAAM8Y,EAAE9Y,WAClD,MAAP0Y,GAAeA,EAAIzvB,OAAS,GA9DT,+BAgELyvB,GAhEK,2DAiEf,OADKI,EAhEU,kBAiET4R,IAAY/Y,WAAWmH,EAAE9Y,GAAGmW,YAjEnB,wHAAAiH,IAAA,mCAqETh9B,GArES,8DAsEL,OADT04B,EArEc,SAsEbhsB,KAtEa,wDAuEnB,OAvEmB,UAuEb49B,IAAYC,QAAQ7R,EAAE9Y,GAAGmW,WAAY2C,EAAEhsB,MAvE1B,eAwEZgsB,EAAEpjB,aACFojB,EAAEhsB,KAzEU,wHAAAswB,IAAA,qBA4EvB,OA5EuB,UA4EjBjK,cAAI,CACN/rB,KAAM5B,IAAQgrB,UACdjpB,QAASnH,IA9EU,gJADhC,uCAuFQ,SAAU4xB,IAAV,iEACX,OADW,SACLwB,cAAI,CACNC,eAAKsxB,KAFE,0C,0NCpFE7hC,G,WAkEAC,G,WAuGAovC,G,WAwCQvgC,GAjNlB,SAAU9O,IAAV,iEACH,OADG,SACG+O,oBAAUzsB,IAAQod,iBAAT,UAA2B,WAAW2M,GAAX,6FAEpB,OAFoB,SAEd8D,iBAAOp2B,KAFO,OAGvB,OADTkF,EAFgC,gBAGjBkxB,iBAAOp1B,KAHU,OAIlB,OADdC,EAHgC,gBAIZm1B,iBAAOj1B,KAJK,UAIhCC,EAJgC,OAMjCH,GAAWG,EANsB,mDAOxB,OAPwB,UAOlBH,EAAOu3B,IAAI,uBAPO,WASzB,OAFPr1B,EAPgC,SAShBA,EATgB,sDAWlCgpB,EAAQhpB,EAAM80B,IAAN,uCAAU,WAAO4D,EAAG1vB,GAAV,qBAAAswB,EAAA,yDACC,OAAfZ,EAAEkS,UAAoC,yCAAflS,EAAEkS,SADX,iCAEO3sC,EAAYo3B,IAAZ,iBAA0BqD,EAAEkS,SAA5B,iBAAqD,eAF5D,UAGA,OADRjV,EAFQ,yDAKVrgB,EAAQ,0BAA4B,IAAIugB,EAAOF,EAAQ,UAAUI,SAAS,UAC1ErpB,EAAOvE,YAAcmN,GACrB21B,EAAY1I,IAAIC,gBAAgB91B,GAEpCgsB,EAAEpjB,MAAQ21B,EACVvS,EAAEhsB,KAAOA,EAVK,4CAAV,0DAcRsc,EAAMngB,OAzB4B,iBA0BlC,OA1BkC,UA0B5BmD,QAAQonB,IAAIpK,GA1BgB,aA6BlB,GAAhBhpB,EAAM6I,QAAgB7I,EAAM6I,SAAiC,IAArB9G,EAAU8G,QAAkB9G,GAAaA,EAAU,GAAGooC,KAAOnqC,EAAM,GAAG4f,KA7B5E,oBAgC9B0Y,EAAMv2B,EAAUy2B,QAAO,SAAAE,GAAC,OAAK14B,EAAM82B,MAAK,SAAAuT,GAAE,OAAIA,EAAGzqB,IAAM8Y,EAAE9Y,WAClD,MAAP0Y,GAAeA,EAAIzvB,OAAS,GAjCE,+BAmChByvB,GAnCgB,2DAoC1B,OADKI,EAnCqB,kBAoCpB4R,IAAY/Y,WAAWmH,EAAE9Y,IApCL,wHAAAod,IAAA,mCAgDpBh9B,GAhDoB,8DAiDhB,OADT04B,EAhDyB,SAiDxBhsB,KAjDwB,wDAkD9B,OAlD8B,UAkDxB49B,IAAYC,QAAQ7R,EAAE9Y,GAAI8Y,EAAEhsB,MAlDJ,eAmDvBgsB,EAAEpjB,aACFojB,EAAEhsB,KApDqB,wHAAAswB,IAAA,qBAwDlC,OAxDkC,UAwD5BjK,cAAI,CACN/rB,KAAM5B,IAAQqd,iBACdtb,QAASnH,IA1DqB,+EADvC,uCAkEA,SAAU+iB,IAAV,iEACH,OADG,SACG8O,oBAAUzsB,IAAQud,iBAAT,UAA2B,WAAWwM,GAAX,iFAErB,OAFqB,SAEf8D,iBAAOp1B,KAFQ,UAEhCE,EAFgC,OAIlC2sC,EAAa,CACbrvB,MAAO8T,EAAOhoB,QAAQkU,MACtBpT,KAAMknB,EAAOhoB,QAAQc,KACrBkrC,OAAQhkB,EAAOhoB,QAAQgsC,OACvBvI,SAAUzb,EAAOhoB,QAAQyjC,SACzBjS,KAAM,IAAI9E,KAAK1E,EAAOhoB,QAAQwxB,MAAMkO,cACpCvE,QAASnT,EAAOhoB,QAAQm7B,SAGxB/H,EAAS,QACTpL,EAAOhoB,QAAQoE,KAdmB,iBAenB,OAfmB,SAebM,YAAasjB,EAAOhoB,QAAQoE,KAAK,IAfpB,OAe5Bu/B,EAf4B,OAiBlCJ,EAAU,2BACHA,GADG,IAENp1B,MAAOw1B,IAnBuB,YAuBlC3b,EAAOhoB,QAAQyY,GAvBmB,oBAwBlC2a,EAAS,MACTmQ,EAAU,2BACHA,GADG,IAEN9qB,GAAIuP,EAAOhoB,QAAQyY,GACnBpK,WAAY2Z,EAAOhoB,QAAQqO,WAC3Bo1B,SAAUzb,EAAOhoB,QAAQyjC,WAGxBzb,EAAOhoB,QAAQoE,OAAQ4jB,EAAOhoB,QAAQ4jC,aAhCT,iBAiCf,OAjCe,UAiCTt+B,YAAa0iB,EAAOhoB,QAAQ4jC,cAjCnB,QAiCxBD,EAjCwB,OAmC9BJ,EAAU,2BACHA,GADG,IAENp1B,MAAOw1B,IArCmB,WAkDlCv+B,GAAS,EACE,SAAXguB,EAnDkC,iBAoDzB,OApDyB,UAoDnBx8B,EAASy3B,KAAK,eAAgBkV,GAAY,GApDvB,QAoDlCn+B,EApDkC,+BAsDzB,OAtDyB,UAsDnBxO,EAASg1B,IAAI,eAAgB2X,GAAY,GAtDtB,QAsDlCn+B,EAtDkC,mBAyDjCA,EAzDiC,qBA0D9BA,EAAO2tB,GA1DuB,iBA2D9B,OA3D8B,UA2DxBnH,cAAI,CACN/rB,KAAM5B,IAAQod,mBA5DY,WA8Df,QAAX+X,EA9D0B,iBA+D1B,OA/D0B,UA+DpBxH,cAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,iBACT/kB,KAAM,aAnEY,gCAuE1B,OAvE0B,UAuEpB+rB,cAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,kBACT/kB,KAAM,aA3EY,QA+E9BwjC,IAAMC,QAAQr8B,KAAK,sBA/EW,wBAiF9B,OAjF8B,UAiFxB2kB,cAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,uBACT/kB,KAAM,WArFgB,gCA0FlC,OA1FkC,UA0F5B+rB,cAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,uBACT/kB,KAAM,WA9FoB,4CADvC,uCAuGA,SAAUmrD,IAAV,iEACH,OADG,SACGtgC,oBAAUzsB,IAAQwd,kBAAT,UAA4B,WAAWuM,GAAX,uEAEtB,OAFsB,SAEhB8D,iBAAOp1B,KAFS,OAQxB,OANTE,EAFiC,OAItB,CACb6hB,GAAIuP,EAAOhoB,SALwB,SAQlBpJ,EAASq9B,OAAO,mBAAqBjM,EAAOhoB,QAAQgoB,EAAOhoB,SAAS,GARlD,kBAU5B+yB,GAV4B,iBAWnC,OAXmC,UAW7BnH,cAAI,CACN/rB,KAAM5B,IAAQod,mBAZiB,QAenC,OAfmC,UAe7BuQ,cAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,kBACT/kB,KAAM,aAnBqB,QAuBnCwjC,IAAMC,QAAQr8B,KAAK,sBAvBgB,wBA0BnC,OA1BmC,UA0B7B2kB,cAAI,CACN/rB,KAAMmsB,IAAe9kB,QACrBlH,QAAS,CACL4kB,QAAS,uBACT/kB,KAAM,WA9BqB,4CADxC,uCAwCQ,SAAU4qB,IAAV,iEACX,OADW,SACLwB,cAAI,CACNC,eAAKvQ,GACLuQ,eAAKtQ,GACLsQ,eAAK8+B,KAJE,0C,4NCjNEh3C,G,WASAC,G,WAmLAE,G,WAsGPtB,G,WAmFe4X,GArXlB,SAAUzW,IAAV,iEACH,OADG,SACG0W,oBAAUzsB,IAAQ0V,iBAAT,UAA2B,WAAWqU,GAAX,iEACtC,OADsC,SAChC4D,cAAI,CACN/rB,KAAM88B,IAAgB/uB,oBACtB5N,QAAS,UAHyB,2CADvC,uCASA,SAAUiU,IAAV,iEACH,OADG,SACGyW,oBAAUzsB,IAAQwV,WAAT,UAAqB,WAAWuU,GAAX,uPAE5B,OAF4B,SAEtB4D,cAAI,CACN/rB,KAAM5B,IAAQ2V,yBACd5T,SAAS,IAJe,OAkBb,OAVX9J,EAAS,GACT2rB,EAAQ,GACRopC,EAAe,GACf3d,GAAa,EAGS,oBAPtBC,EAAe,MAQfA,EAAe,IAEbr5B,EAAQ8T,EAAOhoB,QAAQkU,MAjBD,UAkBP4X,iBAAOtwB,KAlBA,WAkB5B+xC,EAlB4B,QAmBxBvlB,EAAOhoB,UAAWgoB,EAAOhoB,QAAQA,QAnBT,+BAoBLgoB,EAAOhoB,QAAQA,SApBV,8DAqBC,eADhBoU,EApBe,SAqBTA,OArBS,wIAsBD,OAtBC,SAsBK0X,iBAAO70B,KAtBZ,UAsBVN,EAtBU,uEA4BA,OAJgB,GAA5Byd,EAAOhR,IAAIjC,QAAQ,MAAmC,MAArBiT,EAAOs9B,YAA2C,IAArBt9B,EAAOs9B,aACrEtuC,EAAMgR,EAAOhR,IACbgR,EAAOhR,KAAOgR,EAAOs9B,YA1BT,SA4BM/6C,EAAOu3B,IAAI9Z,EAAOhR,KA5BxB,UA8BK,OAFrBw5B,EA5BgB,SA8BcA,GAAkBA,EAAcz8B,MA9B9C,qEA+BmB,IAA/By8B,EAAcz8B,MAAMuB,OA/BR,kEAgChBtJ,EAAOwkC,EAAcz8B,MACjB08B,EAAO,GACRD,EAAc,oBACbC,EAAO15B,YAAmBy5B,EAAc,oBAG5C/a,EAAQzpB,EAAKu1B,IAAL,uCAAS,WAAOmP,EAAGC,GAAV,iBAAA5K,EAAA,yDAIT6K,EADQ,KAATH,EACqBI,EAAiBH,EAAEI,YAAaL,GAEhCC,EAAEI,YAErBJ,EAAEK,UARM,gBASTjnC,EAAO+Q,KAAK,CACRwR,GAAIqkB,EAAEkG,GACN9uB,MAAO4oB,EAAEM,MACTC,YAAaL,EACbx5B,QAAS,+BACTguB,KAAMsL,EAAEQ,QACR4tB,YAAapuB,EAAE6R,SACfpR,aAAc,CAAEC,SAAUV,EAAEU,SAAUC,UAAWX,EAAEW,UAAWC,QAASZ,EAAEY,SACzEC,YAAab,EAAEc,UACf4P,OAAQt5B,IAlBH,2BAsBL9Q,EAAMy6B,mBAAmBf,EAAEK,UAAUW,MAtBhC,uBAyBL5nC,EAAO+Q,KAAK,CACRwR,GAAIqkB,EAAEkG,GACN9uB,MAAO4oB,EAAEM,MACTC,YAAaL,EACbx5B,QAASJ,EACTm6B,aAAc,CAAEC,SAAUV,EAAEU,SAAUC,UAAWX,EAAEW,UAAWC,QAASZ,EAAEY,SACzEC,YAAab,EAAEc,UACfpM,KAAMsL,EAAEQ,QACR4tB,YAAapuB,EAAE6R,SACfnB,OAAQt5B,IAlCP,kBAoCE9Q,GApCF,2CAAT,yDAtCQ,kJAiFC,MAAjBgR,EAAOA,QAAgC,GAAdA,EAAOhR,MAChCkqC,GAAa,GAlFG,wHAAAzX,IAAA,wBAqGR,SAAC1D,EAAGgN,GACpB,OAAIhN,EAAEN,KAAOsN,EAAEtN,MACH,EAGRM,EAAEN,KAAOsN,EAAEtN,KACJ,EAGJ,IAGPyb,EAjHwB,iBAkHL,OAlHK,UAkHC1iB,eAAK/X,EAAiBqB,GAlHvB,QAkHpBi3C,EAlHoB,QAmHJ,QAAZ,EAAAA,SAAA,eAAczpD,QAAS,IACvBypD,EAAeA,EAAax9B,KAAI,SAAA9rB,GAEhC,OADAA,EAAE2rC,OAASt5B,EACJrS,OAEXspD,EAAY,sBAAOA,GAAP,YAAwB5d,EAAalc,QAAO,SAAAxvB,GAAC,MAAc,MAAVA,EAAEhC,MAAgBgC,EAAE2rC,QAAUt5B,UAEvFhe,EAAM,sBACCA,GADD,YAECi1D,KA5HS,qBAiIxBtpC,SAjIwB,QAiIxB,EAAOngB,OAjIiB,iBAkIxB,OAlIwB,UAkIlBmD,QAAQonB,IAAIpK,GAlIM,WAqI5B0rB,EAAeA,EAAalc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,KAChDid,EAAMoc,EAAalc,QAAO,SAAAE,GAAC,OAAKr7B,EAAOy5B,MAAK,SAAAuT,GAAE,OAAIA,EAAGzqB,IAAM8Y,EAAE9Y,SAC7D2Y,EAAWl7B,EAAOm7B,QAAO,SAAAE,GAAC,OAAKgc,EAAa5d,MAAK,SAAAuT,GAAE,OAAIA,EAAGzqB,IAAM8Y,EAAE9Y,SACtEwyC,EAAgB1d,EAAalc,QAAO,SAAAE,GAAC,OAAKr7B,EAAOy5B,MAAK,SAAAuT,GAAE,OAAKA,EAAGzqB,IAAM8Y,EAAE9Y,IAAMyqB,EAAGgoB,aAAe35B,EAAE25B,kBAClG95B,EAAWA,EAASM,OAAO,EAAG,KAC3BtuB,EA1IyB,iBA2IxB,OA3IwB,UA2IlBwoB,cAAI,CACN/rB,KAAM5B,IAAQ8V,eACd/T,QAASoD,IA7IW,cAgJpB,OAAH+tB,QAAG,IAAHA,OAAA,EAAAA,EAAKzvB,QAAS,IAAkB,QAAZ,EAAAupD,SAAA,eAAcvpD,QAAS,IAAa,QAAR,EAAA0vB,SAAA,eAAU1vB,QAAS,GAA8B,IAAZ,QAAZ,EAAA6rC,SAAA,eAAc7rC,UAAqB,QAAN,EAAAxL,SAAA,eAAQwL,QAAS,IAAmB,QAAZ,EAAA6rC,SAAA,eAAc7rC,WAAd,UAAyBxL,SAAzB,aAAyB,EAAQwL,SAAUxL,EAAOwL,OAAS,GAhJlK,iBAkJT,OAlJS,UAkJHoqB,iBAAOtwB,KAlJJ,QA8JxB,IAAI4vD,UAXkB,oBADlBtd,EAlJoB,UAoJpBA,EAAW,IAEfmd,EAAalkD,SAAQ,SAAAskD,GACjB,IAAItuB,EAAQ+Q,EAASnU,WAAU,SAAA2xB,GAAO,OAAIA,EAAQ7yC,IAAM4yC,EAAY5yC,MACjEskB,EAAQ,GACP+Q,EAASpc,OAAOqL,EAAO,MAI/B+Q,GADAA,EAAWA,EAASzc,QAAO,SAAAxvB,GAAC,OAAIA,EAAE2rC,QAAUt5B,MACxBrQ,OAAO3N,GACZi7B,EAAIzvB,QACXq7B,EAAQ+Q,EAASnU,WAAU,SAAA2xB,GAAO,OAAIA,EAAQ7yC,IAAM2yC,QAAQ3yC,OACrD,IACPq1B,EAAWA,EAASpc,OAAOqL,EAAO,IAG1C,OApKwB,UAoKlBnR,cAAI,CACN/rB,KAAM5B,IAAQyV,WACd1T,QAAS8tC,EAAS/P,YAtKE,QAyK5B,OAzK4B,UAyKtBnS,cAAI,CACN/rB,KAAM5B,IAAQ2V,yBACd5T,SAAS,IA3Ke,mNA8Kd6qB,QAAQC,IAAR,MA9Kc,yDADjC,uCAmLA,SAAU3W,IAAV,iEACH,OADG,SACGuW,oBAAUzsB,IAAQ4V,gBAAT,UAA0B,WAAWmU,GAAX,mFAElB,OAFkB,kBAEZ8D,iBAAO70B,KAFK,UAE3BN,EAF2B,2DAK7BT,EAAS,GACT2rB,EAAQ,IAETmG,EAAOhoB,QARuB,iBASb,OATa,UASPrJ,EAAOu3B,IAAIlG,EAAOhoB,QAAQoU,OAAO,yKAAyK4T,EAAOhoB,QAAQqU,KAAK,+CAA+C2T,EAAOhoB,QAAQqU,KAAK,sBAT1R,QAS7BuoB,EAT6B,kBAcZ,MAAjBA,GAA0BA,GAAkBA,EAAcz8B,MAd7B,sDAeE,IAA/By8B,EAAcz8B,MAAMuB,OAfS,sDAgBjCtJ,EAAOwkC,EAAcz8B,MACjB08B,EAAO,GACRD,EAAc,oBACbC,EAAO15B,YAAmBy5B,EAAc,oBAG5C/a,EAAQzpB,EAAKu1B,IAAL,uCAAS,WAAOmP,EAAGC,GAAV,iBAAA5K,EAAA,yDAIT6K,EADQ,KAATH,EACqBI,EAAiBH,EAAEI,YAAaL,GAEhCC,EAAEI,YAErBJ,EAAEK,UARM,gBASTjnC,EAAO+Q,KAAK,CACRwR,GAAIqkB,EAAEkG,GACN9uB,MAAO4oB,EAAEM,MACTC,YAAaL,EACbx5B,QAAS,+BACTguB,KAAMsL,EAAEQ,QACR4tB,YAAapuB,EAAE6R,SACfpR,aAAc,CAAEC,SAAUV,EAAEU,SAAUC,UAAWX,EAAEW,UAAWC,QAASZ,EAAEY,SACzEC,YAAab,EAAEc,UACf4P,OAAQ,iBAlBH,2BAsBLpqC,EAAMy6B,mBAAmBf,EAAEK,UAAUW,MAtBhC,uBAyBL5nC,EAAO+Q,KAAK,CACRwR,GAAIqkB,EAAEkG,GACN9uB,MAAO4oB,EAAEM,MACTC,YAAaL,EACbx5B,QAASJ,EACTm6B,aAAc,CAAEC,SAAUV,EAAEU,SAAUC,UAAWX,EAAEW,UAAWC,QAASZ,EAAEY,SACzEC,YAAab,EAAEc,UACfpM,KAAMsL,EAAEQ,QACR4tB,YAAapuB,EAAE6R,SACfnB,OAAQ,iBAlCP,kBAoCEpqC,GApCF,2CAAT,yDAtByB,UAgE7Bye,SAhE6B,QAgE7B,EAAOngB,OAhEsB,iBAiE7B,OAjE6B,UAiEvBmD,QAAQonB,IAAIpK,GAjEW,QAqEjC,OArEiC,UAqE3B+J,cAAI,CACN/rB,KAAM5B,IAAQ6V,gBACd9T,QAAS9J,IAvEoB,0DAyEnB20B,QAAQC,IAAR,MAzEmB,0DADtC,uCAgFP,SAASmS,EAAiBI,EAAaR,GACnC,IAAKQ,EAAa,MAAO,GACzB,IACMW,EAAO,mBACTC,EAAqB,GACrBC,EAAY,GAEhB,GADAD,EAAqBZ,EAAYc,MAJX,uCAMlB,IAAI,IAAIt8B,EAAI,EAAGA,EAAIo8B,EAAmBv8B,OAAQG,KAC1Cq8B,EAAYD,EAAmBp8B,GAAGs8B,MAAMH,MAEpCX,EAAcA,EAAY35B,QAAQs6B,GAAM,SAAUG,EAAO9L,GACrD,MAAO,yBAA2BwK,EAAOqB,EAAU,GAAK,QAO3E,OAAOb,EAGR,SAAUxqB,EAAgBqB,GAA1B,+FACmB,OADnB,SACyB4X,iBAAOp1B,KADhC,OAEwB,OADdC,EADV,gBAE8Bm1B,iBAAOj1B,KAFrC,OAGuB,OADbC,EAFV,gBAG6Bg1B,iBAAOtwB,KAHpC,UAGU+vD,EAHV,OAIS50D,GAAWG,EAJpB,mDAKmB,OALnB,UAKyBH,EAAOu3B,IAAI,uBALpC,WAOkB,OAFRh4B,EALV,SAO2BA,EAP3B,sDASQ2rB,EAAQ3rB,EAAOy3B,IAAP,uCAAW,WAAO4D,EAAG1vB,GAAV,mBAAAswB,EAAA,yDAEJ,MAAXZ,EAAEpjB,MAFa,wDAGnBojB,EAAEhsB,KAAOvE,YAAcuwB,EAAEpjB,OAHN,0BAOTqgB,EAPS,OAQXrgB,EAAQ,0BAA4B,IAAIugB,EAAOC,KAAKH,EAAQ,UAAUI,SAAS,UAC/ErpB,EAAOvE,YAAcmN,GACTitB,IAAIC,gBAAgB91B,GACpCgsB,EAAE0iB,WAAa1uC,EAXA,4CAAX,0DAcRsc,EAAMngB,OAvBd,iBAwBQ,OAxBR,UAwBcmD,QAAQonB,IAAIpK,GAxB1B,YA6BQ3rB,EAAOwL,UAAkC,IAAtB6pD,EAAW7pD,QAAkB6pD,GAAcA,EAAW,GAAG9yC,KAAOviB,EAAO,GAAGuiB,IA7BrG,oBAgCY0Y,EAAMo6B,EAAWl6B,QAAO,SAAAE,GAAC,OAAKr7B,EAAOy5B,MAAK,SAAAuT,GAAE,OAAIA,EAAGzqB,IAAM8Y,EAAE9Y,WACpD,MAAP0Y,GAAeA,EAAIzvB,OAAS,GAjCxC,+BAmC0ByvB,GAnC1B,2DAoCgB,OADKI,EAnCrB,kBAoCsB4R,IAAY/Y,WAAWmH,EAAE9Y,IApC/C,wHAAAod,IAAA,mCAyCsB3/B,GAzCtB,8DA0C0B,OADTq7B,EAzCjB,SA0CkBhsB,KA1ClB,wDA2CY,OA3CZ,UA2CkB49B,IAAYC,QAAQ7R,EAAE9Y,GAAI8Y,EAAEhsB,MA3C9C,eA4CmBgsB,EAAEpjB,aACFojB,EAAEhsB,KA7CrB,wHAAAswB,IAAA,qBAiDuB,OAjDvB,UAiD6B21B,EAAkBt1D,EAAQge,GAjDvD,eAiDQu3C,EAjDR,yBAkDWA,GAlDX,2E,SAsDeD,E,gFAAf,WAAiCt1D,EAAQge,GAAzC,qBAAAie,EAAA,sDAEI,IAASnrB,KADLykD,EAAe,GACHv1D,EAERA,EAAO8Q,KACDsH,EAAOpY,EAAO8Q,IAEhB0kD,EAAc,IAAIC,KACV9f,MAAMv9B,EAAKmK,IACvBizC,EAAY3f,UAAUz9B,EAAKm1B,UAC3BioB,EAAYzf,WAAW39B,EAAK6sB,SAC5BuwB,EAAYE,gBAAgB,CAACnuB,UAAWnvB,EAAKgxB,UAAU5B,QAASpvB,EAAKg2B,UACrEonB,EAAYnf,SAASj+B,EAAK4F,OAC1Bw3C,EAAYlf,QAAQ,UACpBkf,EAAYG,WAAW,0BACvBH,EAAYhf,YAAYp+B,EAAKq+B,UAC7B+e,EAAYG,WAAWv9C,EAAKH,OAC5Bu9C,EAAYvf,QAAQ79B,EAAKgxB,WACzBosB,EAAYI,eAAex9C,EAAKxN,MAChC4qD,EAAYK,UAAU73C,GACtBw3C,EAAYM,YAAY19C,EAAKslB,SAAWtlB,EAAKslB,SAAW,WACpD83B,EAAYO,kBACZR,EAAaxkD,KAAKykD,EAAYO,mBAtB9C,yBA0BWR,GA1BX,4C,sBA6Be,SAAUhhC,IAAV,iEACX,OADW,SACLwB,cAAI,CACNC,eAAKjY,GACLiY,eAAK/X,GACL+X,eAAKlY,KAJE,0C,kGC5XT23C,E,aACF,aAAe,IAAD,gCAoBd9f,MAAQ,SAAC5J,GACL,EAAKiqB,WAAL,2BACO,EAAKA,YADZ,IAEIzzC,GAAKwpB,KAvBC,KA2BduK,QAAU,SAAC3sC,GACP,EAAKqsD,WAAL,2BACO,EAAKA,YADZ,IAEIrsD,KAAOA,KA9BD,KAkCdksC,UAAY,SAACC,GACT,EAAKkgB,WAAL,2BACO,EAAKA,YADZ,IAEIlgB,OAASA,KArCH,KAyCdE,QAAU,SAACtX,GACP,EAAKs3B,WAAL,2BACO,EAAKA,YADZ,IAEIt3B,KAAMA,KA5CA,KAgDdqX,WAAa,SAAC5O,GACV,EAAK6uB,WAAL,2BACO,EAAKA,YADZ,IAEI7uB,YAAcA,KAnDR,KAuDd8O,QAAU,SAAC3a,GAA0B,IAApBC,EAAmB,wDAC1B2a,EAAaxf,IAAO4E,EAAMC,GAChC,EAAKy6B,WAAL,2BACO,EAAKA,YADZ,IAEIr6B,KAAOua,EAAWva,OAClBjF,OAASwf,KA5DH,KAgEdG,SAAW,SAACr4B,GACR,EAAKg4C,WAAL,2BACO,EAAKA,YADZ,IAEIh4C,MAAQA,KAnEF,KAuEd23C,WAAa,SAACroD,GACV,EAAK0oD,WAAL,2BACO,EAAKA,YADZ,IAEI1oD,QAAUA,KA1EJ,KA8EdopC,OAAS,SAACxR,GACN,EAAK8wB,WAAL,2BACO,EAAKA,YADZ,IAEI9oD,IAAMg4B,KAjFA,KAqFdsR,YAAc,SAACC,GACX,EAAKuf,WAAL,2BACO,EAAKA,YADZ,IAEIvf,SAAUA,KAxFJ,KA4Fd2G,gBAAkB,SAACC,GACf,EAAK2Y,WAAL,2BACO,EAAKA,YADZ,IAEI1Y,aAAeD,KA/FT,KAmGdqY,gBAAkB,SAACruB,GACf,EAAK2uB,WAAL,2BACO,EAAKA,YADZ,IAEI3uB,aAAcA,KAtGR,KA0GdwuB,UAAY,SAACve,GACT,EAAK0e,WAAL,2BACO,EAAKA,YADZ,IAEI1e,OAAQA,KA7GF,KAiHdwe,YAAc,SAACp4B,GACX,EAAKs4B,WAAL,2BACO,EAAKA,YADZ,IAEIt4B,SAAUA,KApHJ,KAwHdk4B,eAAiB,SAACnuB,GACd,EAAKuuB,WAAL,2BACO,EAAKA,YADZ,IAEIvuB,YAAaA,EACb/J,SAAUA,YA5HJ,KAgIdq4B,eAAiB,WACb,IAAM,IAAM32B,KAAY,EAAK42B,WACzB,GAAK,EAAKA,WAAWl6B,eAAesD,IACf,QAAbA,GAAmC,aAAbA,GAAwC,YAAbA,GAAsC,iBAAbA,GAA4C,aAAbA,GAAwC,SAAbA,IAC9H,EAAK42B,WAAW52B,GAElB,OADAzK,QAAQC,IAAI,sBAAwBwK,IAC7B,EAMvB,OAAO,EAAK42B,YA3IZp4B,KAAKo4B,WAAa,CACdzzC,IAAK,EACL5Y,MAAO,EACPmsC,QAAS,EACTpX,MAAM,EACNyI,aAAc,EACdnpB,OAAQ,EACR1Q,SAAU,EACVJ,KAAM,EACNupC,UAAU,EACVhP,aAAa,EAEbJ,cAAc,EACdiQ,QAAQ,EACR3b,MAAO,EACPjF,QAAS,EACTgH,UAAU,MA+HP+3B,O,mHC9IF9K,EAAexgC,UAAOC,IAAV,4BAGZygC,EAAU1gC,UAAOC,IAAV,mSAaHS,IAAwBrjB,cAU5ByuD,GANO9rC,UAAO6gC,IAAV,oFAMI7gC,UAAOC,IAAV,+BAIL8rC,EAAO/rC,UAAOC,IAAV,sEAKJoM,EAAOrM,UAAOC,IAAV,sEAKJ+rC,EAAehsC,UAAOC,IAAV,4MAMPS,KAKLu2B,EAAej3B,UAAOC,IAAV,uJAKlB,SAAAC,GAAK,OAAIA,EAAM2gC,IAAN,gCAAqC3gC,EAAM2gC,IAA3C,KAAoD,M,yDC6BrDtF,uBAPS,SAACrmD,EAAOsmD,GAC5B,MAAO,CACHr5B,SAAUjtB,EAAM8yB,OAAO7F,aAIJ,SAAA0gC,GAAQ,MAAK,CAAEjlD,QAASklD,6BAAmBllD,IAASilD,OACnB,EAAO,CAAEoJ,MAAM,GAA5D1Q,EA/EM,SAACr7B,GAClB,MAA4BgsC,oBAAS,GAArC,mBAAOC,EAAP,KAAeC,EAAf,KAEAC,qBAAU,WACN,OAAO,eAGR,IAEH,IASM73B,EAAU,CACZsoB,SAVuB,SAACj4C,IACnBsnD,GAAUtnD,EAAMynD,iBACjBF,EAAUvnD,EAAMynD,gBAEXpsC,EAAMiO,QACPjO,EAAMtiB,QAAQmS,WAAWmQ,EAAM9H,OASrCm0C,EAAoB,WAGtB,IAAIl1B,EAAOnX,EAAMmX,KAAKp0B,MAAM,KAC5B,UAAIo0B,QAAJ,IAAIA,KAAMh2B,OACN,OAAOg2B,EAAK,GAAGx1B,OAAO,GAAKw1B,EAAKA,EAAKh2B,OAAS,GAAGQ,OAAO,IAiBhE,OACI,cAAC,IAAMugD,SAAP,UACI,cAAC,IAAD,2BAAc5tB,GAAd,aACI,cAAC,EAAD,UACI,eAAC,EAAD,CAAgBzT,UAAYb,EAAMiC,SAAW,WAAa,GAA1D,UACI,cAAC,EAAD,UAjBZjC,EAAMiO,QACe,SAAjBjO,EAAMiO,OACC,cAAC,EAAD,CAAqB0yB,IAAK3gC,EAAMiO,SAI3C,cAAC,EAAD,UACKo+B,QAaO,gCACI,cAAC,EAAD,UAAcrsC,EAAMmX,OACpB,cAAC,EAAD,UAAc9K,IAAOrM,EAAMiZ,KAAK/gC,OAAO,MAAMg5B,OAAO,6B,sFC5DnEmQ,EAAOvhB,kBAAOilC,IAAPjlC,CAAH,oDAQJmpC,GAJkBnpC,kBAAOolC,IAAPplC,CAAH,8BAIRA,kBAAOuoC,IAAPvoC,CAAH,kEACdy7B,M,gBCUY+Q,IAnBS,SAAAtsC,GAAK,OAC3B,eAAC,EAAD,WAEU,cAAC,EAAD,CAAaa,UAAYb,EAAMiC,SAAW,WAAa,KACvD,cAAC,EAAD,CAAapB,UAAYb,EAAMiC,SAAW,WAAa,KACvD,cAAC,EAAD,CAAapB,UAAYb,EAAMiC,SAAW,WAAa,KACvD,cAAC,EAAD,CAAapB,UAAYb,EAAMiC,SAAW,WAAa,U,qRCO7DpC,E,kDACF,WAAYG,GAAQ,IAAD,8BACf,cAAMA,IAwCVusC,cAAgB,WACR,EAAKC,kBACL,EAAKvG,SAAL,2BACO,EAAKjxD,OADZ,IAEI6zD,WAAY,EAAK2D,qBA7CV,EAsDnBC,gBAtDmB,sBAsDD,8BAAA76B,EAAA,sEACUx7B,OAAOu3B,IAAI,UAAYzV,GAAK,gBAAiB,eADvD,cACRghB,EADQ,OAEVJ,EAAkB,KACJ,OAAdI,IAAoBJ,EAAkB,0BAA4B,IAAI3K,EAAO+K,EAAW,UAAU7K,SAAS,WAHjG,kBAIPyK,GAJO,2CAtDC,EA6DnB4zB,eAAiB,aA7DE,EAwEnBC,eAAiB,SAACv7B,GACd,EAAK60B,SAAL,2BACO,EAAKjxD,OADZ,IAEIovB,WAAYgN,EAAExsB,OAAOhF,UA3EV,EA+EnBgtD,kBAAoB,SAACn0D,GACjB,IACI2rB,EAAa,EAAKpvB,MAAMovB,WACxByoC,GAAa,EACjB,GAAIzoC,EAAY,CACZyoC,EAAazoC,EAAWwgC,cACxB,IAAIkI,EAAc,GAQlB,OAPAr0D,EAAM+N,SAAQ,SAACuH,EAAMzM,GACCysB,KAAKC,UAAUjgB,GAAM62C,cAEzB9hD,SAAS+pD,IACnBC,EAAYpmD,KAAKqH,MAGlB++C,EAEX,OAAOr0D,GA/FQ,EAwGnBs0D,cAAgB,SAACn0B,EAAUnyB,EAAKtF,GAC5B,OAAO,cAAC,IAAD,CAAc6rD,MAAO,EAAKhtC,MAAMgtC,MAAOjsC,MAAQ5f,GAAkB,EAAK6e,MAAMjkB,UAAUoF,OAAS,EAAI43B,KAAMH,EAASG,KAAMwI,KAAM3I,EAAS3K,OAAQkJ,KAAMyB,EAASzB,MAAW1wB,IAzGjK,EA4GnBwmD,mBAAqB,SAACr0B,EAAUnyB,GAC5B,OAAO,cAAC,IAAD,CAAsBumD,MAAO,EAAKhtC,MAAMgtC,MAAOjsC,MAAQ,EAAKf,MAAMjkB,UAAUoF,OAAS,EAAI43B,KAAMH,EAASG,KAAMwI,KAAM3I,EAAS3K,OAAQkJ,KAAMyB,EAASzB,KAAMjf,GAAI0gB,EAAS1gB,GAAc+gB,IAAKL,EAAS3H,KAAMhD,OAAS2K,EAAS3K,QAA3CxnB,IA7GxK,EAgHnBymD,aAAe,WAAmB,IAAlBnsC,IAAiB,yDAC7B,OACI,eAAC,IAAD,CAAkBd,YAAac,EAA/B,UACI,cAAC,IAAD,CAAcA,MAAOA,EAAOgY,KAAM,EAAK/Y,MAAMkc,UAAU,SAAUqF,KAAM,kEAAmEpK,KAAM,kBAAuB,GACvK,cAAC,IAAD,CAAcpW,MAAOA,EAAOgY,KAAM,EAAK/Y,MAAMkc,UAAU,SAAUqF,KAAM,kEAAmEpK,KAAM,kBAAuB,OApHhK,EAyHnBg2B,iBAAmB,WACf,MAA8CrK,cAAtCmB,EAAR,EAAQA,gBAAiBC,EAAzB,EAAyBA,iBACzBQ,YAAU,+BAAD,OAAgC,EAAK1kC,MAAM4N,YAAY1V,GAAvD,kBAA2E+rC,EAAiBC,IA3HtF,EA8HnBsI,eAAiB,WACb,GAAInqD,SAAS+qD,eAAe,iBAAmB/qD,SAAS+qD,eAAe,iBAAkB,CACrF,IAAMC,EAAehrD,SAAS+qD,eAAe,gBAAgB1J,aACvD7mD,EAAewF,SAAS+qD,eAAe,iBAAiB1J,aAE9D,OADoBznD,OAAOqxD,YACR,KACRt0B,SAASq0B,IAAiBr0B,SAASn8B,GAAgB,GAAK,GAAK,IAGjEm8B,SAASq0B,IAAiBr0B,SAASn8B,GAAgB,IAE9D,OAAO,GAtIP,EAAK7H,MAAQ,CACT+G,UAAW,GACXgoB,SAAS,EACTK,WAAY,GACZykC,YAAY,GAEhB,EAAK0E,QAAU,GACf,EAAKC,KAAO,EAVG,E,qDAcnB,WACIj6B,KAAKk6B,gBACDl6B,KAAKi5B,kBACLj5B,KAAK0yB,SAAL,2BACO1yB,KAAKv+B,OADZ,IAEI6zD,WAAYt1B,KAAKi5B,oBAIrBj5B,KAAKuzB,OAAOC,cAAcxzB,KAAKuzB,OACnCvzB,KAAKuzB,MAAQE,YAAYzzB,KAAKk6B,cAAclL,KAAKhvB,MAAO7wB,YAAM,KAE9DzG,OAAOgvB,iBAAiB,SAAUsI,KAAKg5B,iB,gCAG3C,SAAmBtF,GACf,IAAMmC,EAAS71B,KAAKi5B,iBAChBpD,GAAUA,GAAU71B,KAAKv+B,MAAM6zD,YAC/Bt1B,KAAK0yB,SAAL,2BACO1yB,KAAKv+B,OADZ,IAEI6zD,WAAYt1B,KAAKi5B,oBAIzBvwD,OAAOgvB,iBAAiB,SAAUsI,KAAKg5B,iB,kCAY3C,WACQh5B,KAAKuzB,OAAOC,cAAcxzB,KAAKuzB,S,wBAcvC,SAAWruD,GACP86B,KAAK0yB,SAAS,CACVxtD,MAAOA,EACPi1D,YAAa,YAAIj1D,GAAOoJ,MAAM,EAAG0xB,KAAKg6B,a,2BA8B9C,WACIh6B,KAAKvT,MAAMtiB,QAAQ0W,aAAa,0B,oBAyCpC,WAAU,IAAD,IAGiB,EAHjB,OAGL,OAAImf,KAAKvT,MAAMgtC,MAEP/wD,OAAOC,aAAayxD,MAAqC,SAA7B1xD,OAAOC,aAAayxD,KACzCp6B,KAAK25B,cAAa,GAIzB,eAAC,IAAD,CAAch1C,GAAG,eAAjB,UACI,sBAAKA,GAAG,gBAAR,UACI,cAAC,UAAD,CAASvE,MAAO4f,KAAKvT,MAAMkc,UAAU,aAAc0f,gBAAgB,IACnE,cAAC,IAAD,CAAQ1+B,cAAeqW,KAAKo5B,eAAgBvoC,WAAYmP,KAAKv+B,MAAMovB,gBAEvE,cAAC,IAAD,CAAkBvD,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAAjE,SAEqC,IAAhC,UAAAsR,KAAKvT,MAAMjkB,iBAAX,eAAsBoF,QAAc,2DACrCoyB,KAAKv+B,MAAM6zD,WACP,cAAC,IAAD,UACI,cAAC,IAAD,CACIL,YAAcj1B,KAAKvT,MAAMjkB,UAAUoF,OAAS,GAAMoyB,KAAKvT,MAAMjkB,UAAUoF,OAASoyB,KAAKg6B,SAAYh6B,KAAKi6B,KACtG/E,kBAAmBl1B,KAAKvT,MAAMgH,SAC9BvuB,MAAO86B,KAAKq5B,kBAAkBr5B,KAAKvT,MAAMjkB,WACzC2sD,aAAcn1B,KAAKm5B,eACnB/D,WAAYp1B,KAAK05B,mBACjBrE,WAAY,GACZC,WAAYt1B,KAAKv+B,MAAM6zD,eAG7B,UAMlB5sD,OAAOC,aAAayxD,MAAqC,SAA7B1xD,OAAOC,aAAayxD,KACzCp6B,KAAK25B,eAGX35B,KAAKvT,MAAM4N,YAAYgL,UAA+C,wBAAnCrF,KAAKvT,MAAM4N,YAAYgL,UAAqI,GAA9FrF,KAAKvT,MAAM0nC,kBAAkB52B,QAAO,SAAA8N,GAAC,MAAc,UAAVA,EAAE7F,MAA8B,WAAV6F,EAAE7F,QAAmB53B,OAC/K,wBAIP,eAAC,IAAM+gD,SAAP,WACK,eAAC,IAAD,WACG,eAAC,IAAD,CAAcrhC,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAA7D,UAAmEsR,KAAKvT,MAAMrM,MAA9E,OACA,cAAC,IAAD,UACI,cAAC,IAAD,CAAakN,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAAKrd,OAAO,SAASu8C,QAAS,WACtF,EAAKnhC,MAAMtiB,QAAQiQ,kBAAiD,cAA9B,EAAKqS,MAAMxmB,gBAAyC,cAC3FwuD,KAAM,KAFT,SAEgBz0B,KAAKvT,MAAMkc,UAAU,eAKN,yBAApC,UAAA3I,KAAKvT,MAAM4N,mBAAX,eAAwBgL,WAAwCrF,KAAKvT,MAAMoB,SAASwsC,qBAA4U,KAApT,eAAC,IAAD,WAA2B,cAAC,IAAD,CAA0BzM,QAAS5tB,KAAK45B,iBAAxC,oCAA2G,cAAC,IAAD,CAA8BhM,QAAS,kBAAM,EAAKnhC,MAAMtiB,QAAQiC,iBAAgB,EAAM,yBAAtF,kBACrP,cAAC,IAAD,CAAkBsgB,YAAcsT,KAAKvT,MAAMjkB,UAAUoF,OAAS,EAA9D,UACK,UAAAoyB,KAAKvT,MAAM0nC,yBAAX,eAA8BvmD,QAAS,EAAIoyB,KAAKvT,MAAM0nC,kBAAkBt6B,IAAImG,KAAKw5B,cAAex5B,KAAKvT,MAAM0nC,kBAAkBvmD,QAAU,cAAC,IAAD,CAAc4/C,MAAI,a,GAvMtJ0B,aA8NT3B,4BAAczF,mBAhBL,SAACrmD,EAAOsmD,GAAc,IAAD,EACzC,MAAO,CACH1tB,YAAc54B,EAAMwC,KAAKC,QACzB2pB,SAAQ,UAAGpsB,EAAMwC,KAAKC,QAAQI,YAAtB,aAAG,EAAyBupB,SACpCrlB,UAAW/G,EAAM8G,SAASC,UAC1B2rD,kBAAmB1yD,EAAM8G,SAAS0mB,SAClCwE,SAAUhyB,EAAM8G,SAASkrB,SACzBD,kBAAmB/xB,EAAM8G,SAASirB,kBAClC4O,SAAU3gC,EAAMoB,OAAOC,SACvBu/B,YAAa5gC,EAAMoB,OAAOG,YAC1B2B,OAAQlD,EAAMiD,KAAKC,OACnB+pB,SAAUjtB,EAAM8yB,OAAO7F,aAIJ,SAAA0gC,GAAQ,MAAK,CAAEjlD,QAASklD,6BAAmB,uCAAK/yB,KAAgBg+B,KAAoBrvB,KAAmBmkB,MACrGtH,CAA6Cx7B,M,uPCvN7DiuC,GAtBYhuC,UAAOylC,GAAV,4XAsBUzlC,UAAOylC,GAAV,2oBAuLhBwI,GApJuBjuC,UAAO6lC,GAAV,qsGAgFJ7lC,UAAO6lC,GAAV,+rCA+DC7lC,UAAOylC,GAAV,kFAKOzlC,UAAO6lC,GAAV,gKAWfx8B,EAAarJ,UAAOC,IAAV,4DAsCViuC,GAlCUluC,UAAOC,IAAV,oFAKED,UAAOC,IAAV,qFAeSD,UAAOohC,OAAV,oTAcDphC,UAAOC,IAAV,krBA6BGS,MAKX47B,EAAOt8B,UAAOC,IAAV,+kBAgCJwhC,EAAczhC,UAAO0hC,MAAV,sLAERhhC,KAUHihC,EAAgB3hC,UAAOC,IAAV,miBAafS,IAEYA,IAMAA,KACnB,SAAAR,GAAK,OAAIA,EAAM0hC,SAAW,aAAe1hC,EAAM0hC,SAAW,KAMvClhC,KAIpB,SAAAR,GAAK,OAAIA,EAAM2hC,QAAU,6BAA+B,KAEpCnhC,KAOVohC,EAAY9hC,UAAOC,IAAV,yGAGNS,K,uCC5WV2I,E,kDACF,WAAYnJ,GAAQ,IAAD,8BACf,cAAMA,IAiBViuC,eAAiB,SAACxnD,GAEd,EAAKw/C,SAAS,CACViI,qBAAuB,EAAKl5D,MAAMk5D,uBAAyBznD,GAAcA,KArB9D,EAwDnB0nD,oBAAsB,WAIlB,IAHA,IAAMC,EAAc,EAAKp5D,MAAMo5D,YAE3BC,EAAS,GAHW,WAIhB/sD,GACE,GAAHA,GACC+sD,EAAO3nD,KACH,eAAC,EAAD,CAAay6C,QAAU,WACnB,EAAKnhC,MAAMtiB,QAAQ6N,qBAAqB6iD,EAAY9sD,IACnC8sD,EAAYvsD,MAAM,EAAEP,EAAE,GACvC,EAAK2kD,SAAS,CAACmI,YAAY,GAAI5iD,OAAO,KACtC,EAAKwU,MAAMtiB,QAAQmO,gBAAgB,CAAC,aAAa,QAAQ,gBAAgB,WACzE,EAAKmU,MAAMtiB,QAAQ6N,qBAAqB,KAL5C,UAOI,cAAC,IAAD,CAAkBg2B,KAAM+sB,IAAenyD,MAAM,YAC7C,cAAC,EAAD,UACI,4BAAIiyD,EAAY9sD,GAAG61B,aAI7B,GAAH71B,GACC+sD,EAAO3nD,KACH,eAAC,EAAD,CAAay6C,QAAU,WACnB,EAAKoN,uBAAuBH,EAAY9sD,IACxC,IAAMktD,EAAWJ,EAAYvsD,MAAM,EAAE,GACrC,EAAKokD,SAAS,CAACmI,YAAY,YAAII,KAC/B,EAAKxuC,MAAMtiB,QAAQmO,gBAAgB,CAAC,QAAQ,gBAAgB,YAJhE,UAMI,cAAC,IAAD,CAAkB01B,KAAM+sB,IAAenyD,MAAM,YAC7C,cAAC,EAAD,UACA,4BAAIiyD,EAAY9sD,GAAG61B,aAIvB,GAAL71B,GACC+sD,EAAO3nD,KACH,eAAC,EAAD,CAAay6C,QAAU,WACnB,EAAKsN,8BAA8BL,EAAY9sD,IAC/C,IAAMktD,EAAWJ,EAAYvsD,MAAM,EAAEP,GACrC,EAAK2kD,SAAS,CAACmI,YAAY,YAAII,KAC/B,EAAKxuC,MAAMtiB,QAAQmO,gBAAgB,CAAC,gBAAgB,YAJxD,UAMI,cAAC,IAAD,CAAkB01B,KAAM+sB,IAAenyD,MAAM,YAC7C,cAAC,EAAD,UACA,4BAAIiyD,EAAY9sD,GAAG61B,aAI5B71B,EAAI,GACH+sD,EAAO3nD,KACH,eAAC,EAAD,CAAay6C,QAAU,WACnB,EAAKuN,uBAAuBN,EAAY9sD,IACxC,IAAMktD,EAAWJ,EAAYvsD,MAAM,EAAEP,GACrC,EAAK2kD,SAAS,CAACmI,YAAY,YAAII,KAC/B,EAAKxuC,MAAMtiB,QAAQmO,gBAAgB,CAAC,YAJxC,UAMI,cAAC,IAAD,CAAkB01B,KAAM+sB,IAAenyD,MAAM,YAC7C,cAAC,EAAD,UACI,4BAAIiyD,EAAY9sD,GAAG61B,cAtD/B71B,EAAE,EAAGA,EAAE8sD,EAAYjtD,OAAOG,IAAM,EAAhCA,GA2DR,OACI+sD,EAAOltD,OACHktD,EAAOA,EAAOltD,OAAO,GACvB,MA1HS,EA8HnBwtD,oBA9HmB,sBA8HG,sBAAA/8B,EAAA,sDAClB,EAAK5R,MAAMtiB,QAAQ4N,qBADD,2CA9HH,EAkInBijD,uBAAyB,SAACxgD,GACtB,EAAKiS,MAAMtiB,QAAQ+N,qBAAqBsC,IAnIzB,EAsInB0gD,8BAAgC,SAAC1gD,GAC7B,EAAKiS,MAAMtiB,QAAQiO,6BAA6BoC,GAC5C,EAAKiS,MAAM4uC,kBACX,EAAK5uC,MAAM4uC,iBAAiB7gD,IAzIjB,EA4InB2gD,uBAAyB,SAAC3gD,GACtB,EAAKiS,MAAMtiB,QAAQkO,sBAAsBmC,GACrC,EAAKiS,MAAM4uC,kBACX,EAAK5uC,MAAM4uC,iBAAiB7gD,IA/IjB,EAmJnB8gD,eAAiB,SAAC9gD,EAAMtH,GACpB,GAAIsH,EAAKw6B,SAGT,OAAI,EAAKvoB,MAAM8uC,aAEP,cAAC,EAAD,CAAa,WAAU,qBAAsB,WAAU/gD,EAAKopB,KAA6BuR,OAAQ36B,EAAKw6B,SAAU1nB,WAAY,EAAKb,MAAM8uC,aAAe,QAAU,IAAM,KAAO,EAAK9uC,MAAMiC,SAAW,WAAa,IAAhN,SACI,sBAAKpB,UAAY,EAAKb,MAAMiC,SAAW,WAAa,GAAKk/B,QAAS,WAC9D,EAAK8M,eAAexnD,GACpB,EAAK8nD,uBAAuBxgD,GAC5B,EAAKk4C,SAAS,CAACmI,YAAY,GAAD,mBAAM,EAAKp5D,MAAMo5D,aAAjB,CAA6BrgD,OAH3D,UAIO,cAAC,IAAD,CAAkBwzB,KAAMwtB,IAAU5yD,MAAM,YAAW,mBAAG0kB,UAAY,EAAKb,MAAMiC,SAAW,WAAa,GAAlD,SAAwDlU,EAAKopB,WALpD1wB,EAAI,cAU/E,eAAC,EAAD,CAAa,WAAU,qBAAgCiiC,OAAQ36B,EAAKw6B,SAAU1nB,WAAY,EAAKb,MAAM8uC,aAAe,QAAU,IAAM,KAAO,EAAK9uC,MAAMiC,SAAW,WAAa,IAA9K,UACI,qBAAK++B,IAAKjzC,EAAKy5B,QACf,mBAAG5iC,OAAO,SAASic,UAAY,EAAKb,MAAMiC,SAAW,WAAa,GAAK+lC,KAAMj6C,EAAK05B,OAAlF,SAA2F15B,EAAKopB,OAChG,cAAC,EAAD,CAAyBtW,WAAY,EAAK7rB,MAAMk5D,uBAAyBznD,EAAM,SAAW,IAAM,KAAO,EAAKuZ,MAAM8uC,aAAe,QAAU,IAA3I,SACK,EAAK95D,MAAMk5D,uBAAyBznD,EAAM,EAAK8nD,uBAAuBxgD,GAAQ,OAEnF,sBAAM8S,UAAY,EAAKb,MAAMiC,SAAW,WAAa,GAAKk/B,QAAS,kBAAM,EAAK8M,eAAexnD,IAA7F,SAAmG,cAAC,IAAD,CAAiB86B,KAAMytB,UAN5EvoD,IAnKvC,EA8KnBwoD,WAAa,SAAClhD,EAAMtH,GAChB,GAAIsH,EAAKw6B,SAGT,OAAI,EAAKvoB,MAAM8uC,aAEP,cAAC,EAAD,CAAa,WAAU,qBAAsB,WAAU/gD,EAAKopB,KAAyBuR,OAAQ36B,EAAKw6B,SAAU1nB,WAAY,EAAKb,MAAM8uC,aAAe,QAAU,IAAM,KAAO,EAAK9uC,MAAMiC,SAAW,WAAa,IAA5M,SACI,sBAAKpB,UAAY,EAAKb,MAAMiC,SAAW,WAAa,GAAKk/B,QAAS,WAC3DpzC,EAAKw6B,UACJ,EAAK0lB,eAAexnD,GACpB,EAAKgoD,8BAA8B1gD,GACnC,EAAKk4C,SAAS,CAACmI,YAAY,GAAD,mBAAM,EAAKp5D,MAAMo5D,aAAjB,CAA6BrgD,OAEnD,EAAKiS,MAAM4uC,kBACX,EAAK5uC,MAAM4uC,iBAAiB7gD,IAPxC,UAUQ,cAAC,IAAD,CAAkBwzB,KAAMwtB,IAAU5yD,MAAM,YAAW,mBAAG0kB,UAAY,EAAKb,MAAMiC,SAAW,WAAa,GAAlD,SAAwDlU,EAAKopB,WAXrD1wB,EAAI,eAFnF,GAlLe,EAqMnByoD,kBAAoB,SAACnhD,EAAMtH,GACvB,GAAIsH,EAAKw6B,SAGT,OAAI,EAAKvoB,MAAM8uC,aAEP,cAAC,EAAD,CAAa,WAAU,qBAAsB,WAAU/gD,EAAKopB,KAA2BtW,WAAY,EAAKb,MAAM8uC,aAAe,QAAU,IAAM,KAAO,EAAK9uC,MAAMiC,SAAW,WAAa,IAAM,KAAOlU,EAAKw6B,SAAW,SAAW,YAA/N,SACI,sBAAK1nB,UAAY,EAAKb,MAAMiC,SAAW,WAAa,GAAKk/B,QAAS,WAC3DpzC,EAAKw6B,UACJ,EAAK0lB,eAAexnD,GACpB,EAAKioD,uBAAuB3gD,GAC5B,EAAKk4C,SAAS,CAACmI,YAAY,GAAD,mBAAM,EAAKp5D,MAAMo5D,aAAjB,CAA6BrgD,OAEnD,EAAKiS,MAAM4uC,kBACX,EAAK5uC,MAAM4uC,iBAAiB7gD,IAPxC,UAWQ,cAAC,IAAD,CAAkBwzB,KAAMwtB,IAAU5yD,MAAM,YAAW,mBAAG0kB,UAAY,EAAKb,MAAMiC,SAAW,WAAa,GAAlD,SAAwDlU,EAAKopB,WAZrD1wB,EAAI,iBAFnF,GAzMe,EA6NnB0oD,WAAa,SAACphD,EAAMtH,GAChB,GAAIsH,EAAKw6B,SAGT,OAAI,EAAKvoB,MAAM8uC,aAEP,cAAC,EAAD,CAAa,WAAU,qBAAsB,WAAU/gD,EAAKopB,KAAyBuR,OAAQ36B,EAAKw6B,SAAU1nB,WAAY,EAAKb,MAAM8uC,aAAe,QAAU,IAAK,KAAO,EAAK9uC,MAAMiC,SAAW,WAAa,IAA3M,SACI,sBAAKpB,UAAY,EAAKb,MAAMiC,SAAW,WAAa,GAAKk/B,QAAS,WAC3DpzC,EAAKw6B,UACJ,EAAK0lB,eAAexnD,GACpB,EAAKioD,uBAAuB3gD,GAC5B,EAAKk4C,SAAS,CAACmI,YAAY,GAAD,mBAAM,EAAKp5D,MAAMo5D,aAAjB,CAA6BrgD,OAEnD,EAAKiS,MAAM4uC,kBACX,EAAK5uC,MAAM4uC,iBAAiB7gD,IAPxC,UAUQ,cAAC,IAAD,CAAkBwzB,KAAMwtB,IAAU5yD,MAAM,YAAW,mBAAG0kB,UAAY,EAAKb,MAAMiC,SAAW,WAAa,GAAlD,SAAwDlU,EAAKopB,WAXrD1wB,EAAI,eAFnF,GA9NA,EAAKzR,MAAQ,CACTk5D,sBAAsB,EAEtBE,YAAY,GACZ5iD,OAAQ,GACR49C,OAAQ,GARG,E,qDAWnB,WAEQ71B,KAAKuzB,OAAOC,cAAcxzB,KAAKuzB,OACnCvzB,KAAKuzB,MAAQE,YAAYzzB,KAAKo7B,oBAAoBpM,KAAKhvB,MAAO7wB,YAAM,IACpE6wB,KAAKvT,MAAMtiB,QAAQ6N,qBAAqBgoB,KAAKv+B,MAAMwW,U,kCAevD,WACQ+nB,KAAKuzB,OAAOC,cAAcxzB,KAAKuzB,S,0BAGvC,WACI,OACA,eAAC,IAAM5E,SAAP,WACI,cAAC,IAAD,CAAYjgC,SAAUsR,KAAKvT,MAAMiC,WACjC,cAAC,IAAD,CAAYA,SAAUsR,KAAKvT,MAAMiC,WACjC,cAAC,IAAD,CAAYA,SAAUsR,KAAKvT,MAAMiC,WACjC,cAAC,IAAD,CAAYA,SAAUsR,KAAKvT,MAAMiC,gB,0BAKzC,SAAatd,GAAQ,IAAD,OACZ6G,EAAS7G,EAAMyqD,cAAcxvD,MACjC2zB,KAAK0yB,SAAS,CAAEz6C,OAAQA,IACpB+nB,KAAK87B,SAASxkC,aAAa0I,KAAK87B,SACpC97B,KAAK87B,QAAUrkC,YAAW,WACtB,EAAKhL,MAAMtiB,QAAQ6N,qBAAqB,EAAKvW,MAAMwW,QACnD,EAAKy6C,SAAS,CAACmI,YAAY,KAC3B,EAAKpuC,MAAMtiB,QAAQmO,gBAAgB,CAAC,aAAa,QAAQ,gBAAgB,aAC1E,O,oBA+LP,WAAU,IAAD,OACL,OACI,eAAC,EAAD,CAAmBs9C,IAAM,SAACmG,GAAiB,EAAKA,WAAaA,GAA7D,UACI,cAAC,IAAMpN,SAAP,UACA,eAAC,EAAD,CAAsBP,QAASpuB,KAAKvT,MAAM2hC,QAASQ,SAAU5uB,KAAKvT,MAAMmiC,SAAUT,SAAUnuB,KAAKvT,MAAM0hC,SAAvG,UAEI,cAAC,EAAD,UACI,cAAC,IAAD,CAAiBngB,KAAM6gB,QAE3B,sBAAMC,SAAU9uB,KAAKg8B,aAAahN,KAAKhvB,MAAvC,SACI,cAAC,EAAD,CAAoB3zB,MAAO2zB,KAAKv+B,MAAMwW,OAAQoxC,SAAUrpB,KAAKg8B,aAAahN,KAAKhvB,MAAOivB,YAAa,4CAczGjvB,KAAKvT,MAAM8uC,aAAkD,KAAnC,cAAC,IAAD,CAASn7C,MAAO,eAC3C4f,KAAKvT,MAAMwvC,gBAAgB1oC,UAAYyM,KAAKk8B,eAC7C,eAAC,IAAMvN,SAAP,WACK3uB,KAAKvT,MAAMwvC,gBAAgB3oC,oBAC5B,eAAC,EAAD,CAAiBhG,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAAhE,UACKsR,KAAK46B,sBACL56B,KAAKvT,MAAM4G,iBAAiBzlB,OAASoyB,KAAKvT,MAAM4G,iBAAiBwG,IAAImG,KAAK47B,YAAe,QACzE,KACpB57B,KAAKvT,MAAMwvC,gBAAgB7oC,6BAA+B4M,KAAKvT,MAAMwvC,gBAAgB3oC,oBACtF,eAAC,EAAD,CAAiBhG,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAAhE,UACKsR,KAAK46B,sBACL56B,KAAKvT,MAAMwvC,gBAAgB1oC,UAAYyM,KAAKk8B,aAAel8B,KAAKvT,MAAM0G,wBAAwB0G,IAAImG,KAAK27B,sBACvF,KACpB37B,KAAKvT,MAAMwvC,gBAAgB/oC,qBAAuB8M,KAAKvT,MAAMwvC,gBAAgB7oC,2BAC9E,eAAC,EAAD,CAAiB9F,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAAhE,UACKsR,KAAK46B,sBACL56B,KAAKvT,MAAMwG,gBAAgB4G,IAAImG,KAAK07B,eACpB,KACpB17B,KAAKvT,MAAMwvC,gBAAgBjpC,gBAAkBgN,KAAKvT,MAAMwvC,gBAAgB/oC,mBACzE,eAAC,EAAD,CAAiB5F,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAAhE,UACKsR,KAAK46B,sBACL56B,KAAKvT,MAAMsG,WAAW8G,IAAImG,KAAKs7B,mBACdt7B,KAAKvT,MAAMwvC,gBAAgBjpC,eAAkBgN,KAAKvT,MAAMwvC,gBAAgB/oC,qBAAsB8M,KAAKvT,MAAMwvC,gBAAgB1oC,UACzH,KAAtByM,KAAKk8B,yB,GApSAhN,aA8TV3B,4BAAczF,mBAfL,SAACrmD,EAAOsmD,GAE5B,MAAO,CACH/kD,YAAavB,EAAMoB,OAAOG,YAC1B0rB,SAAUjtB,EAAM8yB,OAAO7F,SACvBqE,WAAYtxB,EAAMm0B,WAAW7C,WAC7BE,gBAAiBxxB,EAAMm0B,WAAW3C,gBAClCE,wBAAyB1xB,EAAMm0B,WAAWzC,wBAC1CE,iBAAkB5xB,EAAMm0B,WAAWvC,iBACnC4oC,gBAAiBx6D,EAAMm0B,eAIJ,SAAAw5B,GAAQ,MAAK,CAAEjlD,QAASklD,6BAAmBllD,IAASilD,MAElDtH,CAA6ClyB,K,gEC3U7DumC,EAAgB5vC,UAAOC,IAAV,yGAMb4vC,EAAS7vC,UAAOC,IAAV,mHAKb,SAAAC,GAAK,MAAuB,SAAnBA,EAAM67B,SAAsB,cAAgB,iBACrDN,K,OCFSqU,IARM,SAAA5vC,GAAK,OACzB,cAAC,EAAD,UACC,cAAC,EAAD,CAAea,UAAYb,EAAMiC,SAAW,WAAa,GAAK45B,SAAU77B,EAAM67B,e,kcCHnEgU,GAAgB/vC,WAAOC,IAAV,mdA4Bb+vC,GAAQhwC,WAAOC,IAAV,iDAKLgwC,GAAajwC,WAAOC,IAAV,0GAQViwC,GAAoBlwC,WAAOC,IAAV,yTAIRS,MAqBTyvC,IAPanwC,WAAOowC,GAAV,mHAOGpwC,WAAOC,IAAV,oZ,IA0BDD,WAAOohC,OAAV,4MACD1gC,M,OC9FL2vC,GAAarwC,WAAOowC,GAAV,kHAOVE,GAAmBtwC,WAAOuwC,EAAV,+KAYhBC,GAAmBxwC,WAAOC,IAAV,8HAQhBwwC,GAAyBzwC,WAAOC,IAAV,8LAetBywC,GAAmB1wC,WAAOC,IAAV,wL,+CCnCvB0wC,G,+MAGFC,aAAe,WACX,EAAK1wC,MAAMtiB,QAAQ6Q,aAAa,EAAKyR,MAAMiC,W,6CAG/C,WAAU,IAAD,OACL,OACI,gBAAC,KAAMigC,SAAP,WACI,eAAC,GAAD,0BACA,eAAC,GAAD,2CACA,gBAAC,GAAD,WACI,gBAAC,GAAD,CAA+Bf,QAAS,WAAQ,EAAKnhC,MAAMtiB,QAAQ6Q,aAAY,IAA/E,UACI,sBAAKi7C,IAAI,WAAWxI,IAAK2P,OACzB,6HAEJ,gBAAC,GAAD,CAA+BxP,QAAS,WAAQ,EAAKnhC,MAAMtiB,QAAQ6Q,aAAY,IAA/E,UACI,sBAAKi7C,IAAI,UAAUxI,IAAK4P,OACxB,+GAIR,gBAAC,GAAD,CAAyB/vC,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAAxE,UACI,qCACA,eAAC,KAAD,CAAU26B,SAAUrpB,KAAKm9B,aAAc/T,QAAUppB,KAAKvT,MAAMiC,SAAW,UAAY,KACnF,iD,GA1BQwgC,aAgDbpH,uBAfS,SAACrmD,EAAOsmD,GAC5B,MAAO,CACHhtB,KAAMt5B,EAAMwC,KACZgC,eAAgBxE,EAAMuE,SAASC,eAC/ByoB,SAAUjtB,EAAM8yB,OAAO7F,SACvBC,aAAcltB,EAAM8yB,OAAO5F,iBAIR,SAAAygC,GAAQ,MAAK,CACpCjlD,QAASklD,8BAAmB,eACrBryB,MACJoyB,MAGQtH,CAA6CoV,ICtD/CN,GAAarwC,WAAOowC,GAAV,kHAMV7uB,GAAOvhB,WAAOylC,GAAV,iDAIJsL,GAAW/wC,WAAO6lC,GAAV,qKAURmL,GAAkBhxC,WAAOC,IAAV,mEAMfgxC,GAAgBjxC,WAAOC,IAAV,+DACfS,M,kBCtBLwwC,G,+MAGFN,aAAe,WACX,EAAK1wC,MAAMtiB,QAAQ6Q,aAAa,EAAKyR,MAAMiC,W,6CAG/C,WACG,OACK,gBAAC,KAAMigC,SAAP,WACI,eAAC,GAAD,+BACA,gBAAC,GAAD,WAEI,gBAAC,GAAD,WACI,eAAC,GAAD,UACI,eAAC,KAAD,CAAiB3gB,KAAM+lB,SAE3B,gBAAC,GAAD,WACI,4CACA,4JAKR,gBAAC,GAAD,WACI,eAAC,GAAD,UACI,eAAC,KAAD,CAAiB/lB,KAAM0vB,SAE3B,gBAAC,GAAD,WACI,wCACA,+KAKR,gBAAC,GAAD,WACI,eAAC,GAAD,UACI,eAAC,KAAD,CAAiB1vB,KAAM2vB,SAE3B,gBAAC,GAAD,WACI,4CACA,wJ,GAzCJzO,aCDlB0O,IDqES9V,oBAfS,SAACrmD,EAAOsmD,GAC5B,MAAO,CACHhtB,KAAMt5B,EAAMwC,KACZgC,eAAgBxE,EAAMuE,SAASC,eAC/ByoB,SAAUjtB,EAAM8yB,OAAO7F,SACvBC,aAAcltB,EAAM8yB,OAAO5F,iBAIR,SAAAygC,GAAQ,MAAK,CACpCjlD,QAASklD,8BAAmB,eACrBryB,MACJoyB,MAGQtH,CAA6C2V,I,+MClExDN,aAAe,WACX,EAAK1wC,MAAMtiB,QAAQ6Q,aAAa,EAAKyR,MAAMiC,W,6CAG/C,WACG,OACK,eAAC,KAAMigC,SAAP,UACG,yBAAQvuC,MAAO,KAAMmN,MAAO,CAAC8mC,UAAW,QAAS7D,MAAM,MAAMqF,OAAO,MAAMpI,IAAI,4CAA4CoQ,YAAY,IAAIC,MAAM,0EAA0EC,iBAAe,U,GAV/N7O,cCLZ0N,IDoCE9U,oBAfS,SAACrmD,EAAOsmD,GAC5B,MAAO,CACHhtB,KAAMt5B,EAAMwC,KACZgC,eAAgBxE,EAAMuE,SAASC,eAC/ByoB,SAAUjtB,EAAM8yB,OAAO7F,SACvBC,aAAcltB,EAAM8yB,OAAO5F,iBAIR,SAAAygC,GAAQ,MAAK,CACpCjlD,QAASklD,8BAAmB,eACrBryB,MACJoyB,MAGQtH,CAA6C8V,ICpClCrxC,WAAOowC,GAAV,mHAOVE,GAAmBtwC,WAAOuwC,EAAV,0EAKhBkB,GAAuBzxC,WAAOC,IAAV,saCJ3ByxC,G,2KAEF,WACiC,MAAzBj+B,KAAKvT,MAAMyxC,YACXl+B,KAAKvT,MAAMtiB,QAAQiC,gBAAgB4zB,KAAKvT,MAAMyxC,WAAYl+B,KAAKvT,MAAMngB,W,6BAI7E,SAAgBD,EAAON,GAEnBi0B,KAAKvT,MAAMtiB,QAAQiC,gBAAgBC,EAAON,K,oBAG9C,WAAU,IAAD,SAEL,OACI,gBAAC,KAAM4iD,SAAP,WACI,eAAC,GAAD,UAAoB3uB,KAAKvT,MAAMrM,QAC/B,eAAC,GAAD,CAAyB+9C,wBAAyB,CAAEC,OAAQp+B,KAAKvT,MAAM8c,eACvE,gBAAC,GAAD,CAA6Bjc,UAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,GAA5E,UACI,6BAAIsR,KAAKvT,MAAM4xC,WACf,eAAC,KAAD,CAAUhV,SAAU,SAACxrB,GAAD,OAAO,EAAKygC,gBAAgBzgC,EAAExsB,OAAO+3C,QAAS,EAAK38B,MAAMngB,UAAU88C,QAAU,UAAAppB,KAAKvT,MAAMoB,gBAAX,SAAsBmS,KAAKvT,MAAMngB,SAAW,UAAY,KACzJ,6BAAI0zB,KAAKvT,MAAM8xC,oB,GAtBRrP,aA2CZpH,uBAdS,SAACrmD,EAAOsmD,GAAc,IAAD,EACzC,MAAO,CACH7jD,QAASzC,EAAMwC,KAAKC,QACpB2pB,SAAQ,UAAEpsB,EAAMwC,KAAKC,QAAQI,YAArB,aAAE,EAAyBupB,aAIhB,SAAAuhC,GAAQ,MAAK,CACpCjlD,QAASklD,8BAAmB,2BACrBryB,MACAV,MACJ8yB,MAGQtH,CAA6CmW,ICnD/CrB,GAAarwC,WAAOowC,GAAV,kHAMVE,GAAmBtwC,WAAOuwC,EAAV,+KCEvB0B,IDS8BjyC,WAAOC,IAAV,6S,gKCR7B,WACI,OACI,gBAAC,KAAMmiC,SAAP,WACI,eAAC,GAAD,UAAoB3uB,KAAKvT,MAAMrM,QAC/B,eAAC,GAAD,CAAyB+9C,wBAAyB,CAAEC,OAAQp+B,KAAKvT,MAAM8c,sB,GAL5D2lB,cAWZsP,M,UCRThC,G,+MAEFiC,cAAgB,SAAC5gC,GACTA,EAAExsB,OAAOqtD,UAAUC,SAAS,eAC5B,EAAKC,kB,qDAIb,WACS5+B,KAAKvT,MAAMoyC,eACZ7+B,KAAKvT,MAAMtiB,QAAQ4C,wBAAwBizB,KAAKvT,MAAMqT,SAASg/B,UAAU,K,oBAIjF,WAAU,IAAD,OACL,OACI,eAAC,GAAD,UACI,eAAC,GAAD,CAAmBxxC,UAAU,aAAasgC,QAAS5tB,KAAKy+B,cAAxD,SACI,gBAAC,GAAD,WACMz+B,KAAKvT,MAAMoyC,cAAkF,KAAlE,eAAC,GAAD,CAAmBjR,QAAS,WAAQ,EAAKgR,oBACrE5+B,KAAKvT,MAAMsyC,SACV/+B,KAAKvT,MAAMuyC,MAAQh/B,KAAKvT,MAAMwyC,KAAQ,eAAC,KAAD,CAAQrR,QAAS,kBAAM,EAAKnhC,MAAMwyC,KAAK,SAAS73B,KAAK,WAAc,KACzGpH,KAAKvT,MAAMuW,MAAQhD,KAAKvT,MAAMwyC,KAAQ,eAAC,KAAD,CAAQ3W,SAAS,QAAQsF,QAAS,WAAQ72B,QAAQC,IAAI,gBAAiB,EAAKvK,MAAMwyC,KAAK,SAAU73B,KAAK,aAAgB,KAC5JpH,KAAKvT,MAAMyyC,MAAS,eAAC,KAAD,CAAQ5W,SAAS,QAAQsF,QAAS,kBAAM,EAAKnhC,MAAMtiB,QAAQ4C,wBAAwB,EAAK0f,MAAMqT,SAASg/B,UAAU,IAAQ13B,KAAK,YAAe,gB,GAvBlK+3B,KAAMjQ,WAiDhBgF,gBAAWpM,oBAfF,SAACrmD,EAAOsmD,GAC5B,MAAO,CACH9hD,eAAgBxE,EAAMuE,SAASC,eAC/B2oB,aAAcntB,EAAM8yB,OAAO3F,aAC3BwwC,SAAU39D,EAAM8yB,OAAOnF,SACvBV,SAAUjtB,EAAM8yB,OAAO7F,SACvBC,aAAcltB,EAAM8yB,OAAO5F,iBAGR,SAAAygC,GAAQ,MAAK,CACpCjlD,QAASklD,8BAAmB,eACrBllD,MACJilD,MAGmBtH,CAA6C0U,K,qBCtDjE3uC,GAAW,CACbwxC,UAAU,EACV9M,KAAK,EACL+M,WAAW,EACXC,UAAU,GAIRC,G,gKAEF,WAAU,IAAD,OACCC,EAAS,SAAAC,GAAG,OAAI,EAAKC,GAAGC,OAAOX,KAAKS,IACpCX,EAAWI,KAAMU,SAAShmC,IAAImG,KAAKvT,MAAMsyC,UAAU,SAACe,EAAO72B,GAC7D,GAAa,MAAT62B,EACJ,OAAOX,KAAMY,aAAaD,EAAO,CAC7Bb,KAAMQ,EACNZ,cAAe,EAAKpyC,MAAMoyC,mBAGlC,OACI,eAAC,GAAD,CAAsBvxC,UAAY0S,KAAKvT,MAAMuzC,OAAS,UAAY,GAAlE,SACI,eAAC,KAAD,CAAYnyC,SAAUA,GAAU+nC,IAAK,SAAA+J,GAAE,OAAI,EAAKA,GAAKA,GAArD,SACKZ,U,GAdA7P,aAoCNgF,gBAAWpM,oBAfF,SAACrmD,EAAOsmD,GAC5B,MAAO,CACH9hD,eAAgBxE,EAAMuE,SAASC,eAC/B2oB,aAAcntB,EAAM8yB,OAAO3F,aAC3BwwC,SAAU39D,EAAM8yB,OAAOnF,SACvBV,SAAUjtB,EAAM8yB,OAAO7F,SACvBC,aAAcltB,EAAM8yB,OAAO5F,iBAGR,SAAAygC,GAAQ,MAAK,CACpCjlD,QAASklD,8BAAmB,eACrBllD,MACJilD,MAGmBtH,CAA6C0X,K,kBCvCjES,G,oDACF,aAAe,yC,2CAGf,WAAU,IAAD,EAEL,OACI,gBAAC,GAAD,CAAQpB,eAAe,EAAMmB,QAAQ,EAArC,UACI,eAAC,GAAD,CAAOh9B,MAAI,EAAX,SACI,eAAC,GAAD,CACI5iB,MAAK,aAAQ4f,KAAKvT,MAAMsO,KAAK0c,UAAxB,KACLlO,YAAavJ,KAAKvT,MAAMkc,UAAU,gBAAkB,4LAG5D,eAAC,GAAD,CAAOq2B,MAAI,EAACh8B,MAAI,EAAhB,SACI,eAAC,GAAD,CACI5iB,MAAK,uBACLmpB,YAAavJ,KAAKvT,MAAMkc,UAAU,kBAAoB,+IAI9D,eAAC,GAAD,CAAOq2B,MAAI,EAACh8B,MAAI,EAAhB,SACI,eAAC,GAAD,CACI5iB,MAAO4f,KAAKvT,MAAMkc,UAAU,uBAC5BY,YAAavJ,KAAKvT,MAAMkc,UAAU,kBAClC41B,QAASrwD,aAAsB8xB,KAAKvT,MAAMkc,UAAU,QACpDu1B,YAAY,EACZG,SAAUnwD,aAAsB8xB,KAAKvT,MAAMkc,UAAU,OACrDr8B,QAAQ,qBAIhB,eAAC,GAAD,CAAO0yD,MAAI,EAACh8B,MAAI,EAAhB,SACI,eAAC,GAAD,CACI5iB,MAAO4f,KAAKvT,MAAMkc,UAAU,yBAC5BY,YAAavJ,KAAKvT,MAAMkc,UAAU,oBAClC41B,QAASrwD,aAAsB8xB,KAAKvT,MAAMkc,UAAU,QACpD01B,SAAUnwD,aAAsB8xB,KAAKvT,MAAMkc,UAAU,OACrDu1B,YAAY,EACZ5xD,QAAQ,uBAIhB,eAAC,GAAD,CAAO0yD,MAAI,EAACh8B,MAAI,EAAhB,SACI,eAAC,GAAD,CACI5iB,MAAO4f,KAAKvT,MAAMkc,UAAU,qBAC5BY,YAAavJ,KAAKvT,MAAMkc,UAAU,gBAClC41B,QAASv+B,KAAKvT,MAAMkc,UAAU,UAC9B01B,SAAUr+B,KAAKvT,MAAMkc,UAAU,SAC/Bu1B,YAAY,EACZ5xD,QAAQ,2BAIyB,SAAxC,UAAA5D,OAAOC,oBAAP,eAAqBu3D,kBAClB,eAAC,GAAD,CAAOlB,MAAI,EAACh8B,MAAI,EAAhB,SACI,eAAC,GAAD,CACI5iB,MAAO4f,KAAKvT,MAAMkc,UAAU,sBAC5BY,YAAavJ,KAAKvT,MAAMkc,UAAU,gBAAiB,CAC/Cr5B,IAAI,+BAAD,OAAiC0wB,KAAKvT,MAAMsO,KAAKpW,GAAjD,wBAMnB,eAAC,GAAD,CAAOq6C,MAAI,EAACE,OAAK,EAAjB,SACI,eAAC,GAAD,a,GAlEChQ,aCDf+Q,IDiFS1S,yBAAczF,oBAPL,SAACrmD,EAAOsmD,GAC5B,MAAO,CACHhtB,KAAMt5B,EAAMwC,KAAKC,WAKI4jD,CAAyBmY,K,gKC/ElD,WAEI,OACI,gBAAC,GAAD,WACI,eAAC,GAAD,CAAOj9B,MAAI,EAAX,SACI,eAAC,GAAD,CACI5iB,MAAO,QAA6B,MAAnB4f,KAAKvT,MAAMsO,KAAe,GAAKiF,KAAKvT,MAAMsO,KAAK0c,WAAa,IAC7ElO,YAAa,2SAIrB,eAAC,GAAD,CAAOvG,MAAI,EAACg8B,MAAI,EAAhB,SACI,eAAC,GAAD,CACI5+C,MAAK,OACLmpB,YAAa,wVAIrB,eAAC,GAAD,CAAOvG,MAAI,EAACg8B,MAAI,EAAhB,SACI,eAAC,GAAD,CACI5+C,MAAK,YACLmpB,YAAa,uSAIrB,eAAC,GAAD,CAAOy1B,MAAI,EAACE,OAAK,EAAjB,SACI,eAAC,GAAD,CACI9+C,MAAO,aACPmpB,YAAa,gF,GA9BhB2lB,cC0DNgF,IDZApM,oBAPS,SAACrmD,EAAOsmD,GAC5B,MAAO,CACHhtB,KAAMt5B,EAAMwC,KAAKC,WAKV4jD,CAAyBmY,IE/CnB/Q,YCAAA,Y,OF2DNgF,aAAWpM,oBAhBF,SAACrmD,EAAOsmD,GAC5B,MAAO,CACH9hD,eAAgBxE,EAAMuE,SAASC,eAC/BzB,eAAgB/C,EAAMwC,KAAKO,eAC3BoqB,aAAcntB,EAAM8yB,OAAO3F,aAC3BwwC,SAAU39D,EAAM8yB,OAAOnF,SACvBV,SAAUjtB,EAAM8yB,OAAO7F,SACvBC,aAAcltB,EAAM8yB,OAAO5F,iBAGR,SAAAygC,GAAQ,MAAK,CACpCjlD,QAASklD,8BAAmB,eACrBllD,MACJilD,MAGmBtH,EAxDH,SAACr7B,GAiCpB,OACI,eAAC,KAAMkiC,SAAP,S,SG7CK1B,GAAU1gC,WAAOC,IAAV,uEAEJS,KAAgCvjB,UAInCy2D,GAAO5zC,WAAOC,IAAV,mSACFS,KAIMA,KACLA,KAOAA,KAAgCvjB,UAInCs+C,GAASz7B,WAAOC,IAAV,8XAuBN4zC,GAAa7zC,WAAOuwC,EAAV,+NAaVuD,GAAS9zC,WAAOC,IAAV,0cAwBES,MAKRqzC,GAAa/zC,WAAOylC,GAAV,8GAMVuO,GAAiBh0C,WAAO6lC,GAAV,wkBA4CdoO,GAAUj0C,WAAOC,IAAV,yyBAGCS,M,UCnIRihC,IAXc3hC,WAAO0hC,MAAV,qLAERhhC,MASaV,WAAOC,IAAV,+TAgBHS,OCzBjBwzC,ID8BmBl0C,WAAOC,IAAV,0GAGNS,M,oDC/Bf,WAAYR,GAAQ,IAAD,+BAClB,cAAMA,IAOP8hC,mBAAqB,SAAE1wB,GACtB,EAAK60B,SAAS,CACblE,YAAa3wB,EAAExsB,OAAOhF,SAPvB,EAAK5K,MAAQ,CACZ+sD,aAAc,GAJG,E,2CAcnB,WACC,OACC,eAAC,GAAD,CAAuBlhC,UAAY0S,KAAKvT,MAAMmE,gBAAkB,SAAW,GAA3E,SACC,eAAC,WAAD,CAAWw9B,SAAO,U,GAnBUc,cAgCjBpH,uBAPS,SAACrmD,EAAOsmD,GAC5B,MAAO,CACTn3B,gBAAiBnvB,EAAM+zB,OAAO5E,mBAKjBk3B,CAAyB2Y,I,SC/B3BC,GAAen0C,mBAAOq7B,KAAPr7B,CAAH,qHACtB,SAAAE,GAAK,OAAIA,EAAM0hC,SAAW,aAAe1hC,EAAM0hC,SAAW,KAGtClhC,M,SCoBRinC,gBAAWpM,oBARF,SAACrmD,EAAOsmD,GAC5B,MAAO,MAKgB,SAAAqH,GAAQ,MAAK,CAAEjlD,QAASklD,8BAAmBllD,KAASilD,MAErDtH,EAnBL,SAAAr7B,GAAK,OACzB,eAAC,GAAD,CAAqBmhC,QAASnhC,EAAMtiB,QAAQuf,sBAAwBykC,SAAU1hC,EAAM0hC,SAApF,SACC,eAAC,KAAD,CAAiBngB,KAAM6gB,a,oBCTZ8R,GAAgBp0C,WAAOC,IAAV,iEAEvB,SAAAC,GAAK,MAAqB,qBAAjBA,EAAMwlC,QAAiChK,eAAvC,wHAEYh7B,SAMX1nB,GAAgBgnB,mBAAOq7B,KAAPr7B,CAAH,ib,kBCJpBq0C,G,oDACL,WAAcn0C,GAAS,IAAD,+BACrB,cAAQA,IACHhrB,MAAQ,CACZo/D,aAAc,GAHM,E,uDAMtB,SAAmBnN,GACb1zB,KAAKvT,MAAM8C,sBAAwBmkC,EAAUnkC,wBACjDyQ,KAAK0yB,SAAS,CACbmO,aAAc,IAIfppC,WACI,WACIuI,KAAK0yB,SAAS,CAACmO,aAAa,KAE/B7R,KAAKhvB,MACN,Q,oBAMN,WAAU,IAAD,OACR,OACC,gBAAC,GAAD,CAAsBiyB,OAAQjyB,KAAKvT,MAAMwlC,OAAzC,UACGjyB,KAAKvT,MAAMjnB,cAAgB,eAAC,KAAD,CAAQ+nB,MAAO,CAAC+6B,SAAU,WAAYh4B,MAAO,OAAQ6iC,IAAK,OAAQC,OAAQ,GAAI3lC,OAAQuS,KAAKvT,MAAM8C,wBAA4B,KAC1J,eAAC,GAAD,CAAsBjC,UAAY0S,KAAKv+B,MAAMo/D,YAAc,QAAU,WAAajT,QAAS,kBAAM,EAAKnhC,MAAMtiB,QAAQiQ,kBAAiD,kBAA9B,EAAKqS,MAAMxmB,gBAA6C,kBAA/L,SACC,eAAC,KAAD,CAAiB+nC,KAAM2vB,gB,GA9BCzO,aA+CdpH,uBAVS,SAACrmD,EAAOsmD,GAC5B,MAAO,CACN9hD,eAAiBxE,EAAMuE,SAASC,eAChCT,cAAgB/D,EAAM8D,cAAcC,cACpC+pB,sBAAwB9tB,EAAM8D,cAAcgqB,0BAItB,SAAA6/B,GAAQ,MAAK,CAAEjlD,QAASklD,8BAAmBllD,KAASilD,MAEpB,KAA5CtH,CAAkD8Y,ICrDpDxE,ICEe7vC,mBAAOq7B,KAAPr7B,CAAH,iGACtB,SAAAE,GAAK,OAAIA,EAAM0hC,SAAW,aAAe1hC,EAAM0hC,SAAW,KAEtClhC,MDLDV,WAAOmT,OAAV,wmBAISzS,KAAsBxjB,UACnCwjB,KAA2BxjB,UAG1BwjB,KAA2BvjB,SACdujB,KAAsBvjB,SAU3BujB,KAgBAA,OAOX6zC,GAAav0C,WAAOC,IAAV,8UAKAS,KAQAA,MAMV8zC,GAAcx0C,WAAOC,IAAV,4uBAUDS,KAKAA,KAMAA,MAOV+zC,GAAez0C,WAAOC,IAAV,gIAKFS,MAKVg0C,GAAc10C,WAAOC,IAAV,8pBA+BPS,MAKJi0C,GAAa30C,WAAOC,IAAV,0fAKAS,KAMAA,KAMAA,MAKVk0C,GAAkB50C,WAAO6gC,IAAV,mHAEjBngC,M,UEjJLmvC,G,+MAEFv2D,iBAAmB,WAGf,QAF0E,SAA5C6C,OAAOC,aAAa+9B,sBAGvC,eAAC,GAAD,CAAqBurB,OAAO,sB,6CAK3C,WAAU,IAAD,OACCmP,EAAoE,SAA5C14D,OAAOC,aAAa+9B,oBAClD,OACI,gBAAC,GAAD,CAAepZ,WAAY0S,KAAKvT,MAAMiC,SAAW,WAAa,IAAM,KAAOsR,KAAKvT,MAAM40C,MAAQ,QAAU,IAAM,KAAOrhC,KAAKvT,MAAMme,OAAS,SAAW,IAAM,KAAO5K,KAAKvT,MAAM60C,qBAAuB,yBAA2B,IAA9N,UACI,gBAAC,GAAD,CAAmBF,qBAAsBA,EAAzC,UAEI,gBAAC,GAAD,WACI,eAAC,GAAD,CAAoBxT,QAAS,WACzB,EAAKnhC,MAAM+iB,QAAQr8B,KAAK,MACzBma,UAAa5kB,OAAOC,aAAa+yB,SAAWhzB,OAAOC,aAAa44D,KAAQ,WAAa,GAFxF,SAGM74D,OAAOC,aAAa+yB,SAAWhzB,OAAOC,aAAa44D,KAAQ,eAAC,GAAD,CAAwB9T,IAAK,iDAAqD,eAAC,GAAD,CAAwBA,IAAK/kD,OAAOC,aAAa44D,SAGpM,eAAC,KAAD,CAAgBtP,OAAO,uBAI3B,eAAC,GAAD,UACI,eAAC,KAAD,CAAMA,OAAO,wBAIjB,gBAAC,GAAD,WACI,eAAC,KAAD,CAAMA,OAAO,qBACb,eAAC,WAAD,CAAQ9D,SAAS,WACjB,eAAC,GAAD,CAAcA,SAAS,iBACvB,eAAC,KAAD,CAAQ8D,OAAO,mBAAmB9D,SAAS,SAAS7tC,OAAQ0f,KAAKvT,MAAMsO,KAAKnN,YAAcoS,KAAKvT,MAAMsO,KAAKnN,YAAuC,sBAAuBggC,QAAS,kBAAM,EAAKnhC,MAAMtiB,QAAQiQ,kBAAiD,YAA9B,EAAKqS,MAAMxmB,gBAAuC,cAE9Q+5B,KAAKn6B,yBAGd,eAAC,GAAD,W,GA1CKqpD,aA0DNgF,gBAAWpM,oBAVF,SAACrmD,EAAOsmD,GAC5B,MAAO,CACH9hD,eAAgBxE,EAAMuE,SAASC,eAC/B80B,KAAMt5B,EAAMwC,KACZyqB,SAAUjtB,EAAM8yB,OAAO7F,aAIJ,SAAA0gC,GAAQ,MAAK,CAAEjlD,QAASklD,8BAAmBllD,KAASilD,MAErDtH,CAA6CsU,K,2BChEjEoF,G,gKAEL,WAMM,OALFxhC,KAAKvT,MAAMqE,SACRkP,KAAKvT,MAAMqE,QAAQA,SAAWkP,KAAKvT,MAAMqE,QAAQ/kB,MACrD28B,aAAM1I,KAAKvT,MAAMqE,QAAQA,QAAS,CAAC/kB,KAAMi0B,KAAKvT,MAAMqE,QAAQ/kB,KAAM68B,UAAW,QAIzE,eAAC,KAAD,Q,GATesmB,aAsBR3B,4BAAczF,oBARL,SAACrmD,EAAOsmD,GAC5B,MAAO,CACHj3B,QAASrvB,EAAMg0B,YAII,SAAA25B,GAAQ,MAAK,CAAEjlD,QAASklD,8BAAmBllD,KAASilD,MAElDtH,CAA6C0Z,K,wCCRpEC,GAAOtC,KAAMuC,MAAK,kBAAM,wEAExBC,GAAmBxC,KAAMuC,MAAK,kBAAM,8EACpCE,GAAgBzC,KAAMuC,MAAK,kBAAM,mCACjCG,GAAyB1C,KAAMuC,MAAK,kBAAM,+EAC1CI,GAA0B3C,KAAMuC,MAAK,kBAAM,mCAC3CttC,GAAe+qC,KAAMuC,MAAK,kBAAM,yDAEhCK,GAAa5C,KAAMuC,MAAK,kBAAM,8EAC9BM,GAAc7C,KAAMuC,MAAK,kBAAM,mCAC/BO,GAAQ9C,KAAMuC,MAAK,kBAAM,mCAGzBQ,GAAoB/C,KAAMuC,MAAK,kBAAM,mCASrCv3D,GAAO,2EACNg4B,MACAggC,MACAt5B,MACA7L,MACAsyB,MACAhzB,MAGD8lC,G,+MACF3gE,MAAQ,CACJ4gE,eAAe,EACfC,QAAQ,EACRC,YAAY,EACZC,SAAS,EACT9jC,MAAO,GACPoC,MAAM,G,EAyGV2hC,gBAAkB,WACT3zD,SAAS4zD,QACV,EAAKj2C,MAAMtiB,QAAQnG,kB,EAI3B2+D,cAAgB,SAAC9kC,GACT,EAAKpR,MAAMmE,iBACX,EAAKnE,MAAMtiB,QAAQuf,uBAAsB,I,EAiFjDk5C,uB,sBAAyB,8BAAAvkC,EAAA,yDAChB31B,OAAOC,aAAa+yB,OADJ,uBAEjBhzB,OAAOC,aAAak6D,oBAAqB,EAFxB,0CAKH,EAAKp2C,MAAMq2C,QAAQhgE,SAAS68B,WALzB,OAKjBpB,EALiB,OAOjBQ,EAAU,CACVA,QAAS,CACL,cAAiB,UAAYR,EAC7B,eAAgB,qBAGxBO,MAAMp2B,OAAOi2B,OAAS,oBAAqBI,GACtCmI,MAAK,SAAClI,GACH,GAAIA,EAASC,GACT,OAAOD,EAASC,GAEhBlI,QAAQC,IAAI,sBAGnBkQ,MAAK,SAAC5iC,GACHoE,OAAOC,aAAak6D,mBAAqBv+D,KAE5C66B,OAAM,SAACT,GACJh2B,OAAOC,aAAak6D,oBAAqB,EAEzC9rC,QAAQC,IAAR,WAAgB0H,EAAhB,mBA3Ba,2C,EA4CzBqkC,eAAiB,WACb,MAA2C,SAAxCr6D,OAAOC,aAAaqrD,sBACez9B,GAA/B7tB,OAAOC,aAAaq6D,SAAwD,SAAhCt6D,OAAOC,aAAaq6D,QAShE,KAPK,gBAAC,GAAD,CAAgBpV,QAAS,WAAQ,EAAKnhC,MAAMtiB,QAAQiQ,kBAAkB,mBAAtE,UACI,sBAAKqzC,IAAI,8DACT,8C,EAQpBwV,cAAgB,WACZ,OACI,gBAAC,GAAD,CAAe31C,UAAW,yBAA1B,UACI,gBAAC,UAAD,CAAQ41C,QAAS,CAAE5zD,IAAK,8BAAxB,UACI,eAAC,GAAD,wDACA,sBAAK2mD,IAAK,SAAUxI,IAAI,oDAE5B,gBAAC,WAAD,CAASyV,QAAS,CAAE5zD,IAAK,8BAAzB,UACI,eAAC,GAAD,0CACA,sBAAK2mD,IAAK,SAAUxI,IAAI,wD,EAKxC0V,mBAAqB,WAAO,IAAD,EAMvB,OAJK,EAAK12C,MAAMq2C,QAAQ9/D,cAAgB,EAAKypB,MAAMq2C,QAAQhgE,UAAa,EAAK2pB,MAAM2yC,WAC/E,EAAK6D,gBAIL,gBAAC,GAAD,WACI,gBAACG,GAAA,EAAD,WACI,uBAAMC,IAAI,aAAa5O,KAAK,oFAC5B,uBAAM4O,IAAI,aAAa5O,KAAK,uHAEhC,eAAC,GAAD,IACE,EAAKhoC,MAAM2yC,SAAkC,KAAvB,EAAK6D,gBAE7B,eAAC,GAAD,CAAQ3B,uBAAuB,EAAK70C,MAAMxmB,iBAC1C,eAAC,GAAD,CAAQo7D,OAAO,EAAMz2B,SAAS,EAAKne,MAAMxmB,iBACzC,gBAAC,GAAD,CAAaqnB,UAAY,EAAKb,MAAMiC,SAAW,WAAa,GAA5D,UACI,gBAAC,KAAD,WACI,eAAC,KAAD,CACI+nC,OAAK,EACL6M,KAAK,IACLC,OAAQ,SAAC92C,GAAD,OACJ,eAAC,WAAD,CAAU+2C,SAAU,eAAC,KAAD,IAApB,SACI,eAAC/B,GAAD,SAIZ,eAAC,KAAD,CACIhL,OAAK,EACL6M,KAAK,SACLC,OAAQ,SAAC92C,GAAD,OACJ,eAAC,WAAD,CAAU+2C,SAAU,eAAC,KAAD,IAApB,SACI,eAAC/B,GAAD,SAKZ,eAAC,KAAD,CACI6B,KAAK,gBACLC,OAAQ,SAAC92C,GAAD,OACJ,eAAC,WAAD,CAAU+2C,SAAU,eAAC,KAAD,IAApB,SACI,eAACzB,GAAD,SAKZ,eAAC,KAAD,CACItL,OAAK,EACL6M,KAAK,gBACLC,OAAQ,SAAC92C,GAAD,OACJ,eAAC,WAAD,CAAU+2C,SAAU,eAAC,KAAD,IAApB,SACI,eAACxB,GAAD,SAKZ,eAAC,KAAD,CACIvL,OAAK,EACL6M,KAAK,kBACLC,OAAQ,SAAC92C,GAAD,OACJ,eAAC,WAAD,CAAU+2C,SAAU,eAAC,KAAD,IAApB,SACI,eAACxB,GAAD,SAKZ,eAAC,KAAD,CACIvL,OAAK,EACL6M,KAAK,SACLC,OAAQ,SAAC92C,GAAD,OACJ,eAAC,WAAD,CAAU+2C,SAAU,eAAC,KAAD,IAApB,SACI,eAACvB,GAAD,SAIZ,eAAC,KAAD,CACIxL,OAAK,EACL6M,KAAK,uBACLC,OAAQ,SAAC92C,GAAD,OACJ,eAAC,WAAD,CAAU+2C,SAAU,eAAC,KAAD,IAApB,SACI,eAACtB,GAAD,YAMhB,eAAC,WAAD,CAAUsB,SAAU,yBAApB,SACI,eAAC7B,GAAD,MAGJ,eAAC,WAAD,CAAU6B,SAAU,yBAApB,SACI,eAAC3B,GAAD,MAGJ,eAAC,WAAD,CAAU2B,SAAU,yBAApB,SACI,eAAC1B,GAAD,MAGJ,eAAC,WAAD,CAAU0B,SAAU,yBAApB,SACI,eAAC5B,GAAD,MAGJ,eAAC,WAAD,CAAU4B,SAAU,yBAApB,SACI,eAACpvC,GAAD,MAGJ,eAAC,GAAD,OAMH,EAAK2uC,iBAEN,eAAC,GAAD,CAAez1C,UAAY,EAAKb,MAAMiC,SAAW,WAAa,GAA9D,SACI,gBAAC,GAAD,WACI,eAAC,GAAD,UACI,gBAAC,KAAD,CAAS+nC,OAAK,EAACC,GAAG,SAAlB,UACI,+BACI,eAAC,KAAD,CAAiB1oB,KAAM2oB,SAE3B,+CAIiC,SAAxCjuD,OAAOC,aAAaqrD,iBACjB,gBAAC,KAAMrF,SAAP,WACI,eAAC,GAAD,UACI,gBAAC,KAAD,CAAS8H,OAAK,EAACC,GAAG,eAAlB,UACI,+BACI,eAAC,KAAD,CAAiB1oB,KAAM4oB,SAE3B,8CAWR,eAAC,GAAD,UACI,gBAAC,KAAD,CAASH,OAAK,EAACC,GAAG,8BAAlB,UACI,iCACK,EAAKjqC,MAAMikB,MAAQ,eAAC,KAAD,CAAQjjB,OAAM,UAAE,EAAKhB,MAAMikB,aAAb,aAAE,EAAkB9iC,SAAa,KACnE,eAAC,KAAD,CAAiBogC,KAAMimB,UAE3B,+D,wDA7ZpC,WACOvrD,OAAO6+C,eACNvnB,KAAKvT,MAAMtiB,QAAQ+wB,QACnB4E,SAAS2jC,UAEb/6B,KAAMg7B,YAED1jC,KAAKvT,MAAM+1C,QAGZxiC,KAAK0yB,SAAS,CAAE8P,SAAS,EAAM9jC,MAAOsB,KAAKvT,MAAM+1C,UAFjDxiC,KAAK2jC,2BAOT70D,SAAS4oB,iBAAiB,SAAUsI,KAAK2iC,eACzCj6D,OAAOgvB,iBAAiB,mBAAoBsI,KAAKyiC,iBACjDziC,KAAK4jC,mBACD5jC,KAAKvT,MAAMkC,aACXqR,KAAKvT,MAAMtiB,QAAQ+Q,qBAEnB8kB,KAAKvT,MAAMtiB,QAAQgR,mBAChB6kB,KAAKvT,MAAMo3C,kBACV7jC,KAAKvT,MAAMtiB,QAAQ6Q,YAAYglB,KAAKvT,MAAMo3C,qB,kCAKtD,WACI/0D,SAAS6oB,oBAAoB,SAAUqI,KAAK2iC,eAC5Cj6D,OAAOivB,oBAAoB,mBAAoBqI,KAAKyiC,mB,8BAGxD,WAAoB,IAAD,SAETqB,EAAS,UAAG9jC,KAAKvT,MAAMsO,YAAd,aAAG,EAAiB+oC,UAE/BC,EAAS,GACT71C,EAAY4K,OAEZ9B,EAAMD,QAAQC,IACdgtC,EAAUjtC,QAAQktC,KAClBvlC,EAAQ3H,QAAQ2H,MAEdwlC,EAAa,uCAAG,sBAAA7lC,EAAA,sDAClB,EAAK5R,MAAMtiB,QAAQwC,aAAao3D,GAChCA,EAAS,GAFS,2CAAH,sDAKnB,WAEI,IAAII,EAAS,WACT,IAAIC,EAAOp0D,MAAM6qB,KAAKwpC,WAClBC,EAAUxrC,OAEd,IAAK,IAAI/qB,KAAKq2D,EAAM,CAAC,IAAD,IAChB,GAAuB,kBAAZA,EAAKr2D,IAAoC,OAAjB,UAAAq2D,EAAKr2D,UAAL,eAASwxB,MACxC6kC,EAAKr2D,GAAKysB,KAAKC,UAAU2pC,EAAKr2D,SAC3B,aAAIq2D,EAAKr2D,UAAT,OAAI,EAASwxB,KAAM,CACtB,GAAI6kC,EAAKr2D,GAAGuB,MAAiD,GAA1C80D,EAAKr2D,GAAGuB,IAAIjC,QAAQ,kBAAyB,OAChE+2D,EAAKr2D,GAAKysB,KAAKC,UAAU,CAAE3L,OAAQs1C,EAAKr2D,GAAG+gB,OAAQxf,IAAK80D,EAAKr2D,GAAGuB,IAAKvD,KAAMq4D,EAAKr2D,GAAGhC,KAAMw4D,WAAYH,EAAKr2D,GAAGw2D,WAAYxlC,QAAQ,eAAMqlC,EAAKr2D,GAAGgxB,WAG/IhxB,EAAI,IACJq2D,EAAK,IAAM,MAAQA,EAAKr2D,IAIhC,IAAMy2D,EAAa,KAAM,IAAI5rC,MAAOgT,cAAgB,IAEpDw4B,EAAKK,QAAQD,EAAa,MAC1BT,EAAO5wD,KAAKixD,GAEM,OAAdpkC,KAAK0kC,OAAgB1tC,EAAIxmB,MAAMumB,QAASqtC,GAC1B,WAAdpkC,KAAK0kC,OACLV,EAAQxzD,MAAMumB,QAASqtC,GAGT,SAAdpkC,KAAK0kC,QACLhmC,EAAMluB,MAAMumB,QAASqtC,GACrBF,MAIAI,EAAQxmC,KAAK5P,EAAW,WAAa,IAAM61C,EAAOn2D,OAAS,OAC3Ds2D,IACAh2C,EAAY4K,SAIhBgrC,IACA/sC,QAAQC,IAAM2tC,SAAS10D,UAAU++C,KAAKl4B,KAAKqtC,EAA7B,2BAA0CptC,SAA1C,IAAmD2tC,MAAO,SACxE3tC,QAAQktC,KAAOU,SAAS10D,UAAU++C,KAAKl4B,KAAKqtC,EAA7B,2BAA0CptC,SAA1C,IAAmD2tC,MAAO,cAGzEh8D,OAAOC,aAAai2B,QA9C5B,K,gCAiEJ,SAAmB80B,EAAWkR,IACrB5kC,KAAKv+B,MAAM6gE,QAAUtiC,KAAKvT,MAAMq2C,QAAQ9/D,aAAeg9B,KAAKvT,MAAMq2C,QAAQhgE,WAC3Ek9B,KAAK4iC,yBACL5iC,KAAK6kC,eACL7kC,KAAK0yB,SAAS,CAAE4P,QAAQ,KAGxB5O,EAAU8O,UAAYxiC,KAAKvT,MAAM+1C,SAC7BxiC,KAAKvT,MAAMq4C,cACX9kC,KAAK2jC,2BACL3jC,KAAK0yB,SAAL,2BACO1yB,KAAKv+B,OADZ,IAEI+gE,SAAS,EACT9jC,OAAO,Q,0BA0BvB,WAKI,GAAmB,MAFDsB,KAAKvT,MAAMs4C,YAEJ,CACrB,IADqB,EACjBpgE,EAASq7B,KAAKvT,MAAM9nB,OADH,eAKP4yB,UAAUytC,WALH,IAKrB,2BAAmC,CAAC,IAA3BC,EAA0B,QAC/B,GAAuB,MAAnBC,KAAaD,GAAY,CACzBtgE,EAASsgE,EACT,QARa,8BAYP,MAAVtgE,IAAgBA,EAAS,MAC7Bq7B,KAAKvT,MAAMtiB,QAAQkyB,UAAU13B,GAE7Bm0B,KAAOn0B,OAAOA,M,sCAMtB,SAAyB+uD,IAChB1zB,KAAKv+B,MAAM4gE,eAAiBriC,KAAKvT,MAAMq4C,YAAYp1B,UACpD1P,KAAK0yB,SAAS,CAAE2P,eAAe,IAC/BriC,KAAKvT,MAAMtiB,QAAQgU,aAAa6hB,KAAKvT,MAAMq4C,cAI1C9kC,KAAKvT,MAAMq4C,YAAYp1B,SACxB1P,KAAKvT,MAAMq4C,YAAYK,W,oBA8O/B,WAGI,OAAInlC,KAAKv+B,MAAM+gE,QAEP,gBAAC,GAAD,CAAel1C,UAAW,yBAA1B,UAAoD,gBAAC,GAAD,yCAA8C,wBAAM,iCAAQ0S,KAAKv+B,MAAMi9B,WACvH,sBAAKu3B,IAAK,SAAUxI,IAAI,oDAIhCztB,KAAKv+B,MAAM4gE,eAAiBriC,KAAKv+B,MAAM6gE,OAChCtiC,KAAKmjC,qBAGXnjC,KAAKv+B,MAAM4gE,eAAkBriC,KAAKv+B,MAAM6gE,OAOzCtiC,KAAKv+B,MAAM4gE,gBAAkBriC,KAAKv+B,MAAM6gE,OAEpC,gBAAC,GAAD,CAAeh1C,UAAY0S,KAAKvT,MAAM2yC,SAAW,wBAA0B,yBAA3E,UAAsG,eAAC,GAAD,wCAClG,sBAAKnJ,IAAK,SAAUxI,IAAI,yDAHpC,EALQ,gBAAC,GAAD,CAAengC,UAAY0S,KAAKvT,MAAM2yC,SAAW,wBAA0B,yBAA3E,UAAsG,eAAC,GAAD,wCAClG,sBAAKnJ,IAAK,SAAUxI,IAAI,wD,GApczByB,aAueJgF,gBAAWpM,oBAtBF,SAACrmD,EAAOsmD,GAAc,IAAD,UACzC,MAAO,CACH9hD,eAAgBxE,EAAMuE,SAASC,eAC/BC,aAAczE,EAAMuE,SAASE,aAC7BsoB,sBAAuB/sB,EAAMuE,SAASwoB,sBACtCI,aAAcntB,EAAM8yB,OAAO3F,aAC3BwwC,SAAU39D,EAAM8yB,OAAOnF,SACvBV,SAAUjtB,EAAM8yB,OAAO7F,SACvBC,aAAcltB,EAAM8yB,OAAO5F,aAC3BiC,gBAAiBnvB,EAAM+zB,OAAO5E,gBAC9BkyC,QAASrhE,EAAMoB,OACf6tC,MAAOjvC,EAAM8zB,MAAMrwB,MACnBsB,UAAW/E,EAAM8E,IAAIC,UACrB7B,OAAQlD,EAAMiD,KAAKC,OACnBogE,YAAW,UAAEtjE,EAAMwC,KAAKC,QAAQI,YAArB,iBAAE,EAAyBupB,gBAA3B,aAAE,EAAmClpB,OAChDo2B,KAAMt5B,EAAMwC,KAAKC,QACjBL,QAASpC,EAAMmC,QAAQC,QACvBggE,iBAAgB,UAAEpiE,EAAMwC,KAAKC,eAAb,iBAAE,EAAoBI,YAAtB,iBAAE,EAA0BupB,gBAA5B,aAAE,EAAoCa,aAInC,SAAA0gC,GAAQ,MAAK,CAAEjlD,QAASklD,8BAAmB,mDAAKllD,IAAYiyB,gBAAgBE,MAAgBpI,MAAUk7B,MACvGtH,CAA6Csa,K,sCC/gBvEgD,KAAQz0D,IAAI00D,MACZD,KAAQz0D,IAAI20D,MAEZ,IAAMC,GAAe,aAGfh/D,G,2KAEF,WCrBW,IAACgpC,IDsBHA,KAAMA,MCrBlB,IAAIx+B,SAAQ,WACXw+B,EAAM6f,SAASoW,KAAWhvC,kBACpB+Y,EAAM6f,SAASjtB,KAAYtkB,2B,oBDsB/B,WACI,OACI,eAAC,KAAM8wC,SAAP,UACI,eAAC,YAAD,CAAUpf,MAAOA,KAAMA,MAAvB,SACI,eAAC,KAAD,CAAag2B,aAAcA,GAAcvzC,QAAS,KAAMq1B,UAAW9X,KAAM8X,UAAzE,SACI,eAAC,gBAAD,CAAc6d,aAAcA,KAAcvgE,OAAO,KAAjD,SACI,eAAC,KAAD,CAAQ6qC,QAASD,KAAMC,QAAvB,SACI,eAAC,GAAD,CAAMD,MAAOA,KAAMA,MAAOizB,QAASxiC,KAAKvT,MAAM+1C,QAASsC,YAAa9kC,KAAKvT,MAAMq4C,4B,GAb7F5V,aAuBH3oD,MEAAk/D,GA7CS,iBAAO,CAC3B5rD,KAAM,CACF8zB,SAAUjlC,OAAOC,aAAaglC,SAC9B+3B,UAAW,sCAAyE,yCAAjCh9D,OAAOC,aAAaglC,SAAsD,SAAWjlC,OAAOC,aAAag9D,QAC5JC,iBAAkB,GAClBC,uBAAwB,GACxBC,YAAap9D,OAAOo3B,SAASD,OAE7BkmC,2BAA2B,EAC3BC,mBAAoB,CAAC,QAEzBC,MAAO,CACHC,cAAe,eACfC,wBAAwB,GAE5BC,OAAQ,CAuBJC,kBAAmB,IACnBC,kBAAmB,IACnBC,iBAAkB,EAClBC,aAAa,K,UCvCfC,G,WAEF,WAAYC,GAAa,IAAD,OACpB,GADoB,0BAuBxBC,oBAAsB,WAElB,OAAO,EAAKnmC,gBAAgBomC,wBAAwB1/B,MAAK,SAAC2/B,GACtD,EAAKC,uBAAuBD,OA1BZ,KA8BxBC,uBAAyB,SAACD,GAItB,GAAmB,OAAfA,EAEA,EAAKn3B,QAAUm3B,EAAWn3B,YAEzB,CAED,IAAMq3B,EAAkB,EAAKvmC,gBAAgBwmC,iBAE7C,GAAwB,OAApBD,EAGA,OAEKA,EAAgBn5D,OAAS,GAK9BmpB,QAAQktC,KAAK,qDACb,EAAKv0B,QAAUq3B,EAAgB,IAEC,IAA3BA,EAAgBn5D,SAGrB,EAAK8hC,QAAUq3B,EAAgB,MA1DnB,KA+DxBvoC,SA/DwB,uCA+Db,WAAOF,GAAP,eAAAD,EAAA,yDAEH4oC,EAAe,CACfv3B,QAAS,EAAKA,QACdpR,OAAQA,EACR4oC,cAAc,IAKdx+D,OAAOy+D,kBAVJ,yCAWI,EAAK3mC,gBAAgB4mC,mBAAmBH,GAAc//B,MAAK,SAAClI,GAE/D,OAAOA,KAENG,OAAM,SAACT,GACJ3H,QAAQC,IAAI,cAAe0H,GAG3B,EAAK8B,gBAAgBK,qBAAqBomC,GAAc//B,MAAK,SAAClI,GAC1D,OAAOA,KACRG,OAAM,SAAUT,GACM2oC,oCAtB9B,OA4BHtwC,QAAQC,IAAI,WA5BT,gCA8BA,MA9BA,2CA/Da,2DAkGxBswC,WAlGwB,uCAkGX,WAAOhpC,GAAP,SAAAD,EAAA,6DASE,EAAKqR,QATP,kBAUF,MAVE,2CAlGW,uDACfg3B,EACD,MAAM,IAAIa,MAAM,sCAGpBvnC,KAAK0mC,WAAaA,EAClB1mC,KAAKQ,gBAAkB,IAAIgnC,KAAwBd,G,2CA2GvD,WACI,IAAI/zB,EAAU,CACVrU,OAAQ,CACJ,qBACA,QACA,UACA,YACA,YACA,cACA,kBAEJmpC,OAAQ,kBAGRznC,KAAK0P,UAASiD,EAAQ+0B,UAAY1nC,KAAK0P,QAAQjC,UAKnDzN,KAAKQ,gBAAgBmnC,cAAch1B,K,qBAGvC,WAAW,IAAD,EACN,GAAK3S,KAAK0P,QAAV,CAKA,IAAIk4B,EAAc5nC,KAAKQ,gBAAgBqnC,qBAArB,UAA0C7nC,KAAK0P,eAA/C,aAA0C,EAAcjC,UAE1E,GAAoB,OAAhBm6B,EAAsB,CACtB,IAAIE,EAAuB,CACvBp4B,QAASk4B,GAGb5nC,KAAKQ,gBAAgBpiB,OAAO0pD,S,KAKzBrB,MCjJTsB,GAAcC,QACW,cAA7Bt/D,OAAOo3B,SAASmoC,UAEe,UAA7Bv/D,OAAOo3B,SAASmoC,UAEhBv/D,OAAOo3B,SAASmoC,SAAS59B,MAAM,2DA2CnC,SAAS69B,GAAgBC,EAAO7mC,GAC9B/J,UAAU6wC,cACPC,SAASF,GACTjhC,MAAK,SAACohC,GACLA,EAAaC,cAAgB,WAC3B,IAAMC,EAAmBF,EAAaG,WACd,MAApBD,IAGJA,EAAiBE,cAAgB,WACA,cAA3BF,EAAiB/mE,QACf81B,UAAU6wC,cAAcO,YAI1B5xC,QAAQC,IACN,+GAKEsK,GAAUA,EAAOsnC,UACnBtnC,EAAOsnC,SAASN,KAMlBvxC,QAAQC,IAAI,sCAGRsK,GAAUA,EAAOunC,WACnBvnC,EAAOunC,UAAUP,WAO5BnpC,OAAM,SAACT,GACN3H,QAAQ2H,MAAM,4CAA6CA,M,qCChGpDoqC,GAAgBv8C,WAAOC,IAAV,sYAqBbu8C,GAAcx8C,WAAOC,IAAV,wLAYXw8C,GAAaz8C,WAAOC,IAAV,yDCrCR,OAA0B,iCCwB5Bw7B,ICpBWkH,YDDD3iC,WAAOC,IAAV,yEAEJS,KAAgCvjB,UAI5B6iB,WAAOC,IAAV,oPACFS,KAGMA,KACLA,KAMAA,KAAgCvjB,UAI1B6iB,WAAOC,IAAV,iYAuBN4zC,GAAa7zC,WAAOuwC,EAAV,iOE5CVmM,GAAcC,6BAAH,w6EA8FDj8C,KAAyBvjB,SAWhBujB,KAAyBvjB,UCvB1Cy/D,GA3EI,SAAC18C,GAChB,MAAsCgsC,oBAAS,GAA/C,oBAAOqM,EAAP,KAAoBsE,EAApB,KACA,EAA0B3Q,oBAAS,GAAnC,oBAAO/5B,EAAP,KAAc2qC,EAAd,KACA,EAAsC5Q,mBAAS/vD,OAAOy+D,mBAAtD,oBAAOmC,EAAP,KAAoBC,EAApB,KAEMC,EAAqB,uCAAG,8BAAAnrC,EAAA,sDACtBiD,EAASmkC,MACTX,EAAc,IAAI2B,GAAYnlC,IACtBqlC,sBAAsBz/B,MAAK,WACnCkiC,EAAetE,GACfuE,GAAS,MAEVlqC,OAAM,SAACT,GACN0qC,EAAetE,GACfuE,EAAS3qC,EAAM+qC,UATO,2CAAH,qDAc3B7Q,qBAAU,WAWN,OATI0Q,IAAgBxE,GAChB0E,IAGJ16D,SAAS46D,cAAc,SAAS16D,UAAYtG,OAAOC,aAAayX,MAC5D1X,OAAOC,aAAaghE,SACpB76D,SAAS46D,cAAc,6BAA6BE,aAAa,OAAQlhE,OAAOC,aAAaghE,SAG1F,eAGR,CAACL,IAEJ,IAAMO,EAAqB,SAACpqB,GAEpBA,IAAS/2C,OAAOy+D,oBAChBz+D,OAAOy+D,kBAAoB1nB,GAG/B8pB,EAAe9pB,IAGnB,OAAIqlB,EAEI,gBAAC,KAAMnW,SAAP,WACI,eAACsa,GAAD,IACA,eAAC,GAAD,CAAKnE,YAAaA,EAAatC,QAAS9jC,OAMhD,gBAAC,KAAMiwB,SAAP,WACI,eAACsa,GAAD,IAEA,eAAC,WAAD,CAAS5f,SAAU,SAACv6B,GAAD,OAAY+6C,EAAmB/6C,IAASo0C,QAAS,CAAE5zD,IAAK,8BAA3E,SACI,gBAAC,GAAD,CAAege,UAAW,yBAA1B,UACI,eAAC,GAAD,0CACA,sBAAK2oC,IAAK,SAAUxI,IAAI,sDAGhC,eAAC,UAAD,CAAQpE,SAAU,SAACv6B,GAAD,OAAY+6C,EAAmB/6C,IAASo0C,QAAS,CAAE5zD,IAAK,8BAA1E,SACI,gBAAC,GAAD,CAAege,UAAW,yBAA1B,UACI,eAAC,GAAD,kCACA,sBAAK2oC,IAAK,SAAUxI,IAAI,0DCjEtCsa,GAAcC,QACI,MAApBt/D,OAAOo3B,UACsB,cAA7Bp3B,OAAOo3B,SAASmoC,UACa,UAA7Bv/D,OAAOo3B,SAASmoC,UAChBv/D,OAAOo3B,SAASmoC,SAAS59B,MAAM,2DAInC3hC,OAAOgvB,iBAAiB,QAAQ,WAC5B,SAASoyC,EAAoB14D,GACrBmmB,UAAUC,OACV9uB,OAAOy+D,mBAAoB,EAE3Bz+D,OAAOy+D,mBAAoB,EAGnCz+D,OAAOgvB,iBAAiB,SAAUoyC,GAClCphE,OAAOgvB,iBAAiB,UAAWoyC,MAGnCvyC,UAAUC,OACV9uB,OAAOy+D,mBAAoB,EAE3Bz+D,OAAOy+D,mBAAoB,EAI3Bz+D,OAAOi2B,OADNopC,GACe,wBAEA,GAGpB,IAAIgC,GAAW,WACXC,KAASzG,OAAO,eAAC,GAAD,IAAgBz0D,SAAS+qD,eAAe,UAGxDoQ,GAAK,uCAAG,0CAAA5rC,EAAA,6DAAO6rC,IAAP,iCACFnrC,EAAW,CACborC,KAAM,OACNprC,QAAS,CACL,8BAA8B,MAJ9B,SAOFD,MAAMp2B,OAAOi2B,OAAS,aAAcI,GAASmI,MAAK,SAAAlI,GAAQ,OAAIA,EAASQ,UAAQ0H,MAAK,SAAA5iC,GAAS,IAAD,IAC9FA,EAAKoiC,qBAAsB,EAEvB,UAAAh+B,OAAOC,oBAAP,SAAqBi2B,UAAW,UAAAl2B,OAAOC,oBAAP,eAAqBi2B,WAAYt6B,EAAKs6B,UACtE7H,QAAQC,IAAI,UACZiE,aAAaC,QACb7E,KAAY6E,QACZxyB,OAAO6+C,cAAe,GAG1B7+C,OAAOC,aAAP,2BAA2BD,OAAOC,cAAiBrE,GAEjB,QAA9BoE,OAAOC,aAAa+yB,OACpBhzB,OAAOC,aAAa+yB,QAAS,EAE7BhzB,OAAOC,aAAa+yB,QAAS,EAEjChzB,OAAOC,aAAa8wD,OAAQ,EAE5B/wD,OAAOC,aAAauzB,iBAAoB53B,EAAK43B,iBAG7CxzB,OAAOC,aAAayhE,aAAe,GACnC1hE,OAAOC,aAAa0hE,aAAe,EACnC3hE,OAAOC,aAAa2hE,eAAiB,EAErC5hE,OAAO2yB,aAAe,GACtB3yB,OAAO2yB,aAAaI,OAAS,GAE7BR,aAAaqU,QAAQ,eAAgB9U,KAAKC,UAAU/xB,OAAOC,eAEtDuhE,GACDH,QAvCA,2CAAH,qDA4CJ9uC,aAAaqgB,QAAQ,iBACtB5yC,OAAOC,aAAe6xB,KAAKY,MAAMH,aAAaqgB,QAAQ,iBAEjD5yC,OAAOy+D,mBACR8C,IAAM,GAGVF,MAEAE,KPhFG,SAAkB3oC,GACvB,GAA6C,kBAAmB/J,UAAW,CAGzE,GADkB,IAAI+P,IAAIijC,GAAwB7hE,OAAOo3B,SAAS20B,MACpD50B,SAAWn3B,OAAOo3B,SAASD,OAIvC,OAGFn3B,OAAOgvB,iBAAiB,QAAQ,WAC9B,IAAMywC,EAAK,UAAMoC,GAAN,sBAEXC,OAAOx3D,OAAOk0B,MAAK,SAAAujC,GACfA,EAAWx3D,SAAQ,SAAAy3D,GACjBF,OAAOrqC,OAAOuqC,SAIhB3C,KAgEV,SAAiCI,EAAO7mC,GAEtCxC,MAAMqpC,EAAO,CACXppC,QAAS,CAAE,iBAAkB,YAE5BmI,MAAK,SAAClI,GAEL,IAAMgI,EAAchI,EAASD,QAAQqB,IAAI,gBAEnB,MAApBpB,EAASlQ,QACO,MAAfkY,IAA8D,IAAvCA,EAAY35B,QAAQ,cAG5CkqB,UAAU6wC,cAAcuC,MAAMzjC,MAAK,SAACohC,GAClCA,EAAasC,aAAa1jC,MAAK,WAC7Bx+B,OAAOo3B,SAAS2jC,eAKpByE,GAAgBC,EAAO7mC,MAG1BnC,OAAM,WACLpI,QAAQC,IAAI,oEAtFV6zC,CAAwB1C,EAAO7mC,GAI/B/J,UAAU6wC,cAAcuC,MAAMzjC,MAAK,WACjCnQ,QAAQC,IACN,+GAMJkxC,GAAgBC,EAAO7mC,OOiD/BwpC,K","file":"static/js/main.0e889864.chunk.js","sourcesContent":["// -- Common selectors\r\nexport const getCommonNewsItems = state => state.CommonNews.newsItems;\r\nexport const getTenantNewsItems = state => state.CommonNews.tenantNewsItems;\r\nexport const getCommonBlogItems = state => state.CommonBlogs.blogs;\r\nexport const getTenantBlogItems = state => state.CommonBlogs.tenantBlogs;\r\nexport const getFaqsItems = state => state.KnowledgeBase.faqs;\r\nexport const getCommonEventsItems = state => state.CommonEvents.events;\r\nexport const getTenantEventsItems = state => state.CommonEvents.tenantEventsItems;\r\n\r\n// -- Self Service\r\nexport const getUserRequest = state => state.UserRequest.userRequest;\r\nexport const getRightsRequest = state => state.RightsRequest.rightsRequest;\r\nexport const getWorkplaceRequest = state => state.WorkPlaceRequest.workplaceRequest;\r\n\r\n// -- KnowledgeBase and Learning selectors\r\nexport const getKnowledgeBaseItems = state => state.KnowledgeBase.knowledgeBases;\r\nexport const getLearningItems = state => state.Learning.learnings;\r\nexport const getRandomLearningPaths = state => state.Learning.randomLearningPaths;\r\nexport const getLearningPaths = state => state.Learning.learningPaths;\r\nexport const getRoles = state => state.Learning.roles;\r\nexport const getProducts = state => state.Learning.products;\r\nexport const getLevels = state => state.Learning.levels;\r\nexport const getModule = state => state.Learning.module;\r\n\r\n\r\n// -- Client selectors\r\nexport const getGOClient = state => state.Client.GoClient;\r\nexport const getGraphClient = state => state.Client.GraphClient;\r\nexport const getLiquitClient = state => state.Client.LiquitClient;\r\nexport const getSharepointClient = state => state.Client.SharepointClient;\r\nexport const getYammerClient = state => state.Client.YammerClient;\r\nexport const getAuthProvider = state => state.Client.AuthProvider;\r\nexport const getClientsActivated = state => state.Client.clientsActivated;\r\n\r\n// -- Widgets selectors\r\nexport const getActiveClients = state => state.Widgets.clients;\r\nexport const getWidgets = state => state.Widgets.widgets;\r\n\r\n// -- Auth selectors\r\nexport const getAuth = state => state.Auth;\r\n\r\n// -- User selectors\r\nexport const getUserProfile = state => state.User.profile;\r\nexport const getDataRequest = state => state.User.requestCompleted;\r\nexport const getUserProfileSettingData = state => state.User.profile.data;\r\nexport const getFeatureSliders = state => state.User.featureSliders;\r\nexport const getLocale = state => state.Intl.locale\r\nexport const getUserRequestCompleted = state => state.User.requestCompleted;\r\nexport const getLogging = state => state.User.logging;\r\nexport const getLastDebug = state => state.User.lastDebug;\r\n\r\n// -- Regular selectors\r\nexport const getBlogItems = state => state.Blogs.blogs;\r\nexport const getITNewsItems = state => state.ITNews.items;\r\nexport const getNewsItems = state => state.News.newsItems;\r\n\r\n// -- Notifications\r\nexport const getNotificationItems = state => state.Notifications.notifications;\r\nexport const getNotificationsHub = state => state.Notifications.Hub;\r\nexport const getIsNotificationsIsConnected = state => state.Notifications.isConnected;\r\n\r\n// -- NotificationsCollector\r\nexport const getNotifications = state => state.NotificationCollector.notifications;\r\n\r\n// -- SlideOut\r\nexport const getActiveSlideOut = state => state.SlideOut.activeSlideOut;\r\nexport const isUnmounting = state => state.SlideOut.isUnmounting;\r\n\r\n// -- Teams\r\nexport const getTeams = state => state.Teams.teams\r\n\r\nexport const getSharepoint = state => state.Sharepoint.sharepoint\r\n\r\nexport const getAppOnline = state => state.App.appOnline\r\n\r\nexport const getSolutions = state => state.Solution.solutions;\r\n\r\nexport const getTasks = state => state.Tasks.tasks;\r\n\r\nexport const getMultiChannelBlogItems = state => state.MultiChannelBlog.blogItems;\r\nexport const getMultiChannelNewsItems = state => state.MultiChannelNews.newsItems;\r\nexport const getMultiChannelShoutItems = state => state.MultiChannelShout.shoutItems;\r\nexport const getMultichannelFeeds = state => state.MultiChannelFeed.feeds;\r\nexport const getMultiChannelSocialItems = state => state.MultiChannelSocial.socialItems;\r\nexport const getMultiChannelEvent = state => state.MultiChannelEvent.events;\r\n\r\nexport const getNewsRequestCompleted = state => state.MultiChannelNews.requestCompleted;\r\nexport const getShoutsRequestCompleted = state => state.MultiChannelShout.requestCompleted;\r\nexport const getSocialRequestCompleted = state => state.MultiChannelSocial.requestCompleted;\r\n\r\nexport const getPeople = state => state.People.people;\r\nexport const getPeoplePage = state => state.People.currentPage;\r\nexport const peopleAlreadyFetching = state => state.People.fetching;\r\nexport const getPeoplePageLength = state => state.People.pageLength;\r\n\r\nexport const getUpcomingBirthdays = state => state.Birthday.upcoming;\r\nexport const getAllBirthdays = state => state.Birthday.birthdays;\r\nexport const birthdaysAlreadyFetching = state => state.Birthday.fetching;\r\n\r\nexport const getMultiChannelNews = state => state.MultiChannelNews;\r\n","//const tenantConfig = window.tenantConfig;\r\nexport const mainColor = () => window.tenantConfig.color;\r\n\r\nexport const borderRadius = '8px';\r\n\r\n// -- Breakpoints\r\nexport const xxs = '360px';\r\nexport const mxs = '500px';\r\nexport const xs = '768px';\r\nexport const md = '1024px';\r\nexport const mdPlus = '1025px';\r\nexport const lgMin = '1200px';\r\nexport const lg = '1500px';\r\nexport const xlg = '1600px';\r\n\r\nexport const headerHeight = '40px';\r\n\r\nexport const appHeight = 'calc(100vh - ('+ headerHeight +' + 26px))';\r\n\r\nexport const borderColor = {\r\n\tlightMode : '#E4E4E4',\r\n\tdarkMode : '#13181e'\r\n\r\n}\r\n\r\nexport const mainTextColor = {\r\n\tlightMode : '#000000',\r\n\tdarkMode : '#FFFFFF',\r\n\tdarkModeSoft: '#bfbcbc'\r\n}\r\n\r\nexport const tileBackground = {\r\n\tlightMode : '#FFFFFF',\r\n\tdarkMode : '#1B2B3C'\r\n\r\n}\r\n\r\nexport const headingColor = {\r\n\tlightMode : '#40454c',\r\n\tdarkMode : '#FFFFFF'\r\n}\r\n\r\nexport const headerBackground = {\r\n\tlightMode : '#FFFFFF',\r\n\tdarkMode : '#121a24'\r\n}\r\n\r\nexport const centerColumnBackground = {\r\n\tlightMode : '#FFFFFF',\r\n\tdarkMode : '#121a24'\r\n}\r\n\r\nexport const outerColumnBackground = {\r\n\tlightMode : '#f2f3f5',\r\n\tdarkMode : '#16202c'\r\n}\r\n\r\nexport const eventBackground = {\r\n\tlightMode : '#f8f8f8',\r\n\tdarkMode : '#1B2B3C'\r\n}\r\n","const actions = {\r\n GET_USER_PROFILE: 'GET_USER_PROFILE',\r\n SET_USER_PROFILE: 'SET_USER_PROFILE',\r\n SET_USER_AVATAR: 'SET_USER_AVATAR',\r\n SET_DAYS_LEFT: 'SET_DAYS_LEFT',\r\n GET_MESSAGES: 'GET_MESSAGES',\r\n SET_MESSAGES: 'SET_MESSAGES',\r\n GET_USER_APPLICATIONS: 'GET_USER_APPLICATIONS',\r\n SET_USER_APPLICATIONS: 'SET_USER_APPLICATIONS',\r\n GET_USER_TASKS: 'GET_USER_TASKS',\r\n SET_USER_TASKS: 'SET_USER_TASKS',\r\n GET_USER_CALENDARITEMS: 'GET_USER_CALENDARITEMS',\r\n SET_USER_CALENDARITEMS: 'SET_USER_CALENDARITEMS',\r\n SET_VIEWED_TUTORIAL: 'SET_VIEWED_TUTORIAL',\r\n SET_USER_DATA: 'SET_USER_DATA',\r\n SET_DEBUG_DATA: 'SET_DEBUG_DATA',\r\n ADD_DEBUG_DATA: 'ADD_DEBUG_DATA',\r\n SET_LAST_DEBUG: 'SET_LAST_DEBUG',\r\n GET_USER_DATA: 'GET_USER_DATA',\r\n DATA_REQUEST_COMPLETED: 'DATA_REQUEST_COMPLETED',\r\n GET_APP_ROLES : 'GET_APP_ROLES',\r\n UPDATE_USER_SETTINGS : 'UPDATE_USER_SETTINGS',\r\n SET_USER_VIEWED_CALL : 'SET_USER_VIEWED_CALL',\r\n REMOVE_USER_VIEWED_CALL : 'REMOVE_USER_VIEWED_CALL',\r\n HIDE_FEATURE_SLIDER : 'HIDE_FEATURE_SLIDER',\r\n SET_FEATURE_SLIDERS : 'SET_FEATURE_SLIDERS',\r\n SET_FEATURE_SLIDER_VISIBLE : 'SET_FEATURE_SLIDER_VISIBLE',\r\n\r\n getMessages: () => ({\r\n type: actions.GET_MESSAGES\r\n }),\r\n\r\n\r\n getUserProfile: () => ({\r\n type: actions.GET_USER_PROFILE\r\n }),\r\n\r\n setUserViewedCall : (callID) => ({\r\n type : actions.SET_USER_VIEWED_CALL,\r\n payload : callID\r\n }),\r\n\r\n removeUserViewedCall : callID => ({\r\n type : actions.REMOVE_USER_VIEWED_CALL,\r\n payload : callID\r\n }),\r\n\r\n setSettingValue : (value, setting) => ({\r\n type : actions.UPDATE_USER_SETTINGS,\r\n payload : {\r\n value : value,\r\n setting : setting\r\n }\r\n }),\r\n\r\n getUserTasks: () => ({\r\n type: actions.GET_USER_TASKS\r\n }),\r\n getUserCalendarItems: () => ({\r\n type: actions.GET_USER_CALENDARITEMS\r\n }),\r\n getUserApplications: () => ({\r\n type: actions.GET_USER_APPLICATIONS\r\n }),\r\n\r\n setUserData: (payload) => ({\r\n type: actions.SET_USER_DATA,\r\n payload: payload\r\n }),\r\n\r\n addDebugData: (payload) => ({\r\n type: actions.SET_DEBUG_DATA,\r\n payload: payload\r\n }),\r\n\r\n setViewedTutorial : (payload) => ({\r\n type: actions.SET_VIEWED_TUTORIAL,\r\n payload : payload\r\n }),\r\n\r\n setTutorialVisible : (payload) => ({\r\n type: actions.SET_TUTORIAL_VISIBLE,\r\n payload : payload\r\n }),\r\n\r\n\r\n setFeatureSliderVisible : (link, visible) => ({\r\n type: actions.SET_FEATURE_SLIDER_VISIBLE,\r\n payload : {\r\n link,\r\n visible\r\n }\r\n }),\r\n};\r\n\r\nexport default actions;\r\n","\r\nexport const dataURItoBlob = (dataURI) => {\r\n var startIndex = dataURI.indexOf(\"base64,\") + 7;\r\n var b64 = dataURI.substr(startIndex);\r\n\r\n const byteString = window.atob(b64);\r\n const arrayBuffer = new ArrayBuffer(byteString.length);\r\n const int8Array = new Uint8Array(arrayBuffer);\r\n for (let i = 0; i < byteString.length; i++) {\r\n int8Array[i] = byteString.charCodeAt(i);\r\n }\r\n const blob = new Blob([int8Array], { type: 'image/jpeg' });\r\n return blob;\r\n};\r\n\r\nexport const capitalizeFirstLetter = (string) => {\r\n return string?.charAt(0).toUpperCase() + string?.slice(1);\r\n}\r\n\r\nexport const capStringName = (stringName, limit) => {\r\n\r\n if (stringName.length > limit) {\r\n return stringName.substr(0, limit) + '..';\r\n }\r\n\r\n return stringName;\r\n};\r\n\r\nexport const capString = (string, limit) => {\r\n\r\n if (string.length > limit) {\r\n return string.substr(0, limit);\r\n }\r\n\r\n return string;\r\n};\r\n\r\nexport const stripHTML = (html) => {\r\n let tmp = document.createElement(\"DIV\");\r\n tmp.innerHTML = html;\r\n return tmp.textContent || tmp.innerText || \"\";\r\n}\r\n\r\nexport const getTimeStamp = () => {\r\n return Math.floor(Date.now() / 1000);\r\n};\r\n\r\nexport const getMS = (minutes) => {\r\n return (minutes * 60) * 1000\r\n};\r\n\r\nexport const parseSharepointUrl = (url) => {\r\n if (url === null || url === \"\") return \"\";\r\n if (url?.includes('.com')) {\r\n let split = url.split('.com');\r\n return split[0] + '.com';\r\n }\r\n return url;\r\n};\r\n\r\n\r\n\r\nexport const parsePictureUrl = (picture, resolution = 5) => {\r\n if (!picture) return '';\r\n if (!picture.includes('resolution')) {\r\n return picture.replace('?', '?resolution=' + resolution + '&');\r\n }\r\n return picture;\r\n};\r\n\r\n\r\nexport const checkIfClaim = (group, claims) => {\r\n try {\r\n if (claims == null || claims === {}) return false;\r\n for (let claim of claims) {\r\n if (claim.indexOf(group) !== -1) return true;\r\n }\r\n return false;\r\n } catch (error) {\r\n return false;\r\n }\r\n};\r\n\r\nexport const dataURLtoFile = (dataurl, filename) => {\r\n var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],\r\n bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);\r\n while (n--) {\r\n u8arr[n] = bstr.charCodeAt(n);\r\n }\r\n return new File([u8arr], filename, { type: mime });\r\n};\r\n\r\n\r\n\r\nlet getDataTransfer = () => new DataTransfer();\r\nconst { concat } = Array.prototype;\r\n\r\ntry {\r\n getDataTransfer();\r\n} catch (_) {\r\n getDataTransfer = () => new ClipboardEvent('').clipboardData;\r\n}\r\n\r\nexport const createFileList = (file) => {\r\n // eslint-disable-next-line prefer-rest-params\r\n\r\n const files = concat.apply([], [file]);\r\n let i = 0;\r\n const { length } = files;\r\n\r\n const dataTransfer = getDataTransfer();\r\n\r\n for (; i < length; i++) {\r\n if (files[i] != null && files[i] instanceof File) {\r\n dataTransfer.items.add(files[i]);\r\n }\r\n }\r\n\r\n return dataTransfer.files;\r\n\r\n};\r\n\r\nexport const fileToBase64 = (filename, filepath) => {\r\n return new Promise(resolve => {\r\n var file = new File([filename], filepath);\r\n var reader = new FileReader();\r\n // Read file content on file loaded event\r\n reader.onload = function(event) {\r\n resolve(event.target.result);\r\n };\r\n\r\n // Convert data to base64\r\n reader.readAsDataURL(file);\r\n });\r\n};\r\n\r\nexport const blobToBase64 = (blob) => {\r\n return new Promise(resolve => {\r\n\r\n var reader = new FileReader();\r\n\r\n // Read file content on file loaded event\r\n reader.onload = function (event) {\r\n resolve(event.target.result);\r\n };\r\n\r\n // Convert data to base64\r\n reader.readAsDataURL(blob);\r\n });\r\n};\r\n\r\n\r\n\r\nconst nameLookup = {\r\n one: 'OneNote',\r\n pptx: 'PowerPoint',\r\n xlsx: 'Excel',\r\n docx: 'Word',\r\n pdf: 'pdf',\r\n vsdx: 'visio',\r\n txt: 'txt'\r\n}\r\n\r\nexport const getAppName = documentName => {\r\n const appName = documentName?.split('.').slice(-1)[0];\r\n\r\n\r\n if ( nameLookup[appName] ) {\r\n return nameLookup[appName];\r\n }\r\n\r\n return false;\r\n}\r\n\r\nconst iconLookup = {\r\n one: 'OneNote.svg',\r\n pptx: 'PowerPoint.svg',\r\n PowerPoint : 'PowerPoint.svg',\r\n xlsx: 'Excel.svg',\r\n Excel : 'Excel.svg',\r\n docx: 'Word.svg',\r\n Word : 'Word.svg',\r\n pdf: 'pdf.svg',\r\n vsdx: 'visio.svg',\r\n txt: 'txt.svg'\r\n}\r\nexport const getAppIcon = documentName => {\r\n const appName = documentName.split('.').slice(-1)[0];\r\n if ( iconLookup[appName] ) {\r\n return iconLookup[appName];\r\n }\r\n\r\n return 'OneDrive.svg';\r\n}\r\n\r\n\r\nexport const findAll = (obj, searchKey, results = []) => {\r\n const r = results;\r\n Object.keys(obj).forEach(key => {\r\n const value = obj[key];\r\n if (value === searchKey && typeof value !== 'object') {\r\n r.push(obj);\r\n } else if (typeof value === 'object') {\r\n findAll(value, searchKey, r);\r\n }\r\n });\r\n return r;\r\n};","const actions = {\r\n\tMESSAGE: 'MESSAGE',\r\n\tADD_MESSAGE: 'ADD_MESSAGE',\r\n\tsetMessage : (payload) => ({\r\n\t\ttype: actions.MESSAGE,\r\n\t\tpayload : payload\r\n\t}),\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n GET_LEARNING: 'GET_LEARNING',\r\n SET_LEARNING: 'SET_LEARNING',\r\n SET_LEARNING_ID: 'SET_LEARNING_ID',\r\n SET_ACTIVE_LEARNING_ITEM: 'SET_ACTIVE_LEARNING_ITEM',\r\n LEARNING_REQUEST_COMPLETED: 'LEARNING_REQUEST_COMPLETED',\r\n GET_RANDOM_LEARNINGPATHS: 'GET_RANDOM_LEARNINGPATHS',\r\n SET_RANDOM_LEARNINGPATHS: 'SET_RANDOM_LEARNINGPATHS',\r\n GET_LEARNINGPATHS: 'GET_LEARNINGPATHS',\r\n SET_LEARNINGPATHS: 'SET_LEARNINGPATHS',\r\n GET_ROLES: 'GET_ROLES',\r\n SET_ROLES: 'SET_ROLES',\r\n GET_PRODUCTS: 'GET_PRODUCTS',\r\n SET_PRODUCTS: 'SET_PRODUCTS',\r\n GET_LEVELS: 'GET_LEVELS',\r\n SET_LEVELS: 'SET_LEVELS',\r\n GET_MODULE: 'GET_MODULE',\r\n SET_MODULE: 'SET_MODULE',\r\n\r\n getLearning: (payload) => ({\r\n type: actions.GET_LEARNING,\r\n payload: payload\r\n }),\r\n\r\n setLearningId: (payload) => ({\r\n type: actions.SET_LEARNING_ID,\r\n payload: payload\r\n }),\r\n\r\n setActiveLearningItem: (payload) => ({\r\n type: actions.SET_ACTIVE_LEARNING_ITEM,\r\n payload: payload\r\n }),\r\n\r\n getRandomLearningPaths: (payload) => ({\r\n type: actions.GET_RANDOM_LEARNINGPATHS,\r\n payload: payload\r\n }),\r\n\r\n getLearningPaths: (payload) => ({\r\n type: actions.GET_LEARNINGPATHS,\r\n payload: payload\r\n }),\r\n\r\n getRoles: (payload) => ({\r\n type: actions.GET_ROLES,\r\n payload: payload\r\n }),\r\n\r\n getProducts: (payload) => ({\r\n type: actions.GET_PRODUCTS,\r\n payload: payload\r\n }),\r\n\r\n getLevels: (payload) => ({\r\n type: actions.GET_LEVELS,\r\n payload: payload\r\n }),\r\n\r\n getModule: (payload) => ({\r\n type: actions.GET_MODULE,\r\n payload: payload\r\n })\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_NOTIFICATIONS : 'GET_NOTIFICATIONS',\r\n\tSET_NOTIFICATIONS : 'SET_NOTIFICATIONS',\r\n\tSTART_NOTIFICATIONS : 'START_NOTIFICATIONS',\r\n\tRECEIVE_NOTIFICATION : 'RECEIVE_NOTIFICATION',\r\n\tREMOVE_SINGLE_NOTIFICATION : 'REMOVE_SINGLE_NOTIFICATION',\r\n\tREMOVE_ALL_NOTIFICATIONS : 'REMOVE_ALL_NOTIFICATIONS',\r\n SET_NUMBER_OF_NOTIFICATIONS: 'SET_NUMBER_OF_NOTIFICATIONS',\r\n RECEIVE_COMMAND: 'RECEIVE_COMMAND',\r\n SEND_COMMAND: 'RECEIVE_COMMAND',\r\n SEND_LIST_COMMAND: 'SEND_LIST_COMMAND',\r\n SEND_DETAIL_COMMAND: 'SEND_DETAIL_COMMAND',\r\n SEND_EXECUTE_COMMAND: 'SEND_EXECUTE_COMMAND',\r\n SEND_CHECK_COMMAND: 'SEND_CHECK_COMMAND',\r\n SET_HUB: 'SET_HUB',\r\n SET_APPLICATIONS: 'SET_APPLICATIONS',\r\n SET_APPLICATION: 'SET_APPLICATION',\r\n SERVICES_CONNECTED: 'SERVICES_CONNECTED',\r\n SET_CONNECTED: 'SET_CONNECTED',\r\n\r\n setHub: (payload) => ({\r\n type: actions.SET_HUB,\r\n payload: payload\r\n }),\r\n setServiceConnected: (payload) => ({\r\n type: actions.SERVICES_CONNECTED,\r\n payload: payload\r\n }),\r\n setIsConnected: (payload) => ({\r\n type: actions.SET_CONNECTED,\r\n payload: payload\r\n }),\r\n setApplications: (payload) => ({\r\n type: actions.SET_APPLICATIONS,\r\n payload: payload\r\n }),\r\n setApplication: (payload) => ({\r\n type: actions.SET_APPLICATION,\r\n payload: payload\r\n }),\r\n sendCommand: (payload) => ({\r\n type: actions.SEND_COMMAND,\r\n payload: payload\r\n }),\r\n sendListCommand: () => ({\r\n type: actions.SEND_LIST_COMMAND\r\n }),\r\n sendCheckCommand: () => ({\r\n type: actions.SEND_CHECK_COMMAND\r\n }),\r\n sendDetailCommand: (payload) => ({\r\n type: actions.SEND_DETAIL_COMMAND,\r\n payload: payload\r\n }),\r\n sendExecuteCommand: (payload) => ({\r\n type: actions.SEND_EXECUTE_COMMAND,\r\n payload: payload\r\n }),\r\n\tremoveSingleNotification : (payload) => ({\r\n\t\ttype : actions.REMOVE_SINGLE_NOTIFICATION,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tstartNotifications : () => ({\r\n\t\ttype : actions.START_NOTIFICATIONS\r\n\t}),\r\n\r\n\tremoveAllNotifications : ( payload ) => ({\r\n\t\ttype : actions.REMOVE_ALL_NOTIFICATIONS\r\n\t})\r\n};\r\n\r\nexport default actions;\r\n","import sharepoint from \"../../../components/widget/sharepoint\";\r\n\r\nconst actions = {\r\n\tGET_SHAREPOINT : 'GET_SHAREPOINT',\r\n SET_SHAREPOINT : 'SET_SHAREPOINT',\r\n\tFETCH_SHAREPOINT_SITES : 'FETCH_SHAREPOINT_SITES',\r\n\tFETCH_SHAREPOINT_DRIVE : 'FETCH_SHAREPOINT_DRIVE',\r\n\tSET_SHAREPOINT_DRIVE : 'SET_SHAREPOINT_DRIVE',\r\n\tFETCH_SHAREPOINT_DRIVE_CHILDREN : 'FETCH_SHAREPOINT_DRIVE_CHILDREN',\r\n\tSET_SHAREPOINT_DRIVE_CHILDREN : 'SET_SHAREPOINT_DRIVE_CHILDREN',\r\n\tFETCH_SHAREPOINT_FOLDER : 'FETCH_SHAREPOINT_FOLDER',\r\n\tSET_SHAREPOINT_FOLDER : 'SET_SHAREPOINT_FOLDER',\r\n\tCLEAR_SHAREPOINT : 'CLEAR_SHAREPOINT',\r\n\tCLEAR_SHAREPOINT_DRIVE : 'CLEAR_SHAREPOINT_DRIVE',\r\n\tCLEAR_SHAREPOINT_DRIVE_CHILDREN : 'CLEAR_SHAREPOINT_DRIVE_CHILDREN',\r\n\tCLEAR_SHAREPOINT_FOLDER : 'CLEAR_SHAREPOINT_FOLDER',\r\n\tSET_IS_LOADING : 'SET_IS_LOADING',\r\n\tFILE_FROM_TEMPLATE: 'FILE_FROM_TEMPLATE',\r\n\r\n getSharepointSites: () => ({\r\n type: actions.GET_SHAREPOINT\r\n }),\r\n\r\n\tfetchSharepointSites: (search) => ({\r\n\t\ttype : actions.FETCH_SHAREPOINT_SITES,\r\n\t\tpayload : search\r\n\t}),\r\n\r\n\tfetchSharepointDrive: (sharepointItem) => ({\r\n\t\ttype : actions.FETCH_SHAREPOINT_DRIVE,\r\n\t\tpayload : sharepointItem\r\n\t}),\r\n\r\n\tfetchSharepointDriveChildren: (sharepointItem) => ({\r\n\t\ttype : actions.FETCH_SHAREPOINT_DRIVE_CHILDREN,\r\n\t\tpayload : sharepointItem\r\n\t}),\r\n\r\n\tfetchSharepointFolder: (sharepointItem) => ({\r\n\t\ttype : actions.FETCH_SHAREPOINT_FOLDER,\r\n\t\tpayload : sharepointItem\r\n\t}),\r\n\r\n\tclearSharepoint: (payload) => ({\r\n\t\ttype : actions.CLEAR_SHAREPOINT,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tfileFromTeplate: (payload) => ({\r\n\t\ttype : actions.FILE_FROM_TEMPLATE,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tsetSharepointDriveChildren: (payload) => ({\r\n\t\ttype : actions.SET_SHAREPOINT_DRIVE_CHILDREN,\r\n\t\tpayload : payload\r\n\t})\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_GO_DATA : 'GET_GO_DATA',\r\n SET_GRAPH_CLIENT: 'SET_GRAPH_CLIENT',\r\n SET_GO_CLIENT: 'SET_GO_CLIENT',\r\n SET_SHAREPOINT_CLIENT: 'SET_SHAREPOINT_CLIENT',\r\n SET_POWER_CLIENT: 'SET_POWER_CLIENT',\r\n SET_LIQUIT_CLIENT: 'SET_LIQUIT_CLIENT',\r\n SET_YAMMER_CLIENT: 'SET_YAMMER_CLIENT',\r\n SET_AUTH_PROVIDER: 'SET_AUTH_PROVIDER',\r\n SET_AUTH: 'SET_AUTH',\r\n AAD_LOGIN_SUCCESS: 'AAD_LOGIN_SUCCESS',\r\n AAD_LOGOUT_SUCCESS: 'AAD_LOGOUT_SUCCESS',\r\n AAD_LOGIN_ERROR: 'AAD_LOGIN_ERROR',\r\n SET_IS_LOADED: 'SET_IS_LOADED',\r\n AAD_ACQUIRED_ACCESS_TOKEN_ERROR: 'AAD_ACQUIRED_ACCESS_TOKEN_ERROR',\r\n AAD_ACQUIRED_ID_TOKEN_ERROR: 'AAD_ACQUIRED_ID_TOKEN_ERROR',\r\n AAD_LOGIN_FAILED: 'AAD_LOGIN_FAILED',\r\n CLIENTS_ACTIVATED: 'CLIENTS_ACTIVATED',\r\n\t\r\n\tsetAuthProvider : (client) => ({\r\n\t\ttype : actions.SET_AUTH_PROVIDER,\r\n\t\tpayload : client\r\n }),\r\n\r\n setAuth: (auth) => ({\r\n type: actions.SET_AUTH,\r\n payload: auth\r\n })\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tSET_ACTIVE_SLIDEOUT : 'SET_ACTIVE_SLIDEOUT',\r\n\tSET_ACTIVE_OVERLAY_SLIDEOUT: 'SET_ACTIVE_OVERLAY_SLIDEOUT',\r\n\tSET_SLIDEOUT_DATA: 'SET_SLIDEOUT_DATA',\r\n\tHANDLE_SLIDEOUT_MOUNTING : 'HANDLE_SLIDEOUT_MOUNTING',\r\n\tSET_IS_UNMOUNTING : 'SET_IS_UNMOUNTING',\r\n\tSET_IS_MOUNTING : 'SET_IS_MOUNTING',\r\n\r\n\tsetActiveSlideOut: (payload, data = false, image = false, authorImage = false, authorName = false) => ({\r\n\t\ttype: actions.HANDLE_SLIDEOUT_MOUNTING,\r\n\t\tpayload : {\r\n\t\t\titem : payload,\r\n\t\t\timage : image,\r\n\t\t\tauthorImage : authorImage,\r\n\t\t\tauthorName: authorName,\r\n\t\t\tdata: data\r\n\t\t}\r\n\t}),\r\n\r\n\tsetActiveOverlaySlideOut : (payload, image = false, authorImage = false, authorName = false) => ({\r\n\t\ttype: actions.SET_ACTIVE_OVERLAY_SLIDEOUT,\r\n\t\tpayload : {\r\n\t\t\titem : payload\r\n\t\t}\r\n\t}),\r\n\r\n\tsetSlideOutData: (payload) => ({\r\n\t\ttype: actions.SET_SLIDEOUT_DATA,\r\n\t\tpayload: payload\r\n\t})\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n SET_COLUMNS: 'SET_COLUMNS',\r\n SET_IS_LOADED: 'SET_IS_LOADED',\r\n SET_DARK_MODE : 'SET_DARK_MODE',\r\n START_DARKMODE_AUTO : 'START_DARKMODE_AUTO',\r\n STOP_DARKMODE_AUTO : 'STOP_DARKMODE_AUTO',\r\n HIDE_SLIDER : 'HIDE_SLIDER',\r\n setDarkMode : (payload) => ({\r\n\t\ttype: actions.SET_DARK_MODE,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\thideSlider : (payload) => ({\r\n\t\ttype : actions.HIDE_SLIDER,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tstartDarkModeAuto: (payload) => ({\r\n\t\ttype: actions.START_DARKMODE_AUTO,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tstopDarkModeAuto: (payload) => ({\r\n\t\ttype: actions.STOP_DARKMODE_AUTO,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_PEOPLE : 'GET_PEOPLE',\r\n SET_PEOPLE : 'SET_PEOPLE',\r\n\tGET_ALL_PEOPLE : 'GET_ALL_PEOPLE',\r\n\tSTOP_FETCHING_PEOPLE : 'STOP_FETCHING_PEOPLE',\r\n\tGET_NEXT_PEOPLE_PAGE : 'GET_NEXT_PEOPLE_PAGE',\r\n\tSET_NEXT_PAGE_AVAILABLE : 'SET_NEXT_PAGE_AVAILABLE',\r\n\tSET_PEOPLE_FETCHING : 'SET_PEOPLE_FETCHING',\r\n\tSET_CURRENT_PAGE : 'SET_CURRENT_PAGE',\r\n\tGET_PERSON_AVATAR : 'GET_PERSON_AVATAR',\r\n\tSET_PEOPLE_AVATARS : 'SET_PEOPLE_AVATARS',\r\n\tSTART_STATUS_JOB : 'START_STATUS_JOB',\r\n\tGET_USER_STATUS : 'GET_USER_STATUS',\r\n\tSTOP_STATUS_JOB : 'STOP_STATUS_JOB',\r\n\r\n\tstartStatusJob : (payload) => ({\r\n\t\ttype : actions.START_STATUS_JOB,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tgetUserStatus : (payload) => ({\r\n\t\ttype : actions.GET_USER_STATUS,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tstopStatusJob : (payload) => ({\r\n\t\ttype : actions.STOP_STATUS_JOB,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n getPeople: () => ({\r\n type: actions.GET_PEOPLE\r\n }),\r\n\tgetNextPeoplePage : () => ({\r\n\t\ttype : actions.GET_NEXT_PEOPLE_PAGE\r\n\t}),\r\n\tgetAllPeople: () => ({\r\n type: actions.GET_ALL_PEOPLE\r\n }),\r\n\r\n\tfindAvatar : (payload) => ({\r\n\t\ttype : actions.GET_PERSON_AVATAR,\r\n\t\tpayload : payload\r\n\t})\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_TASKS : 'GET_TASKS',\r\n\tSET_TASKS : 'SET_TASKS',\r\n\tORDER_TASKS : 'ORDER_TASKS',\r\n\tUPDATE_TASK : 'UPDATE_TASK',\r\n\tUPDATE_SUB_TASK : 'UPDATE_SUB_TASK',\r\n\tUPDATE_TASK_EMAIL : 'UPDATE_TASK_EMAIL',\r\n\tUPDATE_TASK_PLANNER : 'UPDATE_TASK_PLANNER',\r\n\tSET_ACTIVE_TASK : 'SET_ACTIVE_TASK',\r\n\tgetTasks: (payload) => ({ \r\n\t\ttype: actions.GET_TASKS,\r\n\t\tpayload : payload\r\n\t}),\t\r\n\tupdateTask: (payload, key) => ({\r\n\t\ttype:actions.UPDATE_TASK,\r\n\t\tpayload: { payload : payload, key : key }\r\n\t}),\r\n\tupdateSubTask: (payload, key, subTask) => ({\r\n\t\ttype:actions.UPDATE_SUB_TASK,\r\n\t\tpayload: { payload : payload, key : key, subTask : subTask }\r\n\t}),\r\n\tupdateTaskEmail: (payload, key) => ({\r\n\t\ttype:actions.UPDATE_TASK_EMAIL,\r\n\t\tpayload: { payload : payload, key : key }\r\n\t}),\r\n\tupdateTaskPlanner: (payload, key) => ({\r\n\t\ttype:actions.UPDATE_TASK_PLANNER,\r\n\t\tpayload: { payload : payload, key : key }\r\n\t}),\r\n\tsetActiveTask : ( payload ) => ({\r\n\t\ttype : actions.SET_ACTIVE_TASK,\r\n\t\tpayload : payload\r\n\t}),\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n CHECK_AUTHORIZATION: 'CHECK_AUTHORIZATION',\r\n USER_UNAUTHENTICATED: 'USER_UNAUTHENTICATED',\r\n USER_JUST_LOGGED_IN: 'USER_JUST_LOGGED_IN',\r\n USER_AUTHENTICATED: 'USER_AUTHENTICATED',\r\n READY_FOR_BOOT: 'READY_FOR_BOOT',\r\n SET_AUTH_INFO: 'SET_AUTH_INFO',\r\n LOG_OUT: 'LOG_OUT',\r\n\r\n checkAuthorization: () => ({\r\n type: actions.CHECK_AUTHORIZATION\r\n }),\r\n\r\n unAuthenticated: () => ({\r\n type: actions.USER_UNAUTHENTICATED\r\n }),\r\n\r\n userJustLoggedIn: () => ({\r\n type: actions.USER_JUST_LOGGED_IN\r\n }),\r\n\r\n userAuthenticated: () => ({\r\n type: actions.USER_AUTHENTICATED\r\n }),\r\n\r\n setAuthInfo: (info) => ({\r\n type: actions.SET_AUTH_INFO,\r\n payload: info\r\n }), \r\n\r\n readyForBoot: (payload) => ({\r\n type: actions.READY_FOR_BOOT,\r\n payload: payload\r\n }), \r\n\r\n logout: () => ({\r\n type: actions.LOG_OUT\r\n }), \r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_COMMON_EVENTS : 'GET_COMMON_EVENTS',\r\n\tSET_COMMON_EVENTS : 'SET_COMMON_EVENTS',\r\n\tSET_ACTIVE_COMMON_EVENT: 'SET_ACTIVE_COMMON_EVENT',\r\n\tGET_TENANT_EVENTS: 'GET_TENANT_EVENTS',\r\n\tSET_TENANT_EVENTS: 'SET_TENANT_EVENTS',\r\n\tCOMMON_EVENTS_REQUEST_COMPLETED : 'COMMON_EVENTS_REQUEST_COMPLETED',\r\n\tPOST_COMMON_EVENT: 'POST_COMMON_EVENT',\r\n\tDELETE_EVENTS_ITEM: 'DELETE_EVENTS_ITEM',\r\n\r\n\tsetActiveCommonEvent : (payload) => ({\r\n\t\ttype: actions.SET_ACTIVE_COMMON_EVENT,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tgetTenantEvents: () => ({\r\n\t\ttype: actions.GET_TENANT_EVENTS\r\n\t}),\r\n\r\n\tgetCommonEvents : ( payload ) => ({\r\n\t\ttype : actions.GET_COMMON_EVENTS,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tpostCommonEvent : (payload) => ({\r\n\t\ttype : actions.POST_COMMON_EVENT,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tdeleteItem: (payload) => ({\r\n\t\ttype: actions.DELETE_EVENTS_ITEM,\r\n\t\tpayload: payload\r\n\t})\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n GET_RECENT_DOCUMENTS_FOR_APP : 'GET_RECENT_DOCUMENTS_FOR_APP',\r\n SET_RECENT_DOCUMENTS_FOR_APP : 'SET_RECENT_DOCUMENTS_FOR_APP',\r\n SET_RECENT_DOCUMENTS_LOADING : 'SET_RECENT_DOCUMENTS_LOADING',\r\n SET_DOCUMENT_INFO : 'SET_DOCUMENT_INFO',\r\n SET_BASE64_INFO : 'SET_BASE64_INFO',\r\n\r\n\tgetRecentDocumentsForApp : (payload) => ({\r\n\t\ttype: actions.GET_RECENT_DOCUMENTS_FOR_APP,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n setRecentDocumentsForApp : (payload) => ({\r\n type : actions.SET_RECENT_DOCUMENTS_FOR_APP,\r\n payload : payload\r\n }),\r\n setDocumentInfo : (payload) => ({\r\n type : actions.SET_DOCUMENT_INFO,\r\n payload : payload\r\n }),\r\n setDocumentBase64Info : (payload) => ({\r\n type : actions.SET_BASE64_INFO,\r\n payload : payload\r\n })\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_EVENTS : 'GET_EVENTS',\r\n\tSET_EVENTS : 'SET_EVENTS',\r\n\tSET_ACTIVE_EVENT: 'SET_ACTIVE_EVENT',\r\n\tEVENTS_REQUEST_COMPLETED: 'EVENTS_REQUEST_COMPLETED',\r\n\tGET_YEAR_EVENTS: 'GET_YEAR_EVENTS',\r\n\tSET_YEAR_EVENTS: 'SET_YEAR_EVENTS',\r\n\tSET_SOURCE_URL: 'SET_SOURCE_URL',\r\n\r\n\tsetActiveEvent : (payload) => ({\r\n\t\ttype: actions.SET_ACTIVE_EVENT,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tgetEvents : ( payload, title ) => ({\r\n\t\ttype : actions.GET_EVENTS,\r\n\t\tpayload : { payload : payload, title:title }\r\n\t}),\r\n\r\n\tgetYearEvents : ( source, year ) => ({\r\n\t\ttype : actions.GET_YEAR_EVENTS,\r\n\t\tpayload : { source : source, year:year }\r\n\t})\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_BIRTHDAYS : 'GET_BIRTHDAYS',\r\n\tSET_BIRTHDAYS: 'SET_BIRTHDAYS',\r\n\tSET_UPCOMING_BIRTHDAYS: 'SET_UPCOMING_BIRTHDAYS',\r\n\tGET_UPCOMING_BIRTHDAYS: 'GET_UPCOMING_BIRTHDAYS',\t\r\n\tSET_CURRENT_PAGE: 'SET_CURRENT_PAGE',\r\n\tGET_PERSON_AVATAR: 'GET_PERSON_AVATAR',\r\n\tSET_BIRTHDAYS_AVATARS: 'SET_BIRTHDAYS_AVATARS',\r\n\t\t\r\n\tgetBirthDays : ( payload ) => ({\r\n\t\ttype : actions.GET_BIRTHDAYS,\r\n\t\tpayload : payload\r\n\t}),\r\n\tgetUpcomingBirthDays: (payload) => ({\r\n\t\ttype: actions.GET_UPCOMING_BIRTHDAYS,\r\n\t\tpayload: payload\r\n\t}),\r\n\tfetchNextPage: (payload) => ({\r\n\t\ttype: actions.GET_NEXT_PAGE,\r\n\t\tpayload: payload\r\n\t}),\r\n\tfindAvatar: (payload) => ({\r\n\t\ttype: actions.GET_PERSON_AVATAR,\r\n\t\tpayload: payload\r\n\t})\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n GET_FAQS: 'GET_FAQS',\r\n SET_FAQS: 'SET_FAQS',\r\n FAQS_REQUEST_COMPLETED: 'FAQS_REQUEST_COMPLETED',\r\n GET_KNOWLEDGEBASES: 'GET_KNOWLEDGEBASES',\r\n SET_KNOWLEDGEBASES: 'SET_KNOWLEDGEBASES',\r\n KNOWLEDGEBASES_REQUEST_COMPLETED: 'KNOWLEDGEBASES_REQUEST_COMPLETED',\r\n\r\n getFAQs: (payload) => ({\r\n type: actions.GET_FAQS,\r\n payload: payload\r\n }),\r\n\r\n\tgetKnowledgeBases: (payload) => ({\r\n type: actions.GET_KNOWLEDGEBASES,\r\n payload: payload\r\n })\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_SOLUTIONS : 'GET_SOLUTIONS',\r\n\tSET_SOLUTIONS: 'SET_SOLUTIONS',\r\n GET_SOLUTION_CATEGORIES : 'GET_SOLUTION_CATEGORIES',\r\n SET_SOLUTION_CATEGORIES : 'SET_SOLUTION_CATEGORIES',\r\n\r\n\tSET_ACTIVE_SOLUTION : 'SET_ACTIVE_SOLUTION',\r\n\tDISABLE_SOLUTION : 'DISABLE_SOLUTION',\r\n\tENABLE_SOLUTION : 'ENABLE_SOLUTION',\r\n\r\n getSolutionCategories: (payload) => ({\r\n\t\ttype: actions.GET_SOLUTION_CATEGORIES\r\n\t}),\r\n\r\n\tsetActiveSolution : (payload) => ({\r\n\t\ttype : actions.SET_ACTIVE_SOLUTION,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tdisableSolution : (payload) => ({\r\n\t\ttype : actions.DISABLE_SOLUTION,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tenableSolution : (payload) => ({\r\n\t\ttype : actions.ENABLE_SOLUTION,\r\n\t\tpayload : payload\r\n\t})\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_DOCUMENTS : 'GET_DOCUMENTS',\r\n\tSET_DOCUMENTS : 'SET_DOCUMENTS',\r\n\tDOCUMENTS_REQUEST_COMPLETED: 'DOCUMENTS_REQUEST_COMPLETED',\r\n\tSET_STATUS_DOCUMENTS: 'SET_STATUS_DOCUMENTS',\r\n\tSET_REFRESH_HIDDEN_DOCUMENTS: 'SET_REFRESH_HIDDEN_DOCUMENTS',\r\n\tSET_LAST_UPDATE_DOCUMENTS: 'SET_LAST_UPDATE_DOCUMENTS',\r\n\r\n\tgetDocuments: (payload) => ({ \r\n\t\ttype: actions.GET_DOCUMENTS,\r\n\t\tpayload : payload\r\n\t}),\t\r\n\tsetRefreshHiddenDocuments: (payload) => ({\r\n\t\ttype : actions.SET_REFRESH_HIDDEN_DOCUMENTS,\r\n\t\tpayload : payload \r\n\t}),\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tSET_MULTICHANNEL_NEWS_ITEMS : 'SET_MULTICHANNEL_NEWS_ITEMS',\r\n\tGET_MULTICHANNEL_NEWS_ITEMS : 'GET_MULTICHANNEL_NEWS_ITEMS',\r\n\tSET_ACTIVE_NEWS_ITEM : 'SET_ACTIVE_NEWS_ITEM',\r\n\tNEWS_REQUEST_COMPLETED: 'NEWS_REQUEST_COMPLETED',\r\n\tSET_LAST_NEWS_VIEWED: 'SET_LAST_NEWS_VIEWED',\r\n\tCLEAR_NEWS_STATE: 'CLEAR_NEWS_STATE',\r\n\r\n\r\n\tgetMultichannelNewsItems : ( payload, title ) => ({\r\n\t\ttype : actions.GET_MULTICHANNEL_NEWS_ITEMS,\r\n\t\tpayload : { title: title, payload: payload } \r\n\t}),\r\n\tsetActiveNewsItem : ( payload ) => ({\r\n\t\ttype : actions.SET_ACTIVE_NEWS_ITEM,\r\n\t\tpayload : payload\r\n\t}),\r\n\tsetLastViewed: (payload) => ({\r\n\t\ttype: actions.SET_LAST_NEWS_VIEWED,\r\n\t\tpayload: payload\r\n }),\r\n\tclearState: () => ({\r\n\t\ttype: actions.CLEAR_NEWS_STATE\r\n\t}),\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_SELF_USER : 'GET_SELF_USER',\r\n\tSET_SELF_USER : 'SET_SELF_USER',\r\n\tSET_ACTIVE_USER : 'SET_ACTIVE_USER',\r\n\tPOST_SELF_USER : 'POST_SELF_USER',\r\n\tGET_TENANT_USER : 'GET_TENANT_USER',\r\n\tSET_TENANT_USER : 'SET_TENANT_USER',\r\n\tGET_USER_FROM_CHANNEL : 'GET_USER_FROM_CHANNEL',\r\n\tDELETE_SELF_USER : 'DELETE_SELF_USER',\r\n\tTEST_SELF_USER : 'TEST_SELF_USER',\r\n\tSELF_USER_REQUEST_COMPLETED: 'SELF_USER_REQUEST_COMPLETED',\r\n\r\n\tPOST_USER_REQUEST : 'POST_USER_REQUEST',\r\n\tSET_USER_REQUEST : 'SET_USER_REQUEST',\r\n\tGET_USER_REQUEST : 'GET_USER_REQUEST',\r\n\tDELETE_USER_REQUEST : 'DELETE_USER_REQUEST',\r\n\tUPDATE_USER_REQUEST : 'UPDATE_USER_REQUEST',\r\n\tCANCEL_USER_REQUEST : 'CANCEL_USER_REQUEST',\r\n\r\n\tpostUserRequest : (payload) => ({\r\n\t\ttype : actions.POST_USER_REQUEST,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tsetUserRequest : (payload) => ({\r\n\t\ttype : actions.SET_USER_REQUEST,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tgetUserRequest : () => ({\r\n\t\ttype : actions.GET_USER_REQUEST,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tcancelUserRequest : (payload) => ({\r\n\t\ttype : actions.CANCEL_USER_REQUEST,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tdeleteUserRequest : (payload) => ({\r\n\t\ttype : actions.DELETE_USER_REQUEST,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tupdateUserRequest : (payload, id) => ({\r\n\t\ttype : actions.UPDATE_USER_REQUEST,\r\n\t\tpayload : {payload, id}\r\n\t}),\r\n\r\n\t// getTenantNews : () => ({\r\n\t// \ttype : actions.GET_TENANT_USER\r\n\t// }),\r\n\r\n\t// getCommonNews : ( payload ) => ({\r\n\t// \ttype : actions.GET_SELF_USER,\r\n\t// \tpayload : payload\r\n\t// }),\r\n\r\n\t// setActiveNewsItem : ( payload ) => ({\r\n\t// \ttype : actions.SET_ACTIVE_USER,\r\n\t// \tpayload : payload\r\n\t// }),\r\n\r\n\t// deleteItem : (payload) => ({\r\n\t// \ttype : actions.DELETE_SELF_USER,\r\n\t// \tpayload : payload\r\n\t// }),\r\n\t// setUser : (payload) => ({\r\n\t// \ttype : actions.SET_SELF_USER,\r\n\t// \tpayload : payload\r\n\t// })\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_SELF_RIGHTS : 'GET_SELF_RIGHTS',\r\n\tSET_SELF_RIGHTS : 'SET_SELF_RIGHTS',\r\n\tSET_ACTIVE_RIGHTS : 'SET_ACTIVE_RIGHTS',\r\n\tPOST_SELF_RIGHTS : 'POST_SELF_RIGHTS',\r\n\tGET_TENANT_RIGHTS : 'GET_TENANT_RIGHTS',\r\n\tSET_TENANT_RIGHTS : 'SET_TENANT_RIGHTS',\r\n\tGET_RIGHTS_FROM_CHANNEL : 'GET_RIGHTS_FROM_CHANNEL',\r\n\tDELETE_SELF_RIGHTS : 'DELETE_SELF_RIGHTS',\r\n\tTEST_SELF_RIGHTS : 'TEST_SELF_RIGHTS',\r\n\tSELF_RIGHTS_REQUEST_COMPLETED: 'SELF_RIGHTS_REQUEST_COMPLETED',\r\n\r\n\tPOST_RIGHTS_REQUEST : 'POST_RIGHTS_REQUEST',\r\n\tSET_RIGHTS_REQUEST : 'SET_RIGHTS_REQUEST',\r\n\tGET_RIGHTS_REQUEST : 'GET_RIGHTS_REQUEST',\r\n\tDELETE_RIGHTS_REQUEST : 'DELETE_RIGHTS_REQUEST',\r\n\tUPDATE_RIGHTS_REQUEST : 'UPDATE_RIGHTS_REQUEST',\r\n\tCANCEL_RIGHTS_REQUEST : 'CANCEL_RIGHTS_REQUEST',\r\n\r\n\tpostRightsRequest : (payload) => ({\r\n\t\ttype : actions.POST_RIGHTS_REQUEST,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tsetRightsRequest : (payload) => ({\r\n\t\ttype : actions.SET_RIGHTS_REQUEST,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tgetRightsRequest : () => ({\r\n\t\ttype : actions.GET_RIGHTS_REQUEST,\r\n\t\tpayload : payload\r\n\t}),\r\n\t\r\n\tcancelRightsRequest : (payload) => ({\r\n\t\ttype : actions.CANCEL_RIGHTS_REQUEST,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tdeleteRightsRequest : (payload) => ({\r\n\t\ttype : actions.DELETE_RIGHTS_REQUEST,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tupdateRightsRequest : (payload, id) => ({\r\n\t\ttype : actions.UPDATE_RIGHTS_REQUEST,\r\n\t\tpayload : {payload, id}\r\n\t}),\r\n\r\n\t// getTenantNews : () => ({\r\n\t// \ttype : actions.GET_TENANT_RIGHTS\r\n\t// }),\r\n\r\n\t// getCommonNews : ( payload ) => ({\r\n\t// \ttype : actions.GET_SELF_RIGHTS,\r\n\t// \tpayload : payload\r\n\t// }),\r\n\r\n\t// setActiveNewsItem : ( payload ) => ({\r\n\t// \ttype : actions.SET_ACTIVE_RIGHTS,\r\n\t// \tpayload : payload\r\n\t// }),\r\n\r\n\t// deleteItem : (payload) => ({\r\n\t// \ttype : actions.DELETE_SELF_RIGHTS,\r\n\t// \tpayload : payload\r\n\t// }),\r\n\t// setUser : (payload) => ({\r\n\t// \ttype : actions.SET_SELF_RIGHTS,\r\n\t// \tpayload : payload\r\n\t// })\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_COMMON_NEWS : 'GET_COMMON_NEWS',\r\n\tSET_COMMON_NEWS : 'SET_COMMON_NEWS',\r\n\tSET_ACTIVE_NEWS_ITEM : 'SET_ACTIVE_NEWS_ITEM',\r\n\tPOST_COMMON_NEWS : 'POST_COMMON_NEWS',\r\n\tGET_TENANT_NEWS : 'GET_TENANT_NEWS',\r\n\tSET_TENANT_NEWS : 'SET_TENANT_NEWS',\r\n\tGET_NEWS_FROM_CHANNEL : 'GET_NEWS_FROM_CHANNEL',\r\n\tDELETE_NEWS_ITEM : 'DELETE_NEWS_ITEM',\r\n\tTEST_COMMON_NEWS : 'TEST_COMMON_NEWS',\r\n\tCOMMON_NEWS_REQUEST_COMPLETED: 'COMMON_NEWS_REQUEST_COMPLETED',\r\n\r\n\tpostCommonNews : (payload) => ({\r\n\t\ttype : actions.POST_COMMON_NEWS,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tgetTenantNews : () => ({\r\n\t\ttype : actions.GET_TENANT_NEWS\r\n\t}),\r\n\r\n\tgetCommonNews : ( payload ) => ({\r\n\t\ttype : actions.GET_COMMON_NEWS,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tsetActiveNewsItem : ( payload ) => ({\r\n\t\ttype : actions.SET_ACTIVE_NEWS_ITEM,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tdeleteItem : (payload) => ({\r\n\t\ttype : actions.DELETE_NEWS_ITEM,\r\n\t\tpayload : payload\r\n\t})\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tSET_MULTICHANNEL_SHOUT_ITEMS : 'SET_MULTICHANNEL_SHOUT_ITEMS',\r\n\tGET_MULTICHANNEL_SHOUT_ITEMS : 'GET_MULTICHANNEL_SHOUT_ITEMS',\r\n\tSET_ACTIVE_SHOUT_ITEM : 'SET_ACTIVE_SHOUT_ITEM',\r\n\tSHOUT_REQUEST_COMPLETED: 'SHOUT_REQUEST_COMPLETED',\r\n\tSET_LAST_SHOUT_VIEWED: 'SET_LAST_SHOUT_VIEWED',\r\n\tgetMultichannelShoutItems : ( payload, title ) => ({\r\n\t\ttype : actions.GET_MULTICHANNEL_SHOUT_ITEMS,\r\n\t\tpayload: { title: title, payload: payload } \r\n\t}),\r\n\tsetActiveShoutItem : ( payload ) => ({\r\n\t\ttype : actions.SET_ACTIVE_SHOUT_ITEM,\r\n\t\tpayload : payload\r\n\t}),\r\n\tsetLastViewed: (payload) => ({\r\n\t\ttype: actions.SET_LAST_SHOUT_VIEWED,\r\n\t\tpayload: payload\r\n\t})\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_COMMON_BLOGS : 'GET_COMMON_BLOGS',\r\n\tSET_COMMON_BLOGS: 'SET_COMMON_BLOGS',\r\n\tGET_TENANT_BLOGS : 'GET_TENANT_BLOGS',\r\n\tSET_TENANT_BLOGS : 'SET_TENANT_BLOGS',\r\n\tSET_ACTIVE_BLOG_ITEM: 'SET_ACTIVE_BLOG_ITEM',\r\n\tPOST_TENANT_BLOG : 'POST_TENANT_BLOG',\r\n\tDELETE_BLOGS_ITEM : 'DELETE_BLOGS_ITEM',\r\n\tCOMMON_BLOGS_REQUEST_COMPLETED : 'COMMON_BLOGS_REQUEST_COMPLETED',\r\n\r\n\tgetTenantBlogs : () => ({\r\n\t\ttype : actions.GET_TENANT_BLOGS\r\n\t}),\r\n\r\n\tpostBlog : (payload) => ({\r\n\t\ttype : actions.POST_TENANT_BLOG,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tgetCommonBlogs : ( payload ) => ({\r\n\t\ttype : actions.GET_COMMON_BLOGS,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tsetActiveBlogItem: (payload) => ({\r\n\t\ttype: actions.SET_ACTIVE_BLOG_ITEM,\r\n\t\tpayload: payload\r\n\t}),\r\n\r\n\tdeleteItem: (payload) => ({\r\n\t\ttype: actions.DELETE_BLOGS_ITEM,\r\n\t\tpayload: payload\r\n\t})\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_APPS : 'GET_APPS',\r\n\tSET_APPS: 'SET_APPS',\r\n\tGET_LIQUIT_APPS: 'GET_LIQUIT_APPS',\r\n\tSET_LIQUIT_APPS: 'SET_LIQUIT_APPS',\r\n\tSET_VIEWED: 'SET_VIEWED',\r\n\tREMOVE_VIEWED : 'REMOVE_VIEWED',\r\n\tSET_POSITION: 'SET_POSITION',\r\n\t\r\n\tgetApps : (payload) => ({\r\n\t\ttype : actions.GET_APPS,\r\n\t\tpayload : payload\r\n\t}),\r\n\tsetApps : (payload) => ({\r\n\t\ttype : actions.SET_APPS,\r\n\t\tpayload : payload\r\n\t}),\r\n\tgetLiquitApps: (payload) => ({\r\n\t\ttype: actions.GET_LIQUIT_APPS,\r\n\t\tpayload: payload\r\n\t}),\r\n\tsetTileSettings: (payload) => ({\r\n\t\ttype: actions.SET_VIEWED,\r\n\t\tpayload: payload\r\n }),\r\n\tremoveViewedTiles: (payload) => ({\r\n\t\ttype: actions.REMOVE_VIEWED,\r\n\t\tpayload: payload\r\n }),\r\n\tsetTilePosition: (payload) => ({\r\n\t\ttype: actions.SET_POSITION,\r\n\t\tpayload:payload\r\n\t})\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_CALLS : 'GET_CALLS',\r\n\tSET_CALLS : 'SET_CALLS',\r\n\tSET_ACTIVE_CALLS_ITEM : 'SET_ACTIVE_CALLS_ITEM',\r\n\tCALLS_REQUEST_COMPLETD : 'CALLS_REQUEST_COMPLETD',\r\n\tgetCalls : ( payload ) => ({\r\n\t\ttype : actions.GET_CALLS,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tsetActiveCallsItem : ( payload ) => ({\r\n\t\ttype : actions.SET_ACTIVE_CALLS_ITEM,\r\n\t\tpayload : payload\r\n\t})\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_CALENDAR : 'GET_CALENDAR',\r\n\tSET_CALENDAR : 'SET_CALENDAR',\r\n\tORDER_CALENDAR : 'ORDER_CALENDAR',\r\n\tgetCalendar: (payload) => ({ \r\n\t\ttype: actions.GET_CALENDAR,\r\n\t\tpayload : payload\r\n\t})\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tTOGGLE_SEARCHBAR_ACTIVE : 'TOGGLE_SEARCHBAR_ACTIVE',\r\n\tSET_SEARCH_TERM : 'SET_SEARCH_TERM',\r\n\t\r\n\ttoggleSearchBarActive: (payload) => ({\r\n\t\ttype: actions.TOGGLE_SEARCHBAR_ACTIVE,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tsetSearchTerm: (payload) => ({\r\n\t\ttype: actions.SET_SEARCH_TERM,\r\n\t\tpayload : payload\r\n\t}),\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_SELF_WORKPLACE : 'GET_SELF_WORKPLACE',\r\n\tSET_SELF_WORKPLACE : 'SET_SELF_WORKPLACE',\r\n\tSET_ACTIVE_WORKPLACE : 'SET_ACTIVE_WORKPLACE',\r\n\tPOST_SELF_WORKPLACE : 'POST_SELF_WORKPLACE',\r\n\tGET_TENANT_WORKPLACE : 'GET_TENANT_WORKPLACE',\r\n\tSET_TENANT_WORKPLACE : 'SET_TENANT_WORKPLACE',\r\n\tGET_WORKPLACE_FROM_CHANNEL : 'GET_WORKPLACE_FROM_CHANNEL',\r\n\tDELETE_SELF_WORKPLACE : 'DELETE_SELF_WORKPLACE',\r\n\tTEST_SELF_WORKPLACE : 'TEST_SELF_WORKPLACE',\r\n\tSELF_WORKPLACE_REQUEST_COMPLETED: 'SELF_WORKPLACE_REQUEST_COMPLETED',\r\n\r\n\tPOST_WORKPLACE_REQUEST : 'POST_WORKPLACE_REQUEST',\r\n\tSET_WORKPLACE_REQUEST : 'SET_WORKPLACE_REQUEST',\r\n\tGET_WORKPLACE_REQUEST : 'GET_WORKPLACE_REQUEST',\r\n\tDELETE_WORKPLACE_REQUEST : 'DELETE_WORKPLACE_REQUEST',\r\n\tUPDATE_WORKPLACE_REQUEST : 'UPDATE_WORKPLACE_REQUEST',\r\n\r\n\tpostWorkplaceRequest : (payload) => ({\r\n\t\ttype : actions.POST_WORKPLACE_REQUEST,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tsetWorkplaceRequest : (payload) => ({\r\n\t\ttype : actions.SET_WORKPLACE_REQUEST,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tgetWorkplaceRequest : () => ({\r\n\t\ttype : actions.GET_WORKPLACE_REQUEST,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tdeleteWorkplaceRequest : (payload) => ({\r\n\t\ttype : actions.DELETE_WORKPLACE_REQUEST,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tupdateWorkplaceRequest : (payload) => ({\r\n\t\ttype : actions.UPDATE_WORKPLACE_REQUEST,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\t// getTenantNews : () => ({\r\n\t// \ttype : actions.GET_TENANT_WORKPLACE\r\n\t// }),\r\n\r\n\t// getCommonNews : ( payload ) => ({\r\n\t// \ttype : actions.GET_SELF_WORKPLACE,\r\n\t// \tpayload : payload\r\n\t// }),\r\n\r\n\t// setActiveNewsItem : ( payload ) => ({\r\n\t// \ttype : actions.SET_ACTIVE_WORKPLACE,\r\n\t// \tpayload : payload\r\n\t// }),\r\n\r\n\t// deleteItem : (payload) => ({\r\n\t// \ttype : actions.DELETE_SELF_WORKPLACE,\r\n\t// \tpayload : payload\r\n\t// }),\r\n\t// setWorkplace : (payload) => ({\r\n\t// \ttype : actions.SET_SELF_WORKPLACE,\r\n\t// \tpayload : payload\r\n\t// })\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tSET_MULTICHANNEL_SOCIAL_ITEMS : 'SET_MULTICHANNEL_SOCIAL_ITEMS',\r\n\tGET_MULTICHANNEL_SOCIAL_ITEMS : 'GET_MULTICHANNEL_SOCIAL_ITEMS',\r\n\tSET_ACTIVE_SOCIAL_ITEM : 'SET_ACTIVE_SOCIAL_ITEM',\r\n\tSOCIAL_REQUEST_COMPLETED: 'SOCIAL_REQUEST_COMPLETED',\r\n\tSET_LAST_SOCIAL_VIEWED: 'SET_LAST_SOCIAL_VIEWED',\r\n\tgetMultichannelSocialItems : ( payload, title ) => ({\r\n\t\ttype : actions.GET_MULTICHANNEL_SOCIAL_ITEMS,\r\n\t\tpayload: { title: title, payload: payload }\r\n\t}),\r\n\tsetActiveSocialItem : ( payload ) => ({\r\n\t\ttype : actions.SET_ACTIVE_SOCIAL_ITEM,\r\n\t\tpayload : payload\r\n\t}),\r\n\tsetLastViewed: (payload) => ({\r\n\t\ttype: actions.SET_LAST_SOCIAL_VIEWED,\r\n\t\tpayload: payload\r\n\t})\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_TEAMS : 'GET_TEAMS',\r\n SET_TEAMS : 'SET_TEAMS',\r\n\tFETCH_TEAM_CHANNELS : 'FETCH_TEAM_CHANNELS',\r\n\t\r\n getTeams: () => ({\r\n type: actions.GET_TEAMS\r\n }),\r\n\r\n\tfetchTeamChannels: (teamID) => ({\r\n\t\ttype : actions.FETCH_TEAM_CHANNELS,\r\n\t\tpayload : teamID\r\n\t})\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_IT_NEWS : 'GET_IT_NEWS',\r\n\tSET_IT_NEWS : 'SET_IT_NEWS',\r\n\tSET_ACTIVE_IT_NEWS_ITEM : 'SET_ACTIVE_IT_NEWS_ITEM',\r\n\tCOMMON_IT_NEWS_REQUEST_COMPLETED : 'COMMON_IT_NEWS_REQUEST_COMPLETED',\r\n\r\n\tgetITNews : ( payload ) => ({\r\n\t\ttype : actions.GET_IT_NEWS,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tsetActiveITNewsItem : ( payload ) => ({\r\n\t\ttype : actions.SET_ACTIVE_IT_NEWS_ITEM,\r\n\t\tpayload : payload\r\n\t})\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_EVENTS : 'GET_EVENTS',\r\n\tSET_EVENTS : 'SET_EVENTS',\r\n\tSET_ACTIVE_EVENT: 'SET_ACTIVE_EVENT',\r\n\tEVENTS_REQUEST_COMPLETED: 'EVENTS_REQUEST_COMPLETED',\r\n\r\n\tsetActiveEvent : (payload) => ({\r\n\t\ttype: actions.SET_ACTIVE_EVENT,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n\tgetEvents : ( payload ) => ({\r\n\t\ttype : actions.GET_EVENTS,\r\n\t\tpayload : payload\r\n\t})\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tSET_MULTICHANNEL_BLOG_ITEMS : 'SET_MULTICHANNEL_BLOG_ITEMS',\r\n\tGET_MULTICHANNEL_BLOG_ITEMS : 'GET_MULTICHANNEL_BLOG_ITEMS',\r\n\tSET_ACTIVE_BLOG_ITEM : 'SET_ACTIVE_BLOG_ITEM',\r\n\tBLOGS_REQUEST_COMPLETED : 'BLOGS_REQUEST_COMPLETED',\r\n\r\n\tgetMultichannelBlogItems : ( payload, title ) => ({\r\n\t\ttype : actions.GET_MULTICHANNEL_BLOG_ITEMS,\r\n\t\tpayload : { title: title, payload: payload } \r\n\t}),\r\n\tsetActiveBlogItem : ( payload ) => ({\r\n\t\ttype : actions.SET_ACTIVE_BLOG_ITEM,\r\n\t\tpayload : payload\r\n\t}),\r\n};\r\n\r\nexport default actions;\r\n","import styled from 'styled-components';\r\nimport styledContainerQuery from 'styled-container-query';\r\nimport { NavLink } from 'react-router-dom';\r\nimport * as Variables from '../../../ThemeVariables';\r\n\r\nexport const Birthdays = styled.div`\r\n\tdisplay: grid;\r\n\trow-gap: 10px;\r\n\r\n\t${props => props.gridColumns ? 'grid-template-columns: repeat(2, 1fr); grid-gap: 10px;' : ''}\r\n\r\n\t&.darkmode {\r\n\t\tp { \r\n\t\t\tcolor: white;\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const WidgetHeading = styledContainerQuery.div`\r\n\tmargin-bottom: 20px;\r\n\r\n\t&:container(min-width: 340px) {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between;\r\n\t}\r\n`;\r\n\r\nexport const AddLink = styled(NavLink)`\r\n\ttext-decoration: none;\r\n\tfont-size: 12px;\r\n\tcursor: pointer;\r\n\tcolor: #40454c;\r\n\ttext-align: right;\r\n\r\n\t&:after {\r\n\t\tcontent: ' | ';\r\n\t}\r\n\r\n\t&.darkmode {\r\n\t\tcolor: white;\r\n\t}\r\n\r\n`;\r\n\r\nexport const Popup = styled.div`\r\n\tpadding-bottom: 80px;\r\n\theight: 100%;\r\n`;\r\n\r\nexport const AddBirthdayButton = styled.span`\r\n\ttext-decoration: none;\r\n\tcursor: pointer;\r\n\twidth: 100%;\r\n\tpadding: 10px;\r\n\tbackground: ${Variables.mainColor};\r\n\tline-height: 25px;\r\n\ttext-align: center;\r\n\tcolor: white;\r\n\tborder-radius: ${Variables.borderRadius};\r\n\tfont-weight: bold;\r\n`;\r\n\r\nexport const AddBirthdayWrapper = styled.div`\r\n\tdisplay: grid;\r\n\tgrid-template-columns: 1fr 25px;\r\n\tmargin-bottom: 15px;\r\n\tgrid-gap: 10px;\r\n`;\r\nexport const Dismissbirthdaybutton = styled.div`\r\n\theight: 100%;\r\n\twidth: 25px;\r\n\tbackground: ${Variables.mainColor};\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\tcolor: white;\r\n\tborder-radius: ${Variables.borderRadius};\r\n\tfont-weight: bold;\r\n\tcursor: pointer;\r\n`;\r\n\r\n\r\nexport const ScrollWrapperElement = styled.div`\r\n\twidth: calc(100% + 35px);\r\n\r\n\t.List {\r\n\t\tpadding-right: 20px;\r\n\t}\r\n`;\r\n","import styled from 'styled-components'\r\n\r\nimport * as Variables from '../../../ThemeVariables';\r\n\r\nexport const Bubble = styled.span`\r\n\tcolor: white;\r\n\tbackground: ${Variables.mainColor};\r\n\tfont-weight: 600;\r\n\tdisplay: inline-block;\r\n\ttext-align: center;\r\n\tline-height: 22px;\r\n\twidth: 22px;\r\n\tborder-radius: 100%;\r\n`;","import React from 'react';\r\nimport * as Styled from './styled';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst Bubble = props => (\r\n\t\r\n\t\t{ props.number }\r\n\t\r\n)\r\n\r\nBubble.propTypes = {\r\n\tnumber : PropTypes.any,\r\n\tstyle : PropTypes.object\r\n}\r\n\r\nexport default Bubble;\r\n","import actions from './actions';\r\nconst initState = {\r\n days_left: 0,\r\n user_avatar: false,\r\n profile: {\r\n data: { settings: {}}},\r\n messages: false,\r\n tasks: false,\r\n calendarItems: false,\r\n requestCompleted: false,\r\n logging: [],\r\n lastDebug: false,\r\n applications: false,\r\n featureSliders : false,\r\n viewedTutorials : {\r\n tasks : false,\r\n powerApps : false,\r\n goApps : false,\r\n calendar : false\r\n }\r\n};\r\n\r\nexport default function userReducer(state = initState, action) {\r\n switch (action.type) {\r\n case actions.DATA_REQUEST_COMPLETED:\r\n return {\r\n ...state,\r\n requestCompleted: action.payload\r\n }\r\n case actions.SET_FEATURE_SLIDERS :\r\n return {\r\n ...state,\r\n featureSliders : action.payload\r\n }\r\n case actions.SET_USER_PROFILE:\r\n return {\r\n ...state,\r\n profile: action.payload\r\n };\r\n case actions.SET_USER_AVATAR:\r\n return {\r\n ...state,\r\n user_avatar: action.payload\r\n };\r\n case actions.SET_DAYS_LEFT:\r\n return {\r\n ...state,\r\n days_left: action.payload\r\n };\r\n case actions.SET_MESSAGES:\r\n return {\r\n ...state,\r\n messages: action.payload\r\n };\r\n case actions.SET_USER_APPLICATIONS:\r\n return {\r\n ...state,\r\n applications: action.payload\r\n };\r\n case actions.GET_USER_DATA:\r\n return {\r\n ...state,\r\n profile: { ...state.profile, data: action.payload }\r\n };\r\n case actions.ADD_DEBUG_DATA:\r\n return {\r\n ...state,\r\n logging: action.payload //logging.push(action.payload)\r\n };\r\n case actions.SET_LAST_DEBUG:\r\n return {\r\n ...state,\r\n lastDebug: action.payload,\r\n logging: []\r\n };\r\n case actions.SET_USER_CALENDARITEMS:\r\n return {\r\n ...state,\r\n calendarItems: action.payload\r\n };\r\n case actions.SET_VIEWED_TUTORIAL:\r\n\r\n return {\r\n ...state,\r\n viewedTutorials : {\r\n ...state.viewedTutorials,\r\n [action.payload] : true\r\n }\r\n }\r\n case actions.SET_USER_TASKS:\r\n return {\r\n ...state,\r\n tasks: action.payload\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n\tactiveSlideOut : false,\r\n\tactiveOverlaySlideOut : false,\r\n\timage : false,\r\n\tauthorName : false,\r\n\tauthorImage: false,\r\n\tdata: false,\r\n\tisUnmounting : false,\r\n};\r\n\r\nexport default function slideOut(state = initState, action) {\r\n\tswitch (action.type) {\r\n\t\tcase actions.SET_IS_MOUNTING:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tisMounting : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_IS_UNMOUNTING:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tisUnmounting : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_ACTIVE_SLIDEOUT:\r\n\t\t\tif ( action.payload.item === false || action.payload.item !== state.activeSlideOut ) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\t...state,\r\n\t\t\t\t\tactiveSlideOut : action.payload.item,\r\n\t\t\t\t\timage : action.payload.image,\r\n\t\t\t\t\tauthorName : action.payload.authorName,\r\n\t\t\t\t\tauthorImage: action.payload.authorImage,\r\n\t\t\t\t\tdata: action.payload.data,\r\n\t\t\t\t\tactiveOverlaySlideOut : false,\r\n\t\t\t\t\tisUnmounting : false\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tactiveSlideOut : action.payload.item,\r\n\t\t\t\timage : action.payload.image,\r\n\t\t\t\tauthorName: action.payload.authorName,\r\n\t\t\t\tdata: action.payload.data,\r\n\t\t\t\tauthorImage : action.payload.authorImage,\r\n\t\t\t\tisUnmounting : false\r\n\t\t\t}\r\n case actions.SET_ACTIVE_OVERLAY_SLIDEOUT:\r\n \treturn {\r\n \t\t...state,\r\n \t\tactiveOverlaySlideOut : action.payload.item\r\n\t\t\t}\r\n\t\tcase actions.SET_SLIDEOUT_DATA:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tdata: action.payload\r\n\t\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = { \r\n\tcolumns: 3,\r\n\tdarkmode : false,\r\n\tdarkmodeAuto : false,\r\n\tsliderHidden : false\r\n};\r\n\r\n\r\nexport default function layoutReducer(state = initState, action) {\r\n\t\r\n\tswitch (action.type) { \r\n\t\tcase actions.SET_COLUMNS:\r\n return { ...state, columns: action.payload.columns }\r\n case actions.HIDE_SLIDER:\r\n \treturn {\r\n \t\t...state,\r\n \t\tsliderHidden : action.payload\r\n \t}\r\n case actions.SET_IS_LOADED:\r\n return {\r\n ...state,\r\n IsLoaded: true\r\n };\r\n case actions.SET_DARK_MODE:\r\n \treturn {\r\n \t\t...state,\r\n \t\tdarkmode : action.payload\r\n \t}\r\n case actions.START_DARKMODE_AUTO:\r\n \treturn {\r\n \t\t...state,\r\n \t\tdarkmodeAuto : true\r\n \t}\r\n case actions.STOP_DARKMODE_AUTO:\r\n \treturn {\r\n \t\t...state,\r\n \t\tdarkmodeAuto : false\r\n \t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n authProvider: false,\r\n readyForBoot: false\r\n};\r\n\r\n\r\nexport default function authReducer(state = initState, action) {\r\n\r\n switch (action.type) {\r\n case 'AAD_LOGIN_SUCCESS':\r\n return {\r\n ...state,\r\n ...action.payload\r\n }\r\n case 'AAD_LOGIN_ERROR':\r\n return action.payload;\r\n case 'SET_AUTH_INFO':\r\n return {\r\n ...state,\r\n ...action.payload\r\n }\r\n case actions.READY_FOR_BOOT:\r\n return {\r\n ...state,\r\n readyForBoot: true,\r\n authProvider: action.payload\r\n };\r\n case actions.LOG_OUT:\r\n return {\r\n ...state\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n\trequestCompleted: true,\r\n\tstatus: \"green\",\r\n\trefreshHidden: false,\r\n\tupdate: ''\r\n};\r\n\r\nexport default function documentReducer(state = initState, action) {\r\n\t\r\n\tswitch (action.type) { \r\n\t\tcase actions.SET_DOCUMENTS:\r\n\t\t\treturn {...state, documents: action.payload}\r\n\t\tcase actions.DOCUMENTS_REQUEST_COMPLETED:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\trequestCompleted : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_STATUS_DOCUMENTS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tstatus: action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_REFRESH_HIDDEN_DOCUMENTS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\trefreshHidden: action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_LAST_UPDATE_DOCUMENTS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tupdate: action.payload\r\n\t\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {};\r\n\r\nexport default function reportReducer(state = initState, action) {\r\n\t\r\n\tswitch (action.type) { \r\n case actions.SET_TILES:\r\n return { ...state, tiles: action.payload };\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = { \r\n\tbirthdays: [],\r\n\tupcoming: []\t\r\n};\r\n\r\n\r\nexport default function birthdayReducer(state = initState, action) {\r\n\t\r\n\tswitch (action.type) { \r\n\t\tcase actions.SET_BIRTHDAYS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tbirthdays : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_BIRTHDAYS_AVATARS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tbirthdays: action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_UPCOMING_BIRTHDAYS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tupcoming: action.payload\r\n\t\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n AuthProvider: false,\r\n GraphClient: false,\r\n GoClient: false,\r\n PowerClient: false,\r\n SharepointClient: false,\r\n YammerClient: false,\r\n LiquitClient: false,\r\n Auth: false,\r\n aadResponse: null,\r\n IsLoaded: false,\r\n clientActivated: false\r\n};\r\n\r\n\r\nexport default function clientReducer(state = initState, action) {\r\n\r\n switch (action.type) {\r\n case actions.AAD_LOGIN_SUCCESS:\r\n return {\r\n ...state,\r\n aadResponse: action.payload\r\n };\r\n\r\n case actions.AAD_LOGOUT_SUCCESS:\r\n return {\r\n ...state,\r\n aadResponse: null\r\n };\r\n\r\n case actions.CLIENTS_ACTIVATED:\r\n return {\r\n ...state,\r\n clientsActivated: action.payload\r\n };\r\n\r\n case actions.AAD_ACQUIRED_ID_TOKEN_ERROR:\r\n return {\r\n ...state,\r\n aadResponse: action.payload\r\n };\r\n case actions.AAD_ACQUIRED_ACCESS_TOKEN_ERROR:\r\n return {\r\n ...state,\r\n aadResponse: action.payload\r\n };\r\n case actions.AAD_LOGIN_FAILED:\r\n return {\r\n ...state,\r\n aadResponse: null\r\n };\r\n case actions.AAD_LOGIN_ERROR:\r\n return {\r\n ...state,\r\n aadResponse: action.payload\r\n };\r\n\r\n case actions.SET_AUTH_PROVIDER:\r\n return {\r\n ...state,\r\n AuthProvider: action.payload\r\n };\r\n\r\n case actions.SET_AUTH:\r\n return {\r\n ...state,\r\n Auth: action.payload\r\n };\r\n\r\n case actions.SET_GRAPH_CLIENT:\r\n return {\r\n ...state,\r\n GraphClient: action.payload\r\n };\r\n\r\n case actions.SET_LIQUIT_CLIENT:\r\n return {\r\n ...state,\r\n LiquitClient: action.payload\r\n };\r\n\r\n case actions.SET_YAMMER_CLIENT:\r\n return {\r\n ...state,\r\n YammerClient: action.payload\r\n };\r\n\r\n case actions.SET_POWER_CLIENT:\r\n return {\r\n ...state,\r\n PowerClient: action.payload\r\n };\r\n\r\n case actions.SET_GO_CLIENT:\r\n return {\r\n ...state,\r\n GoClient: action.payload\r\n };\r\n\r\n case actions.SET_SHAREPOINT_CLIENT:\r\n return {\r\n ...state,\r\n SharepointClient: action.payload\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n\tnewsItems : []\r\n};\r\n\r\n\r\nexport default function newsReducer(state = initState, action) {\r\n\r\n\tswitch (action.type) {\r\n\t\tcase actions.SET_NEWS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tnewsItems : action.payload\r\n\t\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n\tactiveTask : {},\r\n};\r\n\r\nexport default function tasksReducer(state = initState, action) {\r\n\t\r\n\tswitch (action.type) { \r\n\t\tcase actions.SET_TASKS:\r\n\t\t\treturn {...state, tasks: action.payload}\r\n\t\tcase actions.SET_ACTIVE_TASK:\r\n\t\t\treturn {...state, activeTask: action.payload}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {};\r\n\r\nexport default function calendarReducer(state = initState, action) {\r\n\tswitch (action.type) { \r\n\t\tcase actions.SET_CALENDAR:\r\n\t\t\treturn {...state, calendar: action.payload}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n notifications: {},\r\n numberOfNotifications: 0,\r\n Hub: false,\r\n Send: false,\r\n Received: false,\r\n Commands: false,\r\n applications: {},\r\n application: false,\r\n isServiceConnected: false,\r\n isConnected: false\r\n};\r\n\r\nexport default function notificationReducer(state = initState, action) {\r\n\r\n switch (action.type) {\r\n case actions.SET_NOTIFICATIONS:\r\n return {\r\n ...state,\r\n notifications: action.payload\r\n };\r\n case actions.SET_NUMBER_OF_NOTIFICATIONS:\r\n return {\r\n ...state,\r\n numberOfNotifications: action.payload\r\n };\r\n case actions.REMOVE_ALL_NOTIFICATIONS:\r\n return {\r\n ...state,\r\n notifications: {},\r\n numberOfNotifications: 0\r\n };\r\n case actions.SEND_CHECK_COMMAND:\r\n return {\r\n ...state,\r\n Send: action.payload\r\n };\r\n case actions.SEND_COMMAND:\r\n return {\r\n ...state,\r\n Send: action.payload\r\n };\r\n case actions.RECEIVE_COMMAND:\r\n return {\r\n ...state,\r\n Received: action.payload\r\n };\r\n case actions.SET_HUB:\r\n return {\r\n ...state,\r\n Hub: action.payload\r\n };\r\n case actions.SERVICES_CONNECTED:\r\n return {\r\n ...state,\r\n isServiceConnected: action.payload\r\n };\r\n case actions.SET_CONNECTED:\r\n return {\r\n ...state,\r\n isConnected: action.payload\r\n };\r\n case actions.SET_APPLICATIONS:\r\n return {\r\n ...state,\r\n applications: action.payload\r\n };\r\n case actions.SET_APPLICATION:\r\n return {\r\n ...state,\r\n application: action.payload\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = { \r\n\tevents : [],\r\n\tactiveEvent: false,\r\n\trequestCompleted: false\r\n};\r\n\r\n\r\nexport default function eventsReducer(state = initState, action) {\r\n\t\r\n\tswitch (action.type) { \r\n\t\tcase actions.EVENTS_REQUEST_COMPLETED:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\trequestCompleted: action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_EVENTS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tevents : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_ACTIVE_EVENT :\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tactiveEvent: action.payload\r\n\t\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n\tblogs : [],\r\n};\r\n\r\n\r\nexport default function blogReducer(state = initState, action) {\r\n\r\n\tswitch (action.type) {\r\n\t\tcase actions.SET_BLOGS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tblogs : action.payload\r\n\t\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","const actions = {\r\n\tGET_WIDGETS : 'GET_WIDGETS',\r\n\tSET_WIDGETS: 'SET_WIDGETS',\r\n\tSET_WIDGETS_LAYOUT: 'SET_WIDGETS_LAYOUT',\r\n\tSET_CLIENTS: 'SET_CLIENTS',\r\n\tGET_CLIENTS: 'GET_CLIENTS',\r\n\tSET_HAS_GO_WIDGET: 'SET_HAS_GO_WIDGET',\r\n};\r\n\r\nexport default actions;\r\n","import actions from './actions';\r\nconst initState = { \r\n\twidgets : {\r\n\t\tleft : [],\r\n\t\tcenter : [],\r\n\t\tright: []\r\n\t},\r\n\tlayout: {},\r\n\tclients: [],\r\n\thasGOWidget: false\r\n};\r\n\r\nexport default function widgetReducer(state = initState, action) {\r\n\tswitch (action.type) {\r\n case actions.SET_WIDGETS :\r\n \treturn {\r\n \t\t...state,\r\n \t\twidgets : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_CLIENTS :\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tclients: action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_WIDGETS_LAYOUT :\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tlayout: action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_HAS_GO_WIDGET :\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\thasGOWidget: action.payload\r\n\t\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n apps: {},\r\n appStore: null\r\n};\r\n\r\nexport default function appsReducer(state = initState, action) {\r\n\r\n switch (action.type) {\r\n case actions.SET_APPS:\r\n return {\r\n ...state,\r\n apps: {\r\n ...state.apps,\r\n ...action.payload\r\n }\r\n };\r\n case actions.SET_LIQUIT_APPS:\r\n return {\r\n ...state,\r\n appStore: action.payload\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n\tsearchbarActive : false,\r\n\tsearchTerm : ''\r\n};\r\n\r\nexport default function searchReducer(state = initState, action) {\r\n\tswitch (action.type) {\r\n\t\tcase actions.SET_SEARCH_TERM:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tsearchTerm : action.payload\r\n\t\t\t}\r\n case actions.TOGGLE_SEARCHBAR_ACTIVE:\r\n return {\r\n \t...state,\r\n \tsearchbarActive: !state.searchbarActive\r\n };\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = { message: null, type: null };\r\n\r\nexport default function messageReducer(state = initState, action) {\r\n\r\n\tswitch (action.type) {\r\n\r\n\t\tcase actions.ADD_MESSAGE:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tmessage: action.payload.message,\r\n\t\t\t\ttype: action.payload.type\r\n\t\t\t};\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n tenantNewsItems: []\r\n};\r\n\r\n\r\nexport default function commonNewsReducer(state = initState, action) {\r\n switch (action.type) {\r\n case actions.SET_COMMON_NEWS:\r\n return {\r\n ...state,\r\n newsItems: action.payload\r\n }\r\n case actions.COMMON_NEWS_REQUEST_COMPLETED:\r\n return {\r\n ...state,\r\n requestCompleted : action.payload\r\n }\r\n case actions.SET_TENANT_NEWS:\r\n return {\r\n ...state,\r\n tenantNewsItems: action.payload\r\n }\r\n case actions.SET_ACTIVE_NEWS_ITEM:\r\n return {\r\n ...state,\r\n activeNewsItem: action.payload\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n\titems : [],\r\n\tactiveITNewsItem : false,\r\n\trequestCompleted : false\r\n};\r\n\r\n\r\nexport default function commonNewsReducer(state = initState, action) {\r\n\tswitch (action.type) {\r\n\t\tcase actions.SET_IT_NEWS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\titems : action.payload\r\n\t\t\t}\r\n\t\tcase actions.COMMON_IT_NEWS_REQUEST_COMPLETED:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\trequestCompleted : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_ACTIVE_IT_NEWS_ITEM:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tactiveITNewsItem : action.payload\r\n\t\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n\tevents : [],\r\n\ttenantEventsItems : [],\r\n\tactiveEvent : false,\r\n\trequestCompleted : false\r\n};\r\n\r\n\r\nexport default function commonEventsReducer(state = initState, action) {\r\n\r\n\tswitch (action.type) {\r\n\t\tcase actions.SET_COMMON_EVENTS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tevents : action.payload\r\n\t\t\t}\r\n\t\tcase actions.COMMON_EVENTS_REQUEST_COMPLETED:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\trequestCompleted : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_TENANT_EVENTS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\ttenantEventsItems: action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_ACTIVE_COMMON_EVENT :\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tactiveEvent: action.payload\r\n\t\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n\tblogs: [],\r\n\ttenantBlogs : [],\r\n\tactiveBlogItem: false,\r\n\trequestCompleted : false\r\n};\r\n\r\n\r\nexport default function commonBlogReducer(state = initState, action) {\r\n\r\n\tswitch (action.type) {\r\n\t\tcase actions.SET_COMMON_BLOGS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tblogs : action.payload\r\n\t\t\t}\r\n\t\tcase actions.COMMON_BLOGS_REQUEST_COMPLETED:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\trequestCompleted : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_TENANT_BLOGS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\ttenantBlogs : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_ACTIVE_BLOG_ITEM:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tactiveBlogItem: action.payload\r\n\t\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n\titems : [],\r\n\tactiveItem : false,\r\n\trequestCompleted : false\r\n};\r\n\r\n\r\nexport default function commonCallsReducer(state = initState, action) {\r\n\tswitch (action.type) {\r\n\t\tcase actions.SET_CALLS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\titems : action.payload\r\n\t\t\t}\r\n\t\tcase actions.CALLS_REQUEST_COMPLETD:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\trequestCompleted : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_ACTIVE_CALLS_ITEM:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tactiveItem : action.payload\r\n\t\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n faqs: [],\r\n knowledgeBases: [],\r\n faqRequestCompleted: false,\r\n knowledgeBasesRequestCompleted: false\r\n};\r\n\r\n\r\nexport default function knowledgeReducer(state = initState, action) {\r\n switch (action.type) {\r\n case actions.SET_FAQS:\r\n return {\r\n ...state,\r\n faqs: action.payload\r\n }\r\n case actions.FAQS_REQUEST_COMPLETED:\r\n return {\r\n ...state,\r\n faqRequestCompleted: action.payload\r\n }\r\n case actions.SET_KNOWLEDGEBASES:\r\n return {\r\n ...state,\r\n knowledgeBases: action.payload\r\n }\r\n case actions.KNOWLEDGEBASES_REQUEST_COMPLETED:\r\n return {\r\n ...state,\r\n knowledgeBasesRequestCompleted: action.payload\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n\tlearnings: [],\r\n\tlearingId: false,\r\n\tlearningPaths: [],\r\n\trandomLearningPaths: [],\r\n\troles: [],\r\n\tproducts: [],\r\n\tlevels: [],\r\n\tmodule: false,\r\n\tactiveLearningItem : false,\r\n\trequestCompleted : false\r\n};\r\n\r\n\r\nexport default function learningReducer(state = initState, action) {\r\n\tswitch (action.type) {\r\n\t\tcase actions.SET_LEARNING:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tlearnings : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_LEARNING_ID:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tlearningId: action.payload\r\n\t\t\t}\r\n\t\tcase actions.LEARNING_REQUEST_COMPLETED:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\trequestCompleted : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_ACTIVE_LEARNING_ITEM:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tactiveLearningItem : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_RANDOM_LEARNINGPATHS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\trandomLearningPaths: action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_LEARNINGPATHS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tlearningPaths: action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_ROLES:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\troles: action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_PRODUCTS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tproducts: action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_LEVELS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tlevels: action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_MODULE:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tmodule: action.payload\r\n\t\t\t}\r\n\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n appOnline: true,\r\n};\r\n\r\nexport default function appReducer(state = initState, action) {\r\n\r\n switch (action.type) {\r\n case actions.SET_APP_ONLINE:\r\n return {\r\n ...state,\r\n appOnline : action.payload\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n\tsolutions : [],\r\n categories : [],\r\n\tactiveSolution : false\r\n};\r\n\r\nexport default function solutionReducer(state = initState, action) {\r\n\tswitch (action.type) {\r\n\t\tcase actions.SET_SOLUTIONS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tsolutions : action.payload\r\n\t\t\t}\r\n case actions.SET_SOLUTION_CATEGORIES:\r\n return {\r\n ...state,\r\n categories : action.payload\r\n }\r\n\t\tcase actions.SET_ACTIVE_SOLUTION :\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tactiveSolution : action.payload\r\n\t\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n recentDocuments : [],\r\n loading : false,\r\n documentInfo: {},\r\n base64Info: \"\",\r\n};\r\n\r\nexport default function documentsWizardReducer(state = initState, action) {\r\n\r\n\tswitch (action.type) {\r\n\t\tcase actions.SET_RECENT_DOCUMENTS_FOR_APP:\r\n\t\t\treturn {\r\n ...state,\r\n recentDocuments : action.payload\r\n }\r\n case actions.SET_RECENT_DOCUMENTS_LOADING:\r\n return {\r\n ...state,\r\n loading : action.payload\r\n }\r\n case actions.SET_DOCUMENT_INFO:\r\n return {\r\n ...state,\r\n documentInfo : action.payload\r\n }\r\n case actions.SET_BASE64_INFO:\r\n return {\r\n ...state,\r\n base64Info : action.payload\r\n }\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","const actions = {\r\n\tGET_TIPS_TRICKS : 'GET_TIPS_TRICKS',\r\n\tSET_TIPS_TRICKS : 'SET_TIPS_TRICKS'\r\n};\r\n\r\nexport default actions;\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n\ttipsTricks : []\r\n};\r\n\r\nexport default function tipsTricksReducer(state = initState, action) {\r\n\r\n\tswitch (action.type) {\r\n\t\tcase actions.SET_TIPS_TRICKS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\ttipsTricks: action.payload\r\n\t\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","const actions = {\r\n\tGET_SITE_KNOWLEDGE : 'GET_SITE_KNOWLEDGE',\r\n\tSET_SITE_KNOWLEDGE : 'SET_SITE_KNOWLEDGE'\r\n};\r\n\r\nexport default actions;\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n\tsiteKnowledge : []\r\n};\r\n\r\nexport default function siteKnowledgeReducer(state = initState, action) {\r\n\r\n\tswitch (action.type) {\r\n\t\tcase actions.SET_SITE_KNOWLEDGE:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tsiteKnowledge: action.payload\r\n\t\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","const actions = {\r\n\tSET_NOTIFICATIONS : 'SET_NOTIFICATIONS',\r\n PUSH_NOTIFICATION : 'PUSH_NOTIFICATION',\r\n\tCLEAR_NOTIFICATIONS : 'CLEAR_NOTIFICATIONS',\r\n pushNotification: (message, type) => ({\r\n type: actions.PUSH_NOTIFICATION,\r\n payload: {\r\n\t\t\tmessage : message,\r\n\t\t\ttype : type\r\n\t\t}\r\n }),\r\n};\r\n\r\nexport default actions;\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n notifications: [],\r\n};\r\n\r\nexport default function notificationCollectorReducer(state = initState, action) {\r\n\r\n switch (action.type) {\r\n case actions.SET_NOTIFICATIONS:\r\n return {\r\n ...state,\r\n notifications: action.payload\r\n };\r\n case actions.CLEAR_NOTIFICATIONS:\r\n return {\r\n ...state,\r\n notifications : []\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n\tactivePopup : false,\r\n\tdata : false,\r\n};\r\n\r\nexport default function popup(state = initState, action) {\r\n\tswitch (action.type) {\r\n\t\tcase actions.SET_ACTIVE_POPUP:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tactivePopup : action.payload.item,\r\n\t\t\t\tdata : action.payload.data,\r\n\t\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n\tactivePopup : false,\r\n\tdata : false,\r\n};\r\n\r\nexport default function yearOverview(state = initState, action) {\r\n\tswitch (action.type) {\r\n\t\tcase actions.SET_ACTIVE_YEAR_OVERVIEW_POPUP:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tactivePopup : action.payload.item,\r\n\t\t\t\tdata : action.payload.data,\r\n\t\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n userRequest: []\r\n};\r\n\r\n\r\nexport default function selfUserReducer(state = initState, action) {\r\n switch (action.type) {\r\n case actions.SET_USER_REQUEST:\r\n return {\r\n ...state,\r\n userRequest: action.payload\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n rightsRequest: []\r\n};\r\n\r\n\r\nexport default function selfRightsReducer(state = initState, action) {\r\n switch (action.type) {\r\n case actions.SET_RIGHTS_REQUEST:\r\n return {\r\n ...state,\r\n rightsRequest: action.payload\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n workplaceRequest: []\r\n};\r\n\r\n\r\nexport default function selfWorkplaceReducer(state = initState, action) {\r\n switch (action.type) {\r\n case actions.SET_WORKPLACE_REQUEST:\r\n return {\r\n ...state,\r\n workplaceRequest: [...state.workplaceRequest, action.payload]\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import actions from './actions';\r\nconst initState = {\r\n\tteams : []\r\n};\r\n\r\nexport default function teamsReducer(state = initState, action) {\r\n\tswitch (action.type) {\r\n case actions.SET_TEAMS :\r\n \treturn {\r\n \t\t...state,\r\n \t\tteams : action.payload\r\n \t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\nconst initState = {\r\n\tsharepoint : [],\r\n\tsharePointSet: false,\r\n\tsharepointDrive : [],\r\n\tsharepointDriveSet: false,\r\n\tsharepointDriveChildren : [],\r\n\tsharepointDriveChildrenSet: false,\r\n\tsharepointFolder : [],\r\n\tsharepointFolderSet: false,\r\n\tisLoading: false,\r\n};\r\n\r\nexport default function sharepointReducer(state = initState, action) {\r\n\tswitch (action.type) {\r\n case actions.SET_SHAREPOINT :\r\n \treturn {\r\n \t\t...state,\r\n \t\tsharepoint : action.payload,\r\n\t\t\t\tsharePointSet : true\r\n \t}\r\n\t\tcase actions.SET_SHAREPOINT_DRIVE :\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tsharepointDrive : action.payload,\r\n\t\t\t\tsharepointDriveSet : true\r\n\t\t\t}\r\n\t\tcase actions.SET_SHAREPOINT_DRIVE_CHILDREN :\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tsharepointDriveChildren : action.payload,\r\n\t\t\t\tsharepointDriveChildrenSet : true\r\n\t\t\t}\r\n\t\tcase actions.SET_SHAREPOINT_FOLDER :\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tsharepointFolder : action.payload,\r\n\t\t\t\tsharepointFolderSet : true\r\n\t\t\t}\r\n\t\tcase actions.CLEAR_SHAREPOINT :\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tsharePointSet : false\r\n\t\t\t}\r\n\t\tcase actions.CLEAR_SHAREPOINT_DRIVE :\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tsharepointDriveSet : false\r\n\t\t\t}\r\n\t\tcase actions.CLEAR_SHAREPOINT_DRIVE_CHILDREN :\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tsharepointDriveChildrenSet : false\r\n\t\t\t}\r\n\t\tcase actions.CLEAR_SHAREPOINT_FOLDER :\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tsharepointFolderSet : false\r\n\t\t\t\t}\r\n\t\tcase actions.SET_IS_LOADING :\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tisLoading : action.payload\r\n\t\t\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\nconst initState = {\r\n\tpeople : [],\r\n\tnextPageAvailable : true,\r\n\tfetching : false,\r\n\tcurrentPage : 0,\r\n\tpageLength : 500\r\n};\r\n\r\nexport default function peopleReducer(state = initState, action) {\r\n\tswitch (action.type) {\r\n\t\tcase actions.SET_CURRENT_PAGE:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tcurrentPage : action.payload\r\n\t\t\t}\r\n case actions.SET_PEOPLE :\r\n\t\tcase actions.SET_PEOPLE_AVATARS:\r\n \treturn {\r\n \t\t...state,\r\n \t\tpeople : action.payload\r\n \t}\r\n\t\tcase actions.SET_PEOPLE_FETCHING:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tfetching : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_NEXT_PAGE_AVAILABLE:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tnextPageAvailable : action.payload\r\n\t\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n\tnewsItems : [],\r\n\tactiveNewsItem : false,\r\n\trequestCompleted: false,\r\n};\r\n\r\n\r\nexport default function multiChannelNewsReducer(state = initState, action) {\r\n\r\n\tswitch (action.type) {\r\n\t\tcase actions.NEWS_REQUEST_COMPLETED:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\trequestCompleted : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_MULTICHANNEL_NEWS_ITEMS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tnewsItems : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_ACTIVE_NEWS_ITEM:\r\n return {\r\n ...state,\r\n activeNewsItem: action.payload\r\n\t\t\t}\r\n\t\tcase actions.CLEAR_NEWS_STATE:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tnewsItems: []\r\n\t\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n\tblogItems : [],\r\n\tactiveBlogItem : false,\r\n\trequestCompleted : false,\r\n};\r\n\r\n\r\nexport default function multiChannelBlogReducer(state = initState, action) {\r\n\r\n\tswitch (action.type) {\r\n\t\tcase actions.BLOGS_REQUEST_COMPLETED:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\trequestCompleted : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_MULTICHANNEL_BLOG_ITEMS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tblogItems : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_ACTIVE_BLOG_ITEM:\r\n return {\r\n ...state,\r\n activeBlogItem: action.payload\r\n }\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n\tshoutItems : [],\r\n\tactiveShoutItem : false,\r\n\trequestCompleted : false\r\n};\r\n\r\n\r\nexport default function multiChannelShoutReducer(state = initState, action) {\r\n\r\n\tswitch (action.type) {\r\n\t\tcase actions.SHOUT_REQUEST_COMPLETED:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\trequestCompleted : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_MULTICHANNEL_SHOUT_ITEMS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tshoutItems : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_ACTIVE_SHOUT_ITEM:\r\n return {\r\n ...state,\r\n activeShoutItem: action.payload\r\n }\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n\tfeeds : [],\r\n\tactiveFeedItem : false,\r\n\trequestCompleted : false,\r\n};\r\n\r\n\r\nexport default function multiChannelFeedReducer(state = initState, action) {\r\n\r\n\tswitch (action.type) {\r\n\t\tcase actions.FEED_REQUEST_COMPLETED:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\trequestCompleted : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_MULTICHANNEL_FEEDS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tfeeds : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_ACTIVE_FEED_ITEM:\r\n return {\r\n ...state,\r\n activeFeedItem: action.payload\r\n }\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = {\r\n\tsocialItems : [],\r\n\tactiveSocialItem : false,\r\n\trequestCompleted : false\r\n};\r\n\r\nexport default function multiChannelSocialReducer(state = initState, action) {\r\n\tswitch (action.type) {\r\n\t\tcase actions.SOCIAL_REQUEST_COMPLETED:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\trequestCompleted : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_MULTICHANNEL_SOCIAL_ITEMS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tsocialItems : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_ACTIVE_SOCIAL_ITEM:\r\n return {\r\n ...state,\r\n activeSocialItem: action.payload\r\n }\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import actions from './actions';\r\n\r\nconst initState = { \r\n\tevents : [],\r\n\tyearEvents : [],\r\n\tactiveEvent: false,\r\n\trequestCompleted: false,\r\n\tsourceUrl: \"\",\r\n};\r\n\r\n\r\nexport default function eventsReducer(state = initState, action) {\r\n\t\r\n\tswitch (action.type) { \r\n\t\tcase actions.EVENTS_REQUEST_COMPLETED:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\trequestCompleted: action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_EVENTS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tevents : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_YEAR_EVENTS:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tyearEvents : action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_ACTIVE_EVENT :\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tactiveEvent: action.payload\r\n\t\t\t}\r\n\t\tcase actions.SET_SOURCE_URL :\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tsourceUrl: action.payload\r\n\t\t\t}\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n}\r\n","import { combineReducers } from 'redux'\r\nimport User from './user/reducer';\r\nimport SlideOut from './slideOut/reducer';\r\nimport Layout from './layout/reducer';\r\nimport Auth from './auth/reducer';\r\nimport Document from './document/reducer';\r\nimport Reports from './reports/reducer';\r\nimport Birthday from './birthday/reducer';\r\nimport Client from './client/reducer';\r\n\r\nimport News from './news/reducer';\r\nimport Tasks from './tasks/reducer';\r\nimport Calendar from './calendar/reducer';\r\nimport Notifications from './notification/reducer';\r\nimport Events from './events/reducer';\r\nimport Blog from './blog/reducer';\r\nimport Widgets from './widgets/reducer';\r\nimport Apps from './apps/reducer';\r\nimport Search from './search/reducer';\r\nimport Message from './message/reducer';\r\nimport CommonNews from './common/news/reducer';\r\nimport ITNews from './common/itnews/reducer';\r\nimport CommonEvents from './common/events/reducer';\r\nimport CommonBlogs from './common/blog/reducer';\r\nimport Calls from './common/calls/reducer';\r\nimport KnowledgeBase from './knowledgeBase/reducer';\r\nimport Learning from './common/learning/reducer';\r\nimport App from './app/reducer';\r\nimport Solution from'./solution/reducer';\r\nimport DocumentsWizard from './documentsWizard/reducer';\r\nimport TipsTricks from './tipsTricks/reducer';\r\nimport SiteKnowledge from './siteKnowledge/reducer';\r\nimport NotificationCollector from './notificationCollector/reducer';\r\nimport Popup from './popup/reducer';\r\nimport YearOverview from './yearOverview/reducer';\r\n\r\nimport UserRequest from './common/userRequest/reducer';\r\nimport RightsRequest from './common/rightsRequest/reducer';\r\nimport WorkplaceRequest from './common/workplaceRequest/reducer';\r\n\r\nimport { IntlReducer as Intl } from 'react-redux-multilingual'\r\n\r\nimport Teams from './widgets/teams/reducer';\r\nimport Sharepoint from './widgets/sharepoint/reducer';\r\nimport People from './widgets/people/reducer';\r\nimport MultiChannelNews from './widgets/multiChannelNews/reducer';\r\nimport MultiChannelBlog from './widgets/multiChannelBlog/reducer';\r\nimport MultiChannelShout from './widgets/multiChannelShout/reducer';\r\nimport MultiChannelFeed from './widgets/multiChannelFeed/reducer';\r\nimport MultiChannelSocial from './widgets/multiChannelSocial/reducer';\r\nimport MultiChannelEvent from './widgets/multiChannelEvent/reducer';\r\n\r\nimport localForage from \"localforage\";\r\nimport actions from \"./actions\"\r\n\r\nconst appReducer = combineReducers({\r\n\tUser,\r\n\tPopup,\r\n\tYearOverview,\r\n\tSlideOut,\r\n\tLayout,\r\n\tAuth,\r\n\tDocument,\r\n Client,\r\n\tBirthday,\r\n\tMultiChannelNews,\r\n\tMultiChannelBlog,\r\n\tMultiChannelFeed,\r\n\tMultiChannelShout,\r\n\tMultiChannelSocial,\r\n\tMultiChannelEvent,\r\n\tNews,\r\n\tTasks,\r\n\tCalendar,\r\n\tNotifications,\r\n\tWidgets,\r\n\tApps,\r\n\tEvents,\r\n Blog,\r\n\tReports,\r\n\tCalls,\r\n\tSearch,\r\n\tCommonNews,\r\n\tITNews,\r\n CommonEvents,\r\n\tCommonBlogs,\r\n\tKnowledgeBase,\r\n\tMessage,\r\n\tLearning,\r\n\tTeams,\r\n\tSharepoint,\r\n\tApp,\r\n\tSolution,\r\n\tDocumentsWizard,\r\n\tTipsTricks,\r\n\tSiteKnowledge,\r\n\tPeople,\r\n\tNotificationCollector,\r\n\tIntl,\r\n\tUserRequest,\r\n\tRightsRequest,\r\n\tWorkplaceRequest\r\n});\r\n\r\nconst rootReducer = (state, action) => {\r\n\tif(action.type == actions.CLEAR) {\r\n\t\tlocalForage.removeItem('persist:root')\r\n\t\treturn appReducer(undefined, action)\r\n\t}\r\n\treturn appReducer(state, action)\r\n}\r\n\r\nexport default rootReducer;\r\n","import { all, call, put, fork, takeEvery, select, take } from 'redux-saga/effects';\r\nimport { eventChannel } from 'redux-saga';\r\nimport actions from './actions';\r\nimport { getAppOnline } from '../selectors';\r\nimport messageActions from '../message/actions';\r\nexport function* checkAppOnline() {\r\n yield takeEvery(actions.CHECK_APP_ONLINE, function* (action) {\r\n\r\n try {\r\n yield call(checkStatusChannel);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n });\r\n}\r\n\r\nfunction * checkStatusChannel() {\r\n let offlineTimeout = null;\r\n const channel = eventChannel( emit => {\r\n const handleConnectivityChange = (isConnected) => {\r\n // Clear any existing timeout\r\n if (offlineTimeout) {\r\n clearTimeout(offlineTimeout);\r\n offlineTimeout = null;\r\n }\r\n // -- Emit connection state\r\n if (navigator.onLine) {\r\n emit(true);\r\n } else {\r\n // Start a timeout for 10 seconds\r\n offlineTimeout = setTimeout(() => {\r\n // After 10 seconds, check if still offline\r\n if (!navigator.onLine) {\r\n emit(false);\r\n }\r\n }, 15000); // 10 seconds\r\n }\r\n }\r\n // -- Initialise the connectivity listener\r\n window.addEventListener(\"online\", handleConnectivityChange);\r\n window.addEventListener(\"offline\", handleConnectivityChange);\r\n\r\n // Return the unregister event listener.\r\n return () => {\r\n window.removeEventListener(\"online\", handleConnectivityChange);\r\n window.removeEventListener(\"offline\", handleConnectivityChange);\r\n }\r\n });\r\n\r\n while ( true ) {\r\n const connectionInfo = yield take(channel);\r\n yield put({\r\n type : actions.CHANGE_APP_CONNECTIVITY_STATUS,\r\n payload : connectionInfo\r\n })\r\n }\r\n}\r\n\r\n\r\nexport function* showUserNotificationOnConnectivityChange() {\r\n yield takeEvery(actions.CHANGE_APP_CONNECTIVITY_STATUS, function* (action) {\r\n const previousOnlineState = yield select(getAppOnline);\r\n\r\n if ( previousOnlineState === true && action.payload === false ) {\r\n // -- User lost connection, display a toast\r\n yield put({\r\n type : messageActions.MESSAGE,\r\n payload : {\r\n type : 'error',\r\n message : 'Internetverbinding verloren'\r\n }\r\n })\r\n }\r\n\r\n if ( previousOnlineState === false && action.payload === true ) {\r\n // -- User regained connection, display a toast\r\n yield put({\r\n type : messageActions.MESSAGE,\r\n payload : {\r\n type : 'success',\r\n message : 'Internetverbinding hersteld'\r\n }\r\n })\r\n }\r\n\r\n yield put({\r\n type : actions.SET_APP_ONLINE,\r\n payload : action.payload\r\n })\r\n });\r\n}\r\n\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(checkAppOnline),\r\n fork(showUserNotificationOnConnectivityChange)\r\n ]);\r\n}\r\n","import { all, put, fork, select,cancel,cancelled, delay, take } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport moment from 'moment';\r\n\r\nvar SunCalc = require('suncalc');\r\nexport function* setColumns() {\r\n\r\n /*yield put({\r\n\t\ttype: actions.SET_COLUMNS,\r\n\t\tpayload: {\r\n\t\t\tcolumns: 3\r\n\t\t}\t\t \t\r\n });\t*/\r\n}\r\n\r\n\r\nexport function* watchCurrentTime() {\r\n \r\n try {\r\n\t\twhile(true) {\r\n\t\t\t// -- Get time by locale string\r\n\t\t\tconst times = SunCalc.getTimes(new Date(), 53.219509, 5.483870);\r\n\r\n\t\t\t// -- Parse sunrise & sunset to moment objects\r\n\t\t\tconst sunriseMoment = moment(times.sunrise.toLocaleString(), 'D-M-YYYY HH:mm:ss');\r\n\t\t\tconst sunsetMoment = moment(times.sunset.toLocaleString(), 'D-M-YYYY HH:mm:ss');\r\n\r\n\t\t\tconst now = moment();\r\n\r\n\t\t\t// -- Check if before or after sunset\r\n\t\t\tlet darkmode = false;\r\n\t\t\tif ( now.isAfter(sunsetMoment) || now.isBefore(sunriseMoment)) {\r\n\t\t\t\tdarkmode = true;\r\n\t\t\t}\r\n\r\n\t\t\tconst state = yield select();\r\n\t\t\tconst darkModeNow = state.Layout.darkmode;\r\n\r\n\t\t\tif ( darkModeNow !== darkmode ) {\r\n yield put({\r\n type: actions.SET_DARK_MODE,\r\n payload: darkmode\r\n });\r\n\t\t\t}\r\n\r\n yield delay(5000);\r\n\t\t}\r\n\t} finally {\r\n\t\tif ( yield cancelled() ) {\r\n\t\t\t\r\n\t\t}\r\n\t}\r\n \r\n}\r\n\r\nexport function* checkDarkmodeAuto() {\r\n while ( yield take(actions.START_DARKMODE_AUTO) ) {\r\n\r\n // -- Start watcher task\r\n const bgSyncTask = yield fork(watchCurrentTime);\r\n \r\n // -- Take every stop action, until that time, code execution stops here.\r\n yield take(actions.STOP_DARKMODE_AUTO)\r\n \tyield cancel(bgSyncTask);\r\n }\r\n\r\n}\r\n\r\n\r\nexport default function* rootSaga() {\r\n\tyield all([\r\n\t\tfork(setColumns),\r\n\t\tfork(checkDarkmodeAuto)\r\n\t]);\r\n}\r\n","import { all, takeEvery, fork, put, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport { getAuth } from '../selectors';\r\n\r\nexport function* checkAuthorization() {\r\n yield takeEvery(actions.CHECK_AUTHORIZATION, function* () {\r\n //yield put({ type: actions.READY_FOR_BOOT });\r\n\t});\r\n}\r\n\r\n\r\n\r\nexport function* logout() {\r\n\tyield takeEvery(actions.LOG_OUT, function* (action) {\r\n\t\t//yield put({ type: actions.READY_FOR_BOOT });\r\n\t\tconst auth = yield select(getAuth);\r\n\t\tauth.authProvider.SignOut();\r\n\t});\r\n}\r\n\r\nexport default function* rootSaga() {\r\n\tyield all([\r\n\t\tfork(checkAuthorization),\r\n\t\tfork(logout)\r\n\t]);\r\n}","\r\nexport const hasOfficeSubscription = (licenseDetails) => {\r\n let hasOfficeSubscription = true; //temp!!\r\n\r\n licenseDetails.value.map(function (item) {\r\n\r\n // -- fetched current plans from: https://docs.microsoft.com/nl-nl/azure/active-directory/users-groups-roles/licensing-service-plan-reference\r\n switch (item.skuPartNumber) {\r\n case 'STANDARDPACK':\r\n case 'STANDARDWOFFPACK':\r\n case 'ENTERPRISEPACK':\r\n case 'DEVELOPERPACK':\r\n hasOfficeSubscription = true;\r\n break;\r\n default:\r\n\r\n\r\n }\r\n\r\n return true;\r\n })\r\n\r\n return { 'hasOfficeSubscription': hasOfficeSubscription };\r\n};\r\n","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport { hasOfficeSubscription } from '../../helpers/licensedetail'\r\nimport { getGraphClient, getGOClient, getUserProfile, getUserProfileSettingData, getFeatureSliders, getLocale, getDataRequest } from '../selectors';\r\nimport slideOutActions from '../slideOut/actions';\r\nimport userActions from '../user/actions';\r\nimport widgetActions from '../widgets/actions';\r\nimport calendarActions from '../calendar/actions';\r\nimport notificationsActions from '../notification/actions';\r\nimport layoutActions from '../layout/actions';\r\nimport taskActions from '../tasks/actions';\r\nimport authActions from '../auth/actions';\r\nimport teamsActions from '../widgets/teams/actions';\r\nimport { IntlActions } from 'react-redux-multilingual'\r\nimport moment from 'moment/min/moment-with-locales';\r\nimport { Buffer } from 'buffer';\r\nimport translations from '../../translate/translations'\r\n\r\nexport function* getUserMessages() {\r\n yield takeEvery(actions.GET_MESSAGES, function* (action) {\r\n\r\n // -- Get client instance\r\n const Client = yield select(getGraphClient);;\r\n\r\n try {\r\n // -- Get Avatar\r\n //const messages = yield Client.api('/me/mailFolders/inbox/messages')\r\n // //.top(11)\r\n // .filter('isRead eq false')\r\n // .count('true')\r\n // .get();\r\n\r\n const messages = yield Client.api('/me/mailFolders/inbox/messages?$filter=isRead eq false&$count=true');\r\n if (messages == null || !messages) return;\r\n\r\n yield put({\r\n type: actions.SET_MESSAGES,\r\n payload: messages[\"@odata.count\"]\r\n });\r\n } catch (exception) { }\r\n\r\n });\r\n}\r\n\r\nexport function* getUserAppRoles() {\r\n yield takeEvery(actions.GET_APP_ROLES, function* (action) {\r\n\r\n // -- Get client instance\r\n const Client = yield select(getGraphClient);\r\n\r\n const userProfile = yield select(getUserProfile);\r\n\r\n\r\n const appRoles = yield Client.api('/users/' + userProfile.userPrincipalName + '/appRoleAssignments');\r\n });\r\n}\r\n\r\n\r\nexport function* getUserApplications() {\r\n yield takeEvery(actions.GET_USER_APPLICATIONS, function* (action) {\r\n\r\n const Client = yield select(getGOClient);\r\n\r\n if (!Client) return;\r\n\r\n let applications = yield Client.api('/user/applications');\r\n if (applications == null || !applications) return;\r\n\r\n if (applications)\r\n yield put({\r\n type: actions.SET_USER_APPLICATIONS,\r\n payload: applications\r\n });\r\n });\r\n}\r\n\r\nexport function* setUserData(data) {\r\n yield takeEvery(actions.SET_USER_DATA, function* (action) {\r\n\r\n const Client = yield select(getGOClient);\r\n if (!Client) return;\r\n\r\n const dataRequest = yield select(getDataRequest);\r\n if (!dataRequest) return;\r\n\r\n yield Client.post('/user/data', JSON.stringify(action.payload));\r\n\r\n yield put({\r\n type: actions.GET_USER_DATA,\r\n payload: action.payload\r\n });\r\n });\r\n}\r\n\r\nexport function* addDebugData(data) {\r\n yield takeEvery(actions.SET_DEBUG_DATA, function* (action) {\r\n\r\n const Client = yield select(getGOClient);\r\n if (!Client) return;\r\n\r\n // let curTime = moment();\r\n\r\n yield put({\r\n type: actions.ADD_DEBUG_DATA,\r\n payload: action.payload\r\n });\r\n\r\n // const lastDebug = yield select(getLastDebug);\r\n //if (!lastDebug || curTime < lastDebug.setSeconds(lastDebug.getSeconds + 10)) return;\r\n\r\n // console.log('[API]: ', JSON.stringify(action.payload));\r\n\r\n yield Client.post('/user/debugging', JSON.stringify(action.payload));\r\n\r\n /* yield put({\r\n type: actions.SET_LAST_DEBUG,\r\n payload: curTime\r\n });*/\r\n });\r\n}\r\n\r\n\r\n\r\nexport function* getUserProfileData() {\r\n yield takeEvery(actions.GET_USER_PROFILE, function* (action) {\r\n\r\n try {\r\n\r\n // -- Get client instance\r\n const Client = yield select(getGraphClient);\r\n if (Client == null) return;\r\n\r\n yield put({\r\n type: actions.DATA_REQUEST_COMPLETED,\r\n payload: false\r\n });\r\n\r\n // -- Get Avatar\r\n const avatar = yield Client.api('/me/photo/$value', 'arrayBuffer'); //.responseType('arraybuffer').get();\r\n\r\n if (avatar != null && avatar) {\r\n const buf = new Buffer.from(avatar, 'binary');\r\n yield put({\r\n type: actions.SET_USER_AVATAR,\r\n payload: 'data:image/png;base64, ' + buf.toString('base64')\r\n });\r\n }\r\n\r\n // -- Get user profile\r\n const profile = yield Client.api('/me?$select=mySite,displayName,givenName,jobTitle,mail,mobilePhone,officeLocation,birthday,surname,userPrincipalName,id');\r\n\r\n const GoClient = yield select(getGOClient);\r\n const user = yield GoClient.api('/user/me');\r\n if (user == null || !user) return;\r\n\r\n if (user.ResetUser) {\r\n localStorage.clear();\r\n }\r\n\r\n const licenseDetails = yield Client.api('/me/licenseDetails');\r\n if (licenseDetails == null || !licenseDetails) return;\r\n\r\n const hasOfficeSupscription = hasOfficeSubscription(licenseDetails);\r\n\r\n\r\n //build user data\r\n if (user.data != null) {\r\n user.data = JSON.parse(user.data);\r\n } else {\r\n user.data = {};\r\n }\r\n\r\n //build user settings\r\n if (!user.data.settings) {\r\n user.data.settings = { startLocalApps: true, showOfficeWizard: true, startAppsInNewWindow: true }\r\n window.userSettings = {}\r\n } else {\r\n window.userSettings = user.data.settings;\r\n }\r\n\r\n window.userSettings.rights = {};\r\n\r\n //set user rights\r\n if (window.tenantConfig.common) {\r\n const rights = { selfserviceIntranet: true };\r\n window.userSettings.rights = {...window.userSettings.rights, rights};\r\n }\r\n\r\n const hasRights = yield Client.api('/me/memberOf/microsoft.graph.group');\r\n if ((hasRights != null && hasRights.value.find(g => g.displayName == \"go management\") != null) ||\r\n hasRights.value.find(g => g.id == window.tenantConfig.authorisationGroup)) {\r\n const rights = { ...user.data.settings.rights, selfserviceBeheer: true };\r\n user.data.settings.rights = rights;\r\n window.userSettings.rights = rights;\r\n }\r\n if (hasRights.value.find(g => g.id == window.tenantConfig.selfServiceGroup) || window.tenantConfig.selfServiceGroup == \"\" || window.tenantConfig.common) {\r\n const rights = { ...user.data.settings.rights, selfserviceIntranet: true };\r\n user.data.settings.rights = rights;\r\n window.userSettings.rights = rights;\r\n }\r\n if (!user.data.lastCallViews) {\r\n user.data.lastCallViews = {}\r\n }\r\n\r\n //check user locale\r\n if (user.data.settings?.locale != null) {\r\n let locale = yield select(getLocale);\r\n if (locale !== user.data.settings?.locale) {\r\n\r\n yield put(IntlActions.setLocale(user.data.settings?.locale));\r\n //moment.locale(user.data.settings?.locale);\r\n }\r\n moment.locale(user.data.settings?.locale); //always set moment locale\r\n } else {\r\n let locale = yield select(getLocale);\r\n user.data.settings.locale = locale;\r\n\r\n yield put({\r\n type: userActions.SET_USER_DATA,\r\n payload: { ...user.data }\r\n });\r\n moment.locale(locale);\r\n }\r\n\r\n let sliderKeys = [\r\n '/', '/online-hulp', '/self-service/nieuws', '/store'\r\n ]\r\n\r\n if (!user.data.settings.featureSliders) {\r\n // -- User has not seen the slider yet and is not a configured user.\r\n let payload = {};\r\n\r\n sliderKeys.forEach((item, i) => {\r\n payload = {\r\n ...payload,\r\n [item]: {\r\n visible: true\r\n }\r\n }\r\n });\r\n\r\n yield put({\r\n type: actions.SET_FEATURE_SLIDERS,\r\n payload: payload\r\n })\r\n\r\n } else {\r\n let featureSliders = { ...user.data.settings.featureSliders };\r\n let newFeatureSliders = {};\r\n sliderKeys.forEach((item, i) => {\r\n if (!featureSliders[item]) {\r\n newFeatureSliders = {\r\n ...newFeatureSliders,\r\n [item]: {\r\n visible: true\r\n }\r\n }\r\n } else {\r\n newFeatureSliders = {\r\n ...newFeatureSliders,\r\n [item]: {\r\n ...featureSliders[item]\r\n }\r\n }\r\n }\r\n });\r\n\r\n user.data.settings.featureSliders = newFeatureSliders;\r\n\r\n yield put({\r\n type: actions.SET_FEATURE_SLIDERS,\r\n payload: newFeatureSliders\r\n })\r\n }\r\n\r\n yield put({\r\n type: actions.SET_USER_PROFILE,\r\n payload: { ...user, ...profile, ...hasOfficeSupscription }\r\n });\r\n\r\n if (user && user.values && user.values.leaveBalance != null) {\r\n const leaveBalance = user.values.leaveBalance;\r\n const daysLeft = Math.floor(leaveBalance / 8);\r\n yield put({\r\n type: actions.SET_DAYS_LEFT,\r\n payload: daysLeft\r\n });\r\n }\r\n\r\n yield put({\r\n type: actions.DATA_REQUEST_COMPLETED,\r\n payload: true\r\n });\r\n\r\n yield put({\r\n type: userActions.GET_MESSAGES\r\n });\r\n\r\n yield put({\r\n type: userActions.GET_APP_ROLES\r\n });\r\n\r\n yield put({\r\n type: taskActions.GET_TASKS\r\n });\r\n\r\n yield put({\r\n type: calendarActions.GET_CALENDAR\r\n });\r\n\r\n yield put({\r\n type: layoutActions.SET_IS_LOADED\r\n });\r\n\r\n yield put({\r\n type: teamsActions.GET_TEAMS\r\n });\r\n\r\n } catch (ex) { }\r\n\r\n });\r\n}\r\n\r\nexport function* updateUserSettings(data) {\r\n yield takeEvery(actions.UPDATE_USER_SETTINGS, function* (action) {\r\n\r\n const Client = yield select(getGOClient);\r\n let userData = yield select(getUserProfileSettingData);\r\n\r\n if (action.payload.setting.indexOf(\"viewed\") != -1 && Array.isArray(action.payload.value)) {\r\n let current = userData?.settings[action.payload.setting];\r\n let old = [];\r\n if(current?.payload) {\r\n current = current.payload\r\n }\r\n if (current) {\r\n let newItems = action.payload.value;\r\n old = current.filter(c => newItems.find(n => n.url == c.url) == null);\r\n old.forEach(i => {\r\n if (i.date == null) i.date = new moment().format();\r\n });\r\n if (old.length > 30) old.splice(29, (old.length - 30))\r\n action.payload.value = action.payload.value.concat(old);\r\n }\r\n\r\n //cleanup\r\n current?.forEach((e, i) => {\r\n if (e.date != null && moment(e.date).diff(new moment(), 'days') > 14) {\r\n current.splice(i, 1);\r\n }\r\n })\r\n }\r\n\r\n userData = {\r\n //...user.data,\r\n ...userData,\r\n settings: {\r\n //...user.data.settings,\r\n ...userData.settings,\r\n [action.payload.setting]: action.payload.value\r\n }\r\n }\r\n\r\n window.userSettings = userData.settings;\r\n\r\n yield put({\r\n type: actions.SET_USER_DATA,\r\n payload: userData\r\n })\r\n\r\n });\r\n}\r\n\r\nexport function* setUserViewedCall(data) {\r\n yield takeEvery(actions.SET_USER_VIEWED_CALL, function* (action) {\r\n\r\n const Client = yield select(getGOClient);\r\n let userData = yield select(getUserProfileSettingData);\r\n\r\n let now = moment().unix();\r\n\r\n userData = {\r\n ...userData,\r\n lastCallViews: {\r\n ...userData.lastCallViews,\r\n [action.payload]: now\r\n }\r\n }\r\n\r\n yield put({\r\n type: actions.SET_USER_DATA,\r\n payload: userData\r\n })\r\n });\r\n}\r\n\r\nexport function* setFeatureSliderVisible(data) {\r\n yield takeEvery(actions.SET_FEATURE_SLIDER_VISIBLE, function* (action) {\r\n\r\n let featureSliders = yield select(getFeatureSliders);\r\n\r\n featureSliders = {\r\n ...featureSliders,\r\n [action.payload.link]: {\r\n ...featureSliders[action.payload.link],\r\n visible: action.payload.visible\r\n }\r\n }\r\n\r\n yield put({\r\n type: actions.SET_FEATURE_SLIDERS,\r\n payload: featureSliders\r\n })\r\n\r\n\r\n const Client = yield select(getGOClient);\r\n let userData = yield select(getUserProfileSettingData);\r\n\r\n userData = {\r\n ...userData,\r\n settings: {\r\n ...userData.settings,\r\n featureSliders: featureSliders\r\n }\r\n }\r\n\r\n yield put({\r\n type: actions.SET_USER_DATA,\r\n payload: userData\r\n })\r\n });\r\n}\r\n\r\nexport function* setFeatureSliders(data) {\r\n yield takeEvery(actions.SET_FEATURE_SLIDERS, function* (action) {\r\n // yield put({\r\n // type: slideOutActions.SET_ACTIVE_SLIDEOUT,\r\n // payload: false\r\n // })\r\n\r\n });\r\n}\r\n\r\n\r\nexport function* removeUserViewedCall(data) {\r\n yield takeEvery(actions.REMOVE_USER_VIEWED_CALL, function* (action) {\r\n\r\n const Client = yield select(getGOClient);\r\n let userData = yield select(getUserProfileSettingData);\r\n\r\n let callViews = userData.lastCallViews;\r\n let newCallViews = {};\r\n\r\n for (const callID in callViews) {\r\n if (callViews.hasOwnProperty(callID)) {\r\n if (callID !== \"\" + action.payload) {\r\n newCallViews = {\r\n ...newCallViews,\r\n [callID]: callViews[callID]\r\n }\r\n }\r\n }\r\n }\r\n\r\n userData = {\r\n ...userData,\r\n lastCallViews: newCallViews\r\n }\r\n\r\n yield put({\r\n type: actions.SET_USER_DATA,\r\n payload: userData\r\n })\r\n });\r\n}\r\n\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getUserProfileData),\r\n fork(getUserAppRoles),\r\n fork(getUserMessages),\r\n fork(getUserApplications),\r\n fork(setUserData),\r\n fork(addDebugData),\r\n fork(updateUserSettings),\r\n fork(setUserViewedCall),\r\n fork(removeUserViewedCall),\r\n fork(setFeatureSliders),\r\n fork(setFeatureSliderVisible)\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport { getGOClient, getAuthProvider, getClientsActivated } from '../redux/selectors';\r\nimport actions from '../redux/widgets/actions';\r\nimport clientActions from '../redux/client/actions';\r\n\r\nexport const getGraphClient = async (provider) => {\r\n\r\n\r\n //let scopes = ['https://graph.microsoft.com/.default'];\r\n\r\n let scopes = [];\r\n\r\n\r\n if (window.tenantConfig.common) {\r\n scopes = [\r\n 'https://graph.microsoft.com/Team.ReadBasic.All',\r\n 'https://graph.microsoft.com/Calendars.Read',\r\n 'https://graph.microsoft.com/Tasks.Read',\r\n 'https://graph.microsoft.com/Mail.Read',\r\n 'https://graph.microsoft.com/User.Read.All',\r\n 'https://graph.microsoft.com/Files.ReadWrite.All',\r\n 'https://graph.microsoft.com/Sites.Read.All'];\r\n\r\n } else {\r\n scopes = [\r\n 'https://graph.microsoft.com/Team.ReadBasic.All',\r\n 'https://graph.microsoft.com/Calendars.Read',\r\n 'https://graph.microsoft.com/Tasks.ReadWrite',\r\n 'https://graph.microsoft.com/Group.Read.All',\r\n 'https://graph.microsoft.com/Mail.ReadWrite',\r\n //'https://graph.microsoft.com/Mail.Send',\r\n 'https://graph.microsoft.com/User.Read.All',\r\n 'https://graph.microsoft.com/Files.ReadWrite.All',\r\n 'https://graph.microsoft.com/Sites.Read.All'];\r\n }\r\n\r\n const token = async () => {\r\n try {\r\n const token = await provider.GetToken(scopes);\r\n if (token == null) return \"\";\r\n return token.accessToken;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n const apiURL = 'https://graph.microsoft.com/';\r\n\r\n let test = await token();\r\n if (test == null) return null;\r\n\r\n return {\r\n\r\n api: async function (url, type, version = \"v1.0\") {\r\n try {\r\n\r\n\r\n let consistency = {};\r\n if (url.indexOf(\"filter\") != -1 || url.indexOf(\"count\") != -1 || url.indexOf(\"search\") != -1 || url.indexOf(\"orderBy\") != -1) {\r\n consistency = { 'ConsistencyLevel': 'eventual' };\r\n }\r\n\r\n const response = await fetch(apiURL + version + url,\r\n {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': \"Bearer \" + (await token()),\r\n // 'Prefer': 'outlook.body-content-type=\"text\"',\r\n ...consistency\r\n }\r\n });\r\n\r\n if (!response.ok) {\r\n console.log('response failed',response);\r\n return null;\r\n }\r\n\r\n const responseType = type ? type : 'json';\r\n const responseData = await response[responseType]().catch(err => {\r\n return [];\r\n });\r\n\r\n if (responseData === []) return null;\r\n return responseData;\r\n } catch (error) { return null; }\r\n },\r\n post: async function (url, data, version = \"v1.0\") {\r\n try {\r\n const response = await fetch(apiURL + version + url,\r\n {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': \"Bearer \" + (await token())\r\n },\r\n method: 'post',\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n console.error('response failed',response);\r\n return null;\r\n }\r\n\r\n const responseData = await response.json().catch(err => {\r\n return null;\r\n });\r\n if (responseData === []) return null;\r\n return responseData;\r\n } catch (error) { return null; }\r\n },\r\n put: async function (url, data, version = \"v1.0\") {\r\n try {\r\n const response = await fetch(apiURL + version + url,\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': \"Bearer \" + (await token())\r\n },\r\n method: 'put',\r\n body: data\r\n });\r\n\r\n if (!response.ok) {\r\n console.error('response failed',response);\r\n return null;\r\n }\r\n\r\n const responseData = await response.json().catch(err => {\r\n return [];\r\n });\r\n if (responseData === []) return null;\r\n return responseData;\r\n } catch (error) { return null; }\r\n },\r\n patch: async function (url, data, version = \"v1.0\", header = \"\") {\r\n try {\r\n const response = await fetch(apiURL + version + url,\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': \"Bearer \" + (await token()),\r\n 'If-Match' : header\r\n },\r\n method: 'PATCH',\r\n body: data\r\n }\r\n );\r\n\r\n if (!response.ok) {\r\n console.error('response failed',response);\r\n return null;\r\n }\r\n\r\n const responseData = await response.json().catch(err => {\r\n return [];\r\n });\r\n if (responseData === []) return null;\r\n return responseData;\r\n } catch (error) { return null; }\r\n },\r\n getToken: async function () {\r\n console.log(\"Get Graph authservice\");\r\n //return token.accessToken;\r\n return await token();\r\n }\r\n };\r\n};\r\n\r\nexport const getGoClient = async (provider) => {\r\n\r\n const apiURL = window.apiURL + '/api';\r\n\r\n let origin = document.location.origin;\r\n if (window.tenantConfig.appRegistrationUrl) origin = window.tenantConfig.appRegistrationUrl;\r\n\r\n let scopes = [\r\n //'api://' + window.tenantConfig.clientId + '/webread'\r\n origin + '/user_impersonation'\r\n ];\r\n\r\n const token = async () => {\r\n try {\r\n let token = await provider.GetToken(scopes);\r\n if (token == null) return null;\r\n return token.accessToken;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n let test = await token();\r\n if (test == null) return null;\r\n\r\n return {\r\n\r\n api: async function (url, headers = {}, responseType = 'json') {\r\n try {\r\n const response = await fetch(apiURL + url,\r\n {\r\n ...headers,\r\n headers: { 'Authorization': 'Bearer ' + (await token()) }\r\n });\r\n\r\n if (!response.ok) {\r\n console.error('response failed',response);\r\n response = await this.HandleClaimsChallenge(response, scopes);\r\n\r\n if(response === null)\r\n return null;\r\n } \r\n let responseData;\r\n try {\r\n if (responseType === 'blob') {\r\n responseData = await response.blob();\r\n } else {\r\n responseData = await response[responseType]();\r\n }\r\n } catch (err) {\r\n console.error(`'fetch parse error: ${err}' happened!`,response);\r\n return null;\r\n }\r\n\r\n // responseData = await response[responseType]().catch(err => {\r\n // console.error(`'fetch parse error: ${err}' happened!`,response);\r\n // return null;\r\n // });\r\n if (responseData === []) return null;\r\n return responseData;\r\n } catch (error) { return null; }\r\n },\r\n post: async function (url, data, noData = false) {\r\n try {\r\n const response = await fetch(apiURL + url,\r\n {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': \"Bearer \" + (await token())\r\n },\r\n method: 'post',\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n console.error('response failed',response);\r\n return null;\r\n }\r\n\r\n const responseData = await response.json().catch(err => {\r\n return [];\r\n });\r\n if(noData) {\r\n return response;\r\n }\r\n if (responseData === []) return null;\r\n return responseData;\r\n } catch (error) { return null; }\r\n },\r\n put: async function (url, data, noData = false) {\r\n try {\r\n const response = await fetch(apiURL + url,\r\n {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': \"Bearer \" + (await token())\r\n },\r\n method: 'PUT',\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n console.error('response failed',response);\r\n return null;\r\n }\r\n\r\n if(noData) {\r\n return response;\r\n }\r\n\r\n const responseData = await response.json().catch(err => {\r\n return [];\r\n });\r\n if (responseData === []) return null;\r\n return responseData;\r\n } catch (error) { return null; }\r\n },\r\n delete: async function (url, data, noData = false) {\r\n try {\r\n const response = await fetch(apiURL + url,\r\n {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': \"Bearer \" + (await token())\r\n },\r\n method: 'DELETE',\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n //throw new Error('Network response was not ok.');\r\n console.error('response failed',response);\r\n return null;\r\n }\r\n\r\n if(noData) {\r\n return response;\r\n }\r\n\r\n const responseData = await response.json().catch(err => {\r\n return [];\r\n });\r\n if (responseData === []) return null;\r\n return responseData;\r\n } catch (error) { return null; }\r\n },\r\n getToken: async function () {\r\n return await token();\r\n },\r\n HandleClaimsChallenge: async function (response, scopes) {\r\n \r\n if (response.status === 401) {\r\n\r\n if (response.headers.get('www-authenticate')) {\r\n const authenticateHeader = response.headers.get(\"www-authenticate\");\r\n\r\n const claimsChallenge = authenticateHeader.split(\" \")\r\n .find(entry => entry.includes(\"claims=\")).split('=\"')[1].split('\",')[0];\r\n\r\n if (claimsChallenge) {\r\n console.log('Attempting to handle claim challenge..')\r\n console.log('[DEBUG]: ClaimsChallenge: ', claimsChallenge);\r\n console.log('[DEBUG]: Scopes: ', scopes);\r\n try {\r\n await this.msalApplication.acquireTokenPopup({\r\n claims: window.atob(claimsChallenge), // decode the base64 string\r\n scopes: scopes\r\n });\r\n } catch (error) {\r\n // catch if popups are blocked\r\n if (error instanceof BrowserAuthError &&\r\n (error.errorCode === \"popup_window_error\" || error.errorCode === \"empty_window_error\")) {\r\n\r\n await this.msalApplication.acquireTokenRedirect({\r\n claims: window.atob(claimsChallenge),\r\n scopes: scopes\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n console.log('[AuthenticationError]: ', authenticateHeader);\r\n return null;\r\n }\r\n\r\n } else {\r\n console.log('401 but no claim challenge.');\r\n return null;\r\n }\r\n }\r\n\r\n return response;\r\n }\r\n };\r\n};\r\n\r\nexport const getSharepointClient = async (provider, site) => {\r\n\r\n const scopes = [parseSharepointUrl(site) + '/AllSites.Read'];\r\n\r\n const token = async () => {\r\n try {\r\n const token = await provider.GetToken(scopes);\r\n if (token == null) return \"\";\r\n return token.accessToken;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n let test = await token();\r\n if (test == null) return null;\r\n\r\n return {\r\n\r\n api: async function (url, options) {\r\n try {\r\n if (url.indexOf(\"https\") == -1) {\r\n url = parseSharepointUrl(site) + url;\r\n }\r\n\r\n const response = await fetch(url,\r\n {\r\n headers: {\r\n 'Accept': 'application/json;',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': \"Bearer \" + (await token())\r\n },\r\n ...options\r\n });\r\n\r\n if (!response.ok) {\r\n console.error('response failed',response);\r\n return null;\r\n }\r\n\r\n const responseData = await response.json().catch(err => {\r\n console.error(`'fetch parse error: ${err}' happened!`,response);\r\n return null;\r\n });\r\n\r\n if (responseData === []) return null;\r\n return responseData;\r\n } catch (error) { return null; }\r\n\r\n },\r\n put: async function (url, data) {\r\n try {\r\n const response = await fetch(apiURL + url,\r\n {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': \"Bearer \" + (await token())\r\n },\r\n method: 'PUT',\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n console.error('response failed',response);\r\n return null;\r\n }\r\n\r\n const responseData = await response.json().catch(err => {\r\n return [];\r\n });\r\n if (responseData === []) return null;\r\n return responseData;\r\n } catch (error) { return null; }\r\n },\r\n post: async function (url, data) {\r\n try {\r\n const response = await fetch(url,\r\n {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': \"Bearer \" + (await token())\r\n },\r\n method: 'POST',\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if (!response.ok) {\r\n console.error('response failed',response);\r\n return null;\r\n }\r\n\r\n const responseData = await response.json().catch(err => {\r\n return [];\r\n });\r\n if (responseData === []) return null;\r\n return responseData;\r\n } catch (error) { return null; }\r\n },\r\n getToken: async function () {\r\n console.log(\"Get SP Token\");\r\n //return token.accessToken;\r\n return await token();\r\n //return (await provider.GetToken(scopes)).accessToken;\r\n }\r\n };\r\n};\r\n\r\n\r\nexport const getYammerClient = async (provider) => {\r\n\r\n const apiURL = window.apiURL + '/api/app/yammer';\r\n const scopes = ['https://api.yammer.com/user_impersonation'];\r\n\r\n const token = async () => {\r\n try {\r\n const token = await provider.GetToken(scopes);\r\n if (token == null) return \"\";\r\n\r\n return token.accessToken;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n let test = await token();\r\n if (test == null) return null;\r\n\r\n return {\r\n\r\n api: async function (url) {\r\n try {\r\n let GoClient = await getGoClient(provider);\r\n let goToken = await GoClient.getToken();\r\n\r\n const response = await fetch(apiURL + '?url=' + encodeURI(url), // + '&bearerToken='+ (await token()),\r\n {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': \"Bearer \" + goToken,\r\n 'AuthorizationProxy': \"Bearer \" + (await token())\r\n }\r\n });\r\n\r\n if (!response.ok) {\r\n console.error('response failed',response);\r\n return null;\r\n }\r\n\r\n const responseData = await response.json().catch(err => {\r\n console.error(`'fetch parse error: ${err}' happened!`,response);\r\n return null;\r\n });\r\n if (responseData === []) return null;\r\n return responseData;\r\n } catch (error) { \r\n console.error(`'fetching yammer error: ${error}' happened!`);\r\n }\r\n\r\n },\r\n getToken: async function () {\r\n console.log(\"Get Yammer Token\");\r\n //return token.accessToken;\r\n return await token();\r\n //return (await provider.GetToken(scopes)).accessToken;\r\n }\r\n };\r\n};\r\n\r\n\r\nexport const getPowerClient = async (provider) => {\r\n\r\n const scopes = ['https://analysis.windows.net/powerbi/api/Workspace.Read.All'];\r\n\r\n const token = async () => {\r\n try {\r\n const token = await provider.GetToken(scopes);\r\n if (token == null) return \"\";\r\n return token.accessToken;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n const apiURL = '';\r\n\r\n let test = await token();\r\n if (test == null) return null;\r\n\r\n return {\r\n\r\n api: async function (url) {\r\n try {\r\n //let token = (await provider.GetToken(scopes)).accessToken;\r\n const response = await fetch(apiURL + url,\r\n {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': \"Bearer \" + (await token())\r\n }\r\n });\r\n\r\n if (!response.ok) {\r\n console.error('response failed',response);\r\n return null;\r\n }\r\n\r\n const responseData = await response.json().catch(err => {\r\n console.error(`'fetch parse error: ${err}' happened!`,response);\r\n return null;\r\n });\r\n if (responseData === []) return null;\r\n return responseData;\r\n } catch (error) { return null; }\r\n\r\n },\r\n getToken: async function () {\r\n return await token();\r\n }\r\n };\r\n};\r\n\r\n\r\nexport const getLiquitClient = async (provider) => {\r\n\r\n let origin = document.location.origin;\r\n if (window.tenantConfig.appRegistrationUrl) origin = window.tenantConfig.appRegistrationUrl;\r\n\r\n let scopes = [\r\n origin + '/user_impersonation'\r\n ];\r\n\r\n if (window.tenantConfig.liquitID) {\r\n scopes = [window.tenantConfig.liquitID + '/user_impersonation'];\r\n }\r\n\r\n const token = async () => {\r\n try {\r\n let token = await provider.GetToken(scopes);\r\n if (token == null) return null;\r\n return token.accessToken;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n let test = await token();\r\n if (test == null) return null;\r\n\r\n return {\r\n getToken: async function () {\r\n return await token();\r\n }\r\n };\r\n};\r\n\r\nconst parseSharepointUrl = (url) => {\r\n if (url == null || url === \"\") return \"\";\r\n if (url.includes('.com')) {\r\n let split = url.split('.com');\r\n return split[0] + '.com';\r\n }\r\n return url;\r\n};\r\n\r\n\r\nexport function* activateClients(widgets) {\r\n let activeSources = [];\r\n const authProvider = yield select(getAuthProvider);\r\n const activated = yield select(getClientsActivated);\r\n\r\n if (!widgets?.config) return;\r\n if (activated) return;\r\n\r\n console.log('activating clients');\r\n\r\n yield put({\r\n type: clientActions.CLIENTS_ACTIVATED,\r\n payload: true\r\n });\r\n\r\n //const activeClients = yield select(getActiveClients);\r\n for (let property in widgets.config) {\r\n if (widgets.config.hasOwnProperty(property)) {\r\n //widgets.config[property].forEach((item, i) => {\r\n if(property != \"layout\") {\r\n for (let item of widgets.config[property]) {\r\n if (item == null) continue;\r\n\r\n if (item.component == \"Reports\" && activeSources.indexOf(\"Reports\") == -1) {\r\n const powerClient = yield getPowerClient(authProvider);\r\n if (powerClient != null) {\r\n console.log('activating powerbi client');\r\n yield put({\r\n type: clientActions.SET_POWER_CLIENT,\r\n payload: powerClient\r\n });\r\n }\r\n activeSources.push(\"powerbi\");\r\n }\r\n\r\n if (item.sources == null) continue;\r\n for (let s of item.sources) {\r\n if (activeSources.indexOf(s.source) != -1) continue;\r\n\r\n if (s.source == \"sharepoint\") {\r\n const sharePointClient = yield getSharepointClient(authProvider, s.site);\r\n if (sharePointClient != null) {\r\n console.log('activating sharepoint client');\r\n yield put({\r\n type: clientActions.SET_SHAREPOINT_CLIENT,\r\n payload: sharePointClient\r\n });\r\n }\r\n }\r\n\r\n if (s.source == \"yammer\") {\r\n const yammerClient = yield getYammerClient(authProvider);\r\n if (yammerClient != null) {\r\n console.log('activating yammer client');\r\n yield put({\r\n type: clientActions.SET_YAMMER_CLIENT,\r\n payload: yammerClient\r\n });\r\n }\r\n }\r\n activeSources.push(s.source);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n console.log('clients activated');\r\n console.log('setting clients');\r\n\r\n //set active clients in store\r\n yield put({\r\n type: actions.SET_CLIENTS,\r\n payload: activeSources\r\n });\r\n}","import { all, put, fork, takeEvery,select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport userActions from '../user/actions';\r\nimport widgetActions from '../widgets/actions';\r\nimport calendarActions from '../calendar/actions';\r\nimport notificationsActions from '../notification/actions';\r\nimport layoutActions from '../layout/actions';\r\nimport taskActions from '../tasks/actions';\r\nimport authActions from '../auth/actions';\r\nimport teamsActions from '../widgets/teams/actions';\r\nimport { getGraphClient, getGoClient, activateClients, getLiquitClient } from '../../helpers/graph';\r\nimport { getActiveClients, getWidgets } from '../selectors';\r\nimport { authProvider } from '../../AuthProvider';\r\n\r\nexport function* getGoData() {\r\n yield takeEvery(actions.GET_GO_DATA, function* (action) {\r\n //yield put({\r\n // type: widgetActions.GET_WIDGETS\r\n //});\r\n });\r\n}\r\n\r\nexport function* setAuthProvider() {\r\n\r\n yield takeEvery(authActions.READY_FOR_BOOT, function* (action) {\r\n\r\n try {\r\n let provider = action.payload;\r\n\r\n yield put({\r\n type: actions.SET_AUTH_PROVIDER,\r\n payload: provider\r\n });\r\n\r\n const goClient = yield getGoClient(provider);\r\n if (goClient != null) {\r\n yield put({\r\n type: actions.SET_GO_CLIENT,\r\n payload: goClient\r\n });\r\n }\r\n\r\n const graphClient = yield getGraphClient(provider);\r\n if (graphClient != null) {\r\n yield put({\r\n type: actions.SET_GRAPH_CLIENT,\r\n payload: graphClient\r\n });\r\n }\r\n\r\n if (window.tenantConfig.liquit) {\r\n const liquitClient = yield getLiquitClient(provider);\r\n if (liquitClient != null) {\r\n yield put({\r\n type: actions.SET_LIQUIT_CLIENT,\r\n payload: liquitClient\r\n });\r\n }\r\n }\r\n\r\n yield put({\r\n type: widgetActions.GET_WIDGETS\r\n });\r\n\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n });\r\n}\r\n\r\nexport function* setGraphClient() {\r\n yield takeEvery(actions.SET_GRAPH_CLIENT, function* (action) {\r\n\r\n yield put({\r\n type: userActions.GET_USER_PROFILE\r\n });\r\n\r\n });\r\n}\r\n\r\nexport function* setGoClient() {\r\n yield takeEvery(actions.SET_GO_CLIENT, function* (action) {\r\n\r\n yield put({\r\n type: actions.GET_GO_DATA\r\n });\r\n\r\n //yield put({\r\n // type: commandActions.START_COMMANDS\r\n //});\r\n });\r\n}\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n //fork(getUserProfile),\r\n fork(getGoData),\r\n fork(setGraphClient),\r\n fork(setGoClient),\r\n fork(setAuthProvider),\r\n //fork(loginFailed),\r\n //fork(loginError),\r\n //fork(aquireAccessTokenError),\r\n //fork(aquireIDTokenError)\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport userActions from '../user/actions';\r\nimport moment from 'moment';\r\nimport { getGraphClient, getTasks } from '../selectors';\r\n\r\nexport function* orderTasks() {\r\n yield takeEvery(actions.ORDER_TASKS, function* (action) {\r\n\r\n /*let orderedItems = {\r\n today: [],\r\n tomorrow: [],\r\n next: [],\r\n noDate: []\r\n };\r\n const today = moment().format(\"DD-MM-YYYY\");\r\n const tomorrow = moment().add(1, 'day').format(\"DD-MM-YYYY\");*/\r\n\r\n let orderedItems = {\r\n count: 0,\r\n today: [],\r\n tomorrow: [],\r\n next: [],\r\n lastWeek: [],\r\n oldTasks: [],\r\n noDate: [],\r\n completed: [],\r\n categorizedLists: {\r\n\r\n }\r\n }\r\n const today = moment().format(\"YYYY-MM-DD\");\r\n const tomorrow = moment().add(1, 'day').format(\"YYYY-MM-DD\");\r\n const lastWeek = moment().add(-7, 'day').format(\"YYYY-MM-DD\");\r\n\r\n const taskLists = action.payload;\r\n for (const listID in taskLists) {\r\n if (taskLists.hasOwnProperty(listID)) {\r\n let tasks = taskLists[listID].tasks;\r\n let unaddedTasks = [];\r\n\r\n tasks.forEach((item, i) => {\r\n\r\n const task = {\r\n ...item,\r\n taskType: taskLists[listID].taskType,\r\n listName: taskLists[listID].name,\r\n listId: listID\r\n }\r\n let added = false;\r\n if (task.taskType == 'planner') {\r\n }\r\n if (task.status != \"completed\" && task.percentComplete != 100) {\r\n if (task.taskType == \"email\" && task.flag?.flagStatus == \"complete\") {\r\n // Do nothing\r\n } else {\r\n orderedItems.count++;\r\n\r\n if (task.dueDateTime) {\r\n const dueDate = moment(task.dueDateTime).format(\"DD-MM-YYYY\");\r\n if (dueDate === today) {\r\n orderedItems.today.push(task);\r\n //return;\r\n } else if (dueDate === tomorrow) {\r\n orderedItems.tomorrow.push(task);\r\n //return;\r\n } else {\r\n orderedItems.oldTasks.push(task);\r\n }\r\n } else\r\n\r\n //if (!task.dueDateTime) {\r\n\r\n if (task.createdDateTime != null) {\r\n\r\n const createdDate = moment(task.createdDateTime).format(\"YYYY-MM-DD\");\r\n if (new Date(createdDate) > new Date(today)) {\r\n orderedItems.lastWeek.push(task);\r\n //return;\r\n } else {\r\n orderedItems.oldTasks.push(task);\r\n }\r\n //return;\r\n } else {\r\n\r\n orderedItems.noDate.push(task);\r\n\r\n }\r\n //return;\r\n\r\n //unaddedTasks.push(task);\r\n\r\n\r\n //}\r\n }\r\n }\r\n // orderedItems.count++;\r\n\r\n if (task.taskType != \"email\") {\r\n if (task.completedDateTime) {\r\n let completedDate;\r\n task.taskType == \"toDo\" ? completedDate = moment(task.completedDateTime.dateTime).format(\"YYYY-MM-DD\") : completedDate = moment(task.completedDateTime).format(\"YYYY-MM-DD\");\r\n if (new Date(completedDate).getTime() == new Date(today).getTime()) {\r\n orderedItems.completed.push(task);\r\n }\r\n }\r\n } else {\r\n if (task.flag?.flagStatus == \"complete\") {\r\n const dueDate = moment(task.lastModifiedDateTime.dateTime).format(\"YYYY-MM-DD\");\r\n if (new Date(dueDate).getTime() >= new Date(today).getTime()) {\r\n orderedItems.completed.push(task);\r\n }\r\n }\r\n }\r\n //unaddedTasks.push(task)\r\n });\r\n\r\n if (unaddedTasks.length) {\r\n orderedItems = {\r\n ...orderedItems,\r\n categorizedLists: {\r\n ...orderedItems.categorizedLists,\r\n [taskLists[listID].name]: unaddedTasks\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n yield put({\r\n type: actions.SET_TASKS,\r\n payload: orderedItems\r\n });\r\n\r\n yield put({\r\n type: userActions.SET_USER_TASKS,\r\n payload: orderedItems.count\r\n });\r\n\r\n /*\r\n for (const item in tasks) {\r\n if (tasks.hasOwnProperty(item)) {\r\n const currentTask = tasks[item];\r\n\r\n if (!currentTask.dueDateTime) {\r\n orderedItems.noDate.push(currentTask);\r\n continue;\r\n }\r\n\r\n const endDate = moment(currentTask.dueDateTime).format(\"DD-MM-YYYY\");\r\n\r\n if (endDate === today) {\r\n orderedItems.today.push(currentTask);\r\n continue;\r\n }\r\n\r\n if (endDate === tomorrow) {\r\n orderedItems.tomorrow.push(currentTask);\r\n continue;\r\n }\r\n\r\n orderedItems.next.push(currentTask);\r\n }\r\n }\r\n\r\n yield put({\r\n type: actions.SET_TASKS,\r\n payload: orderedItems\r\n });\r\n\r\n let countTasks = 0;\r\n countTasks = orderedItems.today.length + orderedItems.tomorrow.length + orderedItems.next.length; // + orderedItems.noDate.length;\r\n\r\n yield put({\r\n type: userActions.SET_USER_TASKS,\r\n payload: countTasks\r\n });*/\r\n\r\n });\r\n}\r\n\r\nexport function* setTasks() {\r\n\r\n yield takeEvery(actions.GET_TASKS, function* (action) {\r\n\r\n const Client = yield select(getGraphClient);\r\n\r\n if (!Client) return;\r\n\r\n try {\r\n let taskLists = {};\r\n let count = 0;\r\n\r\n const toDoLists = yield Client.api('/me/todo/lists');\r\n if (toDoLists) {\r\n if (toDoLists.value) {\r\n for (let i = 0; i <= toDoLists.value.length; i++) {\r\n if (toDoLists.value[i]) {\r\n const toDoListTasks = yield Client.api('/me/todo/lists/' + toDoLists.value[i].id + '/tasks');\r\n\r\n if (!toDoListTasks) continue;\r\n\r\n count = + toDoListTasks.value?.length;\r\n\r\n taskLists = {\r\n ...taskLists,\r\n [toDoLists.value[i].id]: {\r\n ...taskLists[toDoLists.value[i].id],\r\n name: toDoLists.value[i].displayName,\r\n tasks: toDoListTasks.value,\r\n taskType: 'toDo',\r\n\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n let tasks = yield Client.api('/me/planner/tasks');\r\n\r\n if (tasks == null || !tasks) return;\r\n taskLists = {\r\n ...taskLists,\r\n plannerTasks: {\r\n name: 'Planner',\r\n tasks: tasks.value,\r\n taskType: 'planner'\r\n }\r\n }\r\n /*\r\n const today = moment();\r\n const weekStart = today.startOf('week');\r\n\r\n tasks = tasks.value.filter(item => {\r\n return item.completedDateTime == null || moment(item.completedDateTime) > weekStart;\r\n });\r\n\r\n yield put({\r\n type: actions.ORDER_TASKS,\r\n payload: tasks\r\n });*/\r\n\r\n\r\n let emailTasks = yield Client.api(\"/me/messages?$filter=flag/flagStatus ne 'notFlagged'\")\r\n if (emailTasks == null || !emailTasks) return;\r\n taskLists = {\r\n ...taskLists,\r\n emailTasks: {\r\n name: 'Email',\r\n tasks: emailTasks.value,\r\n taskType: 'email'\r\n }\r\n }\r\n\r\n yield put({\r\n type: actions.ORDER_TASKS,\r\n payload: taskLists\r\n });\r\n }\r\n catch (error) {\r\n console.error(error);\r\n }\r\n\r\n });\r\n\r\n}\r\n\r\nexport function* updateTask() {\r\n yield takeEvery(actions.UPDATE_TASK, function* (action) {\r\n\r\n const Client = yield select(getGraphClient);\r\n if (!Client) return;\r\n try {\r\n let toDoTask = {};\r\n let value = action.payload.payload[action.payload.key]\r\n toDoTask[action.payload.key] = value;\r\n const response = yield Client.patch('/me/todo/lists/' + action.payload.payload.listId + '/tasks/' + action.payload.payload.id, JSON.stringify(toDoTask))\r\n\r\n if (response) {\r\n yield put({\r\n type: actions.GET_TASKS\r\n });\r\n }\r\n\r\n\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n })\r\n}\r\n\r\nexport function* updateSubTask() {\r\n yield takeEvery(actions.UPDATE_SUB_TASK, function* (action) {\r\n const Client = yield select(getGraphClient);\r\n if (!Client) return;\r\n try {\r\n let toDoTask = {};\r\n let value = action.payload.subTask[action.payload.key];\r\n toDoTask[action.payload.key] = value;\r\n const response = yield Client.patch('/me/todo/lists/' + action.payload.payload.listId + '/tasks/' + action.payload.payload.id + '/checklistItems/' + action.payload.subTask.id, JSON.stringify(toDoTask))\r\n\r\n if (response) {\r\n yield put({\r\n type: actions.GET_TASKS\r\n });\r\n }\r\n\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n })\r\n}\r\n\r\nexport function* updateTaskEmail() {\r\n yield takeEvery(actions.UPDATE_TASK_EMAIL, function* (action) {\r\n\r\n const Client = yield select(getGraphClient);\r\n if (!Client) return;\r\n try {\r\n let toDoTask = {};\r\n let value = '';\r\n\r\n switch (action.payload.key) {\r\n case 'flag.flagstatus':\r\n value = action.payload.payload.flag.flagStatus;\r\n toDoTask.flag = {};\r\n toDoTask.flag.flagStatus = value;\r\n default:\r\n }\r\n\r\n const response = yield Client.patch('/me/messages/' + action.payload.payload.id, JSON.stringify(toDoTask))\r\n\r\n if (response) {\r\n yield put({\r\n type: actions.GET_TASKS\r\n });\r\n }\r\n\r\n\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n })\r\n}\r\n\r\nexport function* updateTaskPlanner() {\r\n yield takeEvery(actions.UPDATE_TASK_PLANNER, function* (action) {\r\n // @odata.etag\r\n const Client = yield select(getGraphClient);\r\n if (!Client) return;\r\n try {\r\n let toDoTask = {};\r\n let value = action.payload.payload[action.payload.key]\r\n toDoTask[action.payload.key] = value;\r\n const response = yield Client.patch('/planner/tasks/' + action.payload.payload.id, JSON.stringify(toDoTask), \"v1.0\", action.payload.payload['@odata.etag'])\r\n\r\n if (response) {\r\n yield put({\r\n type: actions.GET_TASKS\r\n });\r\n }\r\n\r\n\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n })\r\n}\r\n\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(setTasks),\r\n fork(orderTasks),\r\n fork(updateTask),\r\n fork(updateTaskEmail),\r\n fork(updateSubTask),\r\n fork(updateTaskPlanner)\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport moment from 'moment';\r\nimport { getGOClient, getGraphClient, getAllBirthdays, birthdaysAlreadyFetching } from '../selectors';\r\nimport { Buffer } from 'buffer';\r\nimport birthdays from '../../components/widget/birthdays';\r\n\r\n\r\nexport function* getBirthdays() {\r\n yield takeEvery(actions.GET_BIRTHDAYS, function* (action) {\r\n\r\n yield put({\r\n type: actions.SET_BIRTHDAYS,\r\n payload: []\r\n });\r\n\r\n const Client = yield select(getGraphClient);\r\n const GoClient = yield select(getGOClient);\r\n\r\n if (!Client || !GoClient) return;\r\n\r\n const birthdays = yield GoClient.api(action.payload);\r\n if (birthdays == null || !birthdays) return;\r\n\r\n let parsedBirthdays = [];\r\n let parsedBirthdaysToday = [];\r\n let parsedBirthdaysTomorrow = [];\r\n let parsedBirthdaysUpcoming = [];\r\n const today = moment();\r\n const tomorrow = moment(new Date()).add(1, 'days');\r\n\r\n if (birthdays) {\r\n for (let i = 0; i <= birthdays.length; i++) {\r\n if (birthdays[i]) {\r\n let birthday = birthdays[i];\r\n const birthdate = moment(birthday.date);\r\n\r\n if (today.format('D-M') === birthdate.format('D-M')) {\r\n let parsedUserPhoto = yield fetchUserPhoto(Client, birthday.id);\r\n birthday = {\r\n ...birthday,\r\n avatar: parsedUserPhoto,\r\n when: 'Vandaag'\r\n };\r\n\r\n parsedBirthdaysToday.push(birthday);\r\n } else if (tomorrow.format('D-M') === birthdate.format('D-M')) {\r\n let parsedUserPhoto = yield fetchUserPhoto(Client, birthday.id);\r\n birthday = {\r\n ...birthday,\r\n avatar: parsedUserPhoto,\r\n when: 'Morgen'\r\n };\r\n\r\n parsedBirthdaysTomorrow.push(birthday);\r\n } else if (parseInt(birthdate.format('YYYY')) > 1920) {\r\n\r\n parsedBirthdays.push({\r\n ...birthday,\r\n avatar: null,\r\n when: 'Upcoming',\r\n day: birthdate\r\n });\r\n }\r\n }\r\n }\r\n\r\n // parsedBirthdays = parsedBirthdaysToday;\r\n \r\n\r\n parsedBirthdays = parsedBirthdaysTomorrow.concat(parsedBirthdays);\r\n parsedBirthdays = parsedBirthdaysToday.concat(parsedBirthdays);\r\n\r\n if (parsedBirthdaysTomorrow.length > 0) {\r\n parsedBirthdaysUpcoming = parsedBirthdaysTomorrow.concat(parsedBirthdaysUpcoming);\r\n }\r\n if (parsedBirthdaysToday.length > 0) {\r\n parsedBirthdaysUpcoming = parsedBirthdaysToday.concat(parsedBirthdaysUpcoming);\r\n }\r\n\r\n \r\n yield put({\r\n type: actions.SET_BIRTHDAYS,\r\n payload: parsedBirthdays\r\n });\r\n\r\n yield put({\r\n type: actions.SET_UPCOMING_BIRTHDAYS,\r\n payload: parsedBirthdaysUpcoming\r\n });\r\n\r\n }\r\n });\r\n}\r\n\r\nfunction* fetchUserPhoto(Client, id) {\r\n try {\r\n // -- Fetch user avatars\r\n const userPhoto = yield Client.api('/users/' + id + '/photo/$value', 'arrayBuffer');\r\n let parsedUserPhoto = null;\r\n if (userPhoto !== null) parsedUserPhoto = 'data:image/png;base64, ' + new Buffer.from(userPhoto, 'binary').toString('base64');\r\n\r\n return parsedUserPhoto;\r\n\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n}\r\n\r\n\r\nexport function* getAvatar() {\r\n yield takeEvery(actions.GET_PERSON_AVATAR, function* (action) {\r\n const GraphClient = yield select(getGraphClient);\r\n if (GraphClient == null) return;\r\n const avatar = yield GraphClient.api(`/users/${action.payload}/photos/48x48/$value`, 'arrayBuffer');\r\n\r\n\r\n let image = 'none';\r\n if (avatar) {\r\n image = 'data:image/png;base64, ' + new Buffer(avatar, 'binary').toString('base64');\r\n }\r\n\r\n let birthdays = yield select(getAllBirthdays);\r\n\r\n let personIndex = birthdays?.findIndex((item) => item.id === action.payload);\r\n if (personIndex != null && personIndex != -1) {\r\n birthdays[personIndex].avatar = image;\r\n\r\n yield put({\r\n type: actions.SET_BIRTHDAYS_AVATARS,\r\n payload: birthdays\r\n });\r\n }\r\n })\r\n}\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getBirthdays),\r\n fork(getAvatar)\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport { getGraphClient } from '../selectors';\r\nimport moment from 'moment/min/moment-with-locales';\r\nexport function* setDocuments() {\r\n\r\n yield takeEvery(actions.GET_DOCUMENTS, function* (action) {\r\n\r\n const Client = yield select(getGraphClient);\r\n if (!Client) return;\r\n yield put({\r\n type: actions.DOCUMENTS_REQUEST_COMPLETED,\r\n payload: false\r\n })\r\n\r\n let status = \"orange\"\r\n yield put({\r\n type: actions.SET_STATUS_DOCUMENTS,\r\n payload: status\r\n })\r\n let update = moment().unix();\r\n yield put({\r\n type: actions.SET_LAST_UPDATE_DOCUMENTS,\r\n payload: update\r\n })\r\n //const recentDocuments = yield Client.api('/me/drive/recent').orderby('lastModifiedDateTime desc').get();\r\n //const trendingDocuments = yield Client.api('/me/insights/trending').get();\r\n\r\n const recentDocuments = yield Client.api('/me/drive/recent?$orderby=lastModifiedDateTime desc&$top=30');\r\n const trendingDocuments = yield Client.api('/me/insights/trending?top=30');\r\n const sharedDocuments = yield Client.api('/me/drive/sharedWithMe?top=30');\r\n // error handling\r\n\r\n yield put({\r\n type: actions.DOCUMENTS_REQUEST_COMPLETED,\r\n payload: true\r\n })\r\n status = \"green\"\r\n yield put({\r\n type: actions.SET_STATUS_DOCUMENTS,\r\n payload: status\r\n })\r\n\r\n if (recentDocuments == null || trendingDocuments == null || sharedDocuments == null) return;\r\n if (!recentDocuments || !trendingDocuments || !sharedDocuments) return;\r\n\r\n yield put({\r\n type: actions.SET_DOCUMENTS,\r\n payload: {\r\n recent: recentDocuments.value,\r\n trending: trendingDocuments.value,\r\n shared: sharedDocuments.value\r\n }\r\n });\r\n\r\n });\r\n\r\n}\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(setDocuments)\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\n\r\n\r\nexport function* setMessage() {\r\n yield takeEvery(actions.MESSAGE, function* (action) {\r\n // -- Possibly intercept message before passing on to reducer\r\n yield put({\r\n type : actions.ADD_MESSAGE,\r\n payload: {\r\n \t\t\tmessage : action.payload.message,\r\n \t\t\ttype : action.payload.type\r\n \t\t}\r\n })\r\n });\r\n}\r\n\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(setMessage)\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery,select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport { getGOClient } from '../selectors';\r\nexport function* setReports() {\r\n\r\n\tyield takeEvery(actions.GET_TILES, function*(action) {\r\n\r\n const GoClient = yield select(getGOClient);\r\n\r\n if (!GoClient) return;\r\n\r\n const tiles = yield GoClient.api('/dashboard/tiles');\r\n\r\n if (!tiles) return;\r\n\r\n yield put({\r\n type: actions.SET_TILES,\r\n payload: {\r\n \ttiles: tiles\r\n }\r\n });\r\n\r\n\t});\r\n\r\n}\r\n\r\nexport default function* rootSaga() {\r\n\tyield all([\r\n\t\tfork(setReports)\r\n\t]);\r\n}\r\n","import { all, fork, takeEvery, select, put, call, take } from 'redux-saga/effects';\r\nimport { eventChannel } from 'redux-saga';\r\nimport actions from './actions';\r\nimport notificationCollectorActions from '../notificationCollector/actions';\r\n//import * as SignalR from '@aspnet/signalr';\r\nimport { toast } from 'react-toastify';\r\nimport { dataURItoBlob } from '../../helpers/functions';\r\nimport { getGOClient, getNotificationItems, getSharepointClient, getAuth, getNotificationsHub, getIsNotificationsIsConnected } from '../selectors';\r\n\r\nvar notificationHub = null;\r\nexport function* getNotifications() {\r\n yield takeEvery(actions.GET_NOTIFICATIONS, function* (action) {\r\n\r\n });\r\n}\r\n\r\nexport function* startNotifications() {\r\n yield takeEvery(actions.START_NOTIFICATIONS, function* (action) {\r\n const goClient = yield select(getGOClient);\r\n\r\n if (window.tenantConfig.notificationEnabled === 'false' || !window.tenantConfig.notificationEnabled) return;\r\n\r\n const channel = yield call(websocketInitChannel, goClient);\r\n\r\n yield put({\r\n type: actions.SET_HUB,\r\n payload: notificationHub\r\n });\r\n\r\n while (true) {\r\n const action = yield take(channel);\r\n yield put(action);\r\n }\r\n });\r\n}\r\n\r\nexport function* setNumberOfNotifications() {\r\n yield takeEvery(actions.SET_NOTIFICATIONS, function* (action) {\r\n\r\n // -- Count the total number of notifications in all categories\r\n let counter = 0;\r\n\r\n for (const category in action.payload) {\r\n if (action.payload.hasOwnProperty(category)) {\r\n counter += action.payload[category].length;\r\n }\r\n }\r\n\r\n yield put({\r\n type: actions.SET_NUMBER_OF_NOTIFICATIONS,\r\n payload: counter\r\n })\r\n });\r\n}\r\n\r\n\r\nexport function* receiveNotification() {\r\n yield takeEvery(actions.RECEIVE_NOTIFICATION, function* (action) {\r\n\r\n const Client = yield select(getSharepointClient);\r\n let notifications = yield select(getNotificationItems);\r\n const Auth = yield select(getAuth);\r\n let type = 'news';\r\n\r\n let notification = {\r\n message : '',\r\n type : ''\r\n };\r\n\r\n if (typeof (action.payload) !== 'string') {\r\n\r\n const imageUrl = yield fetch(`/api/getimage?token=${(yield Client.getToken())}&url=${encodeURIComponent(action.payload.picture)}`, {\r\n method: 'GET',\r\n contentType: 'image/jpeg',\r\n headers: { 'Authorization': 'Bearer ' + Auth.jwtIdToken }\r\n }).then((res) => res.text())\r\n .then((content) => {\r\n let url = false;\r\n try {\r\n url = URL.createObjectURL(dataURItoBlob(content));\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n\r\n if (url) {\r\n return url;\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((error) => {\r\n return false;\r\n });\r\n\r\n type = action.payload.type;\r\n\r\n notification.message = action.payload.title;\r\n\r\n action.payload.picture = imageUrl;\r\n // -- Show user a toast with the latest notification\r\n } else {\r\n notification.message = action.payload;\r\n type = 'notification';\r\n }\r\n notification.type = type;\r\n\r\n // -- Add to notifications object\r\n if (notifications[type]) {\r\n notifications[type].push(action.payload);\r\n } else {\r\n if (typeof (action.payload) !== 'string') {\r\n notifications = {\r\n ...notifications,\r\n [type]: [{ ...action.payload }]\r\n };\r\n } else {\r\n notifications = {\r\n ...notifications,\r\n [type]: [action.payload]\r\n };\r\n }\r\n }\r\n\r\n yield put({\r\n type : notificationCollectorActions.PUSH_NOTIFICATION,\r\n payload : notification\r\n })\r\n\r\n yield put({\r\n type: actions.SET_NOTIFICATIONS,\r\n payload: notifications\r\n });\r\n });\r\n}\r\n\r\n\r\nexport function* removeSingleNotification() {\r\n yield takeEvery(actions.REMOVE_SINGLE_NOTIFICATION, function* (action) {\r\n\r\n let notifications = yield select(getNotificationItems);\r\n\r\n if (notifications[action.payload.category]) {\r\n let newForCategory = [];\r\n for (let i = 0; i <= notifications[action.payload.category].length; i++) {\r\n if (notifications[action.payload.category][i]) {\r\n if (i !== action.payload.key) {\r\n newForCategory.push(notifications[action.payload.category][i]);\r\n }\r\n }\r\n }\r\n\r\n // -- If the category still contains items, add all items to that object. Otherwise, remove the object.\r\n if (newForCategory.length) {\r\n notifications[action.payload.category] = newForCategory;\r\n } else {\r\n let newNotifications = {};\r\n for (const category in notifications) {\r\n if (notifications.hasOwnProperty(category)) {\r\n if (category !== action.payload.category) {\r\n newNotifications = {\r\n ...newNotifications,\r\n [category]: {\r\n ...notifications[category]\r\n }\r\n };\r\n }\r\n }\r\n }\r\n notifications = newNotifications;\r\n }\r\n }\r\n\r\n yield put({\r\n type: actions.SET_NOTIFICATIONS,\r\n payload: notifications\r\n });\r\n\r\n });\r\n}\r\n\r\n\r\nexport function* receiveCommand() {\r\n yield takeEvery(actions.RECEIVE_COMMAND, function* (action) {\r\n\r\n if (action.payload.messageType === 7) {\r\n yield put({\r\n type: actions.SET_APPLICATIONS,\r\n payload: JSON.parse(action.payload.message)\r\n });\r\n } else if (action.payload.messageType === 8) {\r\n yield put({\r\n type: actions.SET_APPLICATION,\r\n payload: JSON.parse(action.payload.message)\r\n });\r\n }\r\n\r\n //else {\r\n\r\n // yield put({\r\n // type: actions.GET_COMMANDS,\r\n // payload: action.payload\r\n // });\r\n //}\r\n });\r\n}\r\n\r\n\r\nexport function* sendExecuteCommand() {\r\n yield takeEvery(actions.SEND_EXECUTE_COMMAND, function* (action) {\r\n yield put({\r\n type: actions.SEND_COMMAND,\r\n payload: {\r\n commandType: 0,\r\n senderId: \"\", //state.Commands.Hub.connection.id,\r\n senderUpn: \"GO-\",\r\n recipientId: \"\",\r\n recipientUpn: \"\",\r\n commandContent: action.payload\r\n }\r\n });\r\n });\r\n}\r\n\r\nexport function* sendListCommand() {\r\n yield takeEvery(actions.SEND_LIST_COMMAND, function* (action) {\r\n yield put({\r\n type: actions.SEND_COMMAND,\r\n payload: {\r\n commandType: 7,\r\n senderId: \"\", // state.Commands.Hub.connection.id,\r\n senderUpn: \"GO-\",\r\n recipientId: \"\",\r\n recipientUpn: \"\",\r\n commandContent: \"\"\r\n }\r\n });\r\n });\r\n}\r\n\r\nexport function* sendDetailCommand() {\r\n yield takeEvery(actions.SEND_DETAIL_COMMAND, function* (action) {\r\n yield put({\r\n type: actions.SEND_COMMAND,\r\n payload: {\r\n commandType: 8,\r\n senderId: \"\", // state.Commands.Hub.connection.id,\r\n senderUpn: \"GO-\",\r\n recipientId: \"\",\r\n recipientUpn: \"\",\r\n commandContent: action.payload\r\n }\r\n });\r\n });\r\n}\r\n\r\n\r\nexport function* sendCheckCommand() {\r\n yield takeEvery(actions.SEND_CHECK_COMMAND, function* (action) {\r\n let connected = false;\r\n\r\n const notificationsHub = yield select(getNotificationsHub);\r\n const notificationsIsConnected = yield select(getIsNotificationsIsConnected);\r\n\r\n if (notificationsHub && notificationsIsConnected) {\r\n try {\r\n const isConnected = yield notificationsHub.invoke(\"IsServiceConnected\");\r\n connected = (typeof (isConnected) === \"string\" && isConnected === \"True\");\r\n } catch (error) { }\r\n } else {\r\n connected = false;\r\n }\r\n\r\n yield put({\r\n type: actions.SERVICES_CONNECTED,\r\n payload: connected\r\n });\r\n });\r\n}\r\n\r\n\r\nexport function* sendCommand() {\r\n yield takeEvery(actions.SEND_COMMAND, function* (command) {\r\n\r\n const notificationsHub = yield select(getNotificationsHub);\r\n const notificationsIsConnected = yield select(getIsNotificationsIsConnected);\r\n //if (!state.Commands.Hub) return;\r\n if (notificationsIsConnected) {\r\n try {\r\n notificationsHub.invoke(\"SendCommand\", command.payload);\r\n } catch (error) { }\r\n }\r\n });\r\n}\r\n\r\nexport function* setConnected() {\r\n yield takeEvery(actions.SET_CONNECTED, function* (action) {\r\n\r\n if (action.payload === true) {\r\n yield put({\r\n type: actions.SEND_CHECK_COMMAND\r\n });\r\n } else {\r\n yield put({\r\n type: actions.SERVICES_CONNECTED,\r\n payload: false\r\n });\r\n }\r\n });\r\n}\r\n\r\nfunction websocketInitChannel(goClient) {\r\n //const token = state.Auth.jwtIdToken;\r\n //let token = state.Client.GoClient.getToken();\r\n\r\n return eventChannel(emitter => {\r\n\r\n /* notificationHub = new SignalR\r\n .HubConnectionBuilder()\r\n \r\n .withUrl(window.tenantConfig.notificationUrl + \"/notification?PartitionKey=0&PartitionKind=Int64Range&TargetReplicaSelector=PrimaryReplica\", {\r\n accessTokenFactory: async () => await goClient.getToken()\r\n })\r\n //.configureLogging(SignalR.LogLevel.Debug)\r\n .build();\r\n \r\n notificationHub.on('ReceiveNotification', function (message) {\r\n if (typeof (message) !== \"string\") {\r\n if (!message.type) {\r\n message.type = 'Nieuws';\r\n }\r\n }\r\n return emitter(\r\n {\r\n type: actions.RECEIVE_NOTIFICATION,\r\n payload: message\r\n }\r\n );\r\n });\r\n \r\n notificationHub.on('ReceiveCommand', function (messageType, message) {\r\n return emitter(\r\n {\r\n type: actions.RECEIVE_COMMAND,\r\n payload: { messageType: messageType, message: message }\r\n }\r\n );\r\n });\r\n \r\n //notificationHub.start().then(function (er) {\r\n // notificationHub.invoke(\"Login\", \"GO-\").then(function (err) {\r\n \r\n // }).catch(function (err) {\r\n // toast(this.props.translate('commandHubInvokeGoLoginError') + err, {autoClose: 1000*60*60*24});\r\n // });\r\n //});\r\n \r\n let timer = null;\r\n var restartHub = function () {\r\n notificationHub\r\n .start()\r\n .then(function (er) {\r\n notificationHub.invoke(\"Login\", \"GO-\").then(con => {\r\n return emitter(\r\n {\r\n type: actions.SET_CONNECTED,\r\n payload: true\r\n }\r\n );\r\n }).catch(function (err) {\r\n notificationHub.stop();\r\n toast(this.props.translate('commandHubInvokeGoLoginError') + err, {autoClose: 1000*60*60*24});\r\n return emitter(\r\n {\r\n type: actions.SET_CONNECTED,\r\n payload: false\r\n }\r\n );\r\n });\r\n })\r\n .catch(function (err) {\r\n notificationHub.stop();\r\n console.log('Error while starting connection: ' + err);\r\n \r\n clearTimeout(timer);\r\n timer = setTimeout(restartHub, 9000);\r\n \r\n return emitter(\r\n {\r\n type: actions.SET_CONNECTED,\r\n payload: false\r\n }\r\n );\r\n });\r\n };\r\n \r\n restartHub();\r\n \r\n notificationHub.onclose(async function (error) {\r\n console.log(\"DISCONNECTED: \" + error);\r\n \r\n clearTimeout(timer);\r\n timer = setTimeout(restartHub, 9000);\r\n \r\n return emitter(\r\n {\r\n type: actions.SET_CONNECTED,\r\n payload: false\r\n }\r\n );\r\n });\r\n \r\n return () => {\r\n // -- do whatever to interrupt the socket communication here\r\n }*/\r\n });\r\n}\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getNotifications),\r\n fork(startNotifications),\r\n fork(removeSingleNotification),\r\n fork(setNumberOfNotifications),\r\n fork(receiveNotification),\r\n fork(sendListCommand),\r\n fork(sendDetailCommand),\r\n fork(sendCheckCommand),\r\n fork(sendExecuteCommand),\r\n fork(receiveCommand),\r\n fork(sendCommand),\r\n fork(setConnected)\r\n ]);\r\n}\r\n","import { all, fork, takeEvery, select, put } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport { toast } from 'react-toastify';\r\nimport { getNotifications } from '../selectors';\r\nimport messageActions from '../message/actions';\r\nexport function* pushNotification() {\r\n yield takeEvery(actions.PUSH_NOTIFICATION, function* (action) {\r\n\r\n // -- Toast it here\r\n toast(this.props.translate('commandHubInvokeGoLoginError') + action.payload.message, {type: action.payload.type, autoClose: 1000*60*60*24});\r\n let notifications = yield select(getNotifications);\r\n notifications.push(action.payload);\r\n\r\n yield put({\r\n type : actions.SET_NOTIFICATIONS,\r\n payload : notifications\r\n })\r\n });\r\n}\r\n\r\n// -- Intercept messages\r\nexport function* addMessage() {\r\n yield takeEvery(messageActions.MESSAGE, function* (action) {\r\n\r\n let notifications = yield select(getNotifications);\r\n notifications.push(action.payload);\r\n\r\n yield put({\r\n type : actions.SET_NOTIFICATIONS,\r\n payload : notifications\r\n })\r\n });\r\n}\r\n\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(pushNotification),\r\n fork(addMessage)\r\n ]);\r\n}\r\n","import { all, fork, takeEvery, select, put } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport slideOutActions from '../slideOut/actions';\r\nimport { getSharepointClient } from '../selectors';\r\nimport { parseSharepointUrl } from '../../helpers/functions';\r\n\r\nexport function* setActiveEvent() {\r\n yield takeEvery(actions.SET_ACTIVE_EVENT, function* (action) {\r\n yield put({\r\n type: slideOutActions.SET_ACTIVE_SLIDEOUT,\r\n payload: 'event'\r\n });\r\n });\r\n}\r\n\r\nexport function* getEvents() {\r\n yield takeEvery(actions.GET_EVENTS, function* (action) {\r\n try {\r\n yield put({\r\n type: actions.EVENTS_REQUEST_COMPLETED,\r\n payload: false\r\n })\r\n\r\n const Client = yield select(getSharepointClient);\r\n if (!Client) return;\r\n\r\n const eventResponse = yield Client.api(action.payload);\r\n\r\n if (eventResponse == null || !eventResponse || !eventResponse.value) return;\r\n if (eventResponse.value.length === 0) return;\r\n\r\n let root = \"\";\r\n if(eventResponse['odata.metadata']) {\r\n root = parseSharepointUrl(eventResponse['odata.metadata']);\r\n }\r\n let data = eventResponse.value;\r\n let events = [];\r\n let tasks = [];\r\n\r\n tasks = data.map(async (d, index) => {\r\n \r\n let parsedDescription;\r\n if(root !== \"\") { \r\n parsedDescription = parseDescription(d.Description, root)\r\n } else {\r\n parsedDescription = d.Description;\r\n }\r\n if (!d.BannerUrl) {\r\n events.push({\r\n id: index,\r\n title: d.Title,\r\n description: parsedDescription,\r\n picture: 'https://placehold.it/500/500',\r\n date: d.Created,\r\n allEventData: { Location: d.Location, EventDate: d.EventDate, EndDate: d.EndDate },\r\n externalUrl: d.Workspace\r\n });\r\n }\r\n else {\r\n let url = decodeURIComponent(d.BannerUrl.Url);\r\n\r\n if (url) {\r\n events.push({\r\n id: index,\r\n title: d.Title,\r\n description: parsedDescription,\r\n picture: url,\r\n allEventData: { Location: d.Location, EventDate: d.EventDate, EndDate: d.EndDate },\r\n externalUrl: d.Workspace,\r\n date: d.Created\r\n });\r\n return url;\r\n }\r\n }\r\n\r\n });\r\n /* const date = new Date();\r\n\r\n for (var i = 0; i < 4; i++) {\r\n events.unshift({\r\n id: Math.random(),\r\n title: \"test evenementen\",\r\n description: \"tijdens deze sessie gaan jullie leren om\",\r\n picture: 'https://placehold.it/500/500',\r\n date: date.setDate(date.getDate() + 1),\r\n allEventData: { Location: \"Rotterdam\", EventDate: date.setDate(date.getDate() + 1), EndDate: date.setDate(date.getDate() + 1) },\r\n externalUrl: \"https://www.google.nl\"\r\n });\r\n }*/\r\n\r\n if (tasks.length) {\r\n yield Promise.all(tasks);\r\n }\r\n\r\n //if (events.length) {\r\n yield put({\r\n type: actions.SET_EVENTS,\r\n payload: events.reverse()\r\n });\r\n\r\n yield put({\r\n type: actions.EVENTS_REQUEST_COMPLETED,\r\n payload: true\r\n })\r\n //}\r\n } catch (error) { console.log(error); }\r\n });\r\n}\r\n\r\n\r\nfunction parseDescription(description, root) {\r\n if (!description) return '';\r\n const anchorContent = /]*?href=\\\"\\/.*\\\".*?>.*?<\\/a>/g;\r\n const urls = /href=\\\"(\\/.*?)\\\"/;\r\n let anchorContentMatch = [];\r\n let urlsMatch = [];\r\n anchorContentMatch = description.match(anchorContent);\r\n if(anchorContentMatch) {\r\n for(let i = 0; i < anchorContentMatch.length; i++) {\r\n urlsMatch = anchorContentMatch[i].match(urls);\r\n if(urlsMatch) {\r\n description = description.replace(urls, function (match, token) {\r\n return 'target=\"_blank\" href=\"' + root + urlsMatch[1] + '\"';\r\n });\r\n }\r\n }\r\n\r\n }\r\n\r\n return description;\r\n}\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getEvents),\r\n fork(setActiveEvent)\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select, delay, takeLatest } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport userActions from '../user/actions';\r\nimport moment from 'moment';\r\nimport { getActiveSlideOut, isUnmounting } from '../selectors';\r\n\r\nexport function* setActiveSlideout() {\r\n yield takeLatest(actions.HANDLE_SLIDEOUT_MOUNTING, function* (action) {\r\n\r\n // -- Check if a slideout exists. If it does and the new slideOut value is not false, set it to unmounting to animate the old slideOut away, and the new one in.\r\n const activeSlideOut = yield select(getActiveSlideOut);\r\n const isSlideOutUnmounting = yield select(isUnmounting);\r\n\r\n if ( activeSlideOut ) {\r\n if (!isSlideOutUnmounting) {\r\n yield put({\r\n type : actions.SET_IS_UNMOUNTING,\r\n payload : true\r\n })\r\n yield delay(500)\r\n }\r\n\r\n }\r\n\r\n yield put({\r\n type : actions.SET_ACTIVE_SLIDEOUT,\r\n payload : action.payload\r\n })\r\n\r\n });\r\n}\r\n\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(setActiveSlideout),\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select} from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport moment from 'moment';\r\nimport { getSolutions } from '../selectors';\r\nexport function* enableSolution() {\r\n yield takeEvery(actions.ENABLE_SOLUTION, function* (action) {\r\n\r\n // -- API logic here\r\n console.log(\"Enable solution\");\r\n\r\n let solutions = yield select(getSolutions);\r\n let rebuiltSolutions = [];\r\n solutions.forEach((solution, i) => {\r\n if ( solution.id === action.payload ) {\r\n solution.active = true;\r\n }\r\n rebuiltSolutions.push(solution);\r\n });\r\n\r\n yield put({\r\n type : actions.SET_SOLUTIONS,\r\n payload : rebuiltSolutions\r\n })\r\n });\r\n}\r\n\r\nexport function* disableSolution() {\r\n yield takeEvery(actions.DISABLE_SOLUTION, function* (action) {\r\n // -- API logic here\r\n console.log(\"Disable solution\");\r\n\r\n let solutions = yield select(getSolutions);\r\n let rebuiltSolutions = [];\r\n solutions.forEach((solution, i) => {\r\n if ( solution.id === action.payload ) {\r\n solution.active = false;\r\n }\r\n rebuiltSolutions.push(solution);\r\n });\r\n\r\n yield put({\r\n type : actions.SET_SOLUTIONS,\r\n payload : rebuiltSolutions\r\n })\r\n });\r\n}\r\n\r\nexport function* fetchSolutions() {\r\n yield takeEvery(actions.GET_SOLUTIONS, function* (action) {\r\n const solutions = [\r\n {\r\n id : 1,\r\n category : 1,\r\n name : 'Office 365 Back-up & Restore',\r\n active : false,\r\n link : 'https://www.avantage.nl/back-up-restore-data-microsoft-365-teams/',\r\n price : '€ 25 p/m',\r\n description : 'Om goed en veilig (thuis) te werken met Microsoft (Office) 365 en Teams is het belangrijk dat je bij deze clouddiensten dagelijks een back-up maakt. Daarmee borg je de continuïteit van je bedrijfsvoering wanneer zich onverhoopt een calamiteit voordoet. Microsoft verzorgt deze back-ups niet. Daarom hebben we de oplossing Office 365 Back-up & Restore in het leven geroepen.'\r\n },\r\n {\r\n id : 2,\r\n category : 2,\r\n name : 'Office 365 Back-up & Restore',\r\n active : false,\r\n link : 'https://www.avantage.nl/back-up-restore-data-microsoft-365-teams/',\r\n price : '€ 25 p/m',\r\n description : 'Om goed en veilig (thuis) te werken met Microsoft (Office) 365 en Teams is het belangrijk dat je bij deze clouddiensten dagelijks een back-up maakt. Daarmee borg je de continuïteit van je bedrijfsvoering wanneer zich onverhoopt een calamiteit voordoet. Microsoft verzorgt deze back-ups niet. Daarom hebben we de oplossing Office 365 Back-up & Restore in het leven geroepen.'\r\n },\r\n {\r\n id : 3,\r\n category : 2,\r\n name : 'Security & Update management',\r\n active : false,\r\n link : 'https://www.avantage.nl/security-en-update-management/',\r\n price : '€ 25 p/m',\r\n description: 'Om digitaal veilig te kunnen werken, is het belangrijk dat de meest recente software- en antivirusupdates op jouw pc of laptop zijn geïnstalleerd. Wanneer dat niet het geval is, wordt een online werkplek een eenvoudige prooi voor hackers. Onze security & update management oplossing houdt jouw device up-to-date en veilig!'\r\n },\r\n {\r\n id : 4,\r\n category : 2,\r\n name : 'E-mail security',\r\n active : false,\r\n link : 'https://www.avantage.nl/e-mail-security/',\r\n price : '€ 25 p/m',\r\n description: 'Maar liefst 90% van alle malware wordt verspreid door malafide e-mails. Om deze malware geen probleem te laten worden, is een e-mail security oplossing een vereiste. Onze oplossing filtert inkomende e-mail op spam, malware en andere schadelijke bijlagen en elimineert bedreigingen voordat ze jouw IT-omgeving bereiken.'\r\n },\r\n {\r\n id : 5,\r\n category : 2,\r\n name : 'Multi-Factor Authenticatie',\r\n active : false,\r\n link : 'https://www.avantage.nl/multifactor-authenticatie/',\r\n price : '€ 25 p/m',\r\n description: 'Veilig kunnen inloggen op je device en (bedrijfs)netwerk is belangrijk. De oplossing Multi-Factor Authenticatie (MFA) maakt dit mogelijk. MFA betreft een inlogmethode waarbij je naast je gebruikersnaam en wachtwoord inlogt met een extra beveiliging via een app op jouw smartphone. Op deze manier wordt het kwaadwillenden een stuk moeilijker gemaakt om uit jouw naam toegang te krijgen tot jouw device en/of (bedrijfs)netwerk.'\r\n },\r\n {\r\n id : 6,\r\n category : 2,\r\n name : 'Vulnerability scan',\r\n active : false,\r\n link : 'https://www.avantage.nl/vulnerability-scan/',\r\n price : '€ 25 p/m',\r\n description: 'IT-omgevingen en webapplicaties staan dagelijks bloot aan dreigingen via het internet. Deze kwetsbaarheden zijn zelf echter heel moeilijk waar te nemen. Door periodiek een scan uit te laten voeren krijg je inzicht en controle over de veiligheid van jouw IT-omgeving. De scan maakt het mogelijk om potentiële kwetsbaarheden proactief op te sporen, zodat kritieke beveiligingslekken tijdig gedicht kunnen worden voordat cybercriminelen ze kunnen misbruiken.'\r\n },\r\n {\r\n id : 7,\r\n category : 2,\r\n name : 'Cybersecurity Technical scan',\r\n active : true,\r\n link : 'https://www.avantage.nl/cybersecurity-technical-scan/',\r\n price : '€ 25 p/m',\r\n description: '‘Wat zijn voor mijn organisatie de belangrijkste risico’s als gevolg van cyberdreigingen?’ ‘En waarin moeten wij investeren om als organisatie veiliger te worden?’ Om daar antwoord op te geven kun je een Technical scan uit laten voeren. Op vijf basis cybersecurity onderdelen brengen wij de huidige situatie in kaart en ontvang je een rapport met bevindingen en aanbevelingen om het cybercriminelen zo lastig mogelijk te maken om in te breken in jouw IT-omgeving.'\r\n },\r\n {\r\n id : 8,\r\n category : 2,\r\n action : 'endpoint-detection-response',\r\n name : 'Endpoint Detection & Response',\r\n active : false,\r\n link : 'https://www.avantage.nl/endpoint-detection-response/',\r\n price : '€ 25 p/m',\r\n description: 'Cybercriminelen maken steeds vaker gebruik van geavanceerde technieken om een IT netwerk binnen te dringen. Alleen antivirus software is niet meer voldoende. Met Endpoint Detection & Response (EDR) worden gerichte aanvallen op de IT-omgeving continu door onze security specialisten gemonitord en worden bedreigingen efficiënt gedetecteerd, vakkundig beoordeeld door onze specialisten en snel geblokkeerd. Met Endpoint Detection & Response abonneer je je op onze cybersecurity alarmcentrale die jouw devices bewaakt en ingrijpt als er inbrekers zijn.'\r\n },\r\n {\r\n id : 9,\r\n category : 2,\r\n name : 'Identiteitsfraude preventie',\r\n active : false,\r\n link : 'https://www.avantage.nl/identiteitsfraude-preventie/',\r\n price : '€ 25 p/m',\r\n description: 'Onderzoek wijst uit dat 1 op de 5 mensen op een schadelijke link in een phishing mail klikt. Het sturen van phishing mails is een populaire methode van cybercriminelen om persoonlijke gegevens buit te maken en daarmee malafide acties uit te voeren. Om gebruikers hiertegen te wapenen bieden wij een oplossing aan die dagelijks scant en notificeert op gelekte wachtwoorden. Daarnaast ondersteunen we bij het verhogen van het securitybewustzijn door periodiek een phishing simulatie test uit te voeren en e-learning content aan te bieden.'\r\n },\r\n {\r\n id : 10,\r\n category : 2,\r\n name : 'Cybersecurity Assessment',\r\n active : false,\r\n link : 'https://www.avantage.nl/identiteitsfraude-preventie/',\r\n price : '€ 25 p/m',\r\n description: '‘Hoe volwassen is onze organisatie op het gebied van cybersecurity? Maar ook wat zijn onze risico’s en wat is de impact hiervan op onze bedrijfsvoering? Investeren we wel in de juiste security maatregelen passend bij onze organisatie?’. De cybersecurity assessment geeft organisaties op 20 onderdelen inzicht in het volwassenheidsniveau van cybersecurity en de relevante risico’s. Op basis van de assessment brengen onze security specialisten een advies uit met conclusies en een concreet en actiegericht plan voor de systematische verbetering van de cyberveiligheid van jouw organisatie.'\r\n }\r\n ];\r\n\r\n yield put({\r\n type : actions.SET_SOLUTIONS,\r\n payload : solutions\r\n })\r\n })\r\n}\r\n\r\nexport function* getSolutionCategories() {\r\n yield takeEvery(actions.GET_SOLUTION_CATEGORIES, function* (action) {\r\n\r\n const solutionCategories = [\r\n {\r\n id : 1,\r\n name : 'Featured',\r\n column : 'left'\r\n },\r\n {\r\n id : 2,\r\n name : 'Cybersecurity',\r\n column : 'center'\r\n },\r\n {\r\n id : 3,\r\n name : 'GO',\r\n column : 'center'\r\n },\r\n\r\n ];\r\n\r\n yield put({\r\n type : actions.SET_SOLUTION_CATEGORIES,\r\n payload : solutionCategories\r\n })\r\n\r\n yield put({\r\n type : actions.GET_SOLUTIONS\r\n })\r\n });\r\n}\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(fetchSolutions),\r\n fork(getSolutionCategories),\r\n fork(enableSolution),\r\n fork(disableSolution)\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select, delay, takeLatest } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport slideoutActions from '../slideOut/actions';\r\nimport moment from 'moment';\r\nimport { getActiveSlideOut, isUnmounting } from '../selectors';\r\n\r\nexport function* slideOutDeactivated() {\r\n yield takeLatest(slideoutActions.SET_ACTIVE_SLIDEOUT, function* (action) {\r\n\r\n if ( !action.payload.item ) {\r\n yield put({\r\n type : actions.SET_SEARCH_TERM,\r\n payload : ''\r\n })\r\n }\r\n });\r\n}\r\n\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(slideOutDeactivated),\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select, call } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport userActions from '../user/actions';\r\nimport moment from 'moment';\r\nimport { getGraphClient } from '../selectors'\r\nexport function* orderCalendar() {\r\n yield takeEvery(actions.ORDER_CALENDAR, function* (action) {\r\n\r\n const calendarItems = action.payload;\r\n\r\n if (!calendarItems) {\r\n yield put({\r\n type: actions.SET_CALENDAR,\r\n payload: []\r\n });\r\n yield put({\r\n type: userActions.SET_USER_CALENDARITEMS,\r\n payload: 0\r\n });\r\n };\r\n\r\n const sortOnDate = ((a, b) => {\r\n if (a.start.dateTime > b.start.dateTime) {\r\n return -1;\r\n }\r\n\r\n if (a.start.dateTime < b.start.dateTime) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n });\r\n\r\n let orderedItems = {\r\n today: [],\r\n tomorrow: [],\r\n next: []\r\n };\r\n const today = moment().format(\"DD-MM-YYYY\");\r\n const tomorrow = moment().add(1, 'day').format(\"DD-MM-YYYY\");\r\n\r\n for (let i = 0; i <= calendarItems.length; i++) {\r\n if (calendarItems[i]) {\r\n const currentItem = calendarItems[i];\r\n\r\n if (currentItem.start) {\r\n const startDate = moment(currentItem.start.dateTime).format(\"DD-MM-YYYY\");\r\n if (startDate === today) {\r\n orderedItems.today.push(currentItem);\r\n } else if (startDate === tomorrow) {\r\n orderedItems.tomorrow.push(currentItem);\r\n } else {\r\n orderedItems.next.push(currentItem);\r\n }\r\n }\r\n }\r\n }\r\n\r\n orderedItems.today.sort(sortOnDate);\r\n orderedItems.today.reverse();\r\n orderedItems.tomorrow.sort(sortOnDate);\r\n orderedItems.tomorrow.reverse();\r\n orderedItems.next.sort(sortOnDate);\r\n orderedItems.next.reverse();\r\n\r\n yield put({\r\n type: actions.SET_CALENDAR,\r\n payload: orderedItems\r\n });\r\n\r\n let countItems = 0;\r\n countItems = orderedItems.today.length + orderedItems.tomorrow.length; //+ orderedItems.next.length;\r\n\r\n yield put({\r\n type: userActions.SET_USER_CALENDARITEMS,\r\n payload: countItems\r\n });\r\n\r\n });\r\n}\r\n\r\nexport function* setCalendar() {\r\n\r\n yield takeEvery(actions.GET_CALENDAR, function* (action) {\r\n\r\n const Client = yield select(getGraphClient);\r\n\r\n if (!Client) return;\r\n\r\n try {\r\n const todayIso = moment().toISOString();\r\n const nextweekIso = moment().add(7, 'days').toISOString();\r\n\r\n let url = `/me/calendarview?startdatetime=${todayIso}&enddatetime=${nextweekIso}&top=50`;\r\n const calendar = yield call(Client.api, url);\r\n\r\n\r\n if (calendar == null || !calendar) return;\r\n if (!calendar.value) return;\r\n\r\n yield put({\r\n type: actions.ORDER_CALENDAR,\r\n payload: calendar.value\r\n });\r\n }\r\n catch (error) {\r\n console.error(error);\r\n }\r\n\r\n });\r\n\r\n}\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(setCalendar),\r\n fork(orderCalendar)\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport clientActions from '../client/actions';\r\nimport layoutActions from '../layout/actions'\r\nimport userActions from '../user/actions';\r\nimport { getGOClient, getAuthProvider, getLocale } from '../selectors';\r\nimport { toast } from 'react-toastify';\r\nimport { getGraphClient, getGoClient, getSharepointClient, getPowerClient, getYammerClient, activateClients, } from '../../helpers/graph';\r\nimport translate from 'translate-google-api';\r\n//const tenantConfig = window.tenantConfig;\r\nimport moment from 'moment';\r\n\r\nexport function* fetchUserWidgets() {\r\n yield takeEvery(actions.GET_WIDGETS, function* (action) {\r\n const GoClient = yield select(getGOClient);\r\n\r\n if (!GoClient) {\r\n return;\r\n }\r\n\r\n let widgets = {};\r\n\r\n if (!window.tenantConfig.common) {\r\n try {\r\n widgets = yield GoClient.api('/widgets');\r\n } catch (Error) {\r\n console.log(\"widgets fetch error: \" + Error);\r\n }\r\n } else {\r\n widgets = {};\r\n widgets.config = { left: [], center: [], right: [] };\r\n }\r\n\r\n if (widgets == null || (widgets.config == null && !window.tenantConfig.common)) {\r\n toast(this.props.translate('noWidgetsPresent'), {autoClose: 1000*60*60*24});\r\n }\r\n\r\n if (widgets != null && widgets.config != null && widgets.config.left === []) {\r\n toast(this.props.translate('leftColumnIsEmpty'), {autoClose: 1000*60*60*24});\r\n }\r\n\r\n if(widgets.config.hasOwnProperty('layout')) {\r\n \r\n yield put({\r\n type: actions.SET_WIDGETS_LAYOUT,\r\n payload: widgets.config.layout\r\n });\r\n if(widgets.config.layout.value === 'fullscreen') {\r\n yield put({\r\n type: layoutActions.SET_COLUMNS,\r\n payload: {\r\n columns: 1\r\n }\t\r\n });\r\n }\r\n if(widgets.config.layout.value === 'bigsmall') {\r\n yield put({\r\n type: layoutActions.SET_COLUMNS,\r\n payload: {\r\n columns: 2\r\n }\t\r\n });\r\n }\r\n if(widgets.config.layout.value === '3split') {\r\n yield put({\r\n type: layoutActions.SET_COLUMNS,\r\n payload: {\r\n columns: 3\r\n }\t\r\n });\r\n }\r\n delete widgets.config.layout;\r\n }\r\n if (window.tenantConfig.common) {\r\n\r\n widgets.config.left.push({\r\n component: \"Apps\",\r\n apiUrl: \"/application/list\",\r\n title: \"\"\r\n })\r\n\r\n widgets.config.center.push({\r\n component: \"MultiNews\",\r\n linkTitle: \"meer\",\r\n handleTitleInWidget: true,\r\n title: \"Nieuws\",\r\n noTitle: true\r\n })\r\n\r\n //widgets.config.center.push({\r\n // component: \"MultiFeed\",\r\n // linkTitle: \"meer\",\r\n // handleTitleInWidget: true,\r\n // title: \"Feeds\",\r\n // noTitle: true\r\n //})\r\n\r\n\r\n //widgets.config.center.push({\r\n // component: \"ITNews\",\r\n // linkTitle: \"meer\",\r\n // title: \"IT Nieuws\"\r\n //})\r\n\r\n widgets.config.center.push({\r\n component: \"MultiBlog\",\r\n linkTitle: \"meer\",\r\n handleTitleInWidget: true,\r\n title: \"Blogs\",\r\n noTitle: true\r\n })\r\n\r\n widgets.config.center.push({\r\n component: \"People\",\r\n linkTitle: \"meer\",\r\n title: \"Je collega's\",\r\n\r\n })\r\n\r\n widgets.config.right.push({\r\n \"component\": \"CustomButton\",\r\n \"title\": \"Webinar - Stop een cyberaanval met micro netwerk segmentatie\",\r\n \"linkUrl\": \"https://www.avantage.nl/webinar-netwerksegmentatie/?utm_source=ontdekgobanner&utm_medium=email&utm_campaign=webinar-netwerksegmentatie&utm_content=handtekening\",\r\n \"backgroundImage\": \"https://www.avantage.nl/wp-content/uploads/2020/06/Unknown-32.jpeg\",\r\n \"noTitle\": true\r\n })\r\n\r\n //widgets.config.right.push({\r\n // component : \"LinkList\",\r\n // title: \"Links\",\r\n // linkList : [\r\n // {\r\n // \"title\" : \"Vrij vragen\",\r\n // \"url\" : \"https://www.avantage.nl\",\r\n // \"target\" : \"_BLANK\"\r\n // },\r\n // {\r\n // \"title\" : \"Intranet\",\r\n // \"url\" : \"https://www.avantage.nl\",\r\n // \"target\" : \"_BLANK\"\r\n // },\r\n // {\r\n // \"title\" : \"Ziek melden\",\r\n // \"url\" : \"https://www.avantage.nl\",\r\n // \"target\" : \"_BLANK\"\r\n // },\r\n // {\r\n // \"title\" : \"Belangrijk\",\r\n // \"url\" : \"https://www.avantage.nl\",\r\n // \"target\" : \"_BLANK\"\r\n // },\r\n // {\r\n // \"title\" : \"Nieuws\",\r\n // \"url\" : \"https://www.avantage.nl\",\r\n // \"target\" : \"_BLANK\"\r\n // },\r\n // {\r\n // \"title\" : \"Corona update\",\r\n // \"url\" : \"https://www.avantage.nl\",\r\n // \"target\" : \"_BLANK\"\r\n // },\r\n // {\r\n // \"title\" : \"Wachtwoord reset\",\r\n // \"url\" : \"https://www.avantage.nl\",\r\n // \"target\" : \"_BLANK\"\r\n // }\r\n // ]\r\n //})\r\n\r\n //widgets.config.right.push({\r\n // component: \"Yammer\",\r\n // linkTitle: \"meer\",\r\n // title: \"test\"\r\n //})\r\n\r\n widgets.config.right.push({\r\n component: \"EventsCommon\",\r\n linkTitle: \"meer\",\r\n title: \"Evenementen\",\r\n handleTitleInWidget: true,\r\n noTitle: true\r\n })\r\n\r\n widgets.config.right.push({\r\n component: \"Documents\",\r\n linkTitle: \"meer\",\r\n title: \"Documenten\"\r\n })\r\n }\r\n\r\n let locale = yield select(getLocale);\r\n\r\n if (widgets) {\r\n window.allowCreateTiles = false;\r\n let hasGo = false\r\n for (let property in widgets.config) {\r\n if (widgets.config.hasOwnProperty(property)) {\r\n \r\n for (let item of widgets.config[property]) {\r\n if (item == null) continue;\r\n // if (item.component == \"Apps\") {\r\n // item.title = \"Applicaties\";\r\n // }\r\n if(item.component === 'Apps' && item.title === \"\" && item.apiUrl === \"/application/list\") window.allowCreateTiles = true;\r\n console.log(\"item widget\",item)\r\n if (item.component === 'News' || item.component === 'Blog' || item.component === 'MultiNews' || item.component === 'MultiBlog' || item.component === 'EventsCommon' || item.component === 'Events' || item.component === 'MultiShout' || item.component === 'MultiEvent' || item.component == \"Apps\" || item.component == \"WorkplaceBuddy\") {\r\n item.handleTitleInWidget = true;\r\n }\r\n if(item.sources) {\r\n item.sources.forEach((source, index) => {\r\n if(source.source == \"go\" && source.url) {\r\n hasGo = true;\r\n }\r\n })\r\n }\r\n }\r\n }\r\n }\r\n if(window.tenantConfig.common) {\r\n hasGo = true;\r\n }\r\n yield put({\r\n type: actions.SET_HAS_GO_WIDGET,\r\n payload: hasGo\r\n });\r\n yield activateClients(widgets);\r\n yield put({\r\n type: actions.SET_WIDGETS,\r\n payload: widgets.config\r\n });\r\n }\r\n });\r\n}\r\n\r\n\r\nexport function* getWidget() {\r\n\r\n}\r\n\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(fetchUserWidgets),\r\n ]);\r\n}\r\n","\r\nexport const excludeAppsFromList = (userProfile, apps) => {\r\n let newApps = [];\r\n\r\n if (!userProfile.hasOfficeSubscription) {\r\n let noOfficeApps = apps.filter(function (item) { return item.type !== \"Office\" })\r\n newApps = newApps.concat(noOfficeApps);\r\n }\r\n\r\n // -- it is possible that a user has all permissions so no concat is being done, we just override the newApps variable\r\n if (newApps.length === 0)\r\n newApps = apps;\r\n\r\n return newApps;\r\n};\r\n\r\n\r\n","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport userActions from '../user/actions';\r\nimport { toast } from 'react-toastify';\r\nimport { checkIfClaim } from '../../helpers/functions';\r\nimport { excludeAppsFromList } from '../../helpers/apps';\r\nimport { getGOClient, getLiquitClient, getUserProfile, getUserProfileSettingData, getGraphClient } from '../selectors'\r\n\r\nexport function* getApps() {\r\n yield takeEvery(actions.GET_APPS, function* (action) {\r\n\r\n const Client = yield select(getGOClient);\r\n const GraphClient = yield select(getGraphClient);\r\n const UserProfile = yield select(getUserProfile);\r\n\r\n if (!Client) return;\r\n\r\n try {\r\n let apps = [];\r\n\r\n if (window.tenantConfig.liquit && window.tenantConfig.liquit !== '' && window.tenantConfig.liquitID !== '') {\r\n let access = yield checkIfLiquitClaim(GraphClient,UserProfile.claims);\r\n if (!access) {\r\n apps = yield Client.api(action.payload.apiUrl); //no Liquit access\r\n } else {\r\n console.log('Fetching Liquit token....'); \r\n\r\n const LiquitClient = yield select(getLiquitClient); \r\n let token = yield LiquitClient.getToken();\r\n if (token == null) console.log('error no token found');\r\n\r\n yield startLiquit(UserProfile.userPrincipalName, function () { console.log('Session has expired'); }, token).then(async () => {\r\n apps = await getLiquitList(UserProfile.userPrincipalName);\r\n\r\n await put({\r\n type: actions.SET_APPS,\r\n payload: {\r\n [!action.payload.category ? 'default' : action.payload.category]: apps\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n //fallback\r\n if(action.payload) {\r\n if (window.tenantConfig.liquit == null || window.tenantConfig.liquit === '') {\r\n apps = yield Client.api(action.payload.apiUrl);\r\n }\r\n\r\n if (apps == null || !apps || apps === []) return;\r\n\r\n\r\n // -- maybe we need to exclude some apps\r\n apps = excludeAppsFromList(UserProfile, apps);\r\n\r\n yield put({\r\n type: actions.SET_APPS,\r\n payload: {\r\n [!action.payload.category ? 'default' : action.payload.category]: apps\r\n }\r\n });\r\n }\r\n }\r\n catch (error) {\r\n console.error(error);\r\n }\r\n\r\n\r\n });\r\n}\r\n\r\nconst checkIfLiquitClaim = async (Client,claims) => {\r\n if (window.tenantConfig.liquitClaims == null || window.tenantConfig.liquitClaims === '' || window.tenantConfig.liquitClaims === '[\"\"]') return true;\r\n let array = window.tenantConfig.liquitClaims;\r\n console.log('LiquitClaims: ', array);\r\n if (typeof array === 'string') array = JSON.parse(window.tenantConfig.liquitClaims);\r\n\r\n if (Array.isArray(array)) {\r\n for (let claim of array) {\r\n const hasRights = await Client.api(`/me/memberOf/microsoft.graph.group?$filter=id eq '${claim}'`);\r\n if (hasRights != null && hasRights.value.find(g => g.id == claim) != null) return true;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nconst startLiquit = (userPrincipal, relogin, token) => new Promise(async (resolve, reject) => {\r\n try {\r\n //if (window.Liquit.Session.ID == null) {\r\n window.Liquit.Initialize(window.tenantConfig.liquit, {\r\n version: 3,\r\n relogin: relogin,\r\n token: token\r\n });\r\n let liquitToken = await startSSO(userPrincipal, null, token);\r\n resolve(liquitToken);\r\n // }\r\n //resolve();\r\n } catch (error) {\r\n resolve();\r\n }\r\n});\r\n\r\nconst startSSO = (userPrincipalName, action, token) => new Promise((resolve, reject) => {\r\n try {\r\n window.Liquit.SSO({\r\n username: userPrincipalName,\r\n identitySource: (window.tenantConfig.clientId == \"5b1ee7fe-b3b5-4864-902c-9aba578cff6c\" ? 'Ontdek365' : \"Azure AD\"),\r\n token: token\r\n }, function (liquitToken, fault) {\r\n\r\n if (liquitToken == null) {\r\n let error = \"\";\r\n if(window.userSettings?.locale === \"nl\") {\r\n error = \"Liquit SSO inloggen is niet gelukt, token was leeg\"\r\n } else {\r\n error = \"Liquit SSO login failed, token was empty\"\r\n }\r\n console.log(error);\r\n toast(error, {autoClose: 1000*60*60*24});\r\n resolve(null);\r\n }\r\n\r\n // Check if authentication failed.\r\n if (fault != null) {\r\n //reject('Error ' + fault.code + ': ' + fault.message);\r\n resolve(null);\r\n }\r\n\r\n if (action != null) {\r\n action();\r\n }\r\n\r\n\r\n resolve(liquitToken);\r\n });\r\n\r\n } catch (error) { resolve(null); }\r\n});\r\n\r\n\r\nconst getLiquitList = (userPrincipalName) => new Promise((resolve, reject) => {\r\n window.Liquit.Applications.List({ sort: 1 }, function (fault, result) {\r\n\r\n // Check if the request failed.\r\n if (fault != null) {\r\n //alert('Error ' + fault.code + ': ' + fault.message);\r\n reject('Error ' + fault.code + ': ' + fault.message);\r\n }\r\n resolve(result.map(a => { return { ...a, image: a.icon, offlineLink: true } }));\r\n });\r\n});\r\n\r\n\r\nexport function* getLiquitApps() {\r\n yield takeEvery(actions.GET_LIQUIT_APPS, function* (action) {\r\n\r\n if (window.Liquit == null || window.Liquit.Session == null || window.Liquit.Session.ID == null) return;\r\n\r\n try {\r\n\r\n const getCatelog = () => new Promise(async (resolve, reject) => {\r\n\r\n //let sessionId = await startSSO(state.User.profile.userPrincipalName);\r\n window.Liquit.Catalog.List(function (fault, result) {\r\n\r\n // Check if the request failed.\r\n if (fault != null) {\r\n reject('Error ' + fault.code + ': ' + fault.message);\r\n }\r\n\r\n // The result object will contain an array of all catalog items.\r\n resolve(result);\r\n\r\n });\r\n });\r\n\r\n let result = yield getCatelog();\r\n\r\n yield put({\r\n type: actions.SET_LIQUIT_APPS,\r\n payload: result\r\n });\r\n } catch (error) { }\r\n });\r\n}\r\n\r\nexport function* setViewedItems() {\r\n yield takeEvery(actions.SET_VIEWED, function* (action) {\r\n if (action.payload == null) return;\r\n yield put({\r\n type: userActions.UPDATE_USER_SETTINGS,\r\n payload: {\r\n value: action.payload,\r\n setting: 'Tiles'\r\n }\r\n });\r\n\r\n });\r\n}\r\n\r\nexport function* removeViewedItems() {\r\n yield takeEvery(actions.REMOVE_VIEWED, function* (action) {\r\n if (action.payload == null) return;\r\n const userProfileData = yield select(getUserProfileSettingData); \r\n if(userProfileData?.settings?.viewedTiles) {\r\n const newViewedTiles = userProfileData?.settings?.viewedTiles.filter(tile => {\r\n tile.id != action.payload\r\n })\r\n yield put({\r\n type: userActions.UPDATE_USER_SETTINGS,\r\n payload: {\r\n value: newViewedTiles,\r\n setting: 'Tiles'\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getApps),\r\n fork(getLiquitApps),\r\n fork(setViewedItems),\r\n fork(removeViewedItems)\r\n ]);\r\n}\r\n","import { all, fork, takeEvery, select, put } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport { getGraphClient } from '../selectors';\r\n\r\n\r\nexport function* getRecentDocumentsForApp() {\r\n yield takeEvery(actions.GET_RECENT_DOCUMENTS_FOR_APP, function* (action) {\r\n\r\n\r\n const Client = yield select(getGraphClient);\r\n\r\n if (!Client) return;\r\n\r\n const recentDocuments = yield Client.api('/me/drive/recent?$orderby=lastModifiedDateTime desc&$top=2000');\r\n\r\n yield put({\r\n type : actions.SET_RECENT_DOCUMENTS_LOADING,\r\n payload : true\r\n })\r\n yield put({\r\n type : actions.SET_RECENT_DOCUMENTS_FOR_APP,\r\n payload : []\r\n })\r\n let documentsForResult = [];\r\n if ( recentDocuments.value ) {\r\n switch ( action.payload ) {\r\n case 'Word':\r\n documentsForResult = recentDocuments.value.filter((item) => (item.name.includes('.doc')));\r\n break;\r\n case 'Excel':\r\n documentsForResult = recentDocuments.value.filter((item) => (item.name.includes('.xls')));\r\n break;\r\n case 'PowerPoint':\r\n documentsForResult = recentDocuments.value.filter((item) => (item.name.includes('.ppt')));\r\n break;\r\n }\r\n\r\n yield put({\r\n type : actions.SET_RECENT_DOCUMENTS_FOR_APP,\r\n payload : documentsForResult\r\n })\r\n\r\n yield put({\r\n type : actions.SET_RECENT_DOCUMENTS_LOADING,\r\n payload : false\r\n })\r\n } else {\r\n yield put({\r\n type : actions.SET_RECENT_DOCUMENTS_LOADING,\r\n payload : false\r\n })\r\n }\r\n\r\n\r\n });\r\n}\r\n\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getRecentDocumentsForApp),\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport userActions from '../user/actions';\r\nimport authActions from '../auth/actions';\r\nimport moment from 'moment';\r\nimport { getGraphClient } from '../selectors';\r\n\r\nexport function* bootTipsTricks() {\r\n yield takeEvery(authActions.READY_FOR_BOOT, function* (action) {\r\n yield put({\r\n type : actions.GET_TIPS_TRICKS\r\n })\r\n })\r\n}\r\n\r\nexport function* getTipsTricks() {\r\n yield takeEvery(actions.GET_TIPS_TRICKS, function* (action) {\r\n try {\r\n const response = yield fetch('https://avantage.nl/wp-json/tipstricks/all');\r\n const data = yield response.json();\r\n\r\n if ( data ) {\r\n yield put({\r\n type : actions.SET_TIPS_TRICKS,\r\n payload : data\r\n })\r\n }\r\n } catch ( e ) {\r\n console.log(e);\r\n }\r\n\r\n });\r\n\r\n}\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getTipsTricks),\r\n fork(bootTipsTricks)\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport userActions from '../user/actions';\r\nimport authActions from '../auth/actions';\r\nimport moment from 'moment';\r\nimport { getGraphClient } from '../selectors';\r\n\r\nexport function* bootSiteKnowledge() {\r\n yield takeEvery(authActions.READY_FOR_BOOT, function* (action) {\r\n yield put({\r\n type : actions.GET_SITE_KNOWLEDGE\r\n })\r\n })\r\n}\r\n\r\nexport function* getSiteKnowledge() {\r\n yield takeEvery(actions.GET_SITE_KNOWLEDGE, function* (action) {\r\n try {\r\n const response = yield fetch('https://avantage.nl/wp-json/knowledge/all');\r\n const data = yield response.json();\r\n\r\n if ( data ) {\r\n yield put({\r\n type : actions.SET_SITE_KNOWLEDGE,\r\n payload : data\r\n })\r\n }\r\n } catch ( e ) {\r\n console.log(e);\r\n }\r\n\r\n });\r\n\r\n}\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getSiteKnowledge),\r\n fork(bootSiteKnowledge)\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport localforage from 'localforage';\r\nimport messageActions from '../../message/actions';\r\nimport store from \"../../store\";\r\nimport { dataURItoBlob, fileToBase64, blobToBase64 } from '../../../helpers/functions';\r\nimport { getCommonNewsItems, getGOClient, getTenantNewsItems, getAuth } from '../../selectors'\r\n\r\nexport function* getTenantNews() {\r\n yield takeEvery(actions.GET_TENANT_NEWS, function* (action) {\r\n\r\n const tenantNewsItems = yield select(getTenantNewsItems);\r\n //const newsItems = yield select(getCommonNewsItems);\r\n const Client = yield select(getGOClient);\r\n if (!Client) return;\r\n\r\n const news = yield Client.api(\"/common/news/tenant\");\r\n\r\n if (news == null || !news) return;\r\n\r\n\r\n if (news.length == 0 || (news.length && ((tenantNewsItems.length === 0) || (tenantNewsItems && tenantNewsItems[0].Id !== news[0].id)))) {\r\n \r\n let oldNews = tenantNewsItems.filter(n => !news.find(nn => nn.id == n.id));\r\n if (oldNews != null && oldNews.length > 0) {\r\n //yield newsItems.forEach(n => {\r\n for (let n of oldNews) {\r\n yield localforage.removeItem(n.id);\r\n }\r\n }\r\n\r\n for (let n of news) {\r\n try {\r\n let blob = dataURItoBlob(n.image);\r\n if (blob == null) continue; // do nothing, maybe request failed\r\n yield localforage.setItem(n.id, blob);\r\n delete n.image;\r\n } catch {\r\n delete n.image;\r\n }\r\n }\r\n\r\n yield put({\r\n type: actions.SET_TENANT_NEWS,\r\n payload: news\r\n });\r\n }\r\n\r\n\r\n });\r\n}\r\n\r\n\r\nexport function* deleteNews() {\r\n yield takeEvery(actions.DELETE_NEWS_ITEM, function* (action) {\r\n\r\n const GoClient = yield select(getGOClient);\r\n if (!GoClient) return;\r\n\r\n const result = yield GoClient.delete('/common/news?id=' + action.payload, action.payload, true);\r\n if (result) {\r\n if (result.ok) {\r\n yield put({\r\n type: actions.GET_TENANT_NEWS\r\n })\r\n\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Nieuwsitem verwijderd',\r\n type: 'success'\r\n }\r\n });\r\n\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Er is iets misgegaan',\r\n type: 'error'\r\n }\r\n });\r\n }\r\n store.history.push('/self-service/nieuws');\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Er is iets misgegaan',\r\n type: 'error'\r\n }\r\n });\r\n }\r\n\r\n });\r\n}\r\n\r\nexport function* postNews() {\r\n yield takeEvery(actions.POST_COMMON_NEWS, function* (action) {\r\n\r\n const Auth = yield select(getAuth);\r\n const GoClient = yield select(getGOClient);\r\n if (!GoClient) return;\r\n\r\n let formFields = {\r\n title: action.payload.title,\r\n link: action.payload.link,\r\n authorName: Auth.authProvider.account.name,\r\n authorId: Auth.authProvider.account.localAccountId,\r\n date: new Date(action.payload.date).toISOString(),\r\n content: action.payload.content\r\n\r\n }\r\n let method = 'POST';\r\n if (action.payload.file) {\r\n const base64 = yield fileToBase64(action.payload.file[0]);\r\n\r\n formFields = {\r\n ...formFields,\r\n image: base64\r\n }\r\n }\r\n\r\n if (action.payload.id) {\r\n method = 'PUT';\r\n formFields = {\r\n ...formFields,\r\n id: action.payload.id,\r\n authorName: action.payload.authorName,\r\n authorId: action.payload.authorId\r\n }\r\n\r\n if (!action.payload.file && action.payload.currentImage) {\r\n const base64 = yield blobToBase64(action.payload.currentImage);\r\n\r\n formFields = {\r\n ...formFields,\r\n image: base64\r\n }\r\n }\r\n }\r\n\r\n let result = false;\r\n if (method === 'POST') {\r\n result = yield GoClient.post('/common/news', formFields, true);\r\n } else {\r\n result = yield GoClient.put('/common/news', formFields, true);\r\n }\r\n if (result.ok) {\r\n yield put({\r\n type: actions.GET_TENANT_NEWS\r\n })\r\n if (method === 'PUT') {\r\n\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Nieuwsitem geupdated',\r\n type: 'success'\r\n }\r\n });\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Nieuwsitem toegevoegd',\r\n type: 'success'\r\n }\r\n });\r\n }\r\n store.history.push('/self-service/nieuws');\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Er is iets misgegaan',\r\n type: 'error'\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(postNews),\r\n fork(getTenantNews),\r\n fork(deleteNews),\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport localforage from 'localforage';\r\nimport { getGOClient, getITNewsItems } from '../../selectors';\r\nimport { dataURItoBlob } from '../../../helpers/functions';\r\n\r\nexport function* getITNews() {\r\n yield takeEvery(actions.GET_IT_NEWS, function* (action) {\r\n yield put({\r\n type: actions.COMMON_IT_NEWS_REQUEST_COMPLETED,\r\n payload: false\r\n });\r\n const Client = yield select(getGOClient);\r\n const itNewsItems = yield select(getITNewsItems);\r\n\r\n if (!Client) return;\r\n const news = yield Client.api(\"/common/itnews/list\");\r\n\r\n if (news == null || !news) return;\r\n\r\n news.map((n, i) => {\r\n if (n.image) {\r\n let blob = dataURItoBlob(n.image);\r\n let objectUrl = URL.createObjectURL(blob);\r\n n.image = objectUrl;\r\n n.blob = blob;\r\n }\r\n return true;\r\n });\r\n\r\n if (news.lenght == 0) {\r\n yield put({\r\n type: actions.SET_IT_NEWS,\r\n payload: []\r\n });\r\n }\r\n\r\n\r\n if (news.length && ((itNewsItems != null || itNewsItems.length === 0) || (itNewsItems && itNewsItems[0].Id !== news[0].id))) {\r\n\r\n //if (itNewsItems) {\r\n // for (let n of itNewsItems) {\r\n // yield localforage.removeItem(n.id);\r\n // }\r\n //}\r\n\r\n let old = itNewsItems.filter(n => !news.find(nn => nn.id == n.id));\r\n if (old != null && old.length > 0) {\r\n //yield newsItems.forEach(n => {\r\n for (let n of old) {\r\n yield localforage.removeItem(n.id);\r\n }\r\n }\r\n\r\n for (let n of news) {\r\n if (n.blob == null) continue; // do nothing, maybe request failed\r\n yield localforage.setItem(n.id, n.blob);\r\n delete n.image;\r\n delete n.blob;\r\n }\r\n\r\n yield put({\r\n type: actions.SET_IT_NEWS,\r\n payload: news\r\n });\r\n }\r\n\r\n yield put({\r\n type: actions.COMMON_IT_NEWS_REQUEST_COMPLETED,\r\n payload: true\r\n });\r\n });\r\n}\r\n\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getITNews)\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport localforage from 'localforage';\r\nimport { getGOClient, getLearningItems } from '../../selectors';\r\nimport { dataURItoBlob } from '../../../helpers/functions';\r\n\r\nexport function* getLearning() {\r\n yield takeEvery(actions.GET_LEARNING, function* (action) {\r\n yield put({\r\n type: actions.LEARNING_REQUEST_COMPLETED,\r\n payload: false\r\n });\r\n const Client = yield select(getGOClient);\r\n //const cachedItems = yield select(getLearningItems);\r\n\r\n if (!Client) return;\r\n const items = yield Client.api(\"/learning/list\");\r\n if (items == null || !items) return;\r\n\r\n //if (items.length && ((cachedItems != null && cachedItems.length === 0) || (cachedItems && cachedItems[0].Id !== items[0].id))) {\r\n yield put({\r\n type: actions.SET_LEARNING,\r\n payload: items\r\n });\r\n //}\r\n\r\n yield put({\r\n type: actions.LEARNING_REQUEST_COMPLETED,\r\n payload: true\r\n });\r\n });\r\n}\r\n\r\nexport function* getRandomLearningPaths() {\r\n yield takeEvery(actions.GET_RANDOM_LEARNINGPATHS, function* (action) {\r\n yield put({\r\n type: actions.LEARNING_REQUEST_COMPLETED,\r\n payload: false\r\n });\r\n const Client = yield select(getGOClient);\r\n const cachedItems = yield select(getRandomLearningPaths);\r\n\r\n if (!Client) return;\r\n const items = yield Client.api(`/learning/randomlearningpaths?learningId=${action.payload}`);\r\n if (items == null || !items) return;\r\n\r\n if (items.length && (cachedItems[0] == null || (cachedItems != null && cachedItems.length === 0) || (cachedItems[0] != null && cachedItems[0].uid !== items[0].uid))) {\r\n\r\n yield put({\r\n type: actions.SET_RANDOM_LEARNINGPATHS,\r\n payload: items\r\n });\r\n }\r\n\r\n yield put({\r\n type: actions.LEARNING_REQUEST_COMPLETED,\r\n payload: true\r\n });\r\n });\r\n}\r\n\r\nexport function* getLearningPaths() {\r\n yield takeEvery(actions.GET_LEARNINGPATHS, function* (action) {\r\n yield put({\r\n type: actions.LEARNING_REQUEST_COMPLETED,\r\n payload: false\r\n });\r\n const Client = yield select(getGOClient);\r\n const cachedItems = yield select(getLearningPaths);\r\n\r\n if (!Client) return;\r\n\r\n const items = yield Client.post(`/learning/preferencelearningpaths`, action.payload);\r\n if (items == null) return;\r\n\r\n if (!items.length || (items.length && (cachedItems[0] == null || (cachedItems != null && cachedItems.length === 0) || (cachedItems[0] != null && cachedItems[0].uid !== items[0].uid)))) {\r\n yield put({\r\n type: actions.SET_LEARNINGPATHS,\r\n payload: items\r\n });\r\n }\r\n\r\n yield put({\r\n type: actions.LEARNING_REQUEST_COMPLETED,\r\n payload: true\r\n });\r\n });\r\n}\r\n\r\nexport function* getRoles() {\r\n yield takeEvery(actions.GET_ROLES, function* (action) {\r\n yield put({\r\n type: actions.LEARNING_REQUEST_COMPLETED,\r\n payload: false\r\n });\r\n const Client = yield select(getGOClient);\r\n const cachedItems = yield select(getRoles);\r\n\r\n if (!Client) return;\r\n const items = yield Client.api(`/learning/roles?learningId=${action.payload}`);\r\n if (items == null || !items) return;\r\n\r\n if (items.length && (cachedItems[0] == null || (cachedItems != null && cachedItems.length === 0) || (cachedItems[0] != null && cachedItems[0].uid !== items[0].uid))) {\r\n yield put({\r\n type: actions.SET_ROLES,\r\n payload: items\r\n });\r\n }\r\n\r\n yield put({\r\n type: actions.LEARNING_REQUEST_COMPLETED,\r\n payload: true\r\n });\r\n });\r\n}\r\n\r\nexport function* getProducts() {\r\n yield takeEvery(actions.GET_PRODUCTS, function* (action) {\r\n yield put({\r\n type: actions.LEARNING_REQUEST_COMPLETED,\r\n payload: false\r\n });\r\n const Client = yield select(getGOClient);\r\n const cachedItems = yield select(getProducts);\r\n\r\n if (!Client) return;\r\n const items = yield Client.api(`/learning/products?learningId=${action.payload}`);\r\n if (items == null || !items) return;\r\n\r\n if (items.length && (cachedItems[0] == null || (cachedItems != null && cachedItems.length === 0) || (cachedItems[0] != null && cachedItems[0].uid !== items[0].uid))) {\r\n yield put({\r\n type: actions.SET_PRODUCTS,\r\n payload: items\r\n });\r\n }\r\n\r\n yield put({\r\n type: actions.LEARNING_REQUEST_COMPLETED,\r\n payload: true\r\n });\r\n });\r\n}\r\n\r\nexport function* getLevels() {\r\n yield takeEvery(actions.GET_LEVELS, function* (action) {\r\n yield put({\r\n type: actions.LEARNING_REQUEST_COMPLETED,\r\n payload: false\r\n });\r\n const Client = yield select(getGOClient);\r\n const cachedItems = yield select(getLevels);\r\n\r\n if (!Client) return;\r\n const items = yield Client.api(`/learning/levels?learningId=${action.payload}`);\r\n if (items == null || !items) return;\r\n\r\n if (items.length && (cachedItems[0] == null || (cachedItems != null && cachedItems.length === 0) || (cachedItems[0] != null && cachedItems[0].uid !== items[0].uid))) {\r\n yield put({\r\n type: actions.SET_LEVELS,\r\n payload: items\r\n });\r\n }\r\n\r\n yield put({\r\n type: actions.LEARNING_REQUEST_COMPLETED,\r\n payload: true\r\n });\r\n });\r\n}\r\n\r\nexport function* getModule() {\r\n yield takeEvery(actions.GET_MODULE, function* (action) {\r\n yield put({\r\n type: actions.LEARNING_REQUEST_COMPLETED,\r\n payload: false\r\n });\r\n const Client = yield select(getGOClient);\r\n //const cachedItems = yield select(getModule);\r\n\r\n if (!Client) return;\r\n const items = yield Client.api(`/learning/module?learningId=${action.payload.learningId}&moduleId=${action.payload.moduleId}`);\r\n if (items == null || !items) return;\r\n\r\n //if (items.length && ((cachedItems != null && cachedItems.length === 0) || (cachedItems && cachedItems[0].id !== items[0].id))) {\r\n yield put({\r\n type: actions.SET_MODULE,\r\n payload: items\r\n });\r\n //}\r\n\r\n yield put({\r\n type: actions.LEARNING_REQUEST_COMPLETED,\r\n payload: true\r\n });\r\n });\r\n}\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getLearning),\r\n fork(getRandomLearningPaths),\r\n fork(getLearningPaths),\r\n fork(getRoles),\r\n fork(getProducts),\r\n fork(getLevels),\r\n fork(getModule),\r\n ]);\r\n}\r\n","import { all, fork, takeEvery, select, put } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport { getGOClient, getAuth, getTenantEventsItems, getCommonEventsItems } from '../../selectors';\r\nimport messageActions from '../../message/actions';\r\nimport localforage from 'localforage';\r\nimport store from \"../../store\";\r\nimport { fileToBase64, blobToBase64 } from '../../../helpers/functions';\r\n\r\n\r\n//export function* setActiveCommonEvent() {\r\n// yield takeEvery(actions.SET_ACTIVE_COMMON_EVENT, function* (action) {\r\n// yield put({\r\n// type: slideOutActions.SET_ACTIVE_SLIDEOUT,\r\n// payload: 'CommonEvent'\r\n// });\r\n// });\r\n//}\r\n\r\nexport function* getCommonEvents() {\r\n yield takeEvery(actions.GET_COMMON_EVENTS, function* (action) {\r\n\r\n yield put({\r\n type: actions.COMMON_EVENTS_REQUEST_COMPLETED,\r\n payload: false\r\n });\r\n const Client = yield select(getGOClient);\r\n\r\n if (!Client) return;\r\n\r\n const eventResponse = yield Client.api('/common/events/list');\r\n\r\n yield put({\r\n type: actions.COMMON_EVENTS_REQUEST_COMPLETED,\r\n payload: true\r\n });\r\n\r\n yield put({\r\n type: actions.SET_COMMON_EVENTS,\r\n payload: eventResponse\r\n });\r\n\r\n });\r\n}\r\n\r\nexport function* getTenantEvents() {\r\n yield takeEvery(actions.GET_TENANT_EVENTS, function* (action) {\r\n\r\n const tenantEventsItems = yield select(getTenantEventsItems);\r\n const eventsItems = yield select(getCommonEventsItems);\r\n const Client = yield select(getGOClient);\r\n\r\n if (!Client) return;\r\n const events = yield Client.api(\"/common/events/tenant\");\r\n\r\n if (events == null || !events) return;\r\n\r\n\r\n if (events.length == 0 || (events.length && ((tenantEventsItems.length === 0) || (tenantEventsItems && tenantEventsItems[0].Id !== events[0].id)))) {\r\n //localforage.clear(); //clear local storage\r\n\r\n if (tenantEventsItems) {\r\n if ( eventsItems?.length ) {\r\n //yield eventsItems.forEach(n => {\r\n for (let n of eventsItems) {\r\n yield localforage.removeItem(n.id);\r\n }\r\n }\r\n\r\n }\r\n\r\n for (let n of events) {\r\n try {\r\n let blob = dataURItoBlob(n.image);\r\n yield localforage.setItem(n.id, blob);\r\n delete n.image;\r\n } catch {\r\n delete n.image;\r\n }\r\n }\r\n\r\n yield put({\r\n type: actions.SET_TENANT_EVENTS,\r\n payload: events\r\n });\r\n }\r\n\r\n\r\n });\r\n}\r\n\r\n\r\nexport function* postEvent() {\r\n yield takeEvery(actions.POST_COMMON_EVENT, function* (action) {\r\n\r\n const Auth = yield select(getAuth);\r\n const GoClient = yield select(getGOClient);\r\n if (!GoClient) return;\r\n\r\n let formFields = {\r\n title: action.payload.title,\r\n link: action.payload.link,\r\n authorName: Auth.authProvider.account.name,\r\n authorId: Auth.authProvider.account.localAccountId,\r\n startDate: new Date(action.payload.startDate).toISOString(),\r\n endDate: new Date(action.payload.endDate).toISOString(),\r\n content: action.payload.content\r\n\r\n }\r\n let method = 'POST';\r\n if (action.payload.file) {\r\n const base64 = yield fileToBase64(action.payload.file[0]);\r\n\r\n formFields = {\r\n ...formFields,\r\n image: base64\r\n }\r\n }\r\n\r\n if (action.payload.id) {\r\n method = 'PUT';\r\n formFields = {\r\n ...formFields,\r\n id: action.payload.id,\r\n authorName: action.payload.authorName,\r\n authorId: action.payload.authorId\r\n }\r\n\r\n if (!action.payload.file && action.payload.currentImage) {\r\n const base64 = yield blobToBase64(action.payload.currentImage);\r\n\r\n formFields = {\r\n ...formFields,\r\n image: base64\r\n }\r\n }\r\n }\r\n\r\n let result = false;\r\n if (method === 'POST') {\r\n result = yield GoClient.post('/common/events', formFields, true);\r\n } else {\r\n result = yield GoClient.put('/common/events', formFields, true);\r\n }\r\n if (result) {\r\n if (result.ok) {\r\n yield put({\r\n type: actions.GET_COMMON_EVENTS\r\n })\r\n if (method === 'PUT') {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Event geupdated',\r\n type: 'success'\r\n }\r\n });\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Event toegevoegd',\r\n type: 'success'\r\n }\r\n });\r\n }\r\n store.history.push('/self-service/event');\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Er is iets misgegaan',\r\n type: 'error'\r\n }\r\n });\r\n }\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Er is iets misgegaan',\r\n type: 'error'\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\n\r\nexport function* deleteEvents() {\r\n yield takeEvery(actions.DELETE_EVENTS_ITEM, function* (action) {\r\n\r\n const GoClient = yield select(getGOClient);\r\n\r\n const result = yield GoClient.delete('/common/events?id=' + action.payload, action.payload , true);\r\n\r\n if (result) {\r\n if (result.ok) {\r\n yield put({\r\n type: actions.GET_TENANT_EVENTS\r\n })\r\n\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Event verwijderd',\r\n type: 'success'\r\n }\r\n });\r\n store.history.push('/self-service/event');\r\n\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Er is iets misgegaan',\r\n type: 'error'\r\n }\r\n });\r\n }\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Er is iets misgegaan',\r\n type: 'error'\r\n }\r\n });\r\n }\r\n\r\n });\r\n}\r\n\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getCommonEvents),\r\n fork(getTenantEvents),\r\n fork(deleteEvents),\r\n fork(postEvent)\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport localforage from 'localforage';\r\nimport { getGOClient, getFaqsItems, getKnowledgeBaseItems } from '../selectors';\r\nimport { dataURItoBlob } from '../../helpers/functions';\r\n\r\nexport function* getFAQs() {\r\n yield takeEvery(actions.GET_FAQS, function* (action) {\r\n yield put({\r\n type: actions.FAQS_REQUEST_COMPLETED,\r\n payload: false\r\n });\r\n\r\n const Client = yield select(getGOClient);\r\n const items = yield select(getFaqsItems);\r\n\r\n if (!Client) return;\r\n const faqs = yield Client.api(\"/knowledgebase/faqs?take=40\");\r\n\r\n if (faqs == null || !faqs) return;\r\n\r\n\r\n if (faqs.length && ((items.length === 0) || (items && items[0].Id !== faqs[0].id))) {\r\n\r\n yield put({\r\n type: actions.SET_FAQS,\r\n payload: faqs\r\n });\r\n }\r\n\r\n yield put({\r\n type: actions.FAQS_REQUEST_COMPLETED,\r\n payload: true\r\n });\r\n });\r\n}\r\n\r\nexport function* getKnowledgeBases() {\r\n yield takeEvery(actions.GET_FAQS, function* (action) {\r\n yield put({\r\n type: actions.KNOWLEDGEBASES_REQUEST_COMPLETED,\r\n payload: false\r\n });\r\n\r\n const Client = yield select(getGOClient);\r\n const items = yield select(getKnowledgeBaseItems);\r\n\r\n if (!Client) return;\r\n const kbs = yield Client.api(\"/knowledgebase/list\");\r\n if (kbs == null || !kbs) return;\r\n\r\n if (kbs.length && ((items.length === 0) || (items && items[0].Id !== kbs[0].id))) {\r\n\r\n yield put({\r\n type: actions.SET_KNOWLEDGEBASES,\r\n payload: kbs\r\n });\r\n }\r\n\r\n yield put({\r\n type: actions.KNOWLEDGEBASES_REQUEST_COMPLETED,\r\n payload: true\r\n });\r\n });\r\n}\r\n\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getFAQs),\r\n fork(getKnowledgeBases)\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport userActions from '../../user/actions';\r\nimport { getGOClient, getUserProfileSettingData } from '../../selectors';\r\n\r\nexport function* getCalls() {\r\n yield takeEvery(actions.GET_CALLS, function* (action) {\r\n yield put({\r\n type : actions.CALLS_REQUEST_COMPLETD,\r\n payload : false\r\n })\r\n const Client = yield select(getGOClient);\r\n\r\n if (!Client) return;\r\n\r\n const calls = yield Client.api(\"/user/calls\");\r\n\r\n if (calls == null || !calls) return;\r\n\r\n //if (calls.length) { //&& ((state.Calls.items.length === 0) || (state.Calls.items && state.Calls.items[0].Id !== calls[0].id))) {\r\n yield put({\r\n type: actions.SET_CALLS,\r\n payload: calls\r\n });\r\n\r\n yield put({\r\n type : actions.CALLS_REQUEST_COMPLETD,\r\n payload : true\r\n })\r\n //Updating the calls information used for self service page\r\n const userProfileData = yield select(getUserProfileSettingData);\r\n let serviceRequests = userProfileData?.settings?.calls\r\n if(serviceRequests) {\r\n calls.forEach(call => {\r\n let index = serviceRequests.findIndex(serviceRequest => serviceRequest.callId === call.callId )\r\n if(index > -1) {\r\n if(serviceRequests[index].status === \"Geannuleerd\" && call.status === \"Afgesloten\") {\r\n serviceRequests[index].status = call.status; \r\n } else if(serviceRequests[index].status !== \"Geannuleerd\") {\r\n serviceRequests[index].status = call.status;\r\n }\r\n }\r\n });\r\n\r\n yield put({\r\n type: userActions.UPDATE_USER_SETTINGS,\r\n payload: {\r\n value: serviceRequests,\r\n setting: 'calls'\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getCalls)\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport messageActions from '../../message/actions';\r\nimport userActions from '../../user/actions';\r\nimport store from \"../../store\";\r\nimport { getUserRequest, getGOClient, getUserProfileSettingData, getUserProfile, getTenantNewsItems, getAuth } from '../../selectors'\r\n\r\nexport function* getUsersRequest() {\r\n yield takeEvery(actions.GET_USER_REQUEST, function* (action) {\r\n\r\n const userRequests = yield select(getUserRequest);\r\n const Client = yield select(getGOClient);\r\n if (!Client) return;\r\n const requests = null;\r\n // const requests = yield Client.api(\"/selfService/user/tenant\");\r\n\r\n if(requests == null | !requests) return;\r\n\r\n if (requests.length == 0 || (requests.length && ((userRequests.length === 0) || (userRequests && userRequests[0].Id !== requests[0].id)))) {\r\n\r\n yield put({\r\n type: actions.SET_USER_REQUEST,\r\n payload: requests\r\n });\r\n }\r\n });\r\n}\r\n\r\nfunction generateID() {\r\n return parseInt(Math.round(Math.random()*1000));\r\n}\r\n\r\nexport function* postUserRequest() {\r\n yield takeEvery(actions.POST_USER_REQUEST, function* (action) {\r\n const Auth = yield select(getAuth);\r\n const GoClient = yield select(getGOClient);\r\n const userProfile = yield(getUserProfile);\r\n //const userRequests = yield select(getUserRequest);\r\n if (!GoClient) return;\r\n\r\n let incidentRequest = {\r\n calltypeid: 10,\r\n subject: action.payload.title,\r\n body: action.payload.body,\r\n emotionscore: 0.0,\r\n sentiment: \"\",\r\n emailaddress: \"\",\r\n phonenumber: userProfile.mobilePhone ? userProfile.mobilePhone : '',\r\n }\r\n\r\n let formFields = {\r\n voornaam: action.payload.voornaam,\r\n tussenvoegsel: action.payload.tussenvoegsel,\r\n achternaam: action.payload.achternaam,\r\n afdeling: action.payload.afdeling,\r\n rol: action.payload.rol,\r\n emailadres: action.payload.emailadres,\r\n telefoonnummer: action.payload.telefoonnummer,\r\n functie: action.payload.functie,\r\n omschrijving: action.payload.omschrijving,\r\n datum: action.payload.datum,\r\n typeLicentie: action.payload.typeLicentie,\r\n activateDefender: action.payload.activateDefender,\r\n officeBackup: action.payload.officeBackup,\r\n addToGroups: action.payload.addToGroups\r\n\r\n }\r\n\r\n // if (action.payload.id) {\r\n // method = 'PUT';\r\n // formFields = {\r\n // ...formFields,\r\n // id: action.payload.id,\r\n // authorName: action.payload.authorName,\r\n // authorId: action.payload.authorId\r\n // }\r\n // }\r\n\r\n let result = false;\r\n\r\n result = yield GoClient.post('/app/incident/request', incidentRequest);\r\n //userRequests.push(formFields);\r\n let name = formFields.voornaam;\r\n if(formFields.tussenvoegsel) name += \" \" + formFields.tussenvoegsel;\r\n name += \" \" + formFields.achternaam;\r\n\r\n if (result) {\r\n const userProfileData = yield select(getUserProfileSettingData);\r\n let userRequests = userProfileData?.settings?.calls\r\n if(!userRequests) userRequests = [];\r\n userRequests.push({\r\n callId: result.callId,\r\n name: name,\r\n status: result.status,\r\n type: incidentRequest.calltypeid,\r\n typeDesc: \"Aanmaken\",\r\n creationDate: Date.now(),\r\n lastUpdate: Date.now(),\r\n request: \"UserRequest\",\r\n })\r\n yield put({\r\n type: userActions.UPDATE_USER_SETTINGS,\r\n payload: {\r\n value: userRequests,\r\n setting: 'calls'\r\n }\r\n });\r\n const requests = yield select(getUserRequest);\r\n let request = requests\r\n formFields['callId'] = result.callId\r\n request.push(formFields)\r\n yield put({\r\n type: actions.SET_USER_REQUEST,\r\n payload:request\r\n })\r\n // yield put({\r\n // type: actions.SET_USER_REQUEST,\r\n // payload:userRequest\r\n // })\r\n\r\n // yield put({\r\n // type: actions.GET_USER_REQUEST\r\n // })\r\n\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'User Request toegevoegd',\r\n type: 'success'\r\n }\r\n });\r\n\r\n store.history.push('/self-service/gebruiker');\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Er is iets misgegaan',\r\n type: 'error'\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function* updateUserRequest() {\r\n yield takeEvery(actions.UPDATE_USER_REQUEST, function* (action) {\r\n const Auth = yield select(getAuth);\r\n const GoClient = yield select(getGOClient);\r\n const userProfile = yield(getUserProfile);\r\n //const userRequests = yield select(getUserRequest);\r\n if (!GoClient) return;\r\n let incidentRequest = {\r\n callid: action.payload.id,\r\n subject: action.payload.payload.title,\r\n body: action.payload.payload.body,\r\n emotionscore: 0.0,\r\n sentiment: \"\",\r\n emailaddress: \"\",\r\n }\r\n\r\n let formFields = {\r\n voornaam: action.payload.voornaam,\r\n tussenvoegsel: action.payload.tussenvoegsel,\r\n achternaam: action.payload.achternaam,\r\n afdeling: action.payload.afdeling,\r\n rol: action.payload.rol,\r\n emailadres: action.payload.emailadres,\r\n telefoonnummer: action.payload.telefoonnummer,\r\n functie: action.payload.functie,\r\n omschrijving: action.payload.omschrijving,\r\n datum: action.payload.datum\r\n }\r\n \r\n //yield GoClient.post('/app/incident/action', incidentRequest);\r\n const userProfileData = yield select(getUserProfileSettingData);\r\n let rightsRequests = userProfileData?.settings?.calls\r\n let index = rightsRequests.findIndex(request => request.callId == incidentRequest.callid)\r\n\r\n let name = formFields.voornaam;\r\n if(formFields.tussenvoegsel) name += \" \" + formFields.tussenvoegsel;\r\n name += \" \" + formFields.achternaam;\r\n\r\n\r\n if(index > -1) {\r\n if(!rightsRequests[index]) rightsRequests = [];\r\n rightsRequests[index] = {\r\n ...rightsRequests[index],\r\n name: name,\r\n type: incidentRequest.calltypeid,\r\n lastUpdate: Date.now(),\r\n }\r\n yield put({\r\n type: userActions.UPDATE_USER_SETTINGS,\r\n payload: {\r\n value: rightsRequests,\r\n setting: 'calls'\r\n }\r\n });\r\n const requests = yield select(getUserRequest);\r\n let request = requests\r\n let index2 = request.findIndex(request => request.callId == incidentRequest.callid)\r\n request[index2] = formFields\r\n yield put({\r\n type: actions.SET_USER_REQUEST,\r\n payload:request\r\n })\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'User Request geupdated',\r\n type: 'success'\r\n }\r\n });\r\n store.history.push('/self-service/gebruiker');\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Er is iets misgegaan',\r\n type: 'error'\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function* deleteUserReqest() {\r\n yield takeEvery(actions.DELETE_USER_REQUEST, function* (action) {\r\n\r\n const Auth = yield select(getAuth);\r\n const GoClient = yield select(getGOClient);\r\n const userProfile = yield(getUserProfile);\r\n //const userRequests = yield select(getUserRequest);\r\n if (!GoClient) return;\r\n\r\n let incidentRequest = {\r\n calltypeid: 10,\r\n subject: action.payload.title,\r\n body: action.payload.body,\r\n emotionscore: 0.0,\r\n sentiment: \"\",\r\n emailadres: \"\",\r\n phonenumber: userProfile.mobilePhone ? userProfile.mobilePhone : '',\r\n }\r\n\r\n let formFields = {\r\n voornaam: action.payload.voornaam,\r\n tussenvoegsel: action.payload.tussenvoegsel,\r\n achternaam: action.payload.achternaam,\r\n emailadres: action.payload.emailadres,\r\n datum: action.payload.datum,\r\n sharedMailbox: action.payload.sharedMailbox,\r\n linkMailbox: action.payload.linkMailbox,\r\n forwardMailTo: action.payload.forwardMailTo\r\n }\r\n\r\n // if (action.payload.id) {\r\n // method = 'PUT';\r\n // formFields = {\r\n // ...formFields,\r\n // id: action.payload.id,\r\n // authorName: action.payload.authorName,\r\n // authorId: action.payload.authorId\r\n // }\r\n // }\r\n\r\n let result = false;\r\n\r\n result = yield GoClient.post('/app/incident/request', incidentRequest);\r\n //userRequests.push(formFields);\r\n let name = formFields.voornaam;\r\n if(formFields.tussenvoegsel) name += \"\" + formFields.tussenvoegsel;\r\n name += formFields.achternaam;\r\n \r\n if (result) {\r\n const userProfileData = yield select(getUserProfileSettingData);\r\n let userRequests = userProfileData?.settings?.calls\r\n if(!userRequests) userRequests = [];\r\n userRequests.push({\r\n callId: result.callId,\r\n name: name,\r\n status: result.status,\r\n type: incidentRequest.calltypeid,\r\n typeDesc: \"Verwijderen\",\r\n creationDate: Date.now(),\r\n lastUpdate: Date.now(),\r\n request: \"UserRequest\",\r\n })\r\n yield put({\r\n type: userActions.UPDATE_USER_SETTINGS,\r\n payload: {\r\n value: userRequests,\r\n setting: 'calls'\r\n }\r\n });\r\n const requests = yield select(getUserRequest);\r\n let request = requests\r\n formFields['callId'] = result.callId\r\n request.push(formFields)\r\n yield put({\r\n type: actions.SET_USER_REQUEST,\r\n payload:request\r\n })\r\n // yield put({\r\n // type: actions.SET_USER_REQUEST,\r\n // payload:userRequest\r\n // })\r\n\r\n // yield put({\r\n // type: actions.GET_USER_REQUEST\r\n // })\r\n\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'User delete Request toegevoegd',\r\n type: 'success'\r\n }\r\n });\r\n\r\n store.history.push('/self-service/gebruiker');\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Er is iets misgegaan',\r\n type: 'error'\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function* cancelUserRequest() {\r\n yield takeEvery(actions.CANCEL_USER_REQUEST, function* (singleAction) {\r\n const GoClient = yield select(getGOClient);\r\n if (!GoClient) return;\r\n\r\n\r\n let action = {\r\n callid: singleAction.payload,\r\n subject: \"Aanvraag annuleren\",\r\n body: `\r\nAanvraag van gebruiker kan geannuleerd worden\r\n`,\r\n sentiment: \"\",\r\n emotionscore: 0,\r\n emailaddress: \"\",\r\n }\r\n let result = false;\r\n result = yield GoClient.post('/app/incident/action', action);\r\n\r\n const userProfileData = yield select(getUserProfileSettingData);\r\n let userRequests = userProfileData?.settings?.calls\r\n\r\n let index = userRequests.findIndex(request => request.callId == singleAction.payload)\r\n if(index > -1) {\r\n userRequests[index].status = \"Geannuleerd\";\r\n\r\n yield put({\r\n type: userActions.UPDATE_USER_SETTINGS,\r\n payload: {\r\n value: userRequests,\r\n setting: 'calls'\r\n }\r\n });\r\n }\r\n\r\n yield put({\r\n type: actions.GET_USER_REQUEST\r\n })\r\n\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'User Request geannuleerd',\r\n type: 'success'\r\n }\r\n });\r\n\r\n store.history.push('/self-service/gebruiker');\r\n });\r\n}\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getUsersRequest),\r\n fork(postUserRequest),\r\n fork(deleteUserReqest),\r\n fork(cancelUserRequest),\r\n fork(updateUserRequest)\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport messageActions from '../../message/actions';\r\nimport userActions from '../../user/actions';\r\nimport store from \"../../store\";\r\nimport { getCommonNewsItems, getUserProfileSettingData, getGOClient, getUserProfile, getTenantNewsItems, getAuth } from '../../selectors'\r\n\r\nexport function* getRightsRequest() {\r\n yield takeEvery(actions.GET_RIGHTS_REQUEST, function* (action) {\r\n\r\n const rightsRequests = yield select(getRightsRequest);\r\n const Client = yield select(getGOClient);\r\n if (!Client) return;\r\n const requests = null;\r\n // const requests = yield Client.api(\"/selfService/user/tenant\");\r\n\r\n if(requests == null | !requests) return;\r\n\r\n if (requests.length == 0 || (requests.length && ((rightsRequests.length === 0) || (rightsRequests && rightsRequests[0].Id !== requests[0].id)))) {\r\n\r\n yield put({\r\n type: actions.SET_RIGHTS_REQUEST,\r\n payload: requests\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function* postRightsRequest() {\r\n yield takeEvery(actions.POST_RIGHTS_REQUEST, function* (action) {\r\n const Auth = yield select(getAuth);\r\n const GoClient = yield select(getGOClient);\r\n const userProfile = yield(getUserProfile);\r\n //const userRequests = yield select(getUserRequest);\r\n if (!GoClient) return;\r\n\r\n let incidentRequest = {\r\n calltypeid: 2,\r\n subject: action.payload.title,\r\n body: action.payload.body,\r\n emotionscore: 0.0,\r\n sentiment: \"\",\r\n emailaddress: \"\",\r\n phonenumber: userProfile.mobilePhone ? userProfile.mobilePhone : '',\r\n }\r\n\r\n let formFields = {\r\n emailadres: action.payload.emailadres,\r\n toevoegen: action.payload.toevoegen,\r\n rol: action.payload.rollen,\r\n }\r\n \r\n let result = false;\r\n result = yield GoClient.post('/app/incident/request', incidentRequest);\r\n\r\n //userRequests.push(formFields);\r\n\r\n\r\n if (result) {\r\n const userProfileData = yield select(getUserProfileSettingData);\r\n let rightsRequests = userProfileData?.settings?.calls\r\n if(!rightsRequests) rightsRequests = [];\r\n rightsRequests.push({\r\n callId: result.callId,\r\n status: result.status,\r\n type: incidentRequest.calltypeid,\r\n email: formFields.emailadres,\r\n rol: formFields.rol,\r\n toevoegen: formFields.toevoegen,\r\n typeDesc: formFields.toevoegen.value == \"Toevoegen\" ? \"Toevoegen\" : \"Verwijderen\",\r\n creationDatrequest: \"RightsRequest\",e: Date.now(),\r\n lastUpdate: Date.now(),\r\n \r\n })\r\n yield put({\r\n type: userActions.UPDATE_USER_SETTINGS,\r\n payload: {\r\n value: rightsRequests,\r\n setting: 'calls'\r\n }\r\n });\r\n const requests = yield select(getRightsRequest);\r\n let request = requests\r\n formFields['callId'] = result.callId\r\n request.push(formFields)\r\n yield put({\r\n type: actions.SET_RIGHTS_REQUEST,\r\n payload:request\r\n })\r\n // yield put({\r\n // type: actions.SET_USER_REQUEST,\r\n // payload:userRequest\r\n // })\r\n\r\n // yield put({\r\n // type: actions.GET_USER_REQUEST\r\n // })\r\n\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Rights Request toegevoegd',\r\n type: 'success'\r\n }\r\n });\r\n\r\n store.history.push('/self-service/rechten');\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Er is iets misgegaan',\r\n type: 'error'\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function* updateRightsRequest() {\r\n yield takeEvery(actions.UPDATE_RIGHTS_REQUEST, function* (action) {\r\n const Auth = yield select(getAuth);\r\n const GoClient = yield select(getGOClient);\r\n const userProfile = yield(getUserProfile);\r\n //const userRequests = yield select(getUserRequest);\r\n if (!GoClient) return;\r\n let incidentRequest = {\r\n callid: action.payload.id,\r\n subject: action.payload.payload.title,\r\n body: action.payload.payload.body,\r\n emotionscore: 0.0,\r\n sentiment: \"\",\r\n emailaddress: \"\",\r\n }\r\n\r\n let formFields = {\r\n emailadres: action.payload.payload.emailadres,\r\n toevoegen: action.payload.payload.toevoegen,\r\n rollen: action.payload.payload.rollen,\r\n }\r\n \r\n //yield GoClient.post('/app/incident/action', incidentRequest);\r\n const userProfileData = yield select(getUserProfileSettingData);\r\n let rightsRequests = userProfileData?.settings?.calls\r\n let index = rightsRequests.findIndex(request => request.callId == incidentRequest.callid)\r\n if(index > -1) {\r\n if(!rightsRequests[index]) rightsRequests = [];\r\n rightsRequests[index] = {\r\n ...rightsRequests[index],\r\n type: incidentRequest.calltypeid,\r\n email: formFields.emailadres,\r\n rol: formFields.rollen,\r\n toevoegen: formFields.toevoegen,\r\n typeDesc: formFields.toevoegen.value == \"Toevoegen\" ? \"Toevoegen\" : \"Verwijderen\",\r\n lastUpdate: Date.now(),\r\n }\r\n yield put({\r\n type: userActions.UPDATE_USER_SETTINGS,\r\n payload: {\r\n value: rightsRequests,\r\n setting: 'calls'\r\n }\r\n });\r\n const requests = yield select(getRightsRequest);\r\n let request = requests\r\n let index = request.findIndex(request => request.callId == incidentRequest.callid)\r\n request[index] = {\r\n ...request[index],\r\n formFields\r\n }\r\n yield put({\r\n type: actions.SET_RIGHTS_REQUEST,\r\n payload:request\r\n })\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Rights Request geupdated',\r\n type: 'success'\r\n }\r\n });\r\n store.history.push('/self-service/rechten');\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Er is iets misgegaan',\r\n type: 'error'\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function* deleteRightsRequest() {\r\n yield takeEvery(actions.DELETE_RIGHTS_REQUEST, function* (action) {\r\n\r\n const GoClient = yield select(getGOClient);\r\n if (!GoClient) return;\r\n\r\n const result = yield GoClient.delete('/common/news?id=' + action.payload);\r\n if (result) {\r\n if (result.ok) {\r\n yield put({\r\n type: actions.GET_RIGHTS_REQUEST\r\n })\r\n\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Rights Request verwijderd',\r\n type: 'success'\r\n }\r\n });\r\n\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Er is iets misgegaan',\r\n type: 'error'\r\n }\r\n });\r\n }\r\n store.history.push('/self-service/rechten');\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Er is iets misgegaan',\r\n type: 'error'\r\n }\r\n });\r\n }\r\n\r\n });\r\n}\r\n\r\nexport function* cancelRightsRequest() {\r\n yield takeEvery(actions.CANCEL_RIGHTS_REQUEST, function* (singleAction) {\r\n const GoClient = yield select(getGOClient);\r\n if (!GoClient) return;\r\n\r\n\r\n let action = { \r\n callid: singleAction.payload,\r\n subject: \"Aanvraag annuleren\",\r\n body: `\r\nAanvraag van rol/groep kan geannuleerd worden\r\n`,\r\n sentiment: \"\",\r\n emotionscore: 0,\r\n emailaddress: \"\",\r\n }\r\n let result = false; \r\n result = yield GoClient.post('/app/incident/action', action);\r\n\r\n const userProfileData = yield select(getUserProfileSettingData);\r\n let rightsRequest = userProfileData?.settings?.calls\r\n\r\n let index = rightsRequest.findIndex(request => request.callId == singleAction.payload)\r\n if(index > -1) {\r\n rightsRequest[index].status = \"Geannuleerd\";\r\n\r\n yield put({\r\n type: userActions.UPDATE_USER_SETTINGS,\r\n payload: {\r\n value: rightsRequest,\r\n setting: 'calls'\r\n }\r\n });\r\n }\r\n\r\n yield put({\r\n type: actions.GET_RIGHTS_REQUEST\r\n })\r\n\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Rights Request geannuleerd',\r\n type: 'success'\r\n }\r\n });\r\n\r\n store.history.push('/self-service/gebruiker');\r\n });\r\n}\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getRightsRequest),\r\n fork(postRightsRequest),\r\n fork(deleteRightsRequest),\r\n fork(cancelRightsRequest),\r\n fork(updateRightsRequest)\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport messageActions from '../../message/actions';\r\nimport userActions from '../../user/actions';\r\nimport store from \"../../store\";\r\nimport { getCommonNewsItems, getGOClient, getUserProfile, getUserProfileSettingData, getTenantNewsItems, getAuth } from '../../selectors'\r\n\r\nexport function* getWorkplaceRequest() {\r\n yield takeEvery(actions.GET_WORKPLACE_REQUEST, function* (action) {\r\n\r\n const workplaceRequests = yield select(getWorkplaceRequest);\r\n const Client = yield select(getGOClient);\r\n if (!Client) return;\r\n const requests = null;\r\n // const requests = yield Client.api(\"/selfService/workplace/tenant\");\r\n\r\n if(requests == null | !requests) return;\r\n\r\n if (requests.length == 0 || (requests.length && ((workplaceRequests.length === 0) || (workplaceRequests && workplaceRequests[0].Id !== requests[0].id)))) {\r\n\r\n yield put({\r\n type: actions.SET_WORKPLACE_REQUEST,\r\n payload: requests\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function* postWorkplaceRequest() {\r\n yield takeEvery(actions.POST_WORKPLACE_REQUEST, function* (action) {\r\n const Auth = yield select(getAuth);\r\n const GoClient = yield select(getGOClient);\r\n const userProfile = yield(getUserProfile);\r\n //const userRequests = yield select(getUserRequest);\r\n if (!GoClient) return;\r\n\r\n let incidentRequest = {\r\n calltypeid: 2,\r\n subject: action.payload.title,\r\n body: action.payload.body,\r\n emotionscore: 0.0,\r\n sentiment: \"\",\r\n emailaddress: \"\",\r\n phonenumber: userProfile.mobilePhone ? userProfile.mobilePhone : '',\r\n }\r\n\r\n let formFields = {\r\n omschrijving: action.payload.omschrijving\r\n }\r\n\r\n // if (action.payload.id) {\r\n // method = 'PUT';\r\n // formFields = {\r\n // ...formFields,\r\n // id: action.payload.id,\r\n // authorName: action.payload.authorName,\r\n // authorId: action.payload.authorId\r\n // }\r\n // }\r\n\r\n let result = false;\r\n\r\n result = yield GoClient.post('/app/incident/request', incidentRequest);\r\n //userRequests.push(formFields);\r\n\r\n\r\n if (result) {\r\n const userProfileData = yield select(getUserProfileSettingData);\r\n let userRequests = userProfileData?.settings?.calls\r\n if(!userRequests) userRequests = [];\r\n userRequests.push({\r\n callId: result.callId,\r\n status: result.status,\r\n type: incidentRequest.calltypeid,\r\n creationDate: Date.now(),\r\n lastUpdate: Date.now(),\r\n request: \"WorkplaceRequest\",\r\n })\r\n yield put({\r\n type: userActions.UPDATE_USER_SETTINGS,\r\n payload: {\r\n value: userRequests,\r\n setting: 'calls'\r\n }\r\n });\r\n\r\n const requests = yield select(getWorkplaceRequest);\r\n let request = requests\r\n formFields['callId'] = result.callId\r\n request.push(formFields)\r\n yield put({\r\n type: actions.SET_WORKPLACE_REQUEST,\r\n payload:request\r\n })\r\n\r\n // yield put({\r\n // type: actions.GET_USER_REQUEST\r\n // })\r\n\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Workplace Request toegevoegd',\r\n type: 'success'\r\n }\r\n });\r\n\r\n store.history.push('/self-service/werkplek');\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Er is iets misgegaan',\r\n type: 'error'\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function* updateWorkPlaceRequest() {\r\n yield takeEvery(actions.UPDATE_WORKPLACE_REQUEST, function* (action) {\r\n const Auth = yield select(getAuth);\r\n const GoClient = yield select(getGOClient);\r\n const userProfile = yield(getUserProfile);\r\n //const userRequests = yield select(getUserRequest);\r\n if (!GoClient) return;\r\n let incidentRequest = {\r\n callid: action.payload.id,\r\n calltypeid: 2,\r\n subject: action.payload.payload.title,\r\n body: action.payload.payload.body,\r\n emotionscore: 0.0,\r\n sentiment: \"\",\r\n emailaddress: \"\",\r\n phonenumber: userProfile.mobilePhone ? userProfile.mobilePhone : '',\r\n }\r\n\r\n let formFields = {\r\n omschrijving: action.payload.payload.omschrijving\r\n }\r\n \r\n //yield GoClient.post('/app/incident/action', incidentRequest);\r\n const userProfileData = yield select(getUserProfileSettingData);\r\n let rightsRequests = userProfileData?.settings?.calls\r\n let index = rightsRequests.findIndex(request => request.callId == incidentRequest.callid)\r\n\r\n if(index > -1) {\r\n if(!rightsRequests[index]) rightsRequests = [];\r\n rightsRequests[index] = {\r\n ...rightsRequests[index],\r\n type: incidentRequest.calltypeid,\r\n lastUpdate: Date.now(),\r\n }\r\n yield put({\r\n type: userActions.UPDATE_USER_SETTINGS,\r\n payload: {\r\n value: rightsRequests,\r\n setting: 'calls'\r\n }\r\n });\r\n const requests = yield select(getWorkplaceRequest);\r\n let request = requests\r\n let index2 = request.findIndex(request => request.callId == incidentRequest.callid)\r\n request[index2] = formFields\r\n yield put({\r\n type: actions.SET_WORKPLACE_REQUEST,\r\n payload:request\r\n })\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Workplace Request geupdated',\r\n type: 'success'\r\n }\r\n });\r\n store.history.push('/self-service/werkplek');\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Er is iets misgegaan',\r\n type: 'error'\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function* deleteWorkplaceReqest() {\r\n yield takeEvery(actions.DELETE_WORKPLACE_REQUEST, function* (action) {\r\n\r\n const GoClient = yield select(getGOClient);\r\n if (!GoClient) return;\r\n\r\n // const result = yield GoClient.delete('/common/news?id=' + action.payload);\r\n if (result) {\r\n if (result.ok) {\r\n yield put({\r\n type: actions.GET_WORKPLACE_REQUEST\r\n })\r\n\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Workplace Request verwijderd',\r\n type: 'success'\r\n }\r\n });\r\n\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Er is iets misgegaan',\r\n type: 'error'\r\n }\r\n });\r\n }\r\n store.history.push('/self-service/workplace');\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Er is iets misgegaan',\r\n type: 'error'\r\n }\r\n });\r\n }\r\n\r\n });\r\n}\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getWorkplaceRequest),\r\n fork(postWorkplaceRequest),\r\n fork(deleteWorkplaceReqest)\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport { Buffer } from 'buffer';\r\nimport { getGraphClient, getTeams, getAppOnline } from '../../selectors';\r\n//const tenantConfig = window.tenantConfig;\r\n\r\nexport function* fetchTeams() {\r\n yield takeEvery(actions.GET_TEAMS, function* (action) {\r\n\r\n const appOnline = yield select(getAppOnline);\r\n\r\n if (!appOnline) {\r\n return;\r\n }\r\n\r\n const GraphClient = yield select(getGraphClient);\r\n if (GraphClient == null) return;\r\n\r\n const joinedTeams = yield GraphClient.api('/me/joinedTeams');\r\n if (joinedTeams == null) return;\r\n\r\n let teams = [];\r\n\r\n let teamsData = [];\r\n let teamsPhotos = [];\r\n\r\n if (joinedTeams.value) {\r\n for (var i = 0; i <= joinedTeams.value.length; i++) {\r\n if (joinedTeams.value[i]) {\r\n let team = joinedTeams.value[i];\r\n\r\n try {\r\n teamsData.push(new Promise((resolve, reject) => {\r\n let data = {};\r\n GraphClient.api('/teams/' + team.id + '/photo/$value', 'arrayBuffer','beta').then((teamPhoto) => {\r\n if (teamPhoto) {\r\n data.image = 'data:image/png;base64, ' + new Buffer.from(teamPhoto, 'binary').toString('base64');\r\n }\r\n GraphClient.api('/teams/' + team.id).then((teamData) => {\r\n if (teamData != null) resolve({ ...data, ...teamData });\r\n reject();\r\n });\r\n });\r\n }));\r\n\r\n //teamsPhotos.push(GraphClient.api('/teams/' + team.id + '/photo/$value', 'arrayBuffer'));\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n let promises = yield Promise.allSettled(teamsData);\r\n\r\n promises.forEach((team) => {\r\n if (team.status != \"fulfilled\") return;\r\n teams.push({\r\n name: team.value.displayName,\r\n teamID: team.value.id,\r\n channelsFetched: false,\r\n photo: team.value.image,\r\n webUrl: team.value.webUrl ? team.value.webUrl : '',\r\n channels: []\r\n });\r\n });\r\n\r\n yield put({\r\n type: actions.SET_TEAMS,\r\n payload: teams\r\n });\r\n\r\n })\r\n}\r\n\r\nexport function* fetchTeamChannels() {\r\n yield takeEvery(actions.FETCH_TEAM_CHANNELS, function* (action) {\r\n const GraphClient = yield select(getGraphClient);\r\n const teams = yield select(getTeams);\r\n\r\n const teamChannels = yield GraphClient.api('/teams/' + action.payload + '/channels');\r\n\r\n let parsedChannels = [];\r\n let generalItem = false;\r\n let newTeams = [];\r\n let tasks = [];\r\n\r\n if (teamChannels.value) {\r\n for ( let i = 0; i <= teamChannels.value.length; i++ ) {\r\n if (teamChannels.value[i]) {\r\n\r\n tasks.push(new Promise((resolve, reject) => {\r\n const item = teamChannels.value[i];\r\n item.teamID = action.payload;\r\n item.channelID = \r\n resolve(item);\r\n //GraphClient.api(`/teams/${action.payload}/channels/${item.id}/filesFolder`).then((filesFolder) => {\r\n // item.parentDriveId = filesFolder.parentReference.driveId;\r\n // item.filesFolder = filesFolder;\r\n // resolve(item);\r\n //});\r\n //reject();\r\n }));\r\n }\r\n }\r\n\r\n let promises = yield Promise.allSettled(tasks);\r\n promises.forEach((item) => {\r\n if (item.displayName !== 'General') {\r\n parsedChannels.push(item);\r\n } else {\r\n item.displayName = 'Algemeen';\r\n parsedChannels.push(item);\r\n }\r\n });\r\n\r\n teams.forEach((team, i) => {\r\n if (team.teamID === action.payload) {\r\n team = {\r\n ...team,\r\n channelsFetched: true,\r\n channels: teamChannels.value\r\n }\r\n }\r\n\r\n newTeams.push(team);\r\n });\r\n } else {\r\n\r\n\r\n teams.forEach((team, i) => {\r\n if (team.teamID === action.payload) {\r\n team = {\r\n ...team,\r\n channelsFetched: true,\r\n channels: parsedChannels\r\n }\r\n }\r\n\r\n newTeams.push(team);\r\n });\r\n }\r\n\r\n yield put({\r\n type: actions.SET_TEAMS,\r\n payload: newTeams\r\n })\r\n\r\n\r\n /*const joinedTeams = yield GraphClient.api('/me/joinedTeams');\r\n\r\n let teams = [];\r\n if ( joinedTeams.value ) {\r\n for ( var i = 0; i <= joinedTeams.value.length; i++ ) {\r\n if ( joinedTeams.value[i] ) {\r\n let team = joinedTeams.value[i];\r\n\r\n const teamData = yield GraphClient.api('/teams/'+team.id);\r\n\r\n const teamPhoto = yield GraphClient.api('/teams/'+team.id+'/photo/$value', 'arrayBuffer');\r\n const image = 'data:image/png;base64, ' + new Buffer(teamPhoto, 'binary').toString('base64');\r\n\r\n //const groupData = yield GraphClient.api('/groups/'+team.id);\r\n\r\n let oTeam = {\r\n name : team.displayName,\r\n teamID : team.id,\r\n channelsFetched : false,\r\n photo : image,\r\n webUrl : teamData ? teamData.webUrl : '',\r\n channels : []\r\n }\r\n\r\n teams.push(oTeam);\r\n }\r\n }\r\n }\r\n\r\n yield put({\r\n type : actions.SET_TEAMS,\r\n payload : teams\r\n })*/\r\n })\r\n}\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(fetchTeams),\r\n fork(fetchTeamChannels)\r\n ]);\r\n}\r\n\r\n//\"https://teams.microsoft.com/l/team/\" + encodedChannelId + \"/conversations?groupId=\" + groupId + \"&tenantId=\" + tennantId;\r\n","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport wizardactions from '../../documentsWizard/actions'\r\nimport { Buffer } from 'buffer';\r\nimport { getGraphClient, getTeams, getAppOnline, getSharepointClient, getGOClient } from '../../selectors';\r\n//const tenantConfig = window.tenantConfig;\r\n\r\nexport function* fetchSharePointSites() {\r\n yield takeEvery(actions.FETCH_SHAREPOINT_SITES, function* (action) { \r\n yield put({\r\n type: actions.SET_IS_LOADING,\r\n payload: true\r\n });\r\n const appOnline = yield select(getAppOnline);\r\n if (!appOnline) {\r\n return;\r\n }\r\n let sharepointSites = [];\r\n const GraphClient = yield select(getGraphClient);\r\n if (GraphClient == null) return;\r\n\r\n const searchResult = yield GraphClient.api('/sites?search='+action.payload);\r\n if(searchResult.value) {\r\n searchResult.value.forEach(result => {\r\n sharepointSites.push({isFolder:true, name: result.displayName, sites: result.id, webUrl: result.webUrl})\r\n })\r\n yield put({\r\n type: actions.SET_SHAREPOINT,\r\n payload: sharepointSites\r\n });\r\n\r\n }\r\n yield put({\r\n type: actions.SET_IS_LOADING,\r\n payload: false\r\n });\r\n }) \r\n}\r\n\r\nexport function* fetchSharePointDrive() {\r\n yield takeEvery(actions.FETCH_SHAREPOINT_DRIVE, function* (action) { \r\n yield put({\r\n type: actions.SET_IS_LOADING,\r\n payload: true\r\n });\r\n const appOnline = yield select(getAppOnline);\r\n if (!appOnline) {\r\n return;\r\n }\r\n let sharepointSites = [];\r\n const GraphClient = yield select(getGraphClient);\r\n if (GraphClient == null) return;\r\n\r\n const searchResult = yield GraphClient.api('/sites/'+action.payload.sites+'/drives');\r\n if(searchResult.value) {\r\n searchResult.value.forEach(result => {\r\n sharepointSites.push({isFolder: true, name: result.name, sites: action.payload.sites, drives: result.id, webUrl: result.webUrl})\r\n })\r\n yield put({\r\n type: actions.SET_SHAREPOINT_DRIVE,\r\n payload: sharepointSites\r\n });\r\n }\r\n yield put({\r\n type: actions.SET_IS_LOADING,\r\n payload: false\r\n });\r\n }) \r\n}\r\n\r\nexport function* fetchSharePointDriveChildren() {\r\n yield takeEvery(actions.FETCH_SHAREPOINT_DRIVE_CHILDREN, function* (action) { \r\n yield put({\r\n type: actions.SET_IS_LOADING,\r\n payload: true\r\n });\r\n const appOnline = yield select(getAppOnline);\r\n if (!appOnline) {\r\n return;\r\n }\r\n let sharepointSites = [];\r\n const GraphClient = yield select(getGraphClient);\r\n if (GraphClient == null) return;\r\n const searchResult = yield GraphClient.api('/sites/'+ action.payload.sites +'/drives/'+ action.payload.drives +'/root/children');\r\n if(searchResult.value) {\r\n searchResult.value.forEach(result => {\r\n if(result.folder) {\r\n sharepointSites.push({isFolder: true, name: result.name, sites: action.payload.sites, drives:action.payload.drives, item:result.id, webUrl: result.webUrl})\r\n } else {\r\n sharepointSites.push({isFolder: false, name: result.name, sites: action.payload.sites, drives:action.payload.drives, item:result.id, webUrl: result.webUrl})\r\n }\r\n })\r\n\r\n yield put({\r\n type: actions.SET_SHAREPOINT_DRIVE_CHILDREN,\r\n payload: sharepointSites\r\n });\r\n }\r\n yield put({\r\n type: actions.SET_IS_LOADING,\r\n payload: false\r\n });\r\n }) \r\n}\r\n\r\nexport function* fetchSharePointFolder() {\r\n yield takeEvery(actions.FETCH_SHAREPOINT_FOLDER, function* (action) { \r\n yield put({\r\n type: actions.SET_IS_LOADING,\r\n payload: true\r\n });\r\n const appOnline = yield select(getAppOnline);\r\n if (!appOnline) {\r\n return;\r\n }\r\n let sharepointSites = [];\r\n const GraphClient = yield select(getGraphClient);\r\n if (GraphClient == null) return;\r\n const searchResult = yield GraphClient.api('/sites/'+ action.payload.sites +'/drives/'+ action.payload.drives +'/items/'+ action.payload.item +'/children');\r\n if(searchResult.value) {\r\n searchResult.value.forEach(result => {\r\n if(result.folder) {\r\n sharepointSites.push({isFolder: true, name: result.name, sites: action.payload.sites, drives: action.payload.drives, item: result.id, webUrl: result.webUrl})\r\n } else {\r\n sharepointSites.push({isFolder: false, name: result.name, sites: action.payload.sites, drives: action.payload.drives, item: result.id, webUrl: result.webUrl})\r\n }\r\n })\r\n yield put({\r\n type: actions.SET_SHAREPOINT_FOLDER,\r\n payload: sharepointSites\r\n });\r\n }\r\n yield put({\r\n type: actions.SET_IS_LOADING,\r\n payload: false\r\n });\r\n }) \r\n}\r\n\r\nexport function* clearSharePoint() {\r\n yield takeEvery(actions.CLEAR_SHAREPOINT, function* (action) { \r\n \r\n if(action.payload) {\r\n if(action.payload.includes('Sharepoint')) {\r\n yield put({\r\n type: actions.CLEAR_SHAREPOINT\r\n });\r\n }\r\n if(action.payload.includes('Drive')) {\r\n yield put({\r\n type: actions.CLEAR_SHAREPOINT_DRIVE\r\n });\r\n }\r\n if(action.payload.includes('DriveChildren')) {\r\n yield put({\r\n type: actions.CLEAR_SHAREPOINT_DRIVE_CHILDREN\r\n });\r\n }\r\n if(action.payload.includes('Folder')) {\r\n yield put({\r\n type: actions.CLEAR_SHAREPOINT_FOLDER\r\n });\r\n }\r\n }\r\n\r\n }) \r\n}\r\n\r\nexport function* createFileFromTemplate() {\r\n yield takeEvery(actions.FILE_FROM_TEMPLATE, function* (action) {\r\n const GOClient = yield select(getGOClient);\r\n const GraphClient = yield select(getGraphClient);\r\n const goToken = yield GOClient.getToken();\r\n const graphToken = yield GraphClient.getToken();\r\n const sharepointClient = yield select(getSharepointClient);\r\n const sharepointToken = yield sharepointClient.getToken();\r\n const apiURL = window.apiURL + '/api/app/convert/office';\r\n const pfdUrl = window.apiURL + '/api/app/convert/pdf'\r\n let downloadUrl;\r\n if(action.payload?.local) {\r\n const getDownloadUrl = yield fetch(`https://graph.microsoft.com/v1.0/me/drive/items/${action.payload.itemId}`,\r\n {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': \"Bearer \" + graphToken,\r\n }\r\n });\r\n let response = yield getDownloadUrl.json();\r\n downloadUrl = response['@microsoft.graph.downloadUrl'];\r\n \r\n } else if(action.payload.useMetaData && action.payload?.downloadUrl) {\r\n downloadUrl = action.payload.downloadUrl\r\n }else {\r\n const getDownloadUrl = yield fetch(`https://graph.microsoft.com/v1.0/drives/${action.payload.driveId}/items/${action.payload.itemId}/content`,\r\n {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': \"Bearer \" + graphToken,\r\n }\r\n });\r\n downloadUrl = getDownloadUrl.url\r\n }\r\n let getDocumentBase64String;\r\n if(action.payload.type == \"pdf\") {\r\n getDocumentBase64String = yield fetch(pfdUrl+ \"?&url=\" + encodeURIComponent( downloadUrl ),\r\n {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': \"Bearer \" + goToken,\r\n 'AuthorizationProxy': \"Bearer \" + graphToken\r\n }\r\n });\r\n } else {\r\n getDocumentBase64String = yield fetch(apiURL+ \"?type=\"+action.payload.type+\"&url=\" + encodeURIComponent( downloadUrl ),\r\n {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': \"Bearer \" + goToken,\r\n 'AuthorizationProxy': \"Bearer \" + graphToken\r\n }\r\n });\r\n }\r\n\r\n // const getDocumentBase64String = yield fetch(pfdUrl+ \"?url=\" + encodeURIComponent( downloadUrl ),\r\n // {\r\n // headers: {\r\n // 'Accept': 'application/json',\r\n // 'Content-Type': 'application/json',\r\n // 'Authorization': \"Bearer \" + goToken,\r\n // 'AuthorizationProxy': \"Bearer \" + graphToken\r\n // }\r\n // });\r\n\r\n if (!getDocumentBase64String.ok) {\r\n console.error('response failed',getDocumentBase64String);\r\n return null;\r\n }\r\n\r\n const responseData = yield getDocumentBase64String.json().catch(err => {\r\n console.error(`'fetch parse error: ${err}' happened!`,getDocumentBase64String);\r\n return null;\r\n });\r\n if (responseData.length === 0) return null;\r\n\r\n function base64ToBinary(receivedBase64String) {\r\n const binaryString = atob(receivedBase64String);\r\n const byteArray = new Uint8Array(binaryString.length);\r\n for (let i = 0; i < binaryString.length; i++) {\r\n byteArray[i] = binaryString.charCodeAt(i);\r\n }\r\n return byteArray;\r\n }\r\n const binaryData = base64ToBinary(responseData);\r\n let fileName = \"Nieuw document\";\r\n if(action.payload.fileName) fileName = action.payload.fileName;\r\n\r\n // let body = {\r\n // \"name\": fileName + '.' + type,\r\n // \"file\": binaryData,\r\n // \"@microsoft.graph.conflictBehavior\": \"rename\"\r\n // }\r\n let info;\r\n console.log(\"safeFIleTo\", action.payload.saveFileTo)\r\n let url;\r\n console.log('bin data',binaryData)\r\n if(action.payload.saveWhere === \"sharepoint\") {\r\n url = `/drives/${action.payload.saveFileTo.drives}/items`;\r\n if (action.payload.saveFileTo.parentId) {\r\n url += `/${action.payload.saveFileTo.parentId}`;\r\n }\r\n else {\r\n url = `/drives/${action.payload.saveFileTo.drives}/root`;\r\n }\r\n url += `:/${fileName}.${action.payload.type}:/content`;\r\n info = yield GraphClient.put(url, binaryData);\r\n }\r\n if(action.payload.saveWhere === \"teams\") {\r\n info = yield GraphClient.put(`/drives/${action.payload.saveFileTo.parentDriveID}/items/${action.payload.saveFileTo.folder.id}:/${fileName}.${action.payload.type}:/content`, binaryData);\r\n }\r\n if(action.payload.saveWhere === \"drive\") {\r\n info = yield GraphClient.put(`/drives/${action.payload.saveFileTo.driveId}/items/${action.payload.saveFileTo.itemId}:/${fileName}.${action.payload.type}:/content`, binaryData);\r\n }\r\n\r\n\r\n yield put({\r\n type: wizardactions.SET_DOCUMENT_INFO,\r\n payload: info\r\n });\r\n yield put({\r\n type: wizardactions.SET_BASE64_INFO,\r\n payload: responseData\r\n });\r\n \r\n })\r\n}\r\n\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(fetchSharePointSites),\r\n fork(fetchSharePointDrive),\r\n fork(fetchSharePointDriveChildren),\r\n fork(fetchSharePointFolder),\r\n fork(clearSharePoint),\r\n fork(createFileFromTemplate),\r\n ]);\r\n}","import { all, put, fork, takeEvery, select, call, take, cancel, takeLatest, cancelled, delay } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport { getGraphClient, getTeams, getAppOnline, getPeople, getPeoplePage, peopleAlreadyFetching, getPeoplePageLength } from '../../selectors';\r\nimport { getBirthdays } from '../../birthday/saga';\r\n//const tenantConfig = window.tenantConfig;\r\nimport { Buffer } from 'buffer';\r\n\r\n\r\nexport function* setPeople() {\r\n yield takeEvery(actions.SET_PEOPLE, function* (action) {\r\n let people = action.payload;\r\n const currentPage = yield select(getPeoplePage);\r\n const pageLength = yield select(getPeoplePageLength);\r\n yield put({\r\n type: actions.SET_CURRENT_PAGE,\r\n payload: currentPage + pageLength\r\n })\r\n yield put({\r\n type: actions.SET_PEOPLE_FETCHING,\r\n payload: false\r\n })\r\n });\r\n}\r\nexport function* fetchPeople() {\r\n yield takeEvery(actions.GET_PEOPLE, function* (action) {\r\n \r\n const appOnline = yield select(getAppOnline);\r\n if (!appOnline) {\r\n return;\r\n }\r\n\r\n const GraphClient = yield select(getGraphClient);\r\n let people = yield select(getPeople);\r\n let currentPage = 0;\r\n if (GraphClient == null) return;\r\n const pageLength = yield select(getPeoplePageLength);\r\n //const peopleResult = yield GraphClient.api(`/me/people?$filter=personType/class eq 'Person' and personType/subclass eq 'OrganizationUser'&$top=${pageLength}`);\r\n //const peopleResult = yield GraphClient.api(`/users?$count=true&$select=userPrincipalName,displayName,givenName,surname,jobTitle,mail,mobilePhone,officeLocation,id,department,imAddress&$filter=userType eq 'Member' and jobTitle ne null and mail ne null&$top=${pageLength}`);\r\n \r\n let peopleResult;\r\n if(window.tenantConfig.colleagueGroup) {\r\n peopleResult = yield GraphClient.api(`/groups/${window.tenantConfig.colleagueGroup}/members?$count=true&$select=displayName,userPrincipalName,givenName,userType,surname,jobTitle,accountEnabled,mail,mobilePhone,businessPhones,officeLocation,id,department,imAddress&$top=${pageLength}&$orderby=displayName`);\r\n if(!peopleResult.value.length) {\r\n peopleResult = yield GraphClient.api(`/users?$count=true&$select=displayName,userPrincipalName,givenName,userType,surname,jobTitle,accountEnabled,mail,mobilePhone,businessPhones,officeLocation,id,department,imAddress&$filter=userType ne 'Guest' and officeLocation ne 'Administrator' and officeLocation ne 'GoFilterGeenCollega' and accountEnabled eq true and givenName ne null and NOT endsWith(userPrincipalName, 'onmicrosoft.com') and mail ne null&$top=${pageLength}&$orderby=displayName`);\r\n }\r\n } else {\r\n peopleResult = yield GraphClient.api(`/users?$count=true&$select=displayName,userPrincipalName,givenName,userType,surname,jobTitle,accountEnabled,mail,mobilePhone,businessPhones,officeLocation,id,department,imAddress&$filter=userType ne 'Guest' and officeLocation ne 'Administrator' and officeLocation ne 'GoFilterGeenCollega' and accountEnabled eq true and givenName ne null and NOT endsWith(userPrincipalName, 'onmicrosoft.com') and mail ne null&$top=${pageLength}&$orderby=displayName`);\r\n }\r\n if(peopleResult['@odata.nextLink']) {\r\n yield fetchNextPeoplePage(peopleResult['@odata.nextLink'], peopleResult.value);\r\n } else {\r\n yield fork(parsePeople, peopleResult);\r\n }\r\n \r\n })\r\n}\r\n\r\n\r\nfunction* fetchNextPeoplePage(nextLink, peopleResultValue) {\r\n const appOnline = yield select(getAppOnline);\r\n if (!appOnline) {\r\n return;\r\n }\r\n\r\n // const alreadyFetching = yield select(peopleAlreadyFetching);\r\n // console.log(\"alreadyFetching\",alreadyFetching)\r\n // if (alreadyFetching) {\r\n // return;\r\n // }\r\n\r\n const GraphClient = yield select(getGraphClient);\r\n if (GraphClient == null) return;\r\n let replacedLink = nextLink.replace(\"https://graph.microsoft.com/v1.0\",\"\")\r\n\r\n let peopleResult = yield GraphClient.api(replacedLink);\r\n peopleResult.value = peopleResultValue.concat(peopleResult.value);\r\n if(peopleResult['@odata.nextLink']) {\r\n yield fetchNextPeoplePage(peopleResult['@odata.nextLink'], peopleResult.value)\r\n } else {\r\n yield fork(parsePeople, peopleResult);\r\n }\r\n \r\n}\r\n\r\nfunction* parsePeople(peopleResponse) {\r\n let peopleData = false;\r\n\r\n if (!peopleResponse || !peopleResponse['@odata.nextLink']) {\r\n yield put({\r\n type: actions.SET_NEXT_PAGE_AVAILABLE,\r\n payload: false\r\n })\r\n }\r\n if (peopleResponse?.value.length) {\r\n peopleData = peopleResponse.value;\r\n } else {\r\n yield put({\r\n type: actions.SET_PEOPLE_FETCHING,\r\n payload: false\r\n })\r\n return;\r\n }\r\n\r\n const GraphClient = yield select(getGraphClient);\r\n if (GraphClient == null) return;\r\n\r\n let people = yield select(getPeople);\r\n if (!people) {\r\n people = [];\r\n }\r\n\r\n //const birthdays = yield select(getBirthdays);\r\n let tasks = [];\r\n let peopleWithoutAvatar = [];\r\n\r\n for (let i = 0; i <= peopleData.length; i++) {\r\n if (peopleData[i]) {\r\n\r\n let findAvatar = true;\r\n let person = peopleData[i];\r\n\r\n if (person.givenName) {\r\n const existingPerson = people.find((statePerson) => statePerson.id == person.id);\r\n\r\n if (!existingPerson) {\r\n people.push(person);\r\n }\r\n }\r\n }\r\n }\r\n\r\n yield put({\r\n type: actions.SET_PEOPLE,\r\n payload: people\r\n })\r\n}\r\n\r\nexport function* anyPeopleRequest() {\r\n yield takeLatest([actions.GET_NEXT_PEOPLE_PAGE, actions.GET_PEOPLE], function* (action) {\r\n yield put({\r\n type: actions.SET_PEOPLE_FETCHING,\r\n payload: true\r\n })\r\n })\r\n}\r\n\r\nexport function* getAvatar() {\r\n yield takeEvery(actions.GET_PERSON_AVATAR, function* (action) {\r\n const GraphClient = yield select(getGraphClient);\r\n if (GraphClient == null) return;\r\n const avatar = yield GraphClient.api(`/users/${action.payload}/photos/48x48/$value`, 'arrayBuffer');\r\n let image = 'none';\r\n if (avatar) {\r\n image = 'data:image/png;base64, ' + new Buffer.from(avatar, 'binary').toString('base64');\r\n }\r\n\r\n let people = yield select(getPeople);\r\n\r\n let personIndex = people.findIndex((item) => item.id === action.payload);\r\n if (personIndex != -1) {\r\n people[personIndex].avatar = image;\r\n\r\n yield put({\r\n type: actions.SET_PEOPLE_AVATARS,\r\n payload: people\r\n });\r\n }\r\n\r\n })\r\n}\r\n\r\nexport function* getUserStatus() {\r\n yield takeEvery(actions.GET_USER_STATUS, function* (action) {\r\n const GraphClient = yield select(getGraphClient);\r\n if (GraphClient == null) return;\r\n\r\n try {\r\n\r\n const status = yield GraphClient.api(`/users/${action.payload}/presence`);\r\n if (status == null) return;\r\n // -- Statuses do not work yet.\r\n\r\n let people = yield select(getPeople);\r\n\r\n let personIndex = people.findIndex((item) => item.id == action.payload);\r\n\r\n people[personIndex].status = status.availability;\r\n people[personIndex].activity = status.availability;\r\n\r\n yield put({\r\n type: actions.SET_PEOPLE,\r\n payload: people\r\n })\r\n } catch (ex) { }\r\n\r\n })\r\n}\r\n\r\n\r\n/**\r\n*\t@name\t\t\tRedux/Status/Saga/startStopStatusUpdates\r\n*\t@Description \tStarts a background sync job and waits for actions.STOP_STATUS_UPDATES to stop.\r\n*/\r\nexport function* startStopStatusUpdates() {\r\n while (yield take(actions.START_STATUS_JOB)) {\r\n\r\n // starts the task in the background\r\n const bgSyncTask = yield fork(backgroundSync)\r\n\r\n yield take(actions.STOP_STATUS_JOB)\r\n yield cancel(bgSyncTask)\r\n }\r\n}\r\n\r\n/**\r\n*\t@name\t\t\tRedux/Status/Saga/backgroundSync\r\n*\t@Description \tBackground task. Continuously calls fetchLogsContinuously, fetchIndexStatusContinuously and fetchIndexDetailsContinuously\r\n*/\r\nfunction* backgroundSync() {\r\n try {\r\n while (true) {\r\n let userIDs = yield select(getPeople);\r\n if (userIDs.length) {\r\n userIDs = userIDs.slice(0, 6);\r\n }\r\n\r\n for (let i = 0; i <= userIDs.length; i++) {\r\n if (userIDs[i]) {\r\n yield put({\r\n type: actions.GET_USER_STATUS,\r\n payload: userIDs[i].id\r\n })\r\n }\r\n }\r\n\r\n yield delay(30000)\r\n }\r\n } finally {\r\n if (yield cancelled())\r\n console.log(\"Sync stopped\");\r\n }\r\n}\r\n\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(fetchPeople),\r\n fork(setPeople),\r\n fork(anyPeopleRequest),\r\n fork(getAvatar),\r\n fork(startStopStatusUpdates),\r\n fork(getUserStatus),\r\n ]);\r\n}\r\n\r\n\r\n/*\r\n/*tasks.push(\r\n new Promise((resolve, reject) => {\r\n\r\n resolve(avatar);\r\n })\r\n)\r\nlet promises = yield Promise.allSettled(tasks);\r\npromises.forEach((item, index) => {\r\n if ( item.status == 'fulfilled' && item.value) {\r\n let image = 'data:image/png;base64, ' + new Buffer(item.value, 'binary').toString('base64');\r\n peopleWithoutAvatar[index].avatar = image\r\n } else {\r\n peopleWithoutAvatar[index].avatar = 'none';\r\n }\r\n\r\n people.push(peopleWithoutAvatar[index]);\r\n});*/\r\n","import moment from 'moment';\r\n\r\nclass NewsObject {\r\n constructor() {\r\n this._newsItem = {\r\n author : false,\r\n content : false,\r\n unix : false,\r\n moment : false,\r\n title : false,\r\n imageUrl : false,\r\n url : false,\r\n id : false,\r\n type: false,\r\n tenantId: false,\r\n site: false,\r\n dateModified: false,\r\n api: false,\r\n }\r\n }\r\n\r\n setID = (ID) => {\r\n this._newsItem = {\r\n ...this._newsItem,\r\n id : ID\r\n }\r\n }\r\n\r\n setAuthor = (author) => {\r\n this._newsItem = {\r\n ...this._newsItem,\r\n author : author\r\n }\r\n }\r\n\r\n setContent = (content) => {\r\n this._newsItem = {\r\n ...this._newsItem,\r\n content : content\r\n }\r\n }\r\n\r\n setSite = (site) => {\r\n this._newsItem = {\r\n ...this._newsItem,\r\n site: site\r\n }\r\n }\r\n\r\n setDate = (date, format = false) => {\r\n const parsedDate = moment(date, format);\r\n this._newsItem = {\r\n ...this._newsItem,\r\n unix : parsedDate.unix(),\r\n moment: parsedDate,\r\n date: date\r\n }\r\n }\r\n\r\n setDateModified = (date) => {\r\n this._newsItem = {\r\n ...this._newsItem,\r\n dateModified: date\r\n }\r\n }\r\n\r\n setTitle = (title) => {\r\n this._newsItem = {\r\n ...this._newsItem,\r\n title : title\r\n }\r\n }\r\n\r\n setType = (type) => {\r\n this._newsItem = {\r\n ...this._newsItem,\r\n type : type\r\n }\r\n }\r\n\r\n setImageUrl = (imageUrl) => {\r\n this._newsItem = {\r\n ...this._newsItem,\r\n imageUrl : imageUrl\r\n }\r\n }\r\n\r\n setTenantId = (tenantId) => {\r\n this._newsItem = {\r\n ...this._newsItem,\r\n tenantId: tenantId\r\n }\r\n }\r\n\r\n setUrl = (URL) => {\r\n this._newsItem = {\r\n ...this._newsItem,\r\n url : URL\r\n }\r\n }\r\n\r\n setApi = (api) => {\r\n this._newsItem = {\r\n ...this._newsItem,\r\n api : api\r\n }\r\n }\r\n\r\n getNewsObject = () => {\r\n for ( const property in this._newsItem ) {\r\n if ( this._newsItem.hasOwnProperty(property) ) {\r\n if (property !== 'url' && property !== 'tenantId' && property !== 'site' && property !=='dateModified' && property !=='api' ) {\r\n if ( !this._newsItem[property] ) {\r\n console.log('Missing in newsobject: ' + property)\r\n return false;\r\n }\r\n }\r\n\r\n }\r\n }\r\n return this._newsItem;\r\n }\r\n}\r\n\r\nexport default NewsObject;\r\n","import { all, put, fork, takeEvery, select, call } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport userActions from '../../user/actions';\r\nimport localforage from 'localforage';\r\nimport { dataURItoBlob, parseSharepointUrl, parsePictureUrl } from '../../../helpers/functions';\r\nimport { getSharepointClient, getGOClient, getGraphClient, getNewsItems, getMultiChannelNews, getMultiChannelNewsItems, getUserRequestCompleted, getNewsRequestCompleted, getUserProfileSettingData } from '../../selectors';\r\nimport NewsObject from './newsObject';\r\nimport moment from 'moment/min/moment-with-locales';\r\nimport * as rssParser from 'react-native-rss-parser';\r\n\r\nexport function* getNewsFromChannel() {\r\n yield takeEvery(actions.GET_MULTICHANNEL_NEWS_ITEMS, function* (action) {\r\n // -- Switch here, select news conditionally.\r\n yield put({\r\n type: actions.NEWS_REQUEST_COMPLETED,\r\n payload: false\r\n })\r\n let newItems = [];\r\n let containsGo = false;\r\n const title = action.payload.title;\r\n let currentItems = yield select(getMultiChannelNewsItems);\r\n //parse the different sources configured\r\n if (action.payload && action.payload.payload) {\r\n for (let source of action.payload.payload) {\r\n if (source.source == \"sharepoint\") {\r\n let items = yield call(getSharepointNews, source.site, source.url, title, source.source);\r\n if (items) {\r\n newItems = [\r\n ...newItems,\r\n ...items\r\n ];\r\n }\r\n }\r\n\r\n if (source.source == \"rss\") {\r\n let items = yield call(getRssNews, source.url, title);\r\n if (items?.length > 0) {\r\n items = items.map(i => {\r\n i.widget = title\r\n return i; });\r\n }\r\n if (items) {\r\n newItems = [\r\n ...newItems,\r\n ...items\r\n ];\r\n }\r\n }\r\n\r\n if (source.source == \"go\" && source.url == true) {\r\n containsGo = true;\r\n }\r\n }\r\n }\r\n\r\n const sortOnDate = ((a, b) => {\r\n if (a.unix > b.unix) {\r\n return -1;\r\n }\r\n\r\n if (a.unix < b.unix) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n });\r\n\r\n //only if common\r\n if (window.tenantConfig.common || containsGo) {\r\n if(window.tenantConfig.common) {\r\n const items = yield call(getWebsiteNews);\r\n if (items) {\r\n newItems = [\r\n ...newItems,\r\n ...items\r\n ]\r\n }\r\n }\r\n\r\n \r\n let commonNews = yield call(getCommonNews);\r\n if(!window.tenantConfig.common) {\r\n if (commonNews?.length > 0) {\r\n commonNews = commonNews.map(i => {\r\n i.widget = title\r\n return i; });\r\n }\r\n commonNews = [...commonNews, ...currentItems.filter(i => i.type == \"go\" && i.widget == title)];\r\n if (commonNews) {\r\n newItems = [\r\n ...newItems,\r\n ...commonNews\r\n ];\r\n }\r\n newItems.sort(sortOnDate);\r\n } else {\r\n newItems.sort(sortOnDate);\r\n if (commonNews?.length) {\r\n commonNews = commonNews.map(i => {\r\n i.widget = title\r\n return i; });\r\n if (commonNews.find(n => n.tenantId != null)) {\r\n newItems = commonNews\r\n } else {\r\n newItems = commonNews.concat(newItems);\r\n }\r\n }\r\n }\r\n } else {\r\n newItems.sort(sortOnDate);\r\n }\r\n\r\n currentItems = yield select(getMultiChannelNewsItems);\r\n currentItems = currentItems.filter(i => i.widget == title);\r\n newItems = newItems.splice(0, 30); //max items\r\n\r\n let old = currentItems.filter(n => !newItems.find(nn => nn.id == n.id));\r\n if (old?.length > 0 && newItems.length > 0) {\r\n for (let n of old) {\r\n yield localforage.removeItem(n.id);\r\n }\r\n }\r\n\r\n let modified = newItems.filter(data => {\r\n return currentItems.find(current => {\r\n if(data.dateModified != current.dateModified && current.type == \"sharepoint\" && current.id == data.id) {\r\n return data\r\n }\r\n })\r\n })\r\n \r\n let keys = yield localforage.keys();\r\n let localforageKeys = keys.filter(k => k.indexOf('sp_news') != -1)?.length;\r\n let currentItemsKeys = currentItems.filter(i => i.widget == title).length;\r\n \r\n if ((old?.length > 0 && newItems.length > 0) || (modified?.length > 0 && newItems.length > 0) || (currentItems?.length == 0 && newItems?.length > 0) || (currentItems?.length !== newItems?.length && newItems.length > 0)) {\r\n newItems = yield call(postprocess, newItems);\r\n let allItems = yield select(getMultiChannelNewsItems);\r\n allItems = allItems.filter(i => i.widget != title);\r\n allItems = allItems.concat(newItems);\r\n yield put({\r\n type: actions.SET_MULTICHANNEL_NEWS_ITEMS,\r\n payload: allItems\r\n });\r\n } \r\n\r\n if(localforageKeys != currentItemsKeys) { \r\n currentItems = yield select(getMultiChannelNewsItems);\r\n currentItems = currentItems.filter(i => i.widget == title);\r\n currentItems = yield call(postprocess, currentItems);\r\n let allItems = yield select(getMultiChannelNewsItems);\r\n allItems = allItems.filter(i => i.widget != title);\r\n allItems = allItems.concat(currentItems);\r\n allItems.sort(sortOnDate);\r\n\r\n yield put({\r\n type: actions.SET_MULTICHANNEL_NEWS_ITEMS,\r\n payload: allItems\r\n });\r\n }\r\n \r\n yield put({\r\n type: actions.NEWS_REQUEST_COMPLETED,\r\n payload: true\r\n })\r\n })\r\n}\r\n\r\nfunction* getCommonNews() {\r\n\r\n const newsItems = yield select(getMultiChannelNewsItems);\r\n const Client = yield select(getGOClient);\r\n if (!Client) return;\r\n\r\n const news = yield Client.api(\"/common/news/list\");\r\n\r\n if (news == null || !news) return;\r\n\r\n if (news.length && ((newsItems != null && newsItems.length === 0) || (newsItems && newsItems[0].id !== news[0].id))) {\r\n //localforage.clear(); //clear local storage\r\n\r\n let oldNews = newsItems.filter(n => !news.find(nn => nn.id == n.id));\r\n\r\n //yield news.forEach(n => {\r\n for (let n of news) {\r\n try {\r\n let blob = dataURItoBlob(n.image);\r\n if (blob == null || blob == '') continue; // do nothing, maybe request failed\r\n yield localforage.setItem(n.id, blob);\r\n delete n.image;\r\n } catch {\r\n delete n.image;\r\n }\r\n }\r\n }\r\n\r\n let parsedNews = yield parseCommonNewsItems(news);\r\n return parsedNews;\r\n}\r\n\r\nasync function parseCommonNewsItems(news) {\r\n let parsedNews = [];\r\n for (let key in news) {\r\n if (news[key]) {\r\n const item = news[key];\r\n\r\n let newsObject = new NewsObject;\r\n newsObject.setAuthor(item.authorName);\r\n newsObject.setContent(item.content);\r\n newsObject.setDate(item.date);\r\n newsObject.setTitle(item.title);\r\n newsObject.setID(item.id);\r\n newsObject.setType('common');\r\n newsObject.setTenantId(item.tenantId);\r\n newsObject.setImageUrl('parse-from-localForage');\r\n\r\n //newsObject.setImageUrl(item.image);\r\n if (newsObject.getNewsObject()) {\r\n parsedNews.push(newsObject.getNewsObject());\r\n }\r\n }\r\n }\r\n return parsedNews;\r\n}\r\n\r\nfunction* getWebsiteNews() {\r\n try {\r\n const response = yield fetch('https://avantage.nl/wp-json/rendered-posts/all?8');\r\n const news = yield response.json();\r\n\r\n let parsedNews = [];\r\n\r\n news.forEach((item, i) => {\r\n\r\n let newsObject = new NewsObject;\r\n newsObject.setAuthor(item.author);\r\n newsObject.setContent(item.content);\r\n newsObject.setDate(item.date, 'YYYY-MM-DD HH:mm:ss');\r\n newsObject.setTitle(item.title);\r\n newsObject.setImageUrl(item.image);\r\n newsObject.setUrl(item.link);\r\n newsObject.setID(item.id);\r\n newsObject.setType('website');\r\n if (newsObject.getNewsObject()) {\r\n parsedNews.push(newsObject.getNewsObject());\r\n }\r\n });\r\n\r\n return parsedNews;\r\n\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n}\r\n\r\n\r\nfunction* getRssNews(url, title) {\r\n\r\n const GoClient = yield select(getGOClient);\r\n let currentItems = yield select(getMultiChannelNewsItems);\r\n currentItems = currentItems.filter(i => i.widget == title);\r\n let items = [];\r\n let imgUrl = \"\";\r\n try {\r\n let data = yield GoClient.api('/app/proxy?url=' + encodeURIComponent(url), {}, 'text')\r\n .then((responseData) => rssParser.parse(responseData));\r\n if(data?.image && data?.image?.url) {\r\n imgUrl = data?.image?.url;\r\n }\r\n data.items = data.items.slice(0, 20); //max messages\r\n\r\n let newItems = data.items.filter(d => (currentItems?.length == 0 ? true : (!currentItems?.find(i => i.type == \"rss\" && i.id == d.id && i.widget == title))));\r\n let parsedItems = yield parseRssItems(newItems, imgUrl);\r\n\r\n //add existing (already parsed) items to array\r\n parsedItems = parsedItems.concat(currentItems.filter(i => i.type == \"rss\" && i.widget == title));\r\n return parsedItems;\r\n\r\n } catch (error) {\r\n console.log('rss error: ' + error);\r\n return [];\r\n }\r\n}\r\n\r\nfunction* getSharepointNews(site, api, title, source) {\r\n if (!api) {\r\n console.log(\"Sharepoint API URL Required\");\r\n return;\r\n }\r\n\r\n try {\r\n let currentItems = yield select(getMultiChannelNewsItems);\r\n currentItems = currentItems.filter(i => i.widget == title && i.type == source);\r\n let changedItems = [];\r\n const Client = yield select(getSharepointClient);\r\n const GoClient = yield select(getGOClient);\r\n const GraphClient = yield select(getGraphClient);\r\n if (!Client) {\r\n console.log(\"no sharepoint client activated\");\r\n return;\r\n }\r\n\r\n const newsResponse = yield Client.api((api.includes('?') ? api.split('?')[0] : api) + \"/?$expand=File&$filter=PromotedState eq '2'&$top=20&$orderBy=Created desc\");\r\n if (newsResponse == null || !newsResponse || !newsResponse.value) return;\r\n if (newsResponse.value.length === 0) return;\r\n\r\n //only parse new items\r\n let data = newsResponse.value;\r\n let newItems = data.filter(d => (currentItems?.length == 0 ? true : (!currentItems?.find(i => i.type == \"sharepoint\" && i.id == 'sp_news_' + d.Id.toString()))));\r\n let oldItems = currentItems.filter(i => !data.find(d => 'sp_news_' + d.Id == i.id) && !newItems.find(n => 'sp_news_' + n.Id == i.id));\r\n \r\n //set ID for sharepoint.. still necessary?\r\n if (newItems?.length > 0) {\r\n newItems = newItems.map(function (n) {\r\n return { ...n, Id: 'sp_news_' + n.Id.toString(), site: site };\r\n });\r\n }\r\n //parse news items to GO news items\r\n let parsedItems = yield parseSharepointNewsItems(newItems, api);\r\n if (parsedItems?.length > 0) {\r\n parsedItems = parsedItems.map(i => {\r\n i.widget = title\r\n return i; })\r\n }\r\n //remove old items\r\n if (oldItems?.length > 0) {\r\n currentItems = currentItems.filter(c => !oldItems.find(o => o.id == c.id));\r\n }\r\n //Check for modified items\r\n changedItems = data.filter(data => {\r\n return currentItems.find(current => {\r\n if(data.Modified != current.dateModified && current.type == \"sharepoint\" && current.id == 'sp_news_'+ data.Id.toString()) {\r\n return data\r\n }\r\n })\r\n })\r\n\r\n\r\n if (changedItems?.length > 0) {\r\n changedItems = changedItems.map(function (n) {\r\n return { ...n, Id: 'sp_news_' + n.Id.toString(), site: site };\r\n });\r\n }\r\n\r\n let parsedChangedItems = yield parseSharepointNewsItems(changedItems, api);\r\n if (parsedChangedItems?.length > 0) {\r\n parsedChangedItems = parsedChangedItems.map(i => {\r\n i.widget = title\r\n return i; })\r\n }\r\n if (parsedChangedItems?.length > 0) {\r\n currentItems = currentItems.filter(current => !parsedChangedItems.find(parsed => current.type == \"sharepoint\" && current.id == parsed.id))\r\n }\r\n\r\n //add existing (already parsed) items to array\r\n // parsedItems.push({...currentItems[0], Id: 'sp_news_test', id: 'sp_news_test'});\r\n return [...parsedItems, ...currentItems, ...parsedChangedItems];\r\n } catch (ex) { console.log('error getting sharepoint news: '+ ex.message); return []; }\r\n}\r\n\r\nfunction* postprocess(newItems) {\r\n let tasks = [];\r\n const SharepointClient = yield select(getSharepointClient);\r\n let sharepointToken;\r\n if (SharepointClient) sharepointToken = yield SharepointClient.getToken();\r\n\r\n const GoClient = yield select(getGOClient);\r\n let goToken = yield GoClient.getToken();\r\n\r\n //task to get images\r\n tasks = newItems.map(async (item, index) => {\r\n\r\n if (item.type == \"sharepoint\") {\r\n //get author based on sharepoint user id\r\n if (!isNaN(parseInt(item.author))) {\r\n const sharepointUser = await SharepointClient.api(item.site + '/_api/web/getuserbyid(' + item.author + ')');\r\n //set auteur\r\n if (sharepointUser) {\r\n if (sharepointUser.Title) {\r\n //item.author = sharepointUser.Title;\r\n newItems[index].author = sharepointUser.Title;\r\n }\r\n }\r\n }\r\n\r\n //get image\r\n const getResponse = async () => {\r\n if (item.imageUrl == 'parse-from-localForage') return { imageUrl: null }; //no image found in cache \r\n if (item.imageUrl?.indexOf(\"sharepoint.com\") == -1) return { imageUrl: item.imageUrl }; //do nothing\r\n // if (item.imageUrl?.indexOf(\"sharepoint.com\") == 1) { imageUrl: item.imageUrl }; //do nothing\r\n \r\n let pictureUrl = parsePictureUrl(item.orginalUrl ? item.orginalUrl : item.imageUrl, 3);\r\n let url = encodeURIComponent(pictureUrl);\r\n\r\n let response;\r\n response = await fetch(`/api/getimage?url=${url}`, {\r\n method: 'GET',\r\n contentType: 'image/jpeg',\r\n headers: {\r\n 'Authorization': 'Bearer ' + goToken, 'AuthorizationProxy': sharepointToken\r\n }\r\n }).catch((err) => { return null; });\r\n\r\n if (!response || !response.ok) return null;\r\n\r\n const content = await response.text();\r\n let objectUrl = \"\";\r\n let blob;\r\n\r\n try {\r\n blob = dataURItoBlob(content);\r\n //objectUrl = URL.createObjectURL(blob);\r\n } catch (ex) { return null; }\r\n if (!blob) return null;\r\n try{\r\n await localforage.setItem(item.id, blob);\r\n\r\n }\r\n catch (ex) { return null;}\r\n return {\r\n imageUrl: 'parse-from-localForage',\r\n orginalUrl: item.orginalUrl ? item.orginalUrl : item.imageUrl\r\n };\r\n };\r\n\r\n let pictureData = await localforage.getItem(newItems[index].id);\r\n if (pictureData == null || pictureData == '') pictureData = await getResponse();\r\n if (pictureData) newItems[index] = { ...newItems[index], ...pictureData };\r\n }\r\n\r\n\r\n });\r\n\r\n //wait for all tasks (getting images) completed\r\n if (tasks.length) {\r\n yield Promise.all(tasks);\r\n }\r\n\r\n return newItems;\r\n}\r\n\r\nexport function* setLastViewedItems() {\r\n yield takeEvery(actions.SET_LAST_NEWS_VIEWED, function* (action) {\r\n if (action.payload == null) return;\r\n\r\n console.log('set viewed news');\r\n yield put({\r\n type: userActions.UPDATE_USER_SETTINGS,\r\n payload: {\r\n value: action.payload,\r\n setting: 'viewedNews'\r\n }\r\n });\r\n\r\n });\r\n}\r\n\r\n\r\nexport function* parseLastViewed() {\r\n\r\n const parser = function* () {\r\n\r\n //state.User.profile.data?.settings?.viewedNews,\r\n const items = yield select(getMultiChannelNewsItems);\r\n const data = yield select(getUserProfileSettingData);\r\n if (data == null) return;\r\n\r\n let viewedItems = data.settings?.viewedNews;\r\n if (!viewedItems) {\r\n viewedItems = [];\r\n }\r\n\r\n let newViewed = [];\r\n let newItems = 0;\r\n \r\n //items.forEach((item, i) => {\r\n for (let item of items) {\r\n\r\n if (moment().unix() - item.unix >= 8640000) {\r\n // -- Item is older than 24 hours.\r\n item.viewed = true;\r\n } else {\r\n item.viewed = false;\r\n\r\n // -- Check if item has already been viewed in viewed\r\n let viewedItem = viewedItems.find((i) => i.url === item.url);\r\n if (viewedItem) {\r\n if (viewedItem.viewed) {\r\n item.viewed = true;\r\n }\r\n }\r\n }\r\n\r\n if (item.viewed == false) {\r\n newItems++;\r\n }\r\n if (!viewedItems.find((i) => i.url === item.url)) {\r\n viewedItems.push({\r\n url: item.url,\r\n viewed: item.viewed,\r\n title: item.widget\r\n })\r\n }\r\n }\r\n\r\n // -- Cleanup with only present items.\r\n //viewedItems.forEach((item, i) => {\r\n for (let item of viewedItems) {\r\n let available = items.find((i) => i.url === item.url);\r\n if (available) {\r\n newViewed.push({\r\n url: item.url,\r\n viewed: item.viewed,\r\n title: item.title\r\n })\r\n }\r\n }\r\n\r\n if ((newViewed.length == 0 && viewedItems.length == 0) ||\r\n (JSON.stringify(newViewed.map(n => n.url)) != JSON.stringify(viewedItems.map(n => n.url))) ||\r\n !data.settings?.viewedNews) {\r\n\r\n yield put({\r\n type: userActions.UPDATE_USER_SETTINGS,\r\n payload: {\r\n value: newViewed,\r\n setting: 'viewedNews'\r\n }\r\n });\r\n\r\n }\r\n }\r\n\r\n\r\n yield takeEvery(userActions.DATA_REQUEST_COMPLETED, function* (action) {\r\n const completed = yield select(getNewsRequestCompleted);\r\n //const state = yield select();\r\n //const completed = yield state.MultiChannelNews?.requestCompleted;\r\n\r\n if (action.payload === true && completed) {\r\n yield parser();\r\n }\r\n });\r\n\r\n yield takeEvery(actions.NEWS_REQUEST_COMPLETED, function* (action) {\r\n const completed = yield select(getUserRequestCompleted);\r\n //const state = yield select();\r\n //const completed = yield state.User?.requestCompleted;\r\n\r\n if (action.payload === true && completed) {\r\n yield parser();\r\n }\r\n });\r\n}\r\n\r\nasync function parseSharepointNewsItems(items, api) {\r\n let parsedItems = [];\r\n for (let key in items) {\r\n if (items[key]) {\r\n const item = items[key];\r\n\r\n let url = parseSharepointUrl(item.File['odata.id']);\r\n let newsObject = new NewsObject;\r\n if(item['OData__AuthorBylineId'] && item['OData__AuthorBylineId'][0]) {\r\n newsObject.setAuthor(item['OData__AuthorBylineId'][0]); \r\n } else {\r\n newsObject.setAuthor(item.AuthorId);\r\n }\r\n newsObject.setContent(item.CanvasContent1 ? parseSharePointContent(item.CanvasContent1, url, item.File?.ServerRelativeUrl, key): item.Description ? item.Description : \"\");\r\n newsObject.setDate(item.FirstPublishedDate ? item.FirstPublishedDate : item.Created);\r\n newsObject.setDateModified(item.Modified);\r\n newsObject.setTitle(item.Title);\r\n newsObject.setUrl(url.concat(item.File?.ServerRelativeUrl));\r\n newsObject.setID(item.Id);\r\n newsObject.setType('sharepoint');\r\n newsObject.setImageUrl(item.BannerImageUrl?.Url);\r\n newsObject.setSite(item.site);\r\n newsObject.setApi(api);\r\n /* if (newsObject.imageUrl == null) {\r\n newsObject.setImageUrl('parse-from-localForage');\r\n }*/\r\n\r\n if (newsObject.getNewsObject()) {\r\n parsedItems.push(newsObject.getNewsObject());\r\n }\r\n\r\n }\r\n }\r\n return parsedItems;\r\n}\r\n\r\nasync function parseRssItems(items, imgUrl) {\r\n let parsedItems = [];\r\n for (let key in items) {\r\n if (items[key]) {\r\n const item = items[key];\r\n let newsObject = new NewsObject;\r\n newsObject.setAuthor((item.authors[0] ? item.authors[0].name : feed.title));\r\n newsObject.setContent((item.content ? item.content : item.description));\r\n newsObject.setDate(item.published);\r\n newsObject.setTitle(item.title);\r\n newsObject.setImageUrl(item.enclosures[0]?.url ? item.enclosures[0]?.url : imgUrl);\r\n newsObject.setUrl(item.links[0]?.url);\r\n newsObject.setID(item.id);\r\n newsObject.setType('rss');\r\n\r\n if (newsObject.getNewsObject()) {\r\n parsedItems.push(newsObject.getNewsObject());\r\n }\r\n\r\n }\r\n }\r\n return parsedItems;\r\n}\r\n\r\nfunction parseSharePointContent(content, root, extra, key) {\r\n if (!content) return '';\r\n const urls = /href=\\\"\\//g;\r\n const src = /src=\\\"\\//g;\r\n const ids = /
[a-z,0-9,-]+<\\/div>/g;\r\n const video = /<\\/a>/g;\r\n const videoThumb = /]*\\\" \\/>/g;\r\n const imagesRegex = //g\r\n const divPlaceRegex = /
/g;\r\n let images = [];\r\n let divPlace = [];\r\n images = content.match(imagesRegex);\r\n divPlace = content.match(divPlaceRegex);\r\n if(images && divPlace) {\r\n content = content.replace(imagesRegex, \"\");\r\n for(let i = 0; i/sg;\r\n // Regular expression to match the imagePlugin divs\r\n const regexextra = /
/sg;\r\n // Replace the imagePlugin divs with img tags\r\n content = content.replace(regex, (match, imageUrl) => {\r\n return ``;\r\n });\r\n // Replace the imagePlugin divs with img tags\r\n content = content.replace(regexextra, (match, imageUrl) => {\r\n return ``;\r\n });\r\n\r\n content = content.replace(urls, function (match, token) {\r\n return 'target=\"_blank\" href=\"' + root + '/';\r\n });\r\n\r\n content = content.replace(src, function (match, token) {\r\n return 'src=\"' + root + '/';\r\n });\r\n\r\n content = content.replace(videoThumb, \"\");\r\n\r\n content = content.replace(ids, \"\");\r\n\r\n\r\n // Regular expression to match the SharePoint images\r\n const sharePointImages = //g;\r\n // Remove the SharePoint images\r\n content = content.replaceAll(sharePointImages, \"\");\r\n\r\n\r\n content = content.replace(/
/g, \"\\n\")\r\n content = content.replaceAll(/(
){3,}/g, \"

\");\r\n content = content.replaceAll(\"

 

\",\"\")\r\n let test;\r\n while (test = video.exec(content)) {\r\n let embed = test[1].replace(\"/video/\", \"/embed/video/\");\r\n if (test[1]) content = content.replace(test[0], `
`)\r\n }\r\n \r\n return content;\r\n}\r\n\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getNewsFromChannel),\r\n fork(parseLastViewed),\r\n fork(setLastViewedItems)\r\n ]);\r\n}\r\n","import moment from 'moment';\r\n\r\nclass ShoutObject {\r\n constructor() {\r\n this._shoutItem = {\r\n author : false,\r\n content : false,\r\n unix : false,\r\n moment : false,\r\n title : \"\",\r\n imageUrl : false,\r\n url : false,\r\n id : false,\r\n type: false,\r\n tenantId: false,\r\n description: false,\r\n topics: false,\r\n site: false,\r\n dateModified: false,\r\n }\r\n }\r\n\r\n setID = (ID) => {\r\n this._shoutItem = {\r\n ...this._shoutItem,\r\n id : ID\r\n }\r\n }\r\n\r\n setAuthor = (author) => {\r\n this._shoutItem = {\r\n ...this._shoutItem,\r\n author : author\r\n }\r\n }\r\n\r\n setContent = (content) => {\r\n this._shoutItem = {\r\n ...this._shoutItem,\r\n content : content\r\n }\r\n }\r\n\r\n setSite = (site) => {\r\n this._shoutItem = {\r\n ...this._shoutItem,\r\n site: site\r\n }\r\n }\r\n\r\n setDescription = (description) => {\r\n this._shoutItem = {\r\n ...this._shoutItem,\r\n description: description\r\n }\r\n }\r\n\r\n setDate = (date, format = false) => {\r\n const parsedDate = moment(date, format);\r\n this._shoutItem = {\r\n ...this._shoutItem,\r\n unix : parsedDate.unix(),\r\n moment: parsedDate,\r\n date: date\r\n }\r\n }\r\n\r\n setTitle = (title) => {\r\n this._shoutItem = {\r\n ...this._shoutItem,\r\n title : title\r\n }\r\n }\r\n\r\n setType = (type) => {\r\n this._shoutItem = {\r\n ...this._shoutItem,\r\n type : type\r\n }\r\n }\r\n\r\n\r\n setTopics = (topics) => {\r\n this._shoutItem = {\r\n ...this._shoutItem,\r\n topics: topics\r\n }\r\n }\r\n\r\n setImageUrl = (imageUrl) => {\r\n this._shoutItem = {\r\n ...this._shoutItem,\r\n imageUrl : imageUrl\r\n }\r\n }\r\n\r\n setTenantId = (tenantId) => {\r\n this._shoutItem = {\r\n ...this._shoutItem,\r\n tenantId: tenantId\r\n }\r\n }\r\n\r\n setUrl = (URL) => {\r\n this._shoutItem = {\r\n ...this._shoutItem,\r\n url : URL\r\n }\r\n }\r\n\r\n setDateModified = (date) => {\r\n this._shoutItem = {\r\n ...this._shoutItem,\r\n dateModified : date\r\n }\r\n }\r\n\r\n getShoutObject = () => {\r\n //for ( const property in this._shoutItem ) {\r\n // if ( this._shoutItem.hasOwnProperty(property) ) {\r\n // if (property !== 'url' && property !== 'tenantId' ) {\r\n // if ( !this._shoutItem[property] ) {\r\n // console.log('Missing in shoutobject: ' + property)\r\n // return false;\r\n // }\r\n // }\r\n\r\n // }\r\n //}\r\n return this._shoutItem;\r\n }\r\n}\r\n\r\nexport default ShoutObject;\r\n","import { all, put, fork, takeEvery, select, call } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport userActions from '../../user/actions';\r\nimport localforage from 'localforage';\r\nimport { findAll, dataURItoBlob, parseSharepointUrl, parsePictureUrl } from '../../../helpers/functions';\r\nimport { getWidgets, getGOClient, getGraphClient, getYammerClient, getSharepointClient, getMultiChannelShoutItems, getShoutsRequestCompleted, getUserRequestCompleted, getUserProfileSettingData } from '../../selectors';\r\nimport ShoutObject from './shoutObject';\r\nimport moment from 'moment/min/moment-with-locales';\r\n\r\nexport function* getShoutFromChannel() {\r\n yield takeEvery(actions.GET_MULTICHANNEL_SHOUT_ITEMS, function* (action) {\r\n // -- Switch here, select shout conditionally.\r\n yield put({\r\n type: actions.SHOUT_REQUEST_COMPLETED,\r\n payload: false\r\n })\r\n let newItems = [];\r\n let currentItems = yield select(getMultiChannelShoutItems);\r\n\r\n const title = action.payload.title;\r\n let sources = action.payload.payload;\r\n\r\n if (!sources) {\r\n const widgets = yield select(getWidgets);\r\n let widget = findAll(widgets, title);\r\n if (!widget) return;\r\n sources = widget.sources;\r\n }\r\n\r\n //parse the different sources configured\r\n if (sources) {\r\n for (let source of sources) {\r\n\r\n if (source.source == \"sharepoint\") {\r\n if (source.url.indexOf(\"?\") == -1 && source.parameters != null && source.parameters != '') { //optional configured parameters\r\n source.url += source.parameters;\r\n }\r\n\r\n let items = yield call(getSharepointShout, source.site, source.url, source.content, title);\r\n if (items) {\r\n newItems = [\r\n ...newItems,\r\n ...items\r\n ];\r\n }\r\n\r\n // if (items?.length == 0) {\r\n // items = currentItems.filter(i => i.widget == title);\r\n // } else if (items?.length > 0) {\r\n // items = items.map(i => { i.widget = title; return i; });\r\n // }\r\n\r\n // if (items) {\r\n // newItems = [\r\n // ...newItems,\r\n // ...items\r\n // ];\r\n // }\r\n }\r\n\r\n //if (source.source == \"rss\") {\r\n // const items = yield call(getRss, source.url);\r\n // if (items) {\r\n // shoutItems = [\r\n // ...shoutItems,\r\n // ...items\r\n // ]\r\n // }\r\n //}\r\n\r\n if (source.source == \"yammer\") {\r\n let items = yield call(getYammerShout);\r\n if (items?.length == 0) {\r\n items = currentItems.filter(i => i.widget == title);\r\n } else if (items?.length > 0) {\r\n items = items.map(i => { i.widget = title; return i; });\r\n }\r\n\r\n if (items) {\r\n newItems = [\r\n ...newItems,\r\n ...items\r\n ];\r\n }\r\n }\r\n }\r\n }\r\n\r\n const sortOnDate = ((a, b) => {\r\n if (a.unix > b.unix) {\r\n return -1;\r\n }\r\n\r\n if (a.unix < b.unix) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n });\r\n\r\n //if (shoutItems != null && shoutItems.length > 0) {\r\n\r\n currentItems = yield select(getMultiChannelShoutItems);\r\n currentItems = currentItems.filter(i => i.widget == title);\r\n\r\n //sort all new items on date\r\n newItems.sort(sortOnDate);\r\n\r\n //max items for one widget\r\n newItems = newItems.splice(0, 30);\r\n\r\n let old = currentItems.filter(n => !newItems.find(nn => nn.id == n.id));\r\n if (old?.length > 0 && newItems.length > 0) {\r\n for (let n of old) {\r\n yield localforage.removeItem(n.id);\r\n }\r\n }\r\n\r\n let modified = newItems.filter(data => {\r\n return currentItems.find(current => {\r\n if(data.dateModified != current.dateModified && current.type == \"sharepoint\" && current.id == data.id) {\r\n return data\r\n }\r\n })\r\n })\r\n let keys = yield localforage.keys();\r\n let localforageKeys = keys.filter(k => k.indexOf('sp_shouts') != -1)?.length;\r\n let currentItemsKeys = currentItems.filter(i => i.widget == title).length;\r\n\r\n if ((old?.length > 0 && newItems.length > 0) || (modified?.length > 0 && newItems.length > 0) || (currentItems?.length == 0 && newItems?.length > 0) || (currentItems?.length !== newItems?.length && newItems?.length > 0)) {\r\n\r\n //postprocessing..\r\n newItems = yield call(postprocess, newItems);\r\n\r\n let allItems = yield select(getMultiChannelShoutItems);\r\n allItems = allItems.filter(i => i.widget != title);\r\n allItems = allItems.concat(newItems);\r\n yield put({\r\n type: actions.SET_MULTICHANNEL_SHOUT_ITEMS,\r\n payload: allItems\r\n });\r\n }\r\n\r\n if(localforageKeys != currentItemsKeys) { \r\n currentItems = yield select(getMultiChannelShoutItems);\r\n currentItems = currentItems.filter(i => i.widget == title);\r\n currentItems = yield call(postprocess, currentItems);\r\n let allItems = yield select(getMultiChannelShoutItems);\r\n allItems = allItems.filter(i => i.widget != title);\r\n allItems = allItems.concat(currentItems);\r\n allItems.sort(sortOnDate);\r\n\r\n yield put({\r\n type: actions.SET_MULTICHANNEL_SHOUT_ITEMS,\r\n payload: allItems\r\n });\r\n }\r\n\r\n\r\n //}\r\n\r\n yield put({\r\n type: actions.SHOUT_REQUEST_COMPLETED,\r\n payload: true\r\n });\r\n })\r\n}\r\n\r\nconst parseShoutContent = (content) => {\r\n const urls = /<(.*)>\\(“(.*)”\\)/g\r\n\r\n content = content.replace(urls, function (match, token) {\r\n let title = match.match(/<(.*)>/);\r\n let link = match.match(/\\(“(.*)”\\)/);\r\n if (title[1] == null || link[1] == null) return \"\";\r\n return `
${link[1]} `;\r\n });\r\n\r\n content = content.replace(/(?:\\r\\n|\\r|\\n)/g, '
');\r\n \r\n return content;\r\n}\r\n\r\nfunction* getYammerShout() {\r\n //if (!apiURL) {\r\n // console.log(\"Yammer API URL Required\");\r\n // return;\r\n //}\r\n //try {\r\n const shoutItems = yield select(getMultiChannelShoutItems);\r\n const Client = yield select(getYammerClient);\r\n const GoClient = yield select(getGOClient);\r\n const GraphClient = yield select(getGraphClient);\r\n\r\n if (!Client) return;\r\n\r\n //const shouts = yield Client.api(apiURL);\r\n let shouts = yield Client.api('https://www.yammer.com/api/v1/messages.json?threaded=true');\r\n //let test = yield Client.api('/users/1522724127.json');\r\n let messages = [];\r\n\r\n if (shouts == null || !shouts) return;\r\n if (shouts.length === 0) return;\r\n\r\n if (shouts != null) {\r\n let announcements = shouts.references.filter(m => m.announcement === true);\r\n messages = shouts.messages.filter(m => announcements.find(a => a.id == m.id));\r\n\r\n //messages.takeEvery(m => announcements.find(a => a.id == m.id))\r\n for (let m of messages) {\r\n let a = announcements.find(a => a.id == m.id);\r\n m.reference = a;\r\n\r\n let user = shouts.references.find(r => r.id == m.sender_id);\r\n m.user = user;\r\n\r\n let topics = shouts.references.find(r => r.id == m.id)?.topics;\r\n if (topics != null) {\r\n //m.topics = topics;\r\n m.topics = [];\r\n for (let t of topics) {\r\n let topic = yield Client.api(`https://www.yammer.com/api/v1/topics/${t.id}.json`);\r\n if (topic != null) m.topics.push(topic);\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (messages.length && ((shoutItems.length === 0) || (shoutItems && shoutItems[0].id !== messages[0].id))) {\r\n return yield parseYammerShout(messages);\r\n } else {\r\n return yield parseYammerShout(messages);\r\n }\r\n return false\r\n}\r\n\r\nasync function parseYammerShout(shout) {\r\n let parsedShout = [];\r\n for (let key in shout) {\r\n if (shout[key]) {\r\n const item = shout[key];\r\n\r\n let shoutObject = new ShoutObject;\r\n shoutObject.setAuthor(item.user?.full_name);\r\n\r\n shoutObject.setContent(parseShoutContent(item.body?.rich));\r\n shoutObject.setDate(item.created_at);\r\n //shoutObject.setTitle(item.title);\r\n shoutObject.setUrl(item.web_url);\r\n shoutObject.setID(\"\" + item.id);\r\n shoutObject.setType('yammer');\r\n\r\n if (item.topics != null && item.topics) {\r\n shoutObject.setTopics(item.topics);\r\n }\r\n\r\n shoutObject.setImageUrl(item.user?.mugshot_url);\r\n\r\n if (shoutObject.getShoutObject()) {\r\n parsedShout.push(shoutObject.getShoutObject());\r\n }\r\n }\r\n }\r\n return parsedShout;\r\n}\r\n\r\n\r\nfunction* getSharepointShout(site, api, selector, title) {\r\n if (!api) {\r\n console.log(\"Sharepoint API URL Required\");\r\n return;\r\n }\r\n let changedItems = [];\r\n // try {\r\n let currentItems = yield select(getMultiChannelShoutItems);\r\n currentItems = currentItems.filter(i => i.widget == title);\r\n const Client = yield select(getSharepointClient);\r\n const GoClient = yield select(getGOClient);\r\n // const GraphClient = yield select(getGraphClient);\r\n\r\n if (!Client) return;\r\n\r\n if (api.indexOf('?') == -1) {\r\n api += \"?$orderBy=Created desc&$top=20\";\r\n }\r\n\r\n const newsResponse = yield Client.api(api);\r\n\r\n if (newsResponse == null || !newsResponse || !newsResponse.value) return;\r\n if (newsResponse.value.length === 0) return;\r\n\r\n let data = newsResponse.value;\r\n let newItems = data.filter(d => (currentItems?.length == 0 ? true : (!currentItems?.find(i => i.type == \"sharepoint\" && i.id == 'sp_shouts_' + d.Id.toString()))));\r\n let oldItems = currentItems.filter(i => !data.find(d => 'sp_shouts_' + d.Id == i.id) && !newItems.find(n => 'sp_shouts_' + n.Id == i.id));\r\n\r\n //data = data.slice(0, 16);\r\n if (newItems?.length > 0) {\r\n newItems = newItems.map(function (n) {\r\n return { ...n, Id: 'sp_shouts_' + n.Id.toString(), site: site };\r\n });\r\n }\r\n\r\n //remove old items\r\n if (oldItems?.length > 0) {\r\n currentItems = currentItems.filter(c => !oldItems.find(o => o.id == c.id));\r\n }\r\n //Check for modified items\r\n changedItems = data.filter(data => {\r\n return currentItems.find(current => {\r\n if(data.Modified != current.dateModified && current.type == \"sharepoint\" && current.id == 'sp_shouts_'+ data.Id.toString()) {\r\n return data\r\n }\r\n })\r\n })\r\n\r\n if (changedItems?.length > 0) {\r\n changedItems = changedItems.map(function (n) {\r\n return { ...n, Id: 'sp_shouts_' + n.Id.toString(), site: site };\r\n });\r\n }\r\n\r\n //use selectors to get the right data\r\n let selected = null;\r\n if (selector) {\r\n selected = JSON.parse(selector);\r\n if (!selected) return;\r\n }\r\n\r\n //how to know.. if the items from.. still valid?\r\n\r\n\r\n //parse items to GO items with parsed selectors\r\n let parsedItems = yield parseSharepointShout(newItems, selected);\r\n if (parsedItems?.length > 0) {\r\n parsedItems = parsedItems.map(i => {\r\n i.widget = title\r\n return i; })\r\n }\r\n //remove old items\r\n if (oldItems?.length > 0) currentItems = currentItems.filter(c => !oldItems.find(o => o.id == c.Id));\r\n\r\n // //add existing (already parsed) items to array\r\n // parsedItems = parsedItems.concat(currentItems.filter(i => i.type == \"sharepoint\" && i.widget == title));\r\n // parsedItems = parsedItems.slice(0, 20); //max?\r\n\r\n\r\n let parsedChangedItems = yield parseSharepointShout(changedItems, selected);\r\n if (parsedChangedItems?.length > 0) {\r\n parsedChangedItems = parsedChangedItems.map(i => {\r\n i.widget = title\r\n return i; })\r\n }\r\n if (parsedChangedItems?.length > 0) {\r\n currentItems = currentItems.filter(current => !parsedChangedItems.find(parsed => current.type == \"sharepoint\" && current.id == parsed.id))\r\n }\r\n\r\n //add existing (already parsed) items to array\r\n // parsedItems.push({...currentItems[0], Id: 'sp_news_test', id: 'sp_news_test'});\r\n return [...parsedItems, ...currentItems, ...parsedChangedItems];\r\n\r\n // return parsedItems;\r\n}\r\n\r\nfunction* postprocess(newItems) {\r\n let tasks = [];\r\n\r\n const SharepointClient = yield select(getSharepointClient);\r\n let sharepointToken;\r\n if (SharepointClient) sharepointToken = yield SharepointClient.getToken();\r\n\r\n const GoClient = yield select(getGOClient);\r\n let goToken = yield GoClient.getToken();\r\n\r\n\r\n //task to get images\r\n tasks = newItems.map(async (item, index) => {\r\n\r\n if (item.type == \"sharepoint\") {\r\n\r\n //get author based on sharepoint user id\r\n if (!isNaN(parseInt(item.author))) {\r\n const sharepointUser = await SharepointClient.api(item.site + '/_api/web/getuserbyid(' + item.author + ')');\r\n\r\n //set auteur\r\n if (sharepointUser) {\r\n if (sharepointUser.Title) {\r\n //item.author = sharepointUser.Title;\r\n newItems[index].author = sharepointUser.Title;\r\n }\r\n }\r\n }\r\n\r\n const getResponse = async (item) => {\r\n if (item.imageUrl == null) return { imageUrl: null };\r\n if (item.imageUrl == 'parse-from-localForage') return { imageUrl: null }; //no image found in cache \r\n if (item.imageUrl.indexOf(\"sharepoint.com\") == -1) return { imageUrl: item.imageUrl }; //do nothing\r\n\r\n let pictureUrl = parsePictureUrl(item.orginalUrl ? item.orginalUrl : item.imageUrl, 3);\r\n let url = encodeURIComponent(pictureUrl);\r\n\r\n let response = await fetch(`/api/getimage?url=${url}`, {\r\n method: 'GET',\r\n contentType: 'image/jpeg',\r\n headers: {\r\n 'Authorization': 'Bearer ' + goToken,\r\n 'AuthorizationProxy': sharepointToken\r\n }\r\n }).catch((err) => { return null; });\r\n\r\n if (!response?.ok) return null;\r\n\r\n const content = await response.text();\r\n let objectUrl = \"\";\r\n let blob;\r\n\r\n try {\r\n blob = dataURItoBlob(content);\r\n } catch (ex) { return null; }\r\n\r\n if (!blob) return null;\r\n await localforage.setItem(item.id, blob);\r\n\r\n return {\r\n imageUrl: 'parse-from-localForage',\r\n orginalUrl: item.orginalUrl ? item.orginalUrl : item.imageUrl\r\n };\r\n };\r\n\r\n let pictureData = await localforage.getItem(newItems[index].id);\r\n if (pictureData == null || pictureData == '') pictureData = await getResponse(newItems[index]);\r\n if (pictureData) newItems[index] = { ...newItems[index], ...pictureData };\r\n }\r\n });\r\n\r\n if (tasks.length) {\r\n yield Promise.all(tasks);\r\n }\r\n\r\n return newItems;\r\n}\r\n\r\n\r\n\r\nexport function* setLastViewedItems() {\r\n yield takeEvery(actions.SET_LAST_SHOUT_VIEWED, function* (action) {\r\n if (action.payload == null) return;\r\n\r\n\r\n //this.props.actions.setSettingValue(newViewed, 'viewedShouts');\r\n\r\n console.log('set viewed shouts');\r\n yield put({\r\n type: userActions.UPDATE_USER_SETTINGS,\r\n payload: {\r\n value: action.payload,\r\n setting: 'viewedShouts'\r\n }\r\n });\r\n\r\n });\r\n}\r\n\r\n\r\nexport function* parseLastViewed() {\r\n\r\n const parser = function* () {\r\n\r\n //state.User.profile.data?.settings?.viewedShouts,\r\n const items = yield select(getMultiChannelShoutItems);\r\n const data = yield select(getUserProfileSettingData);\r\n const completed = yield select(getUserRequestCompleted);\r\n const shoutsCompleted = yield select(getShoutsRequestCompleted);\r\n\r\n if (data == null || !completed || !shoutsCompleted || items?.length == 0) return;\r\n\r\n let viewedItems = data.settings?.viewedShouts;\r\n if (!viewedItems) {\r\n viewedItems = [];\r\n }\r\n\r\n let newViewed = [];\r\n\r\n //items.forEach((item, i) => {\r\n for (let item of items) {\r\n\r\n if (moment().unix() - item.unix >= 8640000) {\r\n // -- Item is older than 24 hours.\r\n item.viewed = true;\r\n } else {\r\n item.viewed = false;\r\n\r\n // -- Check if item has already been viewed in viewed\r\n let viewedItem = viewedItems.find((i) => i.url === item.url);\r\n if (viewedItem) {\r\n if (viewedItem.viewed) {\r\n item.viewed = true;\r\n }\r\n }\r\n }\r\n\r\n if (!viewedItems.find((i) => i.url === item.url)) {\r\n viewedItems.push({\r\n url: item.url,\r\n widget: item.widget,\r\n viewed: item.viewed\r\n });\r\n }\r\n }\r\n\r\n // -- Cleanup with only present items.\r\n for (let item of viewedItems) {\r\n let available = items.find((i) => i.url === item.url);\r\n if (available) {\r\n newViewed.push({\r\n url: item.url,\r\n widget: item.widget,\r\n viewed: item.viewed\r\n })\r\n }\r\n }\r\n if ((newViewed.length == 0 && viewedItems.length == 0) ||\r\n (JSON.stringify(newViewed.map(n => n.url)) != JSON.stringify(viewedItems.map(n => n.url))) ||\r\n !data.settings?.viewedShouts) {\r\n\r\n yield put({\r\n type: userActions.UPDATE_USER_SETTINGS,\r\n payload: {\r\n value: newViewed,\r\n setting: 'viewedShouts'\r\n }\r\n });\r\n\r\n }\r\n }\r\n\r\n\r\n yield takeEvery(userActions.DATA_REQUEST_COMPLETED, function* (action) {\r\n const completed = yield select(getShoutsRequestCompleted);\r\n\r\n if (completed) {\r\n yield parser();\r\n }\r\n });\r\n\r\n yield takeEvery(actions.SHOUT_REQUEST_COMPLETED, function* (action) {\r\n const completed = yield select(getUserRequestCompleted);\r\n\r\n if (action.payload === true && completed) {\r\n yield parser();\r\n }\r\n });\r\n}\r\n\r\n\r\nasync function parseSharepointShout(shout, selected) {\r\n let parsedShout = [];\r\n let content;\r\n let description;\r\n\r\n\r\n for (let key in shout) {\r\n if (shout[key]) {\r\n let item = shout[key];\r\n let content = null;\r\n let description = null;\r\n\r\n if (selected) {\r\n if (selected.content?.indexOf(\"%\") != -1) {\r\n content = selected.content.replace(/%(.*?)%/g, function (match, token) {\r\n if (item[token]) return item[token];\r\n return '';\r\n });\r\n }\r\n if (selected.description?.indexOf(\"%\") != -1) {\r\n description = selected.description.replace(/%(.*?)%/g, function (match, token) {\r\n if (item[token]) return item[token];\r\n return '';\r\n });\r\n }\r\n }\r\n item = {\r\n ...item,\r\n id: item.Id,\r\n author: item.AuthorId,\r\n title: selected?.title ? item[selected.title] : item.Title,\r\n content: (!content ? item['CanvasContent1'] : content),\r\n message: (!description ? item['Description'] : description),\r\n imageUrl: selected?.image ? item[selected.image] : item.BannerImageUrl?.Url,\r\n url: item.site + (item['Title'] ? \"/SitePages/\" + item['Title'].replaceAll(\" \", \"-\") + \".aspx\" : \"\"),\r\n //url: item.site,\r\n date: selected?.date ? item[selected.date] : item.Created,\r\n dateModifed: item?.Modified ? item.Modified : item.Created\r\n };\r\n\r\n if (item.imageUrl && typeof (item.imageUrl) === 'object' && item.imageUrl?.Url) item.imageUrl = item.imageUrl.Url;\r\n\r\n let shoutObject = new ShoutObject;\r\n shoutObject.setAuthor(item.author);\r\n shoutObject.setContent(parseSharePointContent(item.content, item.url));\r\n shoutObject.setDate(item.date);\r\n shoutObject.setUrl(item.url);\r\n shoutObject.setTitle(item.title);\r\n shoutObject.setDescription(item.message);\r\n shoutObject.setID(item.id);\r\n shoutObject.setType('sharepoint');\r\n shoutObject.setSite(item.site);\r\n shoutObject.setDateModified(item.dateModifed)\r\n\r\n if (item.imageUrl == null) {\r\n shoutObject.setImageUrl('parse-from-localForage');\r\n } else {\r\n shoutObject.setImageUrl(item.imageUrl);\r\n }\r\n\r\n if (shoutObject.getShoutObject()) {\r\n parsedShout.push(shoutObject.getShoutObject());\r\n }\r\n }\r\n }\r\n return parsedShout;\r\n}\r\n\r\n\r\nfunction parseSharePointContent(content, url) {\r\n if (content == null) return;\r\n const urls = /href=\\\"\\//g\r\n const src = /src=\\\"\\//g;\r\n const ids = /
[a-z,0-9,-]+<\\/div>/g;\r\n const video = /<\\/a>/g;\r\n const videoThumb = /]*\\\" \\/>/g;\r\n\r\n content = content.replace(urls, function (match, token) {\r\n return 'target=\"_blank\" href=\"' + parseSharepointUrl(url) + '/';\r\n });\r\n\r\n content = content.replace(src, function (match, token) {\r\n return 'src=\"' + parseSharepointUrl(url) + '/';\r\n });\r\n\r\n content = content.replace(videoThumb, \"\");\r\n\r\n content = content.replace(ids, \"\");\r\n\r\n let test;\r\n while (test = video.exec(content)) {\r\n let embed = test[1].replace(\"/video/\", \"/embed/video/\");\r\n if (test[1]) content = content.replace(test[0], `
`)\r\n }\r\n\r\n return content;\r\n}\r\n\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getShoutFromChannel),\r\n fork(parseLastViewed),\r\n fork(setLastViewedItems)\r\n ]);\r\n};\r\n","import moment from 'moment';\r\nclass BlogObject {\r\n constructor() {\r\n this._blogItem = {\r\n author : false,\r\n content : false,\r\n unix : false,\r\n moment : false,\r\n title : false,\r\n imageUrl : false,\r\n url : false,\r\n id : false,\r\n type : false,\r\n openExternal: false,\r\n tenantId: false,\r\n site: false,\r\n dateModified: false,\r\n }\r\n }\r\n setID = (ID) => {\r\n this._blogItem = {\r\n ...this._blogItem,\r\n id : ID\r\n }\r\n }\r\n\r\n setType = (type) => {\r\n this._blogItem = {\r\n ...this._blogItem,\r\n type : type\r\n }\r\n }\r\n\r\n setAuthor = (author) => {\r\n this._blogItem = {\r\n ...this._blogItem,\r\n author : author\r\n }\r\n }\r\n\r\n setSite = (site) => {\r\n this._blogItem = {\r\n ...this._blogItem,\r\n site: site\r\n }\r\n }\r\n\r\n setContent = (content) => {\r\n this._blogItem = {\r\n ...this._blogItem,\r\n content : content\r\n }\r\n }\r\n\r\n setDate = (date, format = false) => {\r\n const parsedDate = moment(date, format);\r\n this._blogItem = {\r\n ...this._blogItem,\r\n unix : parsedDate.unix(),\r\n moment : parsedDate\r\n }\r\n }\r\n\r\n setDateModified = (date) => {\r\n this._blogItem = {\r\n ...this._blogItem,\r\n dateModified: date\r\n }\r\n }\r\n\r\n setTitle = (title) => {\r\n this._blogItem = {\r\n ...this._blogItem,\r\n title : title\r\n }\r\n }\r\n\r\n setImageUrl = (imageUrl) => {\r\n this._blogItem = {\r\n ...this._blogItem,\r\n imageUrl : imageUrl\r\n }\r\n }\r\n\r\n setUrl = (URL) => {\r\n this._blogItem = {\r\n ...this._blogItem,\r\n url : URL\r\n }\r\n }\r\n\r\n setTenantId = (tenantId) => {\r\n this._blogItem = {\r\n ...this._blogItem,\r\n tenantId: tenantId\r\n }\r\n }\r\n\r\n setOpenExternal = (bool) => {\r\n this._blogItem = {\r\n ...this._blogItem,\r\n openExternal : bool\r\n }\r\n }\r\n\r\n getBlogObject = () => {\r\n for ( const property in this._blogItem ) {\r\n if ( this._blogItem.hasOwnProperty(property) ) {\r\n if( property !== 'url' && property !== 'imageUrl' && property !== 'openExternal' && property !== 'tenantId' && property !== 'site' && property !=='dateModified') {\r\n if ( !this._blogItem[property] ) {\r\n console.log(\"Missing blogitem: \" + property);\r\n return false;\r\n }\r\n }\r\n\r\n }\r\n }\r\n return this._blogItem;\r\n }\r\n}\r\n\r\nexport default BlogObject;\r\n","import { all, put, fork, takeEvery, select, call } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport localforage from 'localforage';\r\nimport { dataURItoBlob, parseSharepointUrl, parsePictureUrl } from '../../../helpers/functions';\r\nimport { getSharepointClient, getGOClient, getGraphClient, getMultiChannelBlogItems } from '../../selectors';\r\nimport BlogOBject from './blogObject';\r\nimport moment from 'moment/min/moment-with-locales';\r\nimport { Buffer } from 'buffer';\r\nimport * as rssParser from 'react-native-rss-parser';\r\n\r\nexport function* getBlogsFromChannel() {\r\n yield takeEvery(actions.GET_MULTICHANNEL_BLOG_ITEMS, function* (action) {\r\n\r\n try {\r\n // -- Switch here, select news conditionally.\r\n yield put({\r\n type: actions.BLOGS_REQUEST_COMPLETED,\r\n payload: false\r\n })\r\n let newItems = [];\r\n let containsGo = false;\r\n const title = action.payload.title;\r\n let currentItems = yield select(getMultiChannelBlogItems);\r\n //parse the different sources configured\r\n if (action.payload && action.payload.payload) {\r\n for (let source of action.payload.payload) {\r\n if (source.source == \"sharepoint\") {\r\n let items = yield call(getSharepointBlogs, source.site, source.url, title, source.source);\r\n if (items?.length > 0) {\r\n items = items.map(i => {\r\n i.widget = title\r\n return i;\r\n });\r\n }\r\n if (items) {\r\n newItems = [\r\n ...newItems,\r\n ...items\r\n ];\r\n }\r\n }\r\n\r\n if (source.source == \"json\") {\r\n let items = yield call(getJsonBlogs, source.url);\r\n if (items?.length > 0) {\r\n items = items.map(i => {\r\n i.widget = title\r\n return i;\r\n });\r\n }\r\n if (items) {\r\n newItems = [\r\n ...newItems,\r\n ...items\r\n ];\r\n }\r\n }\r\n\r\n if (source.source == \"rss\") {\r\n let items = yield call(getRssBlogs, source.url, title);\r\n if (items?.length > 0) {\r\n items = items.map(i => {\r\n i.widget = title\r\n return i;\r\n });\r\n }\r\n if (items) {\r\n newItems = [\r\n ...newItems,\r\n ...items\r\n ];\r\n }\r\n }\r\n\r\n if (source.source == \"go\" && source.url == true) {\r\n containsGo = true;\r\n }\r\n }\r\n\r\n\r\n // if (source.source == \"yammer\") {\r\n // const items = yield call(getYammerBlogs);\r\n // if (items) {\r\n // newsItems = [\r\n // ...newsItems,\r\n // ...news\r\n // ]\r\n // }\r\n // }\r\n //}\r\n }\r\n\r\n const sortOnDate = ((a, b) => {\r\n if (a.unix > b.unix) {\r\n return -1;\r\n }\r\n\r\n if (a.unix < b.unix) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n });\r\n\r\n //only if common\r\n if (window.tenantConfig.common || containsGo) {\r\n if(window.tenantConfig.common) {\r\n const websiteBlogs = yield call(getWebsiteBlogs);\r\n if (websiteBlogs) {\r\n newItems = [\r\n ...newItems,\r\n ...websiteBlogs\r\n ]\r\n }\r\n }\r\n let commonBlogs = yield call(getCommonBlogs, title);\r\n if(!window.tenantConfig.common) {\r\n if (commonBlogs?.length > 0) {\r\n commonBlogs = commonBlogs.map(i => {\r\n i.widget = title\r\n return i; });\r\n }\r\n commonBlogs = [...commonBlogs, ...currentItems.filter(i => i.type == \"go\" && i.widget == title)];\r\n if (commonBlogs) {\r\n newItems = [\r\n ...newItems,\r\n ...commonBlogs\r\n ];\r\n }\r\n newItems.sort(sortOnDate);\r\n } else {\r\n newItems.sort(sortOnDate);\r\n\r\n if (commonBlogs?.length) {\r\n commonBlogs = commonBlogs.map(i => {\r\n i.widget = title\r\n return i; });\r\n if (commonBlogs.find(n => n.tenantId != null)) {\r\n newItems = commonBlogs;\r\n } else {\r\n newItems = commonBlogs.concat(newItems);\r\n }\r\n }\r\n }\r\n\r\n } else {\r\n newItems.sort(sortOnDate);\r\n }\r\n\r\n currentItems = yield select(getMultiChannelBlogItems);\r\n currentItems = currentItems.filter(i => i.widget == title);\r\n newItems = newItems.splice(0, 30); //max items\r\n let old = currentItems.filter(n => !newItems.find(nn => nn.id == n.id));\r\n if (old?.length > 0 && newItems.length > 0) {\r\n for (let n of old) {\r\n yield localforage.removeItem(n.id);\r\n }\r\n }\r\n let keys = yield localforage.keys();\r\n let localforageKeys = keys.filter(k => k.indexOf('sp_blogs') != -1)?.length;\r\n let currentItemsKeys = currentItems.filter(i => i.widget == title).length;\r\n \r\n let modified = newItems.filter(data => {\r\n return currentItems.find(current => {\r\n if(data.dateModified != current.dateModified && current.type == \"sharepoint\" && current.id == data.id) {\r\n return data\r\n }\r\n })\r\n })\r\n\r\n if ((old?.length > 0 && newItems.length > 0) || (modified?.length > 0 && newItems.length > 0) || (currentItems?.length == 0 && newItems?.length > 0) || (currentItems?.length !== newItems?.length && newItems.length > 0)) {\r\n\r\n //postprocessing..\r\n newItems = yield call(postprocess, newItems);\r\n let allItems = yield select(getMultiChannelBlogItems);\r\n allItems = allItems.filter(i => i.widget != title);\r\n allItems = allItems.concat(newItems);\r\n allItems.sort(sortOnDate);\r\n\r\n yield put({\r\n type: actions.SET_MULTICHANNEL_BLOG_ITEMS,\r\n payload: allItems\r\n });\r\n }\r\n\r\n\r\n\r\n if(localforageKeys != currentItemsKeys) { \r\n currentItems = yield select(getMultiChannelBlogItems);\r\n currentItems = currentItems.filter(i => i.widget == title);\r\n currentItems = yield call(postprocess, currentItems);\r\n let allItems = yield select(getMultiChannelBlogItems);\r\n allItems = allItems.filter(i => i.widget != title);\r\n allItems = allItems.concat(currentItems);\r\n allItems.sort(sortOnDate);\r\n \r\n yield put({\r\n type: actions.SET_MULTICHANNEL_BLOG_ITEMS,\r\n payload: allItems\r\n });\r\n\r\n }\r\n yield put({\r\n type: actions.BLOGS_REQUEST_COMPLETED,\r\n payload: true\r\n })\r\n } catch (ex) {\r\n console.log(ex);\r\n }\r\n })\r\n}\r\n\r\nfunction* getCommonBlogs(title) {\r\n const Client = yield select(getGOClient);\r\n const GraphClient = yield select(getGraphClient);\r\n const blogItems = yield select(getMultiChannelBlogItems);\r\n if (!Client || !GraphClient) return;\r\n const blogs = yield Client.api(\"/common/blog/list\");\r\n\r\n\r\n if (blogs == null || !blogs) return;\r\n\r\n let tasks = blogs.map(async (n, i) => {\r\n\r\n if (n.image == null) return;\r\n n.blob = dataURItoBlob(n.image);\r\n return;\r\n\r\n if (n.authorId !== null && n.authorId !== '00000000-0000-0000-0000-000000000000') {\r\n const avatar = await GraphClient.api(`/users/${n.authorId}/photo/$value`, 'arrayBuffer');\r\n let image = 'data:image/png;base64, ' + new Buffer.from(avatar, 'binary').toString('base64');\r\n let blob = dataURItoBlob(image);\r\n let objectUrl = URL.createObjectURL(blob);\r\n n.authorBlob = blob;\r\n }\r\n });\r\n if (tasks.length) {\r\n yield Promise.all(tasks);\r\n }\r\n\r\n\r\n\r\n if (blogs.length && ((blogItems.length === 0) || (blogItems && blogItems[0].id !== blogs[0].id))) {\r\n //localforage.clear(); //clear local storage\r\n\r\n let old = blogItems.filter(n => !blogs.find(nn => nn.id == n.id));\r\n if (old != null && old.length > 0) {\r\n //yield newsItems.forEach(n => {\r\n for (let n of old) {\r\n yield localforage.removeItem(n.id);\r\n }\r\n }\r\n\r\n //yield blogs.forEach(n => {\r\n for (let n of blogs) {\r\n if (n.blob == null) continue; // do nothing, maybe request failed\r\n yield localforage.setItem(n.id, n.blob);\r\n delete n.image;\r\n delete n.blob;\r\n }\r\n }\r\n\r\n let parsedBlogs = yield parseCommonBlogs(blogs, title);\r\n return parsedBlogs;\r\n\r\n}\r\n\r\nasync function parseCommonBlogs(blogs, title) {\r\n let parsedBlogs = [];\r\n for (let key in blogs) {\r\n\r\n if (blogs[key]) {\r\n const item = blogs[key];\r\n let blogObject = new BlogOBject;\r\n\r\n blogObject.setID(item.id);\r\n blogObject.setAuthor(item.author);\r\n blogObject.setContent(item.content);\r\n blogObject.setDate(item.date);\r\n blogObject.setTitle(item.title);\r\n blogObject.setType('common');\r\n blogObject.setImageUrl('parse-from-localForage');\r\n blogObject.setTenantId(item.tenantId);\r\n blogObject.setImageUrl(item.image);\r\n if (blogObject.getBlogObject()) {\r\n parsedBlogs.push(blogObject.getBlogObject());\r\n }\r\n }\r\n }\r\n return parsedBlogs;\r\n}\r\n\r\nfunction* getJsonBlogs(url) {\r\n\r\n try {\r\n const response = yield fetch(url);\r\n const blogs = yield response.json();\r\n\r\n let parsedBlogs = [];\r\n\r\n blogs.forEach((item, i) => {\r\n\r\n let blogObject = new BlogOBject;\r\n blogObject.setID(item.id);\r\n blogObject.setAuthor(item.author);\r\n blogObject.setContent(item.content);\r\n blogObject.setDate(item.date); //, 'YYYY-MM-DD HH:mm:ss');\r\n blogObject.setTitle(item.title);\r\n blogObject.setImageUrl(item.image);\r\n blogObject.setUrl(item.url ? item.url : item.link);\r\n blogObject.setType('json');\r\n\r\n if (blogObject.getBlogObject()) {\r\n parsedBlogs.push(blogObject.getBlogObject());\r\n }\r\n });\r\n\r\n return parsedBlogs;\r\n\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n}\r\n\r\nfunction* getRssBlogs(url, title) {\r\n\r\n const GoClient = yield select(getGOClient);\r\n let currentItems = yield select(getMultiChannelBlogItems);\r\n currentItems = currentItems.filter(i => i.widget == title);\r\n let items = [];\r\n\r\n try {\r\n let data = yield GoClient.api('/app/proxy?url=' + encodeURIComponent(url), {}, 'text')\r\n .then((responseData) => rssParser.parse(responseData));\r\n\r\n data.items = data.items.slice(0, 20); //max messages\r\n\r\n let newItems = data.items.filter(d => (currentItems?.length == 0 ? true : (!currentItems?.find(i => i.type == \"rss\" && i.id == d.id && i.widget == title))));\r\n let parsedItems = yield parseRssItems(newItems);\r\n\r\n //add existing (already parsed) items to array\r\n parsedItems = parsedItems.concat(currentItems.filter(i => i.type == \"rss\" && i.widget == title));\r\n return parsedItems;\r\n\r\n } catch (error) {\r\n console.log('rss error: ' + error);\r\n return [];\r\n }\r\n}\r\n\r\nasync function parseRssItems(items) {\r\n let parsedItems = [];\r\n for (let key in items) {\r\n if (items[key]) {\r\n let item = items[key];\r\n\r\n let blogObject = new BlogOBject;\r\n blogObject.setAuthor((item.authors[0] ? item.authors[0].name : feed.title));\r\n blogObject.setContent((item.content ? item.content : item.description));\r\n blogObject.setDate(item.published);\r\n blogObject.setTitle(item.title);\r\n blogObject.setImageUrl(item.enclosures[0]?.url);\r\n blogObject.setUrl(item.links[0]?.url);\r\n blogObject.setID(item.id);\r\n blogObject.setType('rss');\r\n\r\n if (blogObject.getBlogObject()) {\r\n parsedItems.push(blogObject.getBlogObject());\r\n }\r\n\r\n }\r\n }\r\n return parsedItems;\r\n}\r\n\r\nfunction* getWebsiteBlogs() {\r\n\r\n try {\r\n const response = yield fetch('https://avantage.nl/wp-json/rendered-posts/all?8');\r\n const blogs = yield response.json();\r\n\r\n let parsedBlogs = [];\r\n\r\n blogs.forEach((item, i) => {\r\n\r\n let blogObject = new BlogOBject;\r\n blogObject.setID(item.id);\r\n blogObject.setAuthor(item.author);\r\n blogObject.setContent(item.content);\r\n blogObject.setDate(item.date, 'YYYY-MM-DD HH:mm:ss');\r\n blogObject.setTitle(item.title);\r\n blogObject.setImageUrl(item.image);\r\n blogObject.setUrl(item.link);\r\n blogObject.setType('website');\r\n\r\n if (blogObject.getBlogObject()) {\r\n parsedBlogs.push(blogObject.getBlogObject());\r\n }\r\n });\r\n\r\n return parsedBlogs;\r\n\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n}\r\n\r\nfunction* getSharepointBlogs(site, api, title, source) {\r\n if (!api) {\r\n console.log(\"Sharepoint API URL Required\");\r\n return;\r\n }\r\n \r\n try {\r\n let changedItems = [];\r\n let currentItems = yield select(getMultiChannelBlogItems);\r\n currentItems = currentItems.filter(i => i.widget == title && i.type == source);\r\n const Client = yield select(getSharepointClient);\r\n const GoClient = yield select(getGOClient);\r\n const GraphClient = yield select(getGraphClient);\r\n if (!Client) {\r\n console.log(\"no sharepoint client activated\");\r\n return;\r\n }\r\n \r\n let newsResponse = yield Client.api(api.includes('?') ? api : api + '/?$select=Author/Title,Author/Id,BlogAutheurId,BannerImageUrl,Id,Modified,FirstPublishedDate,Title,Description,CanvasContent1,Created,FileRef,FileLeafRef,EncodedAbsUrl,LinkFilename&$expand=Author,File&$orderby=Created desc&$top=20');\r\n \r\n //fallback when no BlogAutheurId field is present in SharePoint\r\n if (newsResponse == null || !newsResponse || !newsResponse.value) {\r\n newsResponse = yield Client.api((api.includes('?') ? api.split('?')[0] : api) + '/?$select=Author/Title,Author/Id,BannerImageUrl,Id,Modified,FirstPublishedDate,Title,Description,CanvasContent1,Created,FileRef,FileLeafRef,EncodedAbsUrl,LinkFilename&$expand=Author,File&$orderby=Created desc&$top=20');\r\n }\r\n \r\n if (newsResponse == null || !newsResponse || !newsResponse.value) return;\r\n if (newsResponse.value.length === 0) return;\r\n \r\n let data = newsResponse.value;\r\n \r\n let newItems = data.filter(d => (currentItems?.length == 0 ? true : (!currentItems?.find(i => i.type == \"sharepoint\" && i.id == 'sp_blogs_' + d.Id.toString()))));\r\n // let newItems = data.filter(d => (currentItems?.length == 0 ? true : (!currentItems?.find(i => {\r\n // i.type == \"sharepoint\" && i.id == 'sp_blogs_' + d.Id.toString()\r\n // }))));\r\n let oldItems = currentItems.filter(i => !data.find(d => 'sp_blogs_' + d.Id == i.id) && !newItems.find(n => 'sp_blogs_' + n.Id == i.id));\r\n \r\n //set ID for sharepoint.. still necessary?\r\n if (newItems?.length > 0) {\r\n newItems = newItems.map(function (n) {\r\n return { ...n, Id: 'sp_blogs_' + n.Id?.toString(), site: site };\r\n });\r\n }\r\n //parse news items to GO news items\r\n let parsedItems = yield parseSharepointBlogs(newItems);\r\n if (parsedItems?.length > 0) {\r\n parsedItems = parsedItems.map(i => {\r\n i.widget = title\r\n return i; })\r\n }\r\n //remove old items\r\n if (oldItems?.length > 0) {\r\n currentItems = currentItems.filter(c => !oldItems.find(o => o.id == c.id));\r\n }\r\n //Check for modified items\r\n changedItems = data.filter(data => {\r\n return currentItems.find(current => {\r\n if(data.Modified != current.dateModified && current.type == \"sharepoint\" && current.id == 'sp_blogs_'+ data.Id.toString()) {\r\n return data\r\n }\r\n })\r\n })\r\n \r\n if (changedItems?.length > 0) {\r\n changedItems = changedItems.map(function (n) {\r\n return { ...n, Id: 'sp_blogs_' + n.Id.toString(), site: site };\r\n });\r\n }\r\n \r\n let parsedChangedItems = yield parseSharepointBlogs(changedItems);\r\n if (parsedChangedItems?.length > 0) {\r\n parsedChangedItems = parsedChangedItems.map(i => {\r\n i.widget = title\r\n return i; })\r\n }\r\n if (parsedChangedItems?.length > 0) {\r\n currentItems = currentItems.filter(current => !parsedChangedItems.find(parsed => current.type == \"sharepoint\" && current.id == parsed.id))\r\n }\r\n \r\n //add existing (already parsed) items to array\r\n // parsedItems.push({...currentItems[0], Id: 'sp_news_test', id: 'sp_news_test'});\r\n return [...parsedItems, ...currentItems, ...parsedChangedItems];\r\n } catch (ex) { console.error(ex); console.log('error getting sharepoint blogs'); return []; }\r\n }\r\n\r\n\r\nfunction* postprocess(newItems) {\r\n\r\n let tasks = [];\r\n const SharepointClient = yield select(getSharepointClient);\r\n let sharepointToken;\r\n if (SharepointClient) sharepointToken = yield SharepointClient.getToken();\r\n\r\n const GoClient = yield select(getGOClient);\r\n let goToken = yield GoClient.getToken();\r\n let sharepointUser;\r\n\r\n tasks = newItems.map(async (item, index) => {\r\n\r\n if (item.type == \"sharepoint\") {\r\n\r\n //get author based on sharepoint user id\r\n if (!isNaN(parseInt(item.author))) {\r\n sharepointUser = await SharepointClient.api(item.site + '/_api/web/getuserbyid(' + item.author + ')');\r\n\r\n //set auteur\r\n if (sharepointUser) {\r\n if (sharepointUser.Title) {\r\n //item.author = sharepointUser.Title;\r\n newItems[index].author = sharepointUser.Title;\r\n }\r\n }\r\n }\r\n\r\n //get image\r\n const getResponse = async () => {\r\n if (item.imageUrl == 'parse-from-localForage') return { imageUrl: null }; //no image found in cache \r\n if (item.imageUrl?.indexOf(\"sharepoint.com\") == -1) return { imageUrl: item.imageUrl }; //do nothing\r\n\r\n let pictureUrl = parsePictureUrl(item.orginalUrl ? item.orginalUrl : item.imageUrl, 3);\r\n let url = encodeURIComponent(pictureUrl);\r\n\r\n let response;\r\n response = await fetch(`/api/getimage?url=${url}`, {\r\n method: 'GET',\r\n contentType: 'image/jpeg',\r\n headers: {\r\n 'Authorization': 'Bearer ' + goToken, 'AuthorizationProxy': sharepointToken\r\n }\r\n }).catch((err) => { return null; });\r\n\r\n if (!response || !response.ok) return null;\r\n\r\n const content = await response.text();\r\n let objectUrl = \"\";\r\n let blob;\r\n\r\n try {\r\n if (content) blob = dataURItoBlob(content);\r\n } catch (ex) { return null };\r\n\r\n if (!blob && sharepointUser) {\r\n let avatar = await GraphClient.api('/users/' + sharepointUser['UserPrincipalName'] + '/photo/$value', 'arrayBuffer');\r\n let image = 'data:image/png;base64, ' + new Buffer(avatar, 'binary').toString('base64');\r\n blob = dataURItoBlob(image);\r\n }\r\n\r\n if (!blob) return null;\r\n await localforage.setItem(item.id, blob);\r\n\r\n return {\r\n imageUrl: 'parse-from-localForage',\r\n orginalUrl: item.orginalUrl ? item.orginalUrl : item.imageUrl\r\n };\r\n };\r\n\r\n let pictureData = await localforage.getItem(newItems[index].id);\r\n if (pictureData == null || pictureData == '') pictureData = await getResponse();\r\n if (pictureData) newItems[index] = { ...newItems[index], ...pictureData };\r\n }\r\n });\r\n\r\n if (tasks.length) {\r\n yield Promise.all(tasks);\r\n }\r\n\r\n return newItems;\r\n}\r\n\r\nasync function parseSharepointBlogs(blogs) {\r\n let parsedBlogs = [];\r\n for (let key in blogs) {\r\n if (blogs[key]) {\r\n const item = blogs[key];\r\n\r\n let url = parseSharepointUrl(item.File['odata.id']);\r\n let blogObject = new BlogOBject;\r\n blogObject.setAuthor(item['BlogAutheurId'] ? item['BlogAutheurId'] : item['AuthorId'] ? item['AuthorId'] : item.Author ? item.Author['Id'] : item.Author);\r\n blogObject.setContent(item.CanvasContent1 ? parseSharePointContent(item.CanvasContent1, url, item.File?.ServerRelativeUrl, key): item.Description ? item.Description : \"\");\r\n blogObject.setDate(item.FirstPublishedDate ? item.FirstPublishedDate : item.Created);\r\n blogObject.setTitle(item.Title);\r\n blogObject.setDateModified(item.Modified);\r\n blogObject.setID(item.Id)\r\n blogObject.setType('sharepoint');\r\n blogObject.setUrl(url.concat(item.File?.ServerRelativeUrl));\r\n blogObject.setOpenExternal(false);\r\n blogObject.setImageUrl(item.BannerImageUrl?.Url);\r\n blogObject.setSite(item.site);\r\n\r\n if (blogObject.getBlogObject()) {\r\n parsedBlogs.push(blogObject.getBlogObject());\r\n }\r\n }\r\n }\r\n return parsedBlogs;\r\n}\r\n\r\nfunction parseSharePointContent(content, root, extra, key) {\r\n if (!content) return '';\r\n const urls = /href=\\\"\\//g;\r\n const src = /src=\\\"\\//g;\r\n const ids = /
[a-z,0-9,-]+<\\/div>/g;\r\n const video = /<\\/a>/g;\r\n const videoThumb = /]*\\\" \\/>/g;\r\n const imagesRegex = //g\r\n const divPlaceRegex = /
/g;\r\n let images = [];\r\n let divPlace = [];\r\n images = content.match(imagesRegex);\r\n divPlace = content.match(divPlaceRegex);\r\n if(images && divPlace) {\r\n content = content.replace(imagesRegex, \"\");\r\n for(let i = 0; i
`)\r\n }\r\n \r\n return content;\r\n}\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getBlogsFromChannel)\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select, call } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport localforage from 'localforage';\r\nimport { dataURItoBlob, parseSharepointUrl, parsePictureUrl } from '../../../helpers/functions';\r\nimport { getSharepointClient, getGOClient, getGraphClient, getMultichannelFeeds } from '../../selectors';\r\nimport FeedObject from './FeedObject';\r\nimport * as rssParser from 'react-native-rss-parser';\r\n\r\nconst checkDifferences = (array1, array2) => {\r\n let length = Math.min(array1.length, array2.length);\r\n let countMatched = 0, countNotMatched = 0;\r\n let newItems = [];\r\n\r\n for (var index = 0; index < length; index++) {\r\n if (!array2.find(a => a.id == array1[index].id)) {\r\n countNotMatched++;\r\n newItems.push(array1[index].id);\r\n }\r\n }\r\n return { notMatched: countNotMatched, newItems: newItems };\r\n}\r\n\r\nexport function* getFeedsByChannel() {\r\n yield takeEvery(actions.GET_MULTICHANNEL_FEEDS, function* (action) {\r\n // -- Switch here, select news conditionally.\r\n let newsItems = [];\r\n yield put({\r\n type: actions.FEED_REQUEST_COMPLETED,\r\n payload: false\r\n })\r\n const Client = yield select(getGOClient);\r\n\r\n let currentFeeds = yield select(getMultichannelFeeds);\r\n\r\n const feedsConfig = JSON.parse(window.tenantConfig?.feeds);\r\n if (feedsConfig == null) return;\r\n\r\n let feeds = [];\r\n const title = action.payload.title;\r\n \r\n for (let config of feedsConfig) {\r\n let feed = yield\r\n Client.api('/app/rss?url=' + config.url, {}, 'text')\r\n .then((responseData) => rssParser.parse(responseData));\r\n\r\n if (currentFeeds.find(f => f.title == feed.title)) {\r\n let oldFeed = currentFeeds.feeds.find(f => f.title == feed.title);\r\n feed.differences = oldFeed.differences;\r\n feed.newItems = oldFeed.newItems;\r\n\r\n let difference = checkDifferences(feed.items, oldFeed.items);\r\n feed.differences = feed.differences + difference.notMatched;\r\n feed.newItems.push(difference.newItems);\r\n } else {\r\n feed.differences = 0;\r\n feed.newItems = [];\r\n }\r\n feeds.push(feed);\r\n }\r\n\r\n yield put({\r\n type: actions.SET_MULTICHANNEL_FEEDS,\r\n payload: feeds\r\n })\r\n yield put({\r\n type: actions.FEED_REQUEST_COMPLETED,\r\n payload: true\r\n })\r\n })\r\n}\r\n\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getFeedsByChannel)\r\n ]);\r\n}\r\n","import moment from 'moment';\r\n\r\nclass SocialObject {\r\n constructor() {\r\n this._socialItem = {\r\n author : false,\r\n unix : false,\r\n moment : false,\r\n title : \"\",\r\n imageUrl : false,\r\n url : false,\r\n id : false,\r\n type: false,\r\n likes : 0,\r\n openDirect: false,\r\n topics: false\r\n }\r\n }\r\n\r\n setID = (ID) => {\r\n this._socialItem = {\r\n ...this._socialItem,\r\n id : ID\r\n }\r\n }\r\n\r\n setOpenDirect = (bool) => {\r\n this._socialItem = {\r\n ...this._socialItem,\r\n openDirect : bool\r\n }\r\n }\r\n\r\n setLikes = (int) => {\r\n this._socialItem = {\r\n ...this._socialItem,\r\n likes : int\r\n }\r\n }\r\n\r\n setAuthor = (author) => {\r\n this._socialItem = {\r\n ...this._socialItem,\r\n author : author\r\n }\r\n }\r\n\r\n setTopics = (topics) => {\r\n this._socialItem = {\r\n ...this._socialItem,\r\n topics: topics\r\n }\r\n }\r\n\r\n setContent = (content) => {\r\n this._socialItem = {\r\n ...this._socialItem,\r\n content : content\r\n }\r\n }\r\n setTimestamp = (timestamp) => {\r\n this._socialItem = {\r\n ...this._socialItem,\r\n unix : timestamp,\r\n moment: moment.unix(timestamp),\r\n }\r\n }\r\n\r\n setTitle = (title) => {\r\n this._socialItem = {\r\n ...this._socialItem,\r\n title : title\r\n }\r\n }\r\n\r\n setType = (type) => {\r\n this._socialItem = {\r\n ...this._socialItem,\r\n type : type\r\n }\r\n }\r\n\r\n setImageUrl = (imageUrl) => {\r\n this._socialItem = {\r\n ...this._socialItem,\r\n imageUrl : imageUrl\r\n }\r\n }\r\n\r\n setUrl = (URL) => {\r\n this._socialItem = {\r\n ...this._socialItem,\r\n url : URL\r\n }\r\n }\r\n\r\n getSocialObject = () => {\r\n\r\n return this._socialItem;\r\n }\r\n}\r\n\r\nexport default SocialObject;\r\n","import { all, put, fork, takeEvery, select, call } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport userActions from '../../user/actions';\r\nimport localforage from 'localforage';\r\nimport { dataURItoBlob, parseSharepointUrl, parsePictureUrl } from '../../../helpers/functions';\r\nimport { getGOClient, getGraphClient, getYammerClient, getSharepointClient, getMultiChannelSocialItems, getSocialRequestCompleted, getUserRequestCompleted, getUserProfileSettingData } from '../../selectors';\r\nimport SocialObject from './socialObject';\r\nimport moment from 'moment/min/moment-with-locales';\r\n\r\nimport embraceOutput from './embraceOutput';\r\n\r\n\r\nexport function* getSocialFromChannel() {\r\n yield takeEvery(actions.GET_MULTICHANNEL_SOCIAL_ITEMS, function* (action) {\r\n // -- Switch here, select social items conditionally.\r\n yield put({\r\n type: actions.SOCIAL_REQUEST_COMPLETED,\r\n payload: false\r\n })\r\n let newItems = [];\r\n let currentItems = yield select(getMultiChannelSocialItems);\r\n\r\n const title = action.payload.title;\r\n const sources = action.payload.payload;\r\n\r\n //parse the different sources configured\r\n if (sources) {\r\n for (let source of sources) {\r\n\r\n if (source.source == \"embrace\") {\r\n let items = yield call(getEmbraceItems, source.site, source.url, source.content, source.opendirect, title);\r\n if (items?.length == 0) {\r\n items = currentItems.filter(i => i.widget == title);\r\n } else if (items?.length > 0) {\r\n items = items.map(i => { i.widget = title; return i; });\r\n }\r\n\r\n if (items) {\r\n newItems = [\r\n ...newItems,\r\n ...items\r\n ];\r\n }\r\n }\r\n\r\n if (source.source == \"yammer\") {\r\n let items = yield call(getYammerItems, title);\r\n if (items?.length == 0) {\r\n items = currentItems.filter(i => i.widget == title);\r\n } else if (items?.length > 0) {\r\n items = items.map(i => { i.widget = title; return i; });\r\n }\r\n\r\n if (items) {\r\n newItems = [\r\n ...newItems,\r\n ...items\r\n ];\r\n }\r\n }\r\n }\r\n }\r\n\r\n const sortOnDate = ((a, b) => {\r\n if (a.unix > b.unix) {\r\n return -1;\r\n }\r\n\r\n if (a.unix < b.unix) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n });\r\n\r\n currentItems = yield select(getMultiChannelSocialItems);\r\n currentItems = currentItems.filter(i => i.widget == title);\r\n\r\n //sort all new items on date\r\n newItems.sort(sortOnDate);\r\n\r\n //max items for one widget\r\n newItems = newItems.splice(0, 30);\r\n\r\n let old = currentItems.filter(n => !newItems.find(nn => nn.id == n.id));\r\n if (old?.length > 0 && newItems.length > 0) {\r\n for (let n of old) {\r\n yield localforage.removeItem(n.id);\r\n }\r\n }\r\n\r\n if ((old?.length > 0 && newItems.length > 0) || (currentItems?.length == 0 && newItems?.length > 0) || (currentItems?.length !== newItems?.length && newItems.length > 0)) {\r\n\r\n //postprocessing..\r\n //newItems = yield call(postprocess, newItems);\r\n\r\n let allItems = yield select(getMultiChannelSocialItems);\r\n allItems = allItems.filter(i => i.widget != title);\r\n allItems = allItems.concat(newItems);\r\n\r\n yield put({\r\n type: actions.SET_MULTICHANNEL_SOCIAL_ITEMS,\r\n payload: allItems\r\n });\r\n }\r\n\r\n yield put({\r\n type: actions.SOCIAL_REQUEST_COMPLETED,\r\n payload: true\r\n });\r\n })\r\n}\r\n\r\nconst parseSocialItemContent = (content) => {\r\n const urls = /<(.*)>\\(“(.*)”\\)/g\r\n\r\n content = content.replace(urls, function (match, token) {\r\n let title = match.match(/<(.*)>/);\r\n let link = match.match(/\\(“(.*)”\\)/);\r\n if (title[1] == null || link[1] == null) return \"\";\r\n return `
${link[1]} `;\r\n });\r\n\r\n content = content.replace(/(?:\\r\\n|\\r|\\n)/g, '
');\r\n\r\n return content;\r\n}\r\n\r\n\r\nfunction* getEmbraceItems(site, apiURL, content, openDirect, title) {\r\n\r\n if (!apiURL) {\r\n console.log(\"Embrace API URL Required\");\r\n return;\r\n }\r\n try {\r\n const socialItems = yield select(getMultiChannelSocialItems);\r\n const GoClient = yield select(getGOClient);\r\n let oldestItem = moment().valueOf();\r\n\r\n let offset = new Date().getTimezoneOffset();\r\n oldestItem = oldestItem + (-offset * 60 * 1000);\r\n\r\n\r\n /* if (socialItems?.length > 0) {\r\n let items = socialItems.filter(i => i.widget == title);\r\n if (items[0]?.unix) oldestItem = items[0]?.unix;\r\n }*/\r\n\r\n //build api url\r\n if (apiURL.indexOf(\"?\") == -1) {\r\n if (apiURL[apiURL.length - 1] != '/') apiURL += '/';\r\n apiURL += 'api/v1/Microblogs?oldestItem=' + oldestItem + '&label=0';\r\n }\r\n\r\n if (!GoClient) return;\r\n const items = yield GoClient.api('/app/proxy?url=' + encodeURIComponent(apiURL) + '&type=embrace', {}, 'text')\r\n if (items) {\r\n let embraceItems = JSON.parse(items)?.Items;\r\n\r\n // -- Embrace fetch logic;\r\n if (embraceItems?.length) {\r\n return yield parseEmbraceSocial(embraceItems, site, apiURL, content, openDirect);\r\n }\r\n }\r\n\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n return false;\r\n}\r\n\r\n\r\nfunction* getYammerItems(title) {\r\n //if (!apiURL) {\r\n // console.log(\"Yammer API URL Required\");\r\n // return;\r\n //}\r\n //try {\r\n let currentItems = yield select(getMultiChannelSocialItems);\r\n currentItems = currentItems.filter(i => i.widget == title);\r\n const Client = yield select(getYammerClient);\r\n const GoClient = yield select(getGOClient);\r\n const GraphClient = yield select(getGraphClient);\r\n\r\n if (!Client) return;\r\n\r\n //const shouts = yield Client.api(apiURL);\r\n let shouts = yield Client.api('https://www.yammer.com/api/v1/messages.json?threaded=true');\r\n //let test = yield Client.api('/users/1522724127.json');\r\n let messages = [];\r\n\r\n if (shouts == null || !shouts) return;\r\n if (shouts.length === 0) return;\r\n\r\n if (shouts != null) {\r\n let items = shouts.references.filter(m => m.announcement !== true && m.type == \"thread\"); //no announcements! \r\n messages = shouts.messages.filter(m => items.find(a => a.id == m.id));\r\n\r\n //messages.takeEvery(m => announcements.find(a => a.id == m.id))\r\n for (let m of messages) {\r\n let a = items.find(a => a.id == m.id);\r\n m.reference = a;\r\n\r\n let user = shouts.references.find(r => r.id == m.sender_id);\r\n m.user = user;\r\n\r\n let topics = shouts.references.find(r => r.id == m.id)?.topics;\r\n if (topics) {\r\n //m.topics = topics;\r\n m.topics = [];\r\n for (let t of topics) {\r\n let topic = yield Client.api(`https://www.yammer.com/api/v1/topics/${t.id}.json`);\r\n if (topic != null) m.topics.push(topic);\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (messages.length && ((currentItems.length === 0) || (currentItems && currentItems[0].id !== messages[0].id))) {\r\n return yield parseYammerItems(messages);\r\n } else {\r\n return yield parseYammerItems(messages);\r\n }\r\n return false\r\n}\r\n\r\nasync function parseYammerItems(items) {\r\n let parsedItem = [];\r\n for (let key in items) {\r\n if (items[key]) { \r\n const item = items[key];\r\n\r\n let socialObject = new SocialObject;\r\n socialObject.setAuthor(item.user?.full_name);\r\n socialObject.setContent(parseYammerContent(item.body?.rich));\r\n socialObject.setTimestamp(moment(item.created_at)?.valueOf());\r\n socialObject.setUrl(item.web_url);\r\n socialObject.setID(\"\" + item.id);\r\n socialObject.setLikes(item.liked_by?.count);\r\n socialObject.setType('yammer');\r\n\r\n if (item.topics != null && item.topics) {\r\n socialObject.setTopics(item.topics);\r\n }\r\n\r\n socialObject.setImageUrl(item.user?.mugshot_url);\r\n\r\n if (socialObject.getSocialObject()) {\r\n parsedItem.push(socialObject.getSocialObject());\r\n }\r\n }\r\n }\r\n return parsedItem;\r\n}\r\n\r\nconst parseYammerContent = (content) => {\r\n const urls = /<(.*)>\\(“(.*)”\\)/g\r\n const links = /(.*)</\r\n\r\n content = content.replace(urls, function (match, token) {\r\n let title = match.match(/<(.*)>/);\r\n let link = match.match(/\\(“(.*)”\\)/);\r\n if (title[1] == null || link[1] == null) return \"\";\r\n return ` ${link[1]} `;\r\n });\r\n\r\n content = content.replace(links, function (match, token) {\r\n let title = match.match(/(.*)<${link[1]} `;\r\n });\r\n\r\n content = content.replace(/(?:\\r\\n|\\r|\\n)/g, '
');\r\n\r\n return content;\r\n}\r\n\r\nexport function* setLastViewedItems() {\r\n yield takeEvery(actions.SET_LAST_SOCIAL_VIEWED, function* (action) {\r\n if (action.payload == null) return;\r\n\r\n yield put({\r\n type: userActions.UPDATE_USER_SETTINGS,\r\n payload: {\r\n value: action.payload,\r\n setting: 'viewedSocial'\r\n }\r\n });\r\n\r\n });\r\n}\r\n\r\n\r\nexport function* parseLastViewed() {\r\n\r\n const parser = function* () {\r\n\r\n const items = yield select(getMultiChannelSocialItems);\r\n const data = yield select(getUserProfileSettingData);\r\n const completed = yield select(getUserRequestCompleted);\r\n const socialCompleted = yield select(getSocialRequestCompleted);\r\n\r\n if (data == null || !completed || !socialCompleted || items?.length == 0) return;\r\n\r\n let viewedItems = data.settings?.viewedSocial;\r\n if (!viewedItems) {\r\n viewedItems = [];\r\n }\r\n\r\n let newViewed = [];\r\n\r\n for (let item of items) {\r\n\r\n // -- User has never seen any social item, set everything to true\r\n if (!viewedItems.length) {\r\n item.viewed = true;\r\n } else {\r\n // -- Already items in user object, new items are unviewed.\r\n let viewedItem = viewedItems.find((i) => i.id === item.id);\r\n item.viewed = false;\r\n if (viewedItem) {\r\n if (viewedItem.viewed) {\r\n item.viewed = true;\r\n }\r\n }\r\n }\r\n\r\n if (!viewedItems.find((i) => i.id === item.id)) {\r\n newViewed.push({\r\n id: item.id,\r\n viewed: item.viewed,\r\n widget: item.widget\r\n });\r\n }\r\n }\r\n\r\n // -- Cleanup with only present items.\r\n for (let item of viewedItems) {\r\n let available = items.find((i) => i.id === item.id);\r\n if (available) {\r\n newViewed.push({\r\n id: item.id,\r\n widget: item.widget,\r\n viewed: item.viewed\r\n })\r\n }\r\n }\r\n\r\n\r\n // -- Conditionally update user settings object\r\n if ((newViewed.length == 0 && viewedItems.length == 0) ||\r\n (JSON.stringify(newViewed.map(n => n.id)) != JSON.stringify(viewedItems.map(n => n.id))) ||\r\n !data.settings?.viewedSocial) {\r\n\r\n console.log('set viewed socials');\r\n yield put({\r\n type: userActions.UPDATE_USER_SETTINGS,\r\n payload: {\r\n value: newViewed,\r\n setting: 'viewedSocial'\r\n }\r\n });\r\n }\r\n }\r\n\r\n // -- Fires after user data has been fetched, checks for social request completion and parses items\r\n yield takeEvery(userActions.DATA_REQUEST_COMPLETED, function* (action) {\r\n const completed = yield select(getSocialRequestCompleted);\r\n\r\n if (completed) {\r\n yield parser();\r\n }\r\n });\r\n\r\n // -- Fires after social data has been fetched, checks for user data presence and parses items\r\n yield takeEvery(actions.SOCIAL_REQUEST_COMPLETED, function* (action) {\r\n const completed = yield select(getUserRequestCompleted);\r\n\r\n if (action.payload === true && completed) {\r\n yield parser();\r\n }\r\n });\r\n}\r\n\r\n\r\nfunction parseEmbraceContent(content) {\r\n\r\n const urls = /href=/gi;\r\n\r\n content = content.replace(urls, function (match, token) {\r\n return 'target=\"_blank\" href=';\r\n });\r\n\r\n return content;\r\n}\r\n\r\nasync function parseEmbraceSocial(embraceItems, site, url, content, openDirect) {\r\n let parsedSocial = [];\r\n for (let key in embraceItems) {\r\n if (embraceItems[key]) {\r\n const item = embraceItems[key];\r\n\r\n let socialObject = new SocialObject;\r\n socialObject.setAuthor(item.PersonFullName);\r\n socialObject.setContent(parseEmbraceContent(item.Message));\r\n\r\n let offset = new Date().getTimezoneOffset();\r\n let timestamp = item.Timestamp - (-offset * 60 * 1000);\r\n\r\n socialObject.setTimestamp(timestamp);\r\n socialObject.setUrl(site);\r\n socialObject.setOpenDirect(openDirect);\r\n socialObject.setID('embrace_' + item.Id);\r\n socialObject.setType('embrace');\r\n socialObject.setLikes(item.Likes);\r\n\r\n if (item.PersonAvatar == null) {\r\n socialObject.setImageUrl('parse-from-localForage');\r\n } else {\r\n socialObject.setImageUrl(site + item.PersonAvatar.replace('Avatar55', 'Avatar150'));\r\n }\r\n\r\n if (socialObject.getSocialObject()) {\r\n parsedSocial.push(socialObject.getSocialObject());\r\n }\r\n }\r\n }\r\n return parsedSocial;\r\n}\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getSocialFromChannel),\r\n fork(parseLastViewed),\r\n fork(setLastViewedItems)\r\n ]);\r\n};\r\n","import { all } from 'redux-saga/effects';\r\n\r\n// -- Old style widgets\r\nimport AppSaga from './app/saga';\r\nimport LayoutSaga from './layout/saga';\r\nimport AuthSaga from './auth/saga';\r\nimport UserSaga from './user/saga';\r\nimport GraphSaga from './client/saga';\r\nimport TasksSaga from './tasks/saga';\r\nimport BirthdaySaga from './birthday/saga';\r\nimport NewsSaga from './news/saga';\r\nimport DocumentSaga from './document/saga';\r\nimport MessageSage from './message/saga';\r\nimport ReportsSaga from './reports/saga';\r\nimport NotificationSaga from './notification/saga';\r\nimport NotificationCollectorSaga from'./notificationCollector/saga';\r\nimport EventsSaga from './events/saga';\r\nimport BlogSaga from './blog/saga';\r\nimport SlideOutSaga from './slideOut/saga';\r\nimport SolutionSaga from './solution/saga';\r\nimport SearchSaga from './search/saga';\r\nimport CalendarSagas from './calendar/saga';\r\nimport WidgetSaga from './widgets/saga';\r\nimport AppsSaga from './apps/saga';\r\nimport DocumentsWizardSaga from './documentsWizard/saga';\r\nimport TipsTricksSaga from './tipsTricks/saga';\r\nimport SiteKnowledgeSaga from './siteKnowledge/saga';\r\n\r\n// -- Common widgets\r\nimport CommonNewsSaga from './common/news/saga';\r\nimport ITNewsSaga from './common/itnews/saga';\r\nimport LearningSaga from './common/learning/saga';\r\nimport CommonEventsSaga from './common/events/saga';\r\nimport CommonBlogsSaga from './common/blog/saga';\r\nimport KnowledgeBaseSaga from './knowledgeBase/saga';\r\nimport CallsSaga from './common/calls/saga';\r\n\r\nimport UserRequestSaga from './common/userRequest/saga';\r\nimport RightsRequestSaga from './common/rightsRequest/saga';\r\nimport WorkplaceRequestSaga from './common/workplaceRequest/saga';\r\n\r\n// -- Widgets in new style\r\nimport TeamsSaga from './widgets/teams/saga';\r\nimport SharepointSaga from './widgets/sharepoint/saga';\r\nimport PeopleSaga from './widgets/people/saga';\r\nimport MultiChannelNewsSaga from './widgets/multiChannelNews/saga';\r\nimport MultiChannelShoutSaga from './widgets/multiChannelShout/saga';\r\nimport MultiChannelBlogSaga from './widgets/multiChannelBlog/saga';\r\nimport MultiChannelFeedSaga from './widgets/multiChannelFeed/saga';\r\nimport MultiChannelSocialSaga from './widgets/multiChannelSocial/saga';\r\nimport MultiChannelEventsSaga from './widgets/multiChannelEvent/saga';\r\n\r\nexport default function* rootSaga(getState) {\r\n\tyield all([\r\n\t\tAppSaga(),\r\n\t\tLayoutSaga(),\r\n\t\tAuthSaga(),\r\n\t\tGraphSaga(),\r\n\t\tUserSaga(),\r\n\t\tBirthdaySaga(),\r\n\t\tDocumentSaga(),\r\n\t\tTasksSaga(),\r\n NotificationSaga(),\r\n\t\tCalendarSagas(),\r\n\t\tWidgetSaga(),\r\n\t\tAppsSaga(),\r\n\t\tEventsSaga(),\r\n BlogSaga(),\r\n ReportsSaga(),\r\n\t\tCommonNewsSaga(),\r\n\t\tITNewsSaga(),\r\n CommonEventsSaga(),\r\n\t\tCommonBlogsSaga(),\r\n\t\tKnowledgeBaseSaga(),\r\n\t\tCallsSaga(),\r\n\t\tLearningSaga(),\r\n\t\tSlideOutSaga(),\r\n\t\tNotificationCollectorSaga(),\r\n\t\tSolutionSaga(),\r\n\t\tSearchSaga(),\r\n\t\tDocumentsWizardSaga(),\r\n\t\tTipsTricksSaga(),\r\n\t\tSiteKnowledgeSaga(),\r\n\t\tTeamsSaga(),\r\n\t\tSharepointSaga(),\r\n\t\tPeopleSaga(),\r\n\t\tMultiChannelNewsSaga(),\r\n\t\tMultiChannelBlogSaga(),\r\n\t\tMessageSage(),\r\n\t\tMultiChannelShoutSaga(),\r\n\t\tMultiChannelFeedSaga(),\r\n\t\tMultiChannelSocialSaga(),\r\n\t\tMultiChannelEventsSaga(),\r\n\t\t//newsSaga()\r\n\t\tUserRequestSaga(),\r\n\t\tRightsRequestSaga(),\r\n\t\tWorkplaceRequestSaga(),\r\n\t]);\r\n}\r\n","import { createStore, applyMiddleware, compose, combineReducers } from 'redux';\r\nimport createSagaMiddleware from 'redux-saga';\r\nimport rootReducer from './rootReducer';\r\nimport rootSaga from './rootSaga';\r\nimport { persistStore, persistReducer } from 'redux-persist';\r\nimport storage from 'redux-persist/lib/storage'; // defaults to localStorage for web\r\nimport localForage from \"localforage\";\r\nimport { routerMiddleware } from 'react-router-redux';\r\nconst createHistory = require(\"history\").createBrowserHistory;\r\nconst history = createHistory();\r\nconst routersMiddleware = routerMiddleware(history);\r\n\r\nconst sagaMiddleware = createSagaMiddleware();\r\nconst middlewares = [sagaMiddleware, routersMiddleware];\r\n\r\n//import { IntlActions } from 'react-redux-multilingual'\r\n//import translations from './translations'\r\n//import { IntlReducer as Intl, IntlProvider } from 'react-redux-multilingual'\r\n\r\nconst persistConfig = {\r\n key: 'root',\r\n storage: localForage,\r\n blacklist: ['Notifications', 'Client','Widgets', 'Auth', 'Message', 'SlideOut', 'Popup', 'YearOverview', 'Sharepoint']\r\n};\r\n\r\nconst persistedReducer = persistReducer(persistConfig, rootReducer);\r\n\r\nfunction configureStore(initialState) {\r\n const store = createStore(\r\n persistedReducer,\r\n compose(applyMiddleware(...middlewares)));\r\n\r\n let persistor = persistStore(store);\r\n if(window.clearPersist) {\r\n persistor.purge();\r\n }\r\n sagaMiddleware.run(rootSaga);\r\n\r\n return { store, persistor, history };\r\n}\r\n\r\n\r\nexport default configureStore();\r\n","const actions = {\r\n\tSET_APP_ONLINE : 'SET_APP_ONLINE',\r\n CHECK_APP_ONLINE : 'CHECK_APP_ONLINE',\r\n\tCHANGE_APP_CONNECTIVITY_STATUS : 'CHANGE_APP_CONNECTIVITY_STATUS',\r\n\tsetAppOnline : (payload) => ({\r\n\t\ttype : actions.SET_APP_ONLINE,\r\n\t\tpayload : payload\r\n\t}),\r\n\r\n checkAppOnline : (payload) => ({\r\n\t\ttype : actions.CHECK_APP_ONLINE,\r\n\t\tpayload : payload\r\n\t}),\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_MULTICHANNEL_FEEDS : 'GET_MULTICHANNEL_FEEDS',\r\n\tSET_MULTICHANNEL_FEEDS : 'SET_MULTICHANNEL_FEEDS',\r\n\tSET_ACTIVE_FEED_ITEM : 'SET_ACTIVE_FEED_ITEM',\r\n\tFEED_REQUEST_COMPLETED : 'FEED_REQUEST_COMPLETED',\r\n\tgetMultichannelFeeds : ( payload, title ) => ({\r\n\t\ttype : actions.GET_MULTICHANNEL_FEEDS,\r\n\t\tpayload : { title: title, payload: payload } \r\n\t}),\r\n\tsetActiveFeedItem : ( payload ) => ({\r\n\t\ttype : actions.SET_ACTIVE_FEED_ITEM,\r\n\t\tpayload : payload\r\n\t}),\r\n};\r\n\r\nexport default actions;\r\n","import styled from 'styled-components'\r\n\r\nimport * as Variables from '../../ThemeVariables';\r\n\r\nconst CircleIcon = styled.div`\r\n\tborder-radius: 100%;\r\n\toverflow: hidden;\r\n\r\n\t\r\n\tline-height: ${Variables.headerHeight};\r\n\theight: ${Variables.headerHeight};\r\n\twidth: ${Variables.headerHeight};\r\n\tbackground: #dadde1;\r\n\tcolor: black;\r\n\ttext-align: center;\r\n\tfont-size: 25px;\r\n\tcursor: pointer;\r\n\r\n\tbox-shadow: 0 0 0 transparent;\r\n\ttransition: box-shadow .5s;\r\n\t&:hover {\r\n\t\tbox-shadow: 0 0 5px black;\r\n\r\n\t}\r\n`;\r\n\r\nexport default CircleIcon;\r\n","import styled from 'styled-components';\r\n\r\nexport const PageLoader = styled.div`\r\n\tposition: fixed;\r\n\theight: 100%;\r\n\tbackground-color: rgba(255, 255, 255, .5);\r\n\twidth: 100%;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\r\n\t&.darkmode {\r\n\t\tbackground-color: rgba(0, 0, 0, .5);\r\n\t}\r\n`;\r\n","import React from 'react';\r\nimport * as Styled from './styled';\r\nimport { connect } from 'react-redux';\r\n\r\nconst PageLoader = props => (\r\n\t\r\n\r\n\t\r\n)\r\n\r\n\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {\r\n darkmode: state.Layout.darkmode\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(PageLoader);\r\n","import styled, { css } from 'styled-components'\r\nimport { loadingPlaceholder } from '../../styled/KeyFrames';\r\n\r\nexport const Loader = props => css`\r\n\tbackground: #e9ebee;\r\n\tposition: relative;\r\n\toverflow: hidden;\r\n\r\n\t&::after {\r\n\t content: \"\";\r\n\t display: block;\r\n\t background-color: #DEDEDE;\r\n\t position: absolute;\r\n\t top: 0;\r\n\t bottom: 0;\r\n\t width: 100%;\r\n\t height: 100%;\r\n\t transform: translateX(0);\r\n\t animation: 1.5s ${loadingPlaceholder} ease-in-out infinite;\r\n\t }\r\n\r\n\t &.darkmode {\r\n\t \tbackground: #1B2B3C;\r\n\r\n\t \t&:after {\r\n\t \t\tbackground-color: #121a24;\r\n\t \t}\r\n\t }\r\n`;\r\n\r\n\r\nexport const LoaderCard = styled.div `\r\n\twidth:300px;\r\n\tfloat: left;\r\n\tborder: 1px solid #ddd;\r\n\tmargin-right: 10px;\r\n`;\r\n\r\n\r\nexport const LoaderImageLoading = styled.div `\r\n\t background: #e9ebee;\r\n height: 175px;\r\n\r\n position: relative;\r\n\t overflow: hidden;\r\n\t &::after {\r\n\t content: \"\";\r\n\t display: block;\r\n\t background-color: #dddfe2;\r\n\t position: absolute;\r\n\t top: 0;\r\n\t bottom: 0;\r\n\t width: 100%;\r\n\t height: 100%;\r\n\t transform: translateX(0);\r\n\t animation: 1.5s ${loadingPlaceholder} ease-in-out infinite;\r\n\t }\r\n`;\r\n\r\nexport const LoaderBars = styled.div `\r\n\t height: 85px;\r\n`;\r\n\r\nexport const LoaderBar = styled.div `\r\n\t background: #e9ebee;\r\n margin: 0 13px 13px;\r\n height: 19px;\r\n\r\n &:nth-of-type(1) {\r\n \twidth: 80%;\r\n \tmargin-top: 17px;\r\n }\r\n\r\n &:nth-of-type(2) {\r\n \twidth: 30%;\r\n }\r\n\r\n position: relative;\r\n\t overflow: hidden;\r\n\t &::after {\r\n\t content: \"\";\r\n\t display: block;\r\n\t background-color: #dddfe2;\r\n\t position: absolute;\r\n\t top: 0;\r\n\t bottom: 0;\r\n\t width: 100%;\r\n\t height: 100%;\r\n\t transform: translateX(0);\r\n\t animation: 1.5s ${loadingPlaceholder} ease-in-out infinite;\r\n\t }\r\n`;\r\n","import styled, { css } from 'styled-components'\r\nimport * as Variables from '../../../ThemeVariables';\r\n\r\n//heading\r\nconst headingStyle = `\r\n display: flex;\r\n justify-content: space-between;\r\n\r\n`\r\nexport const Heading = styled.div`\r\n\tmargin-bottom: ${props => !props.marginBottom ? \"20px\" : props.marginBottom + 'px'};\r\n\r\n ${props => !props.positionBottom ? headingStyle : ''};\r\n\r\n\r\n\t${props => props.position ? 'float: ' + props.position + ';' : ''}\r\n\t${props => props.border ? \"border-bottom: 2px solid #e4e4e4;padding-bottom: 15px;\" : \"\"}\r\n`;\r\n\r\nexport const ListHeading = styled.div`\r\n\tmargin-bottom: 20px;\r\n @media(min-width: ${Variables.mxs}) {\r\n display: flex;\r\n justify-content: space-between;\r\n }\r\n`;\r\n\r\n\r\nexport const Title = styled.h2`\r\n\tfont-size: ${props => !props.small ? \"1.1em\" : \"0.8em\"};\r\n\ttext-align: left;\r\n\tcolor : ${Variables.headingColor.lightMode};\r\n\r\n\t&.darkmode {\r\n\t\tcolor : ${Variables.headingColor.darkMode};\r\n\t}\r\n`;\r\n\r\nexport const LinkContainer = styled.div`\r\n\tdisplay: inline-block;\r\n`;\r\n\r\nexport const UnderLinkContainer = styled.div`\r\n\tmargin-bottom: 30px;\r\n\t\r\n`;\r\n\r\n\r\nexport const Link = styled.a`\r\n\ttext-decoration: none;\r\n\tfont-size: 12px;\r\n\tcursor: pointer;\r\n &:not(:first-of-type) {\r\n margin-left: 16px;\r\n }\r\n\r\n\tcolor : ${Variables.headingColor.lightMode};\r\n\r\n\t&:after {\r\n\t\tcontent: '';\r\n\t\twidth: 0;\r\n\t\theight: 1px;\r\n\t\tbackground: ${Variables.headingColor.lightMode};\r\n\t\tposition: absolute;\r\n\t\tbottom: -5px;\r\n\t\tleft: 0;\r\n\t\ttransition: width .5s;\r\n\t}\r\n\r\n\t&.darkmode {\r\n\t\tcolor : ${Variables.headingColor.darkMode};\r\n\t\t&:after {\r\n\t\t\tbackground : ${Variables.headingColor.darkMode};\r\n\t\t}\r\n\t}\r\n\r\n\ttext-align: right;\r\n\r\n\t&:hover {\r\n\t\t&:after {\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\t}\r\n\r\n\t&.active-link {\r\n\t\t&:after {\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\t}\r\n`;\r\n","import styled from 'styled-components'\r\nimport { Loader } from '../styled';\r\nexport const TeamWrapper = styled.div`\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n\tmargin-bottom: 5px;\r\n`;\r\n\r\nexport const Team = styled.div `\r\n\tbackground: #e9ebee;\r\n margin: 0 13px 13px 0;\r\n height: 19px;\r\n width: 100%;\r\n\r\n ${props => props.position === 'left' ? 'float: left' : 'float: right'};\r\n ${Loader}\r\n`;\r\n","import React from 'react';\r\nimport * as Styled from './styled';\r\n\r\n\r\nconst TeamLoader = props => (\r\n\t\r\n\t\t\r\n\t\r\n)\r\n\r\n\r\n\r\nexport default TeamLoader;\r\n","import styled from 'styled-components'\r\n\r\nexport const CheckboxWrapper = styled.div`\r\n\twidth: 45px;\r\n\theight: 25px;\r\n\tbackground: #1b2947;\r\n\tbackground: #8b0000;\r\n\ttransition: background .5s;\r\n\tborder-radius: 25px;\r\n\tcursor: pointer;\r\n\r\n\t&.active {\r\n\t\tbackground: #007e00;\r\n\t}\r\n\tinput {\r\n\t\topacity: 0;\r\n\t\twidth: 100%;\r\n\t\theight: 100%;\r\n\t\tposition: absolute;\r\n\t\tleft: 0;\r\n\t\ttop: 0;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\tmargin-bottom: 25px;\r\n`;\r\n\r\nexport const Checkbox = styled.div`\r\n\tdisplay: grid;\r\n\tgrid-template-columns: repeat(2, 1fr);\r\n`;\r\n\r\nexport const Label = styled.label`\r\n\tline-height: 25px;\r\n`;\r\n\r\nexport const CheckboxCircle = styled.div`\r\n\twidth: 23px;\r\n\theight: 23px;\r\n\tborder-radius: 100%;\r\n\tbackground: white;\r\n\tposition: absolute;\r\n\ttop: 1px;\r\n\tleft: 1px;\r\n\ttransition: left .3s;\r\n\tpointer-events: none;\r\n\r\n\t&.active {\r\n\t\tleft: calc(100% - 24px);\r\n\t}\r\n\r\n`;\r\n","import React from 'react';\r\nimport * as Styled from './styled';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst Checkbox = props => (\r\n\t\r\n\t\t{props.label}\r\n\t\t\r\n\t\t\t \r\n\t\t\t\r\n\r\n\t\t\r\n\t\r\n)\r\n\r\nCheckbox.propTypes = {\r\n\tonClick : PropTypes.func,\r\n\tvalue : PropTypes.bool,\r\n\tlabel : PropTypes.string\r\n}\r\n\r\nexport default Checkbox;\r\n","const actions = {\r\n\tGET_NEWS : 'GET_NEWS',\r\n\tSET_NEWS : 'SET_NEWS',\r\n\r\n\tgetNews : ( payload ) => ({\r\n\t\ttype : actions.GET_NEWS,\r\n\t\tpayload : payload\r\n\t})\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_BLOGS : 'GET_BLOGS',\r\n\tSET_BLOGS : 'SET_BLOGS',\r\n\t\tPOST_BLOG : 'POST_BLOG',\r\n\tpostBlog : ( payload ) => ({\r\n\ttype : actions.POST_BLOG,\r\n\tpayload : payload\r\n}),\r\n\tgetBlogs : ( payload ) => ({\r\n\t\ttype : actions.GET_BLOGS,\r\n\t\tpayload : payload\r\n\t})\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tGET_TILES : 'GET_TILES',\r\n\tSET_TILES : 'SET_TILES',\r\n\tgetTiles: (payload) => ({ \r\n\t\ttype: actions.GET_TILES,\r\n\t\tpayload : payload\r\n\t}),\t\r\n};\r\n\r\nexport default actions;\r\n","const translation = {\r\n 'en': {\r\n locale: 'en',\r\n messages: {\r\n hello: 'Hi {name}',\r\n myProfile: 'My profile',\r\n vacationDays: 'Vacation days',\r\n editSettings: 'Change settings',\r\n openTutorial: 'Start tutorial',\r\n colorSetting: 'Dark mode',\r\n colorExplanation: 'GO has a dark mode for using in dark environments',\r\n autoDarkMode: 'Change mode based on sunset or sunrise',\r\n ownAppTile: 'Own app tiles',\r\n editAppTile: 'Edit tiles',\r\n logout: 'Logout',\r\n version: 'version',\r\n startMenu: 'START',\r\n helpMenu: 'HELP',\r\n storeMenu: 'STORE',\r\n selfMenu: 'SELF',\r\n tasks: 'Tasks',\r\n calendar: 'Calendar',\r\n appointment: 'Appointments',\r\n teams: 'Teams',\r\n tickets: 'Tickets',\r\n apps: 'Apps',\r\n settings: 'Settings',\r\n startLocalApps: 'Start local apps when possible',\r\n startAppsInNewWindow: 'Open apps in a browser tab',\r\n useOfficeWizard: 'Use Office wizard',\r\n showScrollbars: 'Show scrollbars',\r\n openAppsExistingWindow: 'Open apps in an existing browser tab',\r\n more: 'more',\r\n add: 'add',\r\n edit: 'edit',\r\n recent: 'recent',\r\n shared: 'shared',\r\n mine: 'mine',\r\n noItemsFound: 'no items',\r\n news: 'News',\r\n createNews: 'Create news message',\r\n createEvent: 'Create event',\r\n today: 'Today',\r\n tomorrow: 'Tomorrow',\r\n upcoming: 'Upcoming',\r\n earlierThisWeek: 'Earlier this week',\r\n open: 'Open',\r\n noDate: 'No date',\r\n openToDo: 'Open to-do',\r\n createTask: 'create task',\r\n createAppointment: 'create appointment',\r\n noAppointments: 'No upcoming appointments',\r\n events: 'Events',\r\n birthdays: 'Birthdays',\r\n noBirthdays: \"No upcoming birthdays\",\r\n hisBirthday: \"{when} it's {name} birthday\",\r\n congratulations: \"Congratulations\",\r\n openOneDrive: \"open onedrive\",\r\n documents: \"Documents\",\r\n kindOfDocument: \"What kind of document\",\r\n createBlog: 'Create blog',\r\n openOriginal: \"open original\",\r\n searchingFor: 'I am searching for..',\r\n search: \"Search\",\r\n whatToSearch: \"What do you want to search?\",\r\n all: 'all',\r\n persons: 'persons',\r\n files: 'files',\r\n colleagues: \"colleagues\",\r\n emails: \"emails\",\r\n createTicket: \"create ticket\",\r\n myTickets: \"my tickets\",\r\n itNews: \"IT news\",\r\n noLink: \"no link to servicedesk\",\r\n new: \"create\",\r\n my: \"my\",\r\n ticket: \"ticket\",\r\n tickets: \"tickets\",\r\n IT: \"IT\",\r\n theModernServiceDesk: \"The modern service desk is a new way te be helped. Tell GoGo your problem or question and he will help you further. You can also immediately create a new notification yourself.\",\r\n wantToUseModernServiceDesk: \"Do you want to use our modern service desk?\",\r\n noCustomer: 'Your IT environment is not yet registered with us. This is necessary to be able to use our modern service desk options. Feel free contact us to make that happen.',\r\n wantToKnowMore: \"Would you like to know more about the Avantage service desk? Then read\",\r\n thisBlog: \"this blog\",\r\n eLearning: \"E-Learning\",\r\n knowledgeBase: \"knowledgebase\",\r\n tips: \"tips\",\r\n tipsNTricks: \"Tips and tricks\",\r\n help: \"help\",\r\n whenCustomer: \"As soon as your environment has been added, you can use our modern service desk options. Notifications submitted via the chatbot or that you have submitted directly yourself are displayed here and you can view their status.\",\r\n createATicketHere: \"Below you can immediately make a report that will be picked up by the service desk. When you have provided a description of your question or problem, your report will be registered immediately.\",\r\n didYouKnowChatbot: \"Do you know that in GO you can also ask your question to GoGo? The easy chatbot immediately searches for answers in the knowledge bases and (if necessary) creates a report for you at our service desk.\",\r\n current: \"current\",\r\n view: \"View your\",\r\n findProblemsHere: \"Problems, questions or incidents that have been forwarded to the service desk can be found here.\",\r\n noActiveTickets: \"You currently have no active notifications\",\r\n createANewTicket: \"create a new ticket\",\r\n noITNews: \"At the moment there is no news about your IT environment\",\r\n howCanIHelpYou: \"How can I help you?\",\r\n GoGo: \"GoGo, your easy assistance\",\r\n hi: \"Hi\",\r\n alwaysOnline: \"always online\",\r\n whatDoYouWantToKnow: \"What do you want to know?\",\r\n aboutWhatDoYouWantToKnow: \"or about what?\",\r\n answer: \"Answer\",\r\n example: \"Example\",\r\n setPreferences: \"Set your e-learning preferences\",\r\n thenWeWillGetYourLearnings: \"so we can load some relevant elearingspaths for you\",\r\n here: \"here\",\r\n searchLearning: \"Search for learningpaths\",\r\n gatherLearningsForYou: \"We would like to collect relevant e-learning for you. Indicate your preferences by selecting your role(s), products and your level.\",\r\n whichRoles: \"What roles do you fulfill within your organization?\",\r\n whichProducts: \"Which products or services do you want to learn about?\",\r\n previous: \"previous\",\r\n next: \"next\",\r\n save: \"save\",\r\n browseLearnings: \"browse through learningpaths\",\r\n learningsFound: \"learnings found\",\r\n searchLearnings: \"search on title, role or product\",\r\n or: \"or\",\r\n didYouKnow: \"Did you know that you can also ask your question, request or problem to GoGo? This easy assistance immediately searches for answers in the knowledge bases for you and creates a notification for you if this is necessary.\",\r\n createTicketHere: \"You can create a report below that will be picked up by the service desk. Enter a description and your report will be registered.\",\r\n active: \"active\",\r\n whatToReport: \"What do you want to report?\",\r\n yesCreateTicket: \"Yes, create a notification\",\r\n addAction: \"Add action\",\r\n addAnActionMessage: \"Add an action, status update, question or other message to your notification.\",\r\n busySending: \"Busy sending..\",\r\n busy: \"Busy..\",\r\n send: \"send\",\r\n whatsTheSubject: \"What is the subject?\",\r\n selectFromBelow: \"Or select one from below\",\r\n thanksKeepInTouch: \"Thank you for your message! You will hear from us as soon as possible.\",\r\n sorryWhatIsYourPhone: \"Sorry! We notice that you are not satisfied, we would like to contact you by phone!\",\r\n correctNumber: \"Is this your phonenumber?\",\r\n mayWeContactYou: \"What number can we reach you on?\",\r\n yesCallMe: \"Yes, call me!\",\r\n isAddedToEnvironment: \"has been added to your environment\",\r\n needAppPermission: \"{name} requires approval from your manager, the request has been forwarded.\",\r\n searchAvailableApps: \"Search in available apps\",\r\n found: \"found\",\r\n youGot: \"You got\",\r\n localApps: \"local apps\",\r\n smartTilesMessage: \"smart tiles and app store

With your own GO environment it is possible to use a real app store. All apps are automatically installed on your workplace and will then be shown as a smart tile on GO. No more need to bring your machine to the IT department!\",\r\n notConnected: \"not connected\",\r\n addNewTile: \"Add new tile\",\r\n editTile: \"Edit tile\",\r\n insertUrl: \"insert new url\",\r\n uploadIcon: \"upload icon\",\r\n selectApplication: \"Select application\",\r\n removeAsFavorite: \"remove as favorite\",\r\n markAsFavorite: \"mark as favorite\",\r\n own: \"own\",\r\n tiles: \"tiles\",\r\n tile: \"tile\",\r\n local: \"local\",\r\n name: \"name\",\r\n applications: \"Applications\",\r\n language: \"Language\",\r\n choose: 'Choose',\r\n addOwnEvent: \"Add own event\",\r\n noPlannedItems: \"nothing planned\",\r\n wizardHomeHi: \"Welcome to GO, the modern workplace! GO is your starting point where you have everything at your fingertips. Your apps, documents, business information and more. GO makes it easy to be productive anytime, anywhere, instantly. \",\r\n wizardHomeGoGo: \"Do you have a question about video conferencing in Teams or is your laptop not working? Ask this to GoGo, the easy help! He searches the knowledge bases for you and calls in the service desk when necessary.\",\r\n hasOfficeLocalTitle: \"Do you have Microsoft Office installed locally?\",\r\n hasOfficeLocal: \"When you have installed Office on your computer or laptop, it is possible to open your documents from GO in the desktop app. Do you want to open your documents in the desktop app?\",\r\n wantOfficeWizardTitle: \"Do you want to use the smart Office Wizard?\",\r\n wantOfficeWizard: \"The smart wizard makes it easy to save new documents in the right place. Give the document a name and select a Team. \",\r\n inTabOrPopupTitle: \"Open in a new tab or popup?\",\r\n inTabOrPopup: \"Applications that are not installed on your PC open in a new browser tab or in a separate popup? The popup choice provides a different workplace experience.\",\r\n newTab: \"New tab\",\r\n popup: \"Popup\",\r\n shareBirthdayTitle: \"Do you also want to share your birthday with your colleagues?\",\r\n shareBirthday: 'If you\\'re okay with us showing your birthday to your colleagues, then you can fill it in yourself via your office profile page. Just make sure the option \\'Everyone can see this\\' is selected.

It may take one day for your birthday to appear in the list',\r\n yes: \"yes\",\r\n no: \"no\",\r\n people: \"colleagues\",\r\n delete: \"delete\",\r\n important: 'Important',\r\n markAsRead: 'mark all as read',\r\n intranet: 'Intranet',\r\n subject: 'subject',\r\n refresh: 'refresh',\r\n refreshedAgo: 'Refreshed {timeAgo}',\r\n completed: 'Completed',\r\n move: 'move',\r\n self: 'Self',\r\n rights: 'Rights',\r\n change: 'Change',\r\n noRequestFound: 'No requests found',\r\n user: \"User\",\r\n workplace: \"Workplace\",\r\n requestWorkplace: \"Request workplace\",\r\n remove: \"remove\",\r\n requestNewUser: \"Request a new user\",\r\n removeUser: \"Remove user\",\r\n userManagement: \"User management\",\r\n requestInformation: \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat\",\r\n requestType: \"Request type\",\r\n voornaam: \"First name\",\r\n tussenvoegsel: \"Suffix\",\r\n achternaam: \"Last name\",\r\n telefoonnummer: \"Phonenumber\",\r\n functie: \"Function\",\r\n afdeling: \"Department\",\r\n omschrijving: \"Description\",\r\n datumInDienst: \"Date employed\",\r\n datumUitDienst: \"Datum out of service\",\r\n youSure:\"Are you sure?\",\r\n addUserFormInfo: \"Use the form below to request a new colleague at the Avantage Service Desk. In addition, you have insight into the call number and you can follow the contents of the call if you click on the call number. We advise you to report a new colleague as early as possible so that we can properly plan and carry out the work so that we can provide you with all information in a timely manner.\",\r\n removeUserFormInfo: \"With the form below you can request the removal of a colleague at the Avantage Service Desk. In addition, you have insight into the call number and you can follow the contents of the call if you click on the call number. We advise you to report a colleague on leave as early as possible so that we can properly plan and carry out the work so that the colleague no longer has access to the environment at the right time.\",\r\n removeRightsFormInfo: \"With the form below you can request changes to rights for a colleague at the Avantage Service Desk. In addition, you have insight into the call number and you can follow the contents of the call if you click on the call number. We aim to carry out the work within 3 working days.\",\r\n addOffersFormInfo: \"With the form below you can request a quote from our office staff. Specify what you want and what the expectations are for which you want to receive a quote. The more information you provide, the better we can provide you with a customized quote. If there are any questions, we will contact you. We aim to deliver the quote to you within 7 working days.\",\r\n typeLicentie: \"Type of license\",\r\n activateDefender: \"Activate defender\",\r\n officeBackup: \"Office365 backup\",\r\n addToGroups: \"Add to Office365 group(s)\",\r\n createSharedMailbox: \"Create shared mailbox\",\r\n linkMailbox: \"Link shared mailbox to\",\r\n forwardMailTo: \"Forward mail to\",\r\n openPopup: \"Open in popup\",\r\n connectionErrorLiquitCloud: \"An error occurred when logging in to Liquit Cloud with SSO, token was empty\", /* was 'error connecting to Liquit cloud'*/\r\n connectionErrorStartingLiquit: \"An error occurred while starting Liquit\",\r\n isAddedToEnvironment: \"has been added to your environment\",\r\n liquitFailedToStart: \"The application failed to start\",\r\n notifierRender: \"Rendering: \",\r\n commandHubInvokeGoLoginError: \"Error occurred while starting the connection: \", /*Error while starting connection*/\r\n noWidgetsPresent: \"No widgets have been created yet!\",\r\n leftColumnIsEmpty: \"Left column needs to have items, please add a widget to the layout\",\r\n MoveTiles: \"Move tiles\",\r\n explanation: \"explanation\",\r\n close: \"close\",\r\n You: \"You\",\r\n enterDescription: \"describe your issue here\",\r\n liquitSSOError: \"Liquit SSO login failed, token was empty\",\r\n }\r\n },\r\n 'nl': {\r\n locale: 'nl',\r\n messages: {\r\n hello: 'hallo',\r\n myProfile: 'Mijn profiel',\r\n vacationDays: 'Vakantiedagen',\r\n editSettings: 'Instellingen bewerken',\r\n openTutorial: 'Open tutorial',\r\n colorSetting: 'Kleurstelling',\r\n colorExplanation: 'GO komt standaard in een licht jasje. Selecteer de rechter, donkere variant om GO dark te gebruiken.',\r\n autoDarkMode: 'Met zonsopkomst en -ondergang automatisch kleur veranderen',\r\n ownAppTile: 'Eigen app tegels',\r\n editAppTile: 'Pas tegels aan',\r\n logout: 'Uitloggen',\r\n version: 'versie',\r\n startMenu: 'START',\r\n helpMenu: 'HULP',\r\n storeMenu: 'STORE',\r\n selfMenu: 'ZELF',\r\n tasks: 'Taken',\r\n calendar: 'Kalender',\r\n appointment: 'Afspraken',\r\n teams: 'Teams',\r\n tickets: 'Meldingen',\r\n apps: 'Apps',\r\n settings: 'Instellingen',\r\n startLocalApps: 'Lokale applicaties opstarten wanneer mogelijk',\r\n startAppsInNewWindow: 'Apps starten in nieuw tabblad',\r\n useOfficeWizard: 'Gebruik de Office wizard',\r\n showScrollbars: 'Toon scrollbars',\r\n openAppsExistingWindow: 'Gebruik bestaand tabblad bij opstarten app',\r\n more: 'meer',\r\n recent: 'recent',\r\n add: 'toevoegen',\r\n edit: 'bewerken',\r\n shared: 'gedeeld',\r\n mine: 'mijn',\r\n noItemsFound: 'geen items',\r\n news: 'Nieuws',\r\n createNews: 'maak een nieuwsbericht',\r\n createEvent: 'maak een event',\r\n today: 'Vandaag',\r\n tomorrow: 'Morgen',\r\n upcoming: 'Aankomend',\r\n earlierThisWeek: 'Eerder deze week',\r\n open: 'Openstaand',\r\n noDate: 'Geen datum',\r\n openToDo: 'Open to-do',\r\n createTask: 'Maak een taak',\r\n createAppointment: 'maak een afspraak',\r\n noAppointments: 'Je hebt vandaag en morgen geen afspraken',\r\n events: 'Evenementen',\r\n birthdays: 'Verjaardagen',\r\n noBirthdays: \"Er zijn geen jarigen vandaag of morgen\",\r\n hisBirthday: \"{when} is {name} jarig\",\r\n congratulations: \"Gefeliciteerd\",\r\n openOneDrive: \"open onedrive\",\r\n documents: \"Documenten\",\r\n kindOfDocument: \"Wat voor document\",\r\n createBlog: 'Maak een blog',\r\n openOriginal: \"open origineel\",\r\n searchingFor: 'Ik ben op zoek naar..',\r\n search: \"Zoeken\",\r\n whatToSearch: \"Wat wil je zoeken?\",\r\n all: 'alles',\r\n persons: 'personen',\r\n files: 'bestanden',\r\n colleagues: \"collega's\",\r\n emails: \"emails\",\r\n createTicket: \"maak melding\",\r\n myTickets: \"mijn meldingen\",\r\n itNews: \"IT nieuws\",\r\n noLink: \"nog geen koppeling\",\r\n new: \"nieuw\",\r\n my: \"mijn\",\r\n ticket: \"melding\",\r\n tickets: \"meldingen\",\r\n IT: \"IT\",\r\n theModernServiceDesk: \"De moderne servicedesk is een nieuwe manier om geholpen te worden. Vertel aan GoGo je probleem of vraag en hij helpt je verder. Ook kun je direct een nieuwe melding zelf aanmaken.\",\r\n wantToUseModernServiceDesk: \"Wil je gebruiken maken van onze moderne servicedesk?\",\r\n noCustomer: 'Jouw IT-omgeving is nog niet bij ons geregistreerd. Dat is wel nodig om gebruik te kunnen maken van onze moderne servicedesk mogelijkheden. Neem gerust contact met ons op om dat te realiseren.',\r\n wantToKnowMore: \"Wil je meer weten over de servicedesk van Avantage? Lees dan\",\r\n thisBlog: \"deze blog\",\r\n eLearning: \"E-Learning\",\r\n knowledgeBase: \"kennisbank\",\r\n tips: \"tips\",\r\n tipsNTricks: \"Tips 'n tricks\",\r\n help: \"hulp\",\r\n whenCustomer: \"Zodra jouw omgeving is toegevoegd, kan je gebruik maken van onze moderne servicedesk mogelijkheden. Meldingen die via de chatbot of die je zelf rechtstreeks hebt ingediend, worden hier weergeven en kun je de status daarvan inzien.\",\r\n createATicketHere: \"Hieronder kun je direct een melding maken die door de servicedesk wordt opgepakt. Wanneer je een omschrijving van jouw vraag of probleem hebt gegeven, wordt jouw melding direct geregistreerd.\",\r\n didYouKnowChatbot: \"Weet je dat je in GO jouw vraag ook aan de GoGo kunt stellen? Deze eenvoudige chatbot zoekt gelijk naar antwoorden in de kennisbanken en maakt (als dat nodig is) een melding bij onze servicedesk voor je aan.\",\r\n current: \"huidige\",\r\n view: \"Bekijk hier je\",\r\n findProblemsHere: \"Problemen, vragen of incidenten die zijn doorgezet naar de servicedesk, vindt je hier weer terug.\",\r\n noActiveTickets: \"Op dit moment heb je geen actieve meldingen\",\r\n createANewTicket: \"maak een nieuwe melding aan\",\r\n noITNews: \"Op dit moment is er geen nieuws over je IT omgeving\",\r\n howCanIHelpYou: \"Hoe kan ik je helpen?\",\r\n GoGo: \"GoGo, de eenvoudige hulp \",\r\n hi: \"Hi\",\r\n alwaysOnline: \"altijd online\",\r\n whatDoYouWantToKnow: \"Wat wil je weten?\",\r\n aboutWhatDoYouWantToKnow: \"Waarover wil je wat weten?\",\r\n answer: \"Antwoord\",\r\n example: \"Voorbeeld\",\r\n setPreferences: \"Geef je voorkeuren\",\r\n thenWeWillGetYourLearnings: \"dan halen we relevante leerpaden van Microsoft voor je op!\",\r\n here: \"hier\",\r\n searchLearning: \"Zoek op leerpaden\",\r\n gatherLearningsForYou: \"We willen graag relevante e-learnings voor je verzamelen. Geef je voorkeuren aan door je rol(len), producten en je niveau te selecteren.\",\r\n whichRoles: \"Welke rollen vervul je binnen jouw organisatie?\",\r\n whichProducts: \"Over welke producten of diensten wil je iets leren?\",\r\n previous: \"vorige\",\r\n next: \"volgende\",\r\n save: \"opslaan\",\r\n browseLearnings: \"blader door alle leerpaden\",\r\n learningsFound: \"leerpaden gevonden\",\r\n searchLearnings: \"zoek op titel, rollen of producten\",\r\n or: \"of\",\r\n didYouKnow: \"Wist je dat je ook je vraag, verzoek of probleem aan GoGo kan stellen? Deze eenvoudige hulp zoekt gelijk voor je naar antwoorden in de kennisbanken en maakt een melding voor je aan als dit nodig is.\",\r\n createTicketHere: \"Je kunt hieronder een melding aanmaken die door de servicedesk wordt opgepakt. Geef een omschrijving op en je melding wordt geregistreerd.\",\r\n active: \"active\",\r\n whatToReport: \"Wat wil je melden?\",\r\n yesCreateTicket: \"Ja, maak een melding aan\",\r\n addAction: \"Voeg een actie toe\",\r\n addAnActionMessage: \"Voeg een actie, status update, vraag of een ander bericht toe aan je melding.\",\r\n busySending: \"Bezig met versturen..\",\r\n busy: \"Bezig..\",\r\n send: \"versturen\",\r\n whatsTheSubject: \"Wat is het onderwerp?\",\r\n selectFromBelow: \"Of gebruik één van onderstaande\",\r\n thanksKeepInTouch: \"Bedankt voor je melding! Je hoort zo snel mogelijk van ons.\",\r\n sorryWhatIsYourPhone: \"Sorry! We merken dat je niet tevreden bent, graag willen we je telefonisch benaderen!\",\r\n correctNumber: \"Klopt dit nummer?\",\r\n mayWeContactYou: \"Op welk nummer mogen we je benaderen?\",\r\n yesCallMe: \"Ja, bel mij!\",\r\n isAddedToEnvironment: \"is toegevoegd aan je omgeving\",\r\n needAppPermission: \"Voor {name} is goedkeuring van je manager nodig, de aanvraag is doorgestuurd.\",\r\n searchAvailableApps: \"Zoek in beschikbare apps\",\r\n found: \"gevonden\",\r\n youGot: \"Je hebt\",\r\n localApps: \"lokale apps\",\r\n smartTilesMessage: \"slimme tegels en app store

Met een eigen GO omgeving is het mogelijk om een echte app store te gebruiken. Alle apps worden automatisch op je werkplek geinstalleerd en zal dan als een slimme tegel op GO worden getoond. Niet meer nodig om je machine langs de IT afdeling te brengen!\",\r\n notConnected: \"niet verbonden\",\r\n addNewTile: \"Voeg nieuwe tegel toe\",\r\n editTile: \"Pas tegel aan\",\r\n insertUrl: \"voer een nieuwe url in\",\r\n uploadIcon: \"upload icoon\",\r\n selectApplication: \"Selecteer applicatie\",\r\n removeAsFavorite: \"Verwijder als favoriet\",\r\n markAsFavorite: \"Markeer als favoriet\",\r\n own: \"eigen\",\r\n tiles: \"tegels\",\r\n tile: \"tegel\",\r\n local: \"lokaal\",\r\n name: \"naam\",\r\n applications: \"Applicaties\",\r\n language: \"Taal\",\r\n choose: 'Kies',\r\n addOwnEvent: \"Eigen event toevoegen\",\r\n noPlannedItems: \"niks gepland\",\r\n wizardHomeHi: \"Welkom op GO, de moderne werkplek! GO is je startplek waarop je direct alles in handbereik hebt. Je apps, documenten, bedrijfsinformatie en meer. Met GO wordt het eenvoudig om altijd, overal en direct productief te zijn. \",\r\n wizardHomeGoGo: \"Heb je een vraag over videovergaderen in Teams of werkt je laptop niet? Stel deze aan GoGo, de eenvoudige hulp! Hij zoekt voor je in de kennisbanken en schakelt wanneer nodig de servicedesk in.\",\r\n hasOfficeLocalTitle: \"Heb je Microsoft Office lokaal geïnstalleerd?\",\r\n hasOfficeLocal: \"Wanneer je Office op je computer of laptop hebt geïnstalleerd, is het mogelijk om je documenten vanuit GO in de desktop-app te openen. Wil je jouw documenten in de desktop-app openen?\",\r\n wantOfficeWizardTitle: \"Wil je de slimme Office Wizard gebruiken?\",\r\n wantOfficeWizard: \"Met deze slimme wizard wordt het eenvoudig om nieuwe documenten op de juiste plek op te slaan. Geef het document een naam en selecteer een Team. \",\r\n inTabOrPopupTitle: \"Openen in een nieuw tabblad of popup?\",\r\n inTabOrPopup: \"Applicaties die niet op je PC geïnstalleerd staan openen in een nieuw browser tabblad of in een aparte popup? De popup keuze zorgt voor een andere werkplek ervaring.\",\r\n newTab: \"Nieuw tabblad\",\r\n popup: \"Popup\",\r\n shareBirthdayTitle: \"Wil je ook je verjaardag met je collega's delen?\",\r\n shareBirthday: 'Als je het oké vindt dat we je verjaardag laten zien aan je collega\\'s, dan kun je deze zelf invullen via je office profiel pagina. Zorg er wel voor dat de optie \\'Iedereen kan dit zien\\' is geselecteerd.

Het kan één dag duren voordat je verjaardag zichtbaar wordt in de lijst',\r\n yes: \"ja\",\r\n no: \"nee\",\r\n people: \"collega's\",\r\n delete: \"verwijder\",\r\n important: 'Belangrijk',\r\n markAsRead: 'markeer alles gelezen',\r\n intranet: 'Intranet',\r\n subject: 'onderwerp',\r\n refresh: 'ververs',\r\n refreshedAgo: '{timeAgo} ververst',\r\n completed: 'Afgerond',\r\n move: 'verplaatsen',\r\n self: 'Zelf',\r\n rights: 'Rechten',\r\n change: 'Aanpassen',\r\n noRequestFound: 'Geen aanvragen gevonden',\r\n user: \"Gebruiker\",\r\n workplace: \"Werkplek\",\r\n requestWorkplace: \"Werkplek aanvragen\",\r\n remove: \"verwijderen\",\r\n requestNewUser: \"Vraag een nieuwe gebruiker aan\",\r\n removeUser: \"Verwijder gebruiker\",\r\n userManagement: \"Gebruikersbeheer\",\r\n requestInformation: \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat\",\r\n requestType: \"Aanvraag type\",\r\n voornaam: \"Voornaam\",\r\n tussenvoegsel: \"Tussenvoegsel\",\r\n achternaam: \"Achternaam\",\r\n telefoonnummer: \"Telefoonnummer\",\r\n functie: \"Functie\",\r\n afdeling: \"Afdeling\",\r\n omschrijving: \"Omschrijving\",\r\n datumInDienst: \"Datum in dienst\",\r\n datumUitDienst: \"Datum uit dienst\",\r\n youSure:\"Weet je het zeker?\",\r\n addUserFormInfo: \"Met het onderstaande formulier kunt u een nieuwe collega aanvragen bij de Servicedesk van Avantage. Daarnaast heeft u inzicht in het callnummer en kunt u de inhoudt van de call volgen als u op het callnummer klikt. Wij adviseren u zo vroeg mogelijk melding te maken van een nieuwe collega zodat wij de werkzaamheden netjes kunnen plannen en uitvoeren zodat we u tijdig van alle informatie kunnen voorzien.\",\r\n removeUserFormInfo: \"Met het onderstaande formulier kunt u een collega uitdienst melden bij de Servicedesk van Avantage. Daarnaast heeft u inzicht in het callnummer en kunt u de inhoudt van de call volgen als u op het callnummer klikt. Wij adviseren u zo vroeg mogelijk melding te maken van een collega uitdienst zodat wij de werkzaamheden netjes kunnen plannen en uitvoeren zodat de collega op het juiste moment geen toegang meer heeft op de omgeving.\",\r\n addRightsFormInfo: \"Met het onderstaande formulier kunt u aanpassingen op rechten voor een collega aanvragen bij de Servicedesk van Avantage. Daarnaast heeft u inzicht in het callnummer en kunt u de inhoudt van de call volgen als u op het callnummer klikt. Wij streven ernaar de werkzaamheden binnen 3 werkdagen uit te voeren.\",\r\n addOffersFormInfo: \"Met het onderstaande formulier kunt u een offerte aanvraag doen bij onze binnendienst. Specificeer wat u wenst en wat de verwachtingen zijn waarvoor u een offerte wilt ontvangen. Hoe meer informatie hoe beter wij kunnen zorgen voor een offerte op maat. Mochten er nog vragen zijn nemen wij contact met u op. Wij streven er naar om binnen 7 werkdagen de offerte bij u af te leveren.\",\r\n typeLicentie: \"Type licentie\",\r\n activateDefender: \"Activeer defender\",\r\n officeBackup: \"Office365 backup\",\r\n addToGroups: \"Toevoegen aan Office365 groepen\",\r\n createSharedMailbox: \"Aanmaken gedeelde mailbox\",\r\n linkMailbox: \"Gedeelde mailbox koppelen aan\",\r\n forwardMailTo: \"Forward mail naar\",\r\n openPopup: \"Open in een popup\",\r\n liquitSSOError: \"Liquit SSO inloggen is niet gelukt, token was leeg\",\r\n connectionErrorLiquitCloud: \"Er is een fout opgetreden bij het verbinden met Liquit Cloud\",\r\n connectionErrorStartingLiquit: \"Er is een fout opgetreden bij het opstarten van Liquit\",\r\n isAddedToEnvironment: \"is toegevoegd aan je omgeving\",\r\n liquitFailedToStart: \"De applicatie kon niet opstarten\",\r\n notifierRender: \"Rendering: \",\r\n commandHubInvokeGoLoginError: \"Fout tijdens het starten van de verbinding: \", /*Error while starting connection*/\r\n noWidgetsPresent: \"Er zijn nog geen widgets aangemaakt!\",\r\n leftColumnIsEmpty: \"Linkerkolom moet gevuld zijn, voeg alstublieft een widget toe aan de indeling\",\r\n MoveTiles: \"Beweeg tegels\",\r\n explanation: \"uitleg\",\r\n close: \"sluiten\",\r\n You: \"Jij\",\r\n enterDescription: \"beschrijf hier jouw melding\"\r\n }\r\n }\r\n}\r\n\r\nexport default translation;\r\n","import styled from 'styled-components';\r\nimport Box from '../../../styled/Box';\r\n\r\nexport const BirthdayItem = styled(Box)`\r\n\tpadding: 15px;\r\n\r\n`;\r\n\r\nexport const Wrapper = styled.div`\r\n\t${props => props.flex ? 'display: flex;align-items: center;' : 'display: block; text-align: center;'}\r\n\r\n`;\r\n\r\nexport const Icon = styled.img`\r\n\twidth: 76px;\r\n\theight: 76px;\r\n\tborder-radius: 50%;\r\n`;\r\n\r\nexport const Text = styled.span`\r\n\tline-height: 24px;\r\n\tfont-size: 12px;\r\n\r\n\t${props => props.fullWidth ? 'width: 100%;display: block;' : 'margin-left: 20px;'}\r\n`;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport * as Styled from './styled';\r\nimport { connect } from 'react-redux';\r\nimport { withTranslate } from 'react-redux-multilingual';\r\n\r\nconst BirthdayItem = props => (\r\n \r\n \r\n {props.none ? null : }\r\n {props.none\r\n ?\r\n {props.translate(\"noBirthdays\")}.\r\n :\r\n props.small\r\n ?\r\n {props.name}
{props.when}
\r\n :\r\n \r\n {props.translate(\"hisBirthday\", { when: props.when, name: props.name })}. {props.translate('congratulations')}!\r\n \r\n }\r\n\r\n
\r\n
\r\n)\r\n\r\nBirthdayItem.propTypes = {\r\n name: PropTypes.string,\r\n icon: PropTypes.string,\r\n none: PropTypes.bool,\r\n popup: PropTypes.bool,\r\n demo: PropTypes.bool\r\n}\r\n\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {\r\n darkmode: state.Layout.darkmode\r\n };\r\n};\r\n\r\nexport default withTranslate(connect(mapStateToProps)(BirthdayItem));\r\n","import styled from 'styled-components'\r\n\r\nimport * as Variables from '../../../ThemeVariables';\r\n\r\nexport const Button = styled.button`\r\n\tcolor: white;\r\n\tbackground: ${Variables.mainColor};\r\n\tfont-weight: 600;\r\n\ttext-align: center;\r\n\tline-height: 22px;\r\n\tpadding: 0 10px;\r\n\tborder-radius: 25px;\r\n\tdisplay: inline-block;\r\n\tcursor: pointer;\r\n\tfont-size: 14px;\r\n\tborder: 2px solid ${Variables.mainColor};\r\n\r\n ${props => props.position === 'right' ? 'float: right; margin-left: 10px;' : ''};\r\n\r\n\ttransition: color .5s, background .5s;\r\n\t&:hover {\r\n\t\tcolor: black;\r\n\t\tbackground: white;\r\n\r\n\t\tb { \r\n\t\t\tdisplay:inline;\r\n\t\t} \r\n\t}\r\n\r\n\t&:focus {\r\n\t\toutline: none;\r\n\t}\r\n\r\n\tb { \r\n\t\tdisplay:none;\r\n\t} \r\n`;","import React from 'react';\r\nimport * as Styled from './styled';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst Button = props => (\r\n \r\n\t\t{ props.text } \r\n\t\r\n)\r\n\r\nButton.propTypes = {\r\n position: PropTypes.string,\r\n\tonClick : PropTypes.func,\r\n text: PropTypes.string,\r\n color: PropTypes.string\r\n}\r\n\r\nexport default Button;","export default __webpack_public_path__ + \"static/media/dark.49a45567.svg\";","export default __webpack_public_path__ + \"static/media/light.351c5a19.svg\";","\r\nimport { keyframes } from 'styled-components';\r\n \r\nexport const hoverBob = keyframes`\r\n\r\n\t0% {\r\n\t\ttransform: translateY(-8px);\r\n\t}\r\n\t50% {\r\n\t\ttransform: translateY(-4px);\r\n\t}\r\n\t100% {\r\n\t\ttransform: translateY(-8px);\r\n\t}\r\n\r\n`\r\nexport const hoverBobFloat = keyframes`\r\n\t100% {\r\n\t\ttransform: translateY(-8px);\r\n\t}\r\n`;\r\n\r\n\r\nexport const loadingPlaceholder = keyframes`\r\n 0% {\r\n transform: translateX(-100%);\r\n }\r\n 100% {\r\n transform: translateX(100%);\r\n }\r\n\r\n`;","const actions = {\r\n\tCLEAR : 'CLEAR',\r\n\t\r\n\tclear: () => ({\r\n\t\ttype: actions.CLEAR\r\n\t}),\r\n\r\n};\r\n\r\nexport default actions;\r\n","import styled from 'styled-components'\r\nimport * as Variables from '../../../../ThemeVariables';\r\n\r\nexport const SearchInput = styled.input`\r\n\twidth: calc(100% - 50px);\r\n\tline-height: ${Variables.headerHeight};\r\n\tfont-size: 16px;\r\n\tbackground: transparent;\r\n\tfloat: left;\r\n\r\n\t&:focus {\r\n\t\toutline : none;\r\n\t}\r\n`;\r\n\r\nexport const SearchWrapper = styled.div`\r\n\t/*width: calc(100% - 50px);*/\r\n\twidth: 100%;\r\n\r\n\tbackground: #ebedf0;\r\n\tborder-radius: 25px;\r\n\toverflow: hidden;\r\n\r\n\t&.greyout {\r\n\t\topacity: .3;\r\n\t}\r\n\r\n\r\n\theight: ${Variables.headerHeight};\r\n\r\n\t@media ( max-width: ${Variables.mxs}) {\r\n\t\tdisplay: none;\r\n\t}\r\n\r\n\r\n\r\n\t@media ( min-width: ${Variables.md} ) {\r\n\t\t${props => props.gridArea ? 'grid-area:' + props.gridArea : ''};\r\n\t\twidth: 20vw;\r\n\r\n\t\tmargin-left: 25px;\r\n\t}\r\n\r\n\t@media ( min-width: ${Variables.lgMin} ) {\r\n\t\twidth: 20vw;\r\n\t}\r\n\r\n\t${props => props.wrapped ? 'display: block !important;' : ''};\r\n\r\n\t@media ( min-width: ${Variables.xlg} ) {\r\n\t\tdisplay: block;\r\n\t\twidth: 20vw;\r\n\t\tgrid-area: search;\r\n\t}\r\n`;\r\n\r\nexport const Magnifier = styled.div`\r\n\twidth: 50px;\r\n\tfloat: left;\r\n\tline-height: ${Variables.headerHeight};\r\n\ttext-align: center;\r\n\r\n`;\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { faSearch } from '@fortawesome/free-solid-svg-icons'\r\nimport actions from '../../../../redux/slideOut/actions';\r\nimport searchActions from '../../../../redux/search/actions';\r\nimport { ScrollTo } from \"react-scroll-to\";\r\nimport { bindActionCreators } from 'redux';\r\nimport ReactTooltip from 'react-tooltip';\r\nimport * as Styled from './styled';\r\nimport { withTranslate } from 'react-redux-multilingual';\r\n\r\nclass SearchBar extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n searchValue: false\r\n }\r\n }\r\n\r\n _changeSearchInput = (e) => {\r\n this.props.actions.setSearchTerm(e.target.value);\r\n }\r\n\r\n handleSubmit(event, reset = false) {\r\n if (event) event.preventDefault();\r\n this.props.actions.setActiveSlideOut('goapps/search', { search: this.props.searchTerm, dashboard: true });\r\n\r\n if ( this.props.searchbarActive ) {\r\n this.props.actions.toggleSearchBarActive(false);\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n { window.tenantConfig.version != 'development' ? : 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 }\r\n}\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {\r\n darkmode: state.Layout.darkmode,\r\n searchTerm : state.Search.searchTerm,\r\n SlideOutData: state.SlideOut.data,\r\n searchbarActive: state.Search.searchbarActive,\r\n activeSlideOut: state.SlideOut.activeSlideOut\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => ({ actions: bindActionCreators({ ...actions, ...searchActions }, dispatch) });\r\n\r\nexport default withTranslate(connect(mapStateToProps, mapDispatchToProps)(SearchBar));\r\n","import styled from 'styled-components';\r\nimport * as Variables from '../../ThemeVariables';\r\n\r\nconst Box = styled.div`\r\n\r\n\tborder-radius: ${Variables.borderRadius};\r\n\twidth: 100%;\r\n\tbox-shadow: 0px 0px 5px 4px rgba(0,0,0,0.03);\r\n\r\n\ttransform: translateX(0) rotateX(0) rotateZ(0deg)\r\n\r\n\tpadding: 14.4px;\r\n\r\n\ttransition: all .3s;\r\n\t&:hover {\r\n\t\tbox-shadow: 0px 0px 5px 4px rgba(0, 0, 0, 0.06);\r\n\t}\r\n\r\n\tbackground: ${Variables.tileBackground.lightMode};\r\n\tcolor: ${Variables.mainTextColor.lightMode};\r\n\r\n\t&.darkmode {\r\n\t\tbackground: ${Variables.tileBackground.darkMode};\r\n\t\tcolor: ${Variables.mainTextColor.darkMode};\r\n\t\t&:hover {\r\n\t\t\tbox-shadow: 0px 0px 5px 4px rgba(254, 254, 254, 0.03);\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport default Box;","import customProtocolCheck from \"custom-protocol-check\";\r\nimport moment from 'moment';\r\n/**\r\n @Description Determines the way to open an application.\r\n @param { bool } defaultStartInPopup caller function may have already determined app should open in a popup. Defaults to false.\r\n*/\r\nexport const getUserApplicationSettings = (defaultStartInPopup = false) => {\r\n\r\n\r\n var userAgent = navigator.userAgent,\r\n mobile = function() {\r\n return /\\b(iPhone|iP[ao]d)/.test(userAgent) ||\r\n /\\b(iP[ao]d)/.test(userAgent) ||\r\n /Android/i.test(userAgent) ||\r\n /Mobile/i.test(userAgent);\r\n },\r\n screenX = typeof window.screenX != 'undefined' ? window.screenX : window.screenLeft,\r\n screenY = typeof window.screenY != 'undefined' ? window.screenY : window.screenTop,\r\n outerWidth = typeof window.outerWidth != 'undefined' ? window.outerWidth : document.documentElement.clientWidth,\r\n outerHeight = typeof window.outerHeight != 'undefined' ? window.outerHeight : document.documentElement.clientHeight - 22,\r\n targetWidth = mobile() ? null : 1024,\r\n targetHeight = mobile() ? null : 800,\r\n V = screenX < 0 ? window.screen.width + screenX : screenX,\r\n left = parseInt(V + (outerWidth - targetWidth) / 2, 10),\r\n right = parseInt(screenY + (outerHeight - targetHeight) / 2.5, 10),\r\n features = [];\r\n if (targetWidth !== null) {\r\n features.push('width=' + targetWidth);\r\n }\r\n if (targetHeight !== null) {\r\n features.push('height=' + targetHeight);\r\n }\r\n features.push('left=' + left);\r\n features.push('top=' + right);\r\n features.push('scrollbars=1');\r\n\r\n\r\n let openAppInTarget = 'popup';\r\n let windowProperties = features.join(',');\r\n let startInPopup = defaultStartInPopup;\r\n\r\n if (window.userSettings) {\r\n if (window.userSettings.hasOwnProperty('startLocalApps')) {\r\n if (window.userSettings.startLocalApps === false) {\r\n startInPopup = true;\r\n }\r\n } else {\r\n startInPopup = true;\r\n }\r\n\r\n if (window.userSettings.hasOwnProperty('startAppsInNewWindow')) {\r\n if (window.userSettings.startAppsInNewWindow === true) {\r\n openAppInTarget = '_BLANK';\r\n windowProperties = '';\r\n }\r\n }\r\n }\r\n\r\n return {\r\n openAppInTarget,\r\n windowProperties,\r\n startInPopup\r\n }\r\n}\r\n\r\n/**\r\n @Description Conditionally opens an application. We need a webDavUrl as provided by the MS Graph API to make this work. Otherwise, this will fall back on the original link and open that in a popup.\r\n @param { string } webDavUrl Link to a document, usually also enables us to open a shared document locally.\r\n @param { string } originalLink Original link to document, usable as href.\r\n @param { string } appName MS App name, if not set, application will not try to open locally\r\n @param { string } dataType Document data type\r\n @param { object } dataType Document data type\r\n*/\r\n\r\nexport const launchApp = (webDavUrl = false, originalLink = false, appName = false, dataType = false) => {\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n // -- If appName isset, default to trying to open app locally.\r\n const { openAppInTarget, windowProperties, startInPopup } = getUserApplicationSettings((appName ? false : true));\r\n\r\n const popupLink = originalLink + (dataType !== \"#microsoft.graph.listItem\" ? \"?web=1\" : \"\");\r\n if (startInPopup) {\r\n openPopup(popupLink, openAppInTarget, windowProperties, appName);\r\n resolve();\r\n }\r\n\r\n let newLink = false;\r\n if (webDavUrl && appName) {\r\n newLink = `ms-${appName.toLowerCase()}:ofe|u|${webDavUrl}`;\r\n }\r\n\r\n\r\n if (newLink) {\r\n customProtocolCheck(\r\n newLink,\r\n () => {\r\n openPopup(popupLink, openAppInTarget, windowProperties);\r\n resolve();\r\n },\r\n () => {\r\n resolve();\r\n }, 5000\r\n );\r\n } else {\r\n openPopup(popupLink, openAppInTarget, windowProperties, appName);\r\n resolve();\r\n }\r\n });\r\n}\r\n\r\n/**\r\n @Description Conditionally opens an application. We need a webDavUrl as provided by the MS Graph API to make this work. Otherwise, this will fall back on the original link and open that in a popup.\r\n @param { string } popupLink Link to open\r\n @param { string } openAppInTarget Window target (popup, _BLANK, parent...)\r\n @param { string } windowProperties May contain additional values like popup size, scrollbars\r\n @param { string } windowTitle Possible title to set to the opened window.\r\n*/\r\nexport const openPopup = (popupLink = false, openAppInTarget = false, windowProperties = false, windowTitle = false, openNewWindow = false) => {\r\n let openedWindow = window.open(popupLink, openNewWindow ? \"\" : openAppInTarget+JSON.stringify(popupLink), windowProperties);\r\n /*if (windowTitle) {\r\n openedWindow.onload = () => {\r\n openedWindow.document.title = windowTitle;\r\n }\r\n }*/\r\n}\r\n","import styled, { keyframes, css } from 'styled-components';\r\nimport * as Variables from '../../../ThemeVariables';\r\nimport styledContainerQuery from 'styled-container-query';\r\nimport { LinkContainer } from '../../../components/layout/widget/styled';\r\n\r\nexport const DocumentsList = styledContainerQuery.div`\r\n\tdisplay: grid;\r\n\tgrid-template-columns: repeat(1, 1fr);\r\n\tgrid-column-gap: 25px;\r\n\tgrid-row-gap:3px;\r\n\tmin-height:310px;\r\n\t@media(min-width: ${Variables.md}) and (max-width: ${Variables.xlg}) {\r\n\t\tmin-height:249px;\r\n\t}\r\n\t&:container(min-width: 365px) {\r\n\t\tgrid-template-columns: repeat(2, 1fr);\r\n\t}\r\n\r\n\ta {\r\n\t\tdisplay: inline-flex;\r\n\r\n\t\t@media(min-width: ${Variables.md}) and (max-width: ${Variables.xlg}) {\r\n\t\t\t&:nth-of-type(1n+9) {\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const AddLink = styled.div`\r\n\tdisplay: inline;\r\n\tbackground: #636a73;\r\n\tborder-radius: 8px;\r\n\tfont-size: 12px;\r\n\tpadding: 0 5px;\r\n\tcursor: pointer;\r\n\tcolor: ${Variables.mainTextColor.lightMode};\r\n\tspan {\r\n\t\tfont-weight: regular;\r\n\t}\r\n`;\r\n\r\nexport const AddNoLink = styled.span`\r\n\ttext-decoration: none;\r\n\tfont-size: 12px;\r\n\tcursor: pointer;\r\n\tcolor: #40454c;\r\n\ttext-align: right;\r\n\r\n\t&:not(:last-of-type) {\r\n\t\t&:after {\r\n\t\t\tcontent: ' | ';\r\n\t\t}\r\n\t}\r\n\r\n\t&.darkmode {\r\n\t\tcolor: white;\r\n\t}\r\n`;\r\n\r\nexport const ListHeading = styledContainerQuery.div`\r\n\tmargin-bottom: 20px;\r\n\r\n\t&:container(min-width: 340px) {\r\n\t\tdisplay: flex;\r\n justify-content: space-between;\r\n\t}\r\n`;\r\n\r\n\r\nexport const Section = styled.div`\r\n\t&:nth-of-type(2) {\r\n\t\tdisplay: none;\r\n\t}\r\n\r\n\t@media(max-width: ${Variables.md}) {\r\n\t\t&:nth-of-type(2) {\r\n\t\t\tdisplay: block;\r\n\t\t}\r\n\t}\r\n\r\n\t@media(min-width: ${Variables.xlg}) {\r\n\t\t&:nth-of-type(2) {\r\n\t\t\tdisplay: block;\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const DocumentsListSlide = styled.div`\r\n\tdisplay: grid;\r\n`;\r\n\r\nexport const Container = styled.div`\r\n\tpadding: 20px 0px;\r\n\tdisplay: grid;\r\n\tgrid-template-columns: repeat(1, 1fr);\r\n\tgrid-auto-rows: minmax(30px, max-content);\r\n\tgrid-row-gap:3px;\r\n`;\r\n\r\nexport const DocumentWrapper = styled.div`\r\n\tdisplay: flex;\r\n\ttext-decoration: none;\r\n\tcursor: pointer;\r\n\tjustify-content:space-between;\r\n\tcolor: ${Variables.mainTextColor.lightMode};\r\n\tborder-radius: 6px;\r\n\tpadding-right:5px;\r\n\t&.darkmode {\r\n\t\tcolor: ${Variables.mainTextColor.darkMode};\r\n\t}\r\n\t&:hover{\r\n\t\ttext-decoration: underline;\r\n\t}\r\n\t&.popup {\r\n\t\tbackground : #ebedf0;\r\n\t}\r\n\t&.darkmode.popup {\r\n\t\tbackground: ${Variables.tileBackground.darkMode};\r\n\t}\r\n`\r\n\r\nexport const PDFIcon = styled.div`\r\n\tpadding:5px; \r\n\tdisplay:flex; \r\n\talign-items:center;\r\n\t&:hover > svg {\r\n\t\tcolor:#636A73;\r\n\t}\r\n`","import styled, { css } from 'styled-components'\r\nimport * as Variables from '../../../ThemeVariables';\r\n\r\nexport const MenuList = styled.ul`\r\n\tlist-style: none;\r\n\tdisplay: grid;\r\n\theight: calc(100% + 20px);\r\n\ttop: -10px;\r\n\t${props => (props.parent === 'header-col-center' || props.parent === 'header-col-right') && css`\r\n\t\ttext-align: right;\r\n\r\n\t\tgrid-template-columns: repeat(2, 1fr);\r\n\t\t@media ( min-width: ${Variables.md} ) {\r\n\t\t\tdisplay: block;\r\n\t\t\tgrid-template-columns: none;\r\n\t\t}\r\n\t`}\r\n\r\n\t${props => props.parent === 'slideout' && css`\r\n\t\tgrid-template-columns: 1fr;\r\n \tgrid-gap: 20px;\r\n\r\n\t`}\r\n\r\n`;\r\n\r\nexport const MenuButtonList = styled.ul`\r\n\tlist-style: none;\r\n\ttext-align: right;\r\n\r\n`;\r\n\r\n\r\nexport const ButtonWrapper = styled.div`\r\ngrid-area: notifications;\r\n`;\r\nexport const MenuListItemInner = styled.div`\r\ntransform: skew(25deg, 0deg);\r\ndisplay: flex;\r\nalign-items: center;\r\nheight: 100%;\r\njustify-content: center;\r\n`;\r\nexport const MenuListItem = styled.li`\r\n\r\n\theight: 100%;\r\n\tdisplay: inline-block;\r\n\tline-height: ${Variables.headerHeight};\r\n\tfont-size: 20px;\r\n\twidth: 45px;\r\n\tcursor: pointer;\r\n\r\n\ttransform: skew(-25deg, 0deg);\r\n\r\n\t@media ( min-width: ${Variables.md} ) {\r\n\t\twidth: 45px;\r\n\t\tfont-size: 20px;\r\n\t}\r\n\r\n\t&:hover {\r\n\t\topacity: 0.8;\r\n\t}\r\n\r\n\ttext-align: center;\r\n\t${props => props.parent === 'header-col-center' && css`\r\n\t\ttext-align: right;\r\n\t`}\r\n\t${props => (props.parent === 'header-col-center' || props.parent === 'header-col-right') && css`\r\n\t\tlabel {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\r\n\t`}\r\n\r\n\t${props => props.parent === 'slideout' && css`\r\n\t\tbox-shadow: 0px 0px 5px 4px rgba(0,0,0,0.03);\r\n\t\tline-height: 1;\r\n\t\twidth: 100%;\r\n\t\tjustify-content: center;\r\n\t\talign-items: center;\r\n\t\ttext-align: left;\r\n\t\tdisplay: grid;\r\n\t\tborder-radius: 8px;\r\n\r\n\r\n\t\tfont-size: 22px;\r\n\t\tgrid-template-columns: 40px 1fr;\r\n\t\tpadding: 15px;\r\n\t\tspan {\r\n\t\t\tmargin-left: 28px !important;\r\n\t\t\ttop: 16px !important;\r\n\t\t}\r\n\t\t@media ( min-width: ${Variables.xs}) {\r\n\t\t\tfont-size: 30px;\r\n\t\t\tgrid-template-columns: 75px 1fr;\r\n\t\t\tpadding: 20px;\r\n\t\t\tspan {\r\n\t\t\t\tmargin-left: 42px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.darkmode {\r\n\t\t\tbackground: #1B2B3C;\r\n\t\t\tcolor: white;\r\n\r\n\t\t\ta {\r\n\t\t\t\tcolor: white;\r\n\t\t\t}\r\n\t\t}\r\n\t`}\r\n`;\r\n\r\nexport const MenuListItemLabel = styled.label`\r\n\tfont-size: 20px;\r\n`;\r\n\r\nexport const MenuButtonListItem = styled.li`\r\n\tdisplay: inline-block;\r\n\tline-height: ${Variables.headerHeight};\r\n\tfont-size: 18px;\r\n\ttext-align: center;\r\n\r\n\r\n`;\r\n\r\nexport const Link = styled.a`\r\n\tcolor: ${props => props.darkmode ? '#FFFFFF' : '#636a73'};\r\n\r\n\tli {\r\n\t\t&:before {\r\n\t\t\t\tbackground: #e9ebee;\r\n\t\t\tcontent: '';\r\n\t\t\twidth: 100%;\r\n\t\t\theight: 0%;\r\n\t\t\tposition: absolute;\r\n\t\t\tleft: 0;\r\n\t\t\ttop: 0;\r\n\t\t\ttransition: height .5s;\r\n\t\t}\r\n\r\n\t\t&.darkmode {\r\n\t\t\t&:before {\r\n\t\t\t\tbackground: #0d131b;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.btn-active, &:hover {\r\n\t\tli {\r\n\t\t\t&:before {\r\n\t\t\t\theight: 100%;\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.greyout {\r\n\t\topacity: .3;\r\n\t}\r\n\t&:after {\r\n\t\tcontent: '';\r\n\t\tposition: absolute;\r\n\t\twidth: 0%;\r\n\t\theight: 3px;\r\n\t\tbackground: ${Variables.mainColor};\r\n\t\tleft: 0;\r\n\t\tbottom: -28px;\r\n\t\ttransition: width .5s;\r\n\t}\r\n\t&.active {\r\n\t\t&:after {\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\t}\r\n\r\n`;\r\n\r\nexport const Nav = styled.nav`\r\n\theight: 100%;\r\n\t${props => props.parent === 'header-col-center' && css`\r\n\t\tdisplay: none;\r\n\t\t@media ( min-width: ${Variables.xlg}) {\r\n\t\t\tdisplay: block;\r\n\t\t}\r\n\r\n\t`}\r\n\r\n\t${props => props.parent === 'header-col-right' && css`\r\n\t\tdisplay: none;\r\n\t\t@media ( min-width: ${Variables.md}) {\r\n\t\t\tdisplay: block;\r\n\t\t}\r\n\t\t@media ( min-width: ${Variables.xlg}) {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t`}\r\n\r\n\tgrid-area: menuIcons;\r\n`;\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { withRouter } from 'react-router-dom'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n\r\nimport actions from '../../../redux/slideOut/actions';\r\nimport callsActions from '../../../redux/common/calls/actions';\r\nimport Bubble from '../bubble';\r\nimport * as Styled from './styled';\r\nimport { getMS, capitalizeFirstLetter } from '../../../helpers/functions';\r\n\r\nimport { faConciergeBell, faTasks, faUserFriends, faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';\r\n//import { fas } from '@fortawesome/free-solid-svg-icons'\r\nimport { faWindowRestore, faCalendarAlt } from '@fortawesome/free-regular-svg-icons';\r\nimport ReactTooltip from 'react-tooltip';\r\nimport { withTranslate } from 'react-redux-multilingual'\r\nimport moment from 'moment/min/moment-with-locales';\r\n\r\nclass Menu extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n shoutWidgets: [],\r\n birthdays: false\r\n };\r\n }\r\n\r\n\r\n componentDidMount() {\r\n this._getCalls();\r\n\r\n if (this.timer) clearInterval(this.timer);\r\n this.timer = setInterval(this._getCalls.bind(this), getMS(11));\r\n this._checkShoutItems();\r\n }\r\n\r\n componentWillUnmount() {\r\n clearInterval(this.timer);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.widgets.left?.length == 0 && this.props.widgets.left?.length > 0) {\r\n this._checkShoutItems();\r\n // if (this.state.shoutWidgets.length == 0 && this.props.widgets.left.length > 0) {\r\n //this._checkShoutItems();\r\n }\r\n\r\n //if (prevProps.showItem !== this.props.showItem) {\r\n ReactTooltip.rebuild();\r\n //}\r\n }\r\n\r\n _checkShoutItems = () => {\r\n //this.props.shoutItems.\r\n //if (this.props.shoutItems.length == 0 || this.state.shoutWidgets.length > 0) return;\r\n //const widgets = [...new Set(this.props.shoutItems.map(item => item.widget))];\r\n\r\n\r\n //this.props.widgets.find(w => w.)\r\n let widgets = this.findAll(this.props.widgets, \"MultiShout\");\r\n let birthdays = this.findAll(this.props.widgets, \"Birthdays\");\r\n\r\n this.setState({ shoutWidgets: widgets, birthdays: (birthdays?.length > 0) });\r\n }\r\n\r\n findAll = (obj, searchKey, results = []) => {\r\n const r = results;\r\n if (obj == null) return;\r\n Object.keys(obj).forEach(key => {\r\n const value = obj[key];\r\n if (value === searchKey && typeof value !== 'object') {\r\n r.push(obj);\r\n } else if (typeof value === 'object') {\r\n this.findAll(value, searchKey, r);\r\n }\r\n });\r\n return r;\r\n };\r\n\r\n //findAll = (array) => {\r\n // let result = [];\r\n\r\n // const searchItem = (item) => {\r\n // Object.keys(item).forEach(key => {\r\n // if (typeof item[key] === \"object\") {\r\n // searchItem(item[key])\r\n // }\r\n // if (typeof item[key] === \"string\") {\r\n // let searchAsRegEx = new RegExp(searchTerm, \"gi\");\r\n // if (item[key].match(searchAsRegEx)) {\r\n // result.push(item.id)\r\n // }\r\n // }\r\n // })\r\n // };\r\n\r\n // const getEachItem = (object) => {\r\n // //object.forEach(item => {\r\n // // this.searchItem(item)\r\n // //})\r\n // Object.keys(object).forEach(item => {\r\n // searchItem(item);\r\n // });\r\n // let uniqueResults = [...new Set(result)]\r\n // return uniqueResults.length\r\n // };\r\n\r\n // return getEachItem(array);\r\n //}\r\n\r\n _getCalls = () => {\r\n this.props.actions.getCalls();\r\n }\r\n\r\n _filterShoutItems = (items, widget) => {\r\n return items.filter(i => i.widget == widget?.title && moment.unix(i.unix) > moment().add(-14, 'days') && this._getIsNew(i) === true);\r\n }\r\n\r\n _getIsNew = (item) => {\r\n let viewedShouts = this.props.lastShoutViews;\r\n let shout = viewedShouts?.find((shout) => shout.url === item.url);\r\n if (shout) {\r\n return !shout.viewed;\r\n }\r\n return true;\r\n }\r\n\r\n _renderShoutWidgets = (w, key) => {\r\n return this.props.actions.setActiveSlideOut((this.props.activeSlideOut === 'MultiShout' ? false : 'MultiShout'), { title: w.title })\r\n }>\r\n \r\n \r\n {this._filterShoutItems(this.props.shoutItems, w).length > 0 ? : null}\r\n \r\n \r\n {w.title}\r\n \r\n \r\n \r\n ;\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n {this.state.birthdays &&\r\n this.props.actions.setActiveSlideOut((this.props.activeSlideOut === 'Birthdays' ? false : 'Birthdays'))\r\n }>\r\n \r\n \r\n {/* this.props.upcomingBirthdays.filter(b => (b.when == 'Morgen' || b.when == 'Vandaag')).length > 0 ? : null */}\r\n \r\n\r\n \r\n {this.props.translate('birthdays')}\r\n \r\n \r\n \r\n \r\n }\r\n\r\n {this.state.shoutWidgets?.length > 0 && this.state.shoutWidgets.map(this._renderShoutWidgets)}\r\n\r\n this.props.actions.setActiveSlideOut((this.props.activeSlideOut === 'People' ? false : 'People'))\r\n }>\r\n \r\n \r\n {/*this.props.user.teams ? : null*/}\r\n \r\n\r\n \r\n {this.props.translate('people')}\r\n \r\n \r\n \r\n \r\n\r\n this.props.actions.setActiveSlideOut((this.props.activeSlideOut === 'tasks' ? false : 'tasks'))\r\n }>\r\n \r\n \r\n {this.props.user.tasks ? : null}\r\n \r\n\r\n \r\n {this.props.translate('tasks')}\r\n \r\n \r\n \r\n \r\n\r\n\r\n this.props.actions.setActiveSlideOut((this.props.activeSlideOut === 'calendar' ? false : 'calendar'))\r\n }>\r\n\r\n \r\n \r\n {this.props.user.calendarItems ? : null}\r\n \r\n \r\n {this.props.translate('calendar')}\r\n \r\n \r\n \r\n \r\n\r\n {window.tenantConfig.hulpDeactivated !== \"true\" &&\r\n {\r\n this.props.history.push('/online-hulp/mijn-meldingen');\r\n this.props.actions.setActiveSlideOut(false);\r\n }\r\n }>\r\n\r\n \r\n \r\n {this.props.calls?.filter(i => i.status != \"Afgesloten\").length > 0 ? i.status != \"Afgesloten\").length} /> : null}\r\n \r\n\r\n \r\n {this.props.translate('tickets')}\r\n \r\n \r\n \r\n \r\n }\r\n\r\n {/*window.tenantConfig.version == 'development' &&\r\n this.props.actions.setActiveSlideOut((this.props.activeSlideOut === 'goapps' ? false : 'goapps'), { page: 'init' })\r\n }>\r\n \r\n \r\n \r\n \r\n {this.props.translate('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//LATEN STAAN, moet weer terug worden gezet als we met de moderne werkplek live gaan\r\n// {\r\n// this.props.history.push('/online-hulp/mijn-meldingen');\r\n// this.props.actions.setActiveSlideOut(false);\r\n//} : null}>\r\n\r\n// \r\n// {this.props.user.tasks ? : null}\r\n// \r\n\r\n// \r\n// Meldingen\r\n// \r\n// \r\n//\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {\r\n activeSlideOut: state.SlideOut.activeSlideOut,\r\n user: state.User,\r\n calls: state.Calls.items,\r\n darkmode: state.Layout.darkmode,\r\n birthdays: state.Birthday.birthdays,\r\n upcomingBirthdays: state.Birthday.upcoming,\r\n shoutItems: state.MultiChannelShout.shoutItems,\r\n lastShoutViews: state.User.profile.data?.settings?.viewedShouts,\r\n slideoutData: state.SlideOut.data,\r\n widgets: state.Widgets.widgets\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => ({ actions: bindActionCreators({ ...actions, ...callsActions }, dispatch) });\r\n\r\nexport default withTranslate(withRouter(connect(mapStateToProps, mapDispatchToProps)(Menu)));\r\n","import styled from 'styled-components';\r\nimport * as Variables from '../../../ThemeVariables';\r\nconst headingStyle = `\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n`\r\n\r\nexport const Heading = styled.div`\r\n\tmargin-top: 5px;\r\n\tmargin-bottom: 35px;\r\n\tcursor: pointer;\r\n\r\n\t${props => !props.positionBottom ? headingStyle : 'display: inline-block;'};\r\n\r\n\t${props => props.position ? 'float: '+props.position+';' : '' }\r\n\t${props => props.border ? \"border-bottom: 2px solid #e4e4e4;padding-bottom: 15px;\" : \"\"}\r\n\t${props => props.marginBottom ? 'margin-bottom: ' +props.marginBottom + 'px;' : ''};\r\n\t${props => props.marginTop ? 'margin-top: ' +props.marginTop + 'px;' : ''};\r\n\t&.task-tutorial-active, &.calendar-tutorial-active {\r\n\t\th2 {\r\n\t\t\t&:after {\r\n\t\t\ttop: 0;\r\n\t\t left: 0;\r\n\t\t content: '';\r\n\t\t position: absolute;\r\n\t\t border: 3px solid red;\r\n\t\t border-radius: 25px;\r\n\t\t width: calc(100% + 25px);\r\n\t\t height: calc(100% + 25px);\r\n\t\t margin-top: -15px;\r\n\t\t margin-left: -15px;\r\n\t\t}\r\n\t\t}\r\n\r\n\t}\r\n`;\r\n\r\nexport const Title = styled.h2`\r\n\tfont-size: ${props => !props.small ? \"1.1em\" : \"0.8em\"};\r\n\ttext-align: left;\r\n\r\n\tcolor : ${Variables.headingColor.lightMode};\r\n\r\n\t&.darkmode {\r\n\t\tcolor : ${Variables.headingColor.darkMode};\r\n\t}\r\n`;\r\n\r\nexport const Link = styled.a`\r\n\ttext-decoration: none;\r\n\tfont-size: 12px;\r\n\tcolor : ${Variables.headingColor.lightMode};\r\n\r\n\t&.darkmode {\r\n\t\tcolor : ${Variables.headingColor.darkMode};\r\n\t}\r\n\ttext-align: right;\r\n\t&:hover{\r\n\t\ttext-decoration: underline;\r\n\t}\r\n`;\r\n\r\nexport const NoLink = styled.span`\r\n\ttext-decoration: none;\r\n\tfont-size: 12px;\r\n\tcolor : ${Variables.headingColor.lightMode};\r\n\r\n\t&.darkmode {\r\n\t\tcolor : ${Variables.headingColor.darkMode};\r\n\t}\r\n\ttext-align: right;\r\n\t&:hover{\r\n\t\ttext-decoration: underline;\r\n\t}\r\n`;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport * as Styled from './styled';\r\nimport { connect } from 'react-redux';\r\n\r\nconst HeadingSlideout = props => (\r\n\t\r\n\t\t{props.title}\r\n\t\t{props.linkTitle && props.linkUrl ?\r\n\t\t\t{props.linkTitle}\r\n\t\t\t:\r\n\t\t\t{props.linkTitle}\r\n\t\t}\r\n\t\r\n)\r\n\r\nHeadingSlideout.propTypes = {\r\n\ttitle : PropTypes.string,\r\n\tlinkTitle : PropTypes.string,\r\n\tlinkUrl : PropTypes.string,\r\n\tmarginBottom: PropTypes.number\r\n}\r\n\r\n\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {\r\n darkmode : state.Layout.darkmode\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(HeadingSlideout);\r\n","import styled from 'styled-components';\r\nimport * as Variables from '../../../ThemeVariables';\r\nconst headingStyle = `\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n`\r\n\r\nexport const Heading = styled.div`\r\n\tmargin-bottom: ${props => !props.marginBottom ? \"20px\" : props.marginBottom + 'px'};\r\n\tmargin-top: ${props => !props.marginTop ? \"0\" : props.marginTop + 'px'};\r\n\t${props => !props.positionBottom ? headingStyle : ''};\r\n\r\n\t${props => props.position ? 'float: '+props.position+';' : '' }\r\n\t${props => props.border ? \"border-bottom: 2px solid #e4e4e4;padding-bottom: 15px;\" : \"\"}\r\n`;\r\n\r\nexport const Title = styled.h2`\r\n\tfont-size: ${props => !props.small ? \"1.1em\" : \"0.8em\"};\r\n\ttext-align: left;\r\n\tcolor: ${Variables.headingColor};\r\n\r\n\tcolor : ${Variables.headingColor.lightMode};\r\n\r\n\t&.darkmode {\r\n\t\tcolor : ${Variables.headingColor.darkMode};\r\n\t}\r\n`;\r\n\r\nexport const Link = styled.a`\r\n\ttext-decoration: none;\r\n\tfont-size: 12px;\r\n\tmargin-top: 4px;\r\n\theight: 21px;\r\n\tdisplay: inline-block;\r\n\tcolor : ${Variables.headingColor.lightMode};\r\n\r\n\t&.darkmode {\r\n\t\tcolor : ${Variables.headingColor.darkMode};\r\n\t}\r\n\ttext-align: right;\r\n\r\n\t&:hover{\r\n\t\ttext-decoration: underline;\r\n\t}\r\n`;\r\n\r\nexport const NoLink = styled.span`\r\n\ttext-decoration: none;\r\n\tfont-size: 12px;\r\n\theight: 21px;\r\n\tdisplay: inline-block;\r\n\tcursor: pointer;\r\n\tcolor : ${Variables.headingColor.lightMode};\r\n\t&:after {\r\n\t\tcontent: '';\r\n\t\twidth: 0;\r\n\t\theight: 1px;\r\n\t\tbackground: ${Variables.headingColor.lightMode};\r\n\t\tposition: absolute;\r\n\t\tbottom: 5px;\r\n\t\tleft: 0;\r\n\t\ttransition: width .5s;\r\n\t}\r\n\t&.darkmode {\r\n\t\tcolor : ${Variables.headingColor.darkMode};\r\n\r\n\t\t&:after {\r\n\t\t\tbackground : ${Variables.headingColor.darkMode};\r\n\t\t}\r\n\t}\r\n\ttext-align: right;\r\n\r\n\t&:hover{\r\n\t\t&:after {\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\t}\r\n`;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport * as Styled from './styled';\r\nimport { connect } from 'react-redux';\r\n\r\nconst Heading = props => (\r\n\t\r\n\t\t{props.title}\r\n\t\t{props.linkTitle && props.linkUrl ?\r\n\t\t\t{props.linkTitle}\r\n\t\t\t:\r\n\t\t\t{props.linkTitle}\r\n\t\t}\r\n\t\r\n)\r\n\r\nHeading.propTypes = {\r\n\ttitle : PropTypes.string,\r\n\tlinkTitle : PropTypes.string,\r\n\tlinkUrl : PropTypes.string,\r\n\tmarginBottom: PropTypes.number\r\n}\r\n\r\n\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {\r\n darkmode : state.Layout.darkmode\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(Heading);\r\n","import styled from 'styled-components'\r\nimport * as Variables from '../../../../ThemeVariables';\r\nexport const SearchInput = styled.input`\r\n\twidth: calc(100% - 50px);\r\n\tline-height: 40px;\r\n\tfont-size: 16px;\r\n\tbackground: transparent;\r\n\tfloat: left;\r\n\r\n\t&:focus {\r\n\t\toutline : none;\r\n\t}\r\n`;\r\n\r\nexport const SearchWrapper = styled.div`\r\n\twidth: 100%;\r\n\tbackground: #ebedf0;\r\n\tborder-radius: 25px;\r\n\toverflow: hidden;\r\n\theight: 40px;\r\n\tmargin-bottom: 25px;\r\n`;\r\n\r\nexport const Magnifier = styled.div`\r\n\twidth: 50px;\r\n\tfloat: left;\r\n\tline-height: ${Variables.headerHeight};\r\n\ttext-align: center;\r\n\r\n`;\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { faSearch } from '@fortawesome/free-solid-svg-icons'\r\nimport actions from '../../../../redux/slideOut/actions';\r\nimport { ScrollTo } from \"react-scroll-to\";\r\nimport { bindActionCreators } from 'redux';\r\nimport * as Styled from './styled';\r\n\r\nclass SearchBar extends Component {\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default SearchBar\r\n","const actions = {\r\n\tSET_ACTIVE_POPUP : 'SET_ACTIVE_POPUP',\r\n\tSET_POPUP_DATA: 'SET_POPUP_DATA',\r\n\r\n\tsetActivePopup: (payload, data = false) => ({\r\n\t\ttype: actions.SET_ACTIVE_POPUP,\r\n\t\tpayload : {\r\n\t\t\titem : payload,\r\n\t\t\tdata : data\r\n\t\t}\r\n\t}),\r\n};\r\n\r\nexport default actions;\r\n","const actions = {\r\n\tSET_ACTIVE_YEAR_OVERVIEW_POPUP : 'SET_ACTIVE_YEAR_OVERVIEW_POPUP',\r\n\tSET_POPUP_YEAR_OVERVIEW_DATA: 'SET_POPUP_YEAR_OVERVIEW_DATA',\r\n\r\n\tsetActiveYearOverviewPopup: (payload, data = false) => ({\r\n\t\ttype: actions.SET_ACTIVE_YEAR_OVERVIEW_POPUP,\r\n\t\tpayload : {\r\n\t\t\titem : payload,\r\n\t\t\tdata : data\r\n\t\t}\r\n\t}),\r\n};\r\n\r\nexport default actions;\r\n","import styled from 'styled-components'\r\nimport * as Variables from '../../../../ThemeVariables';\r\n\r\nexport const DocumentsListItem = styled.a`\r\n\tdisplay: flex;\r\n\ttext-decoration: none;\r\n\tcursor: pointer;\r\n\tcolor: ${Variables.mainTextColor.lightMode};\r\n\tborder-radius: 6px;\r\n\tpadding:5px;\r\n\t&.darkmode {\r\n\t\tcolor: ${Variables.mainTextColor.darkMode};\r\n\t}\r\n\t&:hover{\r\n\t\ttext-decoration: underline;\r\n\t}\r\n\t&.popup {\r\n\t\tbackground : #ebedf0;\r\n\t}\r\n\t&.darkmode.popup {\r\n\t\tbackground: ${Variables.tileBackground.darkMode};\r\n\t}\r\n`;\r\n\r\nexport const Icon = styled.img`\r\n\theight: 22px;\r\n\twidth: auto;\r\n\tmargin-right: 12px;\r\n`;\r\n\r\nexport const Info = styled.span`\r\n\tfont-size: 12px;\r\n\tline-height: 22px;\r\n\t&.darkmode {\r\n\t\tcolor: ${Variables.mainTextColor.darkMode};\r\n\t}\r\n`;\r\n\r\nexport const Author = styled.span`\r\n\tfont-size: 12px;\r\n\tline-height: 22px;\r\n\t&.darkmode {\r\n\t\tcolor: ${Variables.mainTextColor.darkModeSoft};\r\n\t}\r\n`;\r\n","import React from \"react\";\r\nimport { FixedSizeList as List } from \"react-window\";\r\nimport InfiniteLoader from \"react-window-infinite-loader\";\r\n\r\nexport default function InfiniteScrollWrapper({\r\n // Are there more items to load?\r\n // (This information comes from the most recent API request.)\r\n hasNextPage,\r\n\r\n // Are we currently loading a page of items?\r\n // (This may be an in-flight flag in your Redux store for example.)\r\n isNextPageLoading,\r\n\r\n // Array of items loaded so far.\r\n items,\r\n\r\n // Callback function responsible for loading the next page of items.\r\n loadNextPage,\r\n\r\n // -- Render function for a single item\r\n renderItem,\r\n\r\n // -- Single item height\r\n itemHeight,\r\n\r\n // -- Full list heigt\r\n listHeight\r\n}) {\r\n // If there are more items to be loaded then add an extra row to hold a loading indicator.\r\n const itemCount = hasNextPage ? items.length + 1 : items.length;\r\n\r\n // Only load 1 page of items at a time.\r\n // Pass an empty callback to InfiniteLoader in case it asks us to load more than once.\r\n const loadMoreItems = isNextPageLoading ? () => {} : loadNextPage;\r\n\r\n // Every row is loaded except for our loading indicator row.\r\n const isItemLoaded = index => !hasNextPage || index < items.length;\r\n\r\n // Render an item or a loading indicator.\r\n const Item = ({ index, style }) => {\r\n\r\n let content;\r\n if (isItemLoaded(index)) {\r\n return
{renderItem(items[index])}
;\r\n }\r\n\r\n return
Loading..
;\r\n };\r\n\r\n return (\r\n \r\n {({ onItemsRendered, ref }) => (\r\n \r\n {Item}\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import styled, { css } from 'styled-components'\r\nimport CircleIcon from '../../../styled/CircleIcon';\r\nimport * as Variables from '../../../../ThemeVariables';\r\n\r\nexport const Wrapper = styled.div`\r\n\tsvg { \r\n\t\tfont-size: 20px;\r\n\t\tcolor: grey;\r\n\t\tposition: absolute;\r\n\t\tbottom: 6px;\r\n\t\tright: 0;\r\n\t\tz-index: 1000;\r\n\t}\r\n\r\n\tsvg path { \r\n\t stroke: white;\r\n\t stroke-width: 30px;\r\n\t}\r\n`;\r\n\r\n\r\nexport const Avatar = styled(CircleIcon) `\r\n\r\n\theight: ${props => props.large ? \"100px\" : \"\"};\r\n\twidth: ${props => props.large ? \"100px\" : \"\"};\r\n\t${props => props.gridArea ? 'grid-area:' + props.gridArea : ''};\r\n\ttransform: rotate(0);\r\n\ttransition: box-shadow .5s, transform .5s;\r\n\t&:hover {\r\n\t\t${props => props.large ? 'transform: rotate(-5deg)' : 'transform: rotate(-5deg);box-shadow: 0 0 5px black;'};\r\n\t}\r\n\timg {\r\n\t\twidth: 100%;\r\n\t\theight: 100%;\r\n\t}\r\n\r\n\t${props => props.parent === 'header-col-right' && css`\r\n\t\tdisplay: block;\r\n\t\t@media ( min-width: ${Variables.md}) {\r\n\t\t\tdisplay: block;\r\n\t\t}\r\n\r\n\t`}\r\n\r\n\r\n\r\n`;\r\n","import React from 'react';\r\nimport * as Styled from './styled';\r\nimport PropTypes from 'prop-types';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n\r\nconst Avatar = props => (\r\n \r\n \r\n \r\n \"Avatar\"\r\n \r\n \r\n)\r\n\r\nAvatar.propTypes = {\r\n onClick: PropTypes.func,\r\n large: PropTypes.bool,\r\n gridArea: PropTypes.string,\r\n source: PropTypes.string.isRequired\r\n}\r\n\r\nexport default Avatar;","import styled, { css } from 'styled-components'\r\nimport * as Variables from '../../../../ThemeVariables';\r\nimport { NavLink } from 'react-router-dom';\r\nexport const MenuButtonList = styled.ul`\r\n\tlist-style: none;\r\n\r\n\t${props => props.parent === 'slideout' && css`\r\n\t\tgrid-template-columns: 1fr;\r\n \tgrid-gap: 20px;\r\n \tdisplay: grid;\r\n \tmargin-bottom: 10px;\r\n\r\n \t@media ( min-width: ${Variables.md}) {\r\n \t\tdisplay: none;\r\n \t}\r\n \tli {\r\n \t\theight: auto !important;\r\n \t\tbackground: #e9ebee;\r\n\r\n \t\t&.darkmode {\r\n \t\t\tbackground: #33475d;\r\n \t\t}\r\n\r\n \t}\r\n \ta {\r\n \t\tfont-weight: 100 !important;\r\n \t\tpadding: 0 !important;\r\n \t\ttext-transform: initial !important;\r\n \t\t&:before {\r\n \t\t\tdisplay: none;\r\n \t\t}\r\n\r\n \t\tspan {\r\n \t\t\tsvg {\r\n \t\t\t\tdisplay: none !important;\r\n \t\t\t}\r\n \t\t}\r\n \t}\r\n\t`}\r\n\r\n\t${props => props.parent === 'header-col-left' && css`\r\n\t\tdisplay: none;\r\n\t\theight: 100%;\r\n\t\tgrid-area: menuList;\r\n\t\ttext-align: left;\r\n\r\n\t\t/*@media ( min-width: ${Variables.xs}) {*/\r\n\t\t@media(min-width: ${Variables.md}) {\r\n\t\t\tdisplay: block;\r\n\t\t}\r\n\r\n\t\tsvg {\r\n\t\t\tmargin-right: 8px;\r\n\t\t\tdisplay: inline !important;\r\n\t\t}\r\n\r\n\t\ta {\r\n\t\t\tspan {\r\n\t\t\t\tspan {\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@media ( max-width: ${Variables.lgMin} ) {\r\n\t\t\tfont-size: 22px;\r\n\t\t}\r\n\r\n\t\t@media ( min-width: ${Variables.lgMin} ) {\r\n\t\t\ta {\r\n\t\t\t\tspan {\r\n\t\t\t\t\tspan {\r\n\t\t\t\t\t\tdisplay: inline;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t`}\r\n`;\r\n\r\nexport const NavLinkInner = styled.div`\r\n transform: skew(25deg, 0deg);\r\n` ;\r\n\r\nexport const SkewedNavLink = styled(NavLink)`\r\n\ttransform: skew(-25deg, 0deg);\r\n\t&.active, &:hover {\r\n\t\t&:before {\r\n\t\t\theight: 100%;\r\n\t\t}\r\n\t}\r\n\r\n\t&:before {\r\n\t\tdisplay: block;\r\n\t\tbackground: #e9ebee;\r\n\t}\r\n\r\n\t&:before {\r\n\t\tcontent: '';\r\n\t width: 100%;\r\n\t height: 0%;\r\n\t position: absolute;\r\n\t left: 0;\r\n\t top: 0;\r\n\t transition: height .5s;\r\n\t}\r\n\t&.darkmode {\r\n\t\t&:before {\r\n\t\t\tbackground: #0d131b;\r\n\t\t}\r\n\t}\r\n\r\n\r\n padding: 0px 20px;\r\n\r\n`;\r\n\r\n\r\nexport const MenuButtonListItem = styled.li`\r\n\ttop: -10px;\r\n height: calc(100% + 20px);\r\n\r\n\t&.greyout {\r\n\t\topacity: .3;\r\n\t}\r\n\r\n\r\n\tdisplay: inline-block;\r\n\r\n\r\n\ta {\r\n\t\ttext-decoration: none;\r\n\r\n\t\ttext-transform: uppercase;\r\n\t\tfont-weight: 750;\r\n\t\tfont-size: 13px;\r\n\t}\r\n\r\n\t${props => props.parent === 'header-col-left' && css`\r\n\t\ta {\r\n\t\t\twidth: 100%;\r\n\t\t\theight: 100%;\r\n\t\t\tcolor: black;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\t\t\tjustify-content: center;\r\n\t\t\ttransition\r\n\t\t}\r\n\r\n\t\t&.darkmode {\r\n\t\t\ta {\r\n\t\t\t\tcolor: white;\r\n\t\t\t}\r\n\t\t}\r\n\t`}\r\n\r\n\t${props => props.parent === 'slideout' && css`\r\n\r\n\t\tcolor: #636a73;\r\n\t\tbox-shadow: 0px 0px 5px 4px rgba(0,0,0,0.03);\r\n\t\tborder-radius: 8px;\r\n\t\tfont-size: 22px;\r\n\t\tgrid-template-columns: 40px 1fr;\r\n\t\tpadding: 15px;\r\n\t\t@media ( min-width: ${Variables.xs}) {\r\n\t\t\tfont-size: 30px;\r\n\t\t\tgrid-template-columns: 75px 1fr;\r\n\t\t\tpadding: 20px;\r\n\t\t}\r\n\r\n\t\twidth: 100%;\r\n\t\tjustify-content: center;\r\n\t\talign-items: center;\r\n\t\ttext-align: left;\r\n\t\tdisplay: grid;\r\n\r\n\r\n\t\ta {\r\n\t\t\tfont-size: 20px;\r\n\t\t\tcolor: #636a73;\r\n\t\t}\r\n\r\n\t\t&.darkmode {\r\n\t\t\tbackground: #1B2B3C;\r\n\t\t\tcolor: white;\r\n\r\n\t\t\ta {\r\n\t\t\t\tcolor: white;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t`}\r\n`;\r\n","import React, { Component } from 'react';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faStar, faQuestion, faBrush, faStore } from '@fortawesome/free-solid-svg-icons';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport * as Styled from './styled';\r\nimport actions from '../../../../redux/slideOut/actions';\r\nimport { withTranslate } from 'react-redux-multilingual'\r\n\r\nclass MenuButtonList extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n checkedWidgets: false,\r\n go: false\r\n };\r\n }\r\n\r\n componentDidUpdate() {\r\n if (!this.state.checkedWidgets && this.props.widgets.widgets?.left?.length>0) {\r\n this._checkGOSource();\r\n }\r\n }\r\n\r\n _checkGOSource = () => { \r\n let widgets = this.findAll(this.props.widgets.widgets, \"go\");\r\n this.setState({ checkedWidgets: true, go: (widgets?.length>0) });\r\n }\r\n\r\n findAll = (obj, searchKey, results = []) => {\r\n const r = results;\r\n if (obj == null) return;\r\n Object.keys(obj).forEach(key => {\r\n const value = obj[key];\r\n if (value === searchKey && typeof value !== 'object') {\r\n r.push(obj);\r\n } else if (typeof value === 'object') {\r\n this.findAll(value, searchKey, r);\r\n }\r\n });\r\n return r;\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n {\r\n if (this.props.parent == \"slideout\") this.props.actions.setActiveSlideOut(false);\r\n }}>\r\n {this.props.translate('startMenu')}\r\n \r\n \r\n \r\n\r\n {window.tenantConfig.hulpDeactivated !== \"true\" &&\r\n \r\n \r\n {\r\n if (this.props.parent == \"slideout\") this.props.actions.setActiveSlideOut(false);\r\n }}>\r\n {this.props.translate('helpMenu')}\r\n \r\n \r\n \r\n }\r\n\r\n {((this.props.widgets.hasGOWidget && window?.userSettings?.rights?.selfserviceIntranet) || window?.userSettings?.rights?.selfserviceBeheer) &&\r\n \r\n \r\n \r\n {\r\n if (this.props.parent == \"slideout\") this.props.actions.setActiveSlideOut(false);\r\n }}>\r\n {this.props.translate('selfMenu')}\r\n \r\n \r\n \r\n \r\n }\r\n {window.tenantConfig.version == 'development' &&\r\n \r\n \r\n \r\n {\r\n if (this.props.parent == \"slideout\") this.props.actions.setActiveSlideOut(false);\r\n }}>\r\n {this.props.translate('storeMenu')}\r\n \r\n \r\n \r\n \r\n }\r\n \r\n\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {\r\n activeSlideOut: state.SlideOut.activeSlideOut,\r\n user: state.User,\r\n darkmode: state.Layout.darkmode,\r\n widgets: state.Widgets\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => ({ actions: bindActionCreators(actions, dispatch) });\r\n\r\nexport default withTranslate(connect(mapStateToProps, mapDispatchToProps)(MenuButtonList));","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport localforage from 'localforage';\r\nimport { getGraphClient, getSharepointClient, getBlogItems } from '../selectors'\r\n\r\nexport function* getBlogs() {\r\n yield takeEvery(actions.GET_BLOGS, function* (action) {\r\n try {\r\n const Client = yield select(getSharepointClient);\r\n //const GoClient = yield state.Client.GoClient;\r\n const GraphClient = yield select(getGraphClient);\r\n const blogItems = yield select(getBlogItems);\r\n if (!Client) return;\r\n\r\n let newsResponse = yield Client.api((action.payload.includes('?') ? action.payload.split('?')[0] : action.payload) + '/?$select=Author/Title,Author/Id,BlogAutheurId,BannerImageUrl,Title,Description,Created,FileRef,FileLeafRef,EncodedAbsUrl,LinkFilename&$expand=Author&$orderby=Created desc');\r\n\r\n //fallback when no BlogAutheurId field is present in SharePoint\r\n if (newsResponse == null || !newsResponse || !newsResponse.value) {\r\n newsResponse = yield Client.api((action.payload.includes('?') ? action.payload.split('?')[0] : action.payload) + '/?$select=Author/Title,Author/Id,BannerImageUrl,Title,Description,Created,FileRef,FileLeafRef,EncodedAbsUrl,LinkFilename&$expand=Author&$orderby=Created desc');\r\n }\r\n\r\n if (newsResponse == null || !newsResponse || !newsResponse.value) return;\r\n if (newsResponse.value.length === 0) return;\r\n\r\n let data = newsResponse.value;\r\n let blogs = data.slice(0, 12).map(function (n) {\r\n return { Id: n[\"odata.id\"] };\r\n });\r\n let tasks = [];\r\n data = data.slice(0, 12);\r\n for (let i = 0; i <= data.length; i++) {\r\n if (data[i]) {\r\n const d = data[i];\r\n\r\n const sharepointUserId = (d['BlogAutheurId'] ? d['BlogAutheurId'] : d.Author['Id']);\r\n const sharepointSite = action.payload.includes('_api') ? action.payload.split('_api')[0] : action.payload;\r\n const sharepointUser = yield Client.api(sharepointSite + '/_api/web/getuserbyid(' + sharepointUserId + ')');\r\n\r\n const avatar = yield GraphClient.api('/users/' + sharepointUser['UserPrincipalName'] + '/photo/$value', 'arrayBuffer');\r\n\r\n let image = false;\r\n\r\n if (avatar) {\r\n image = 'data:image/png;base64, ' + new Buffer(avatar, 'binary').toString('base64');\r\n }\r\n\r\n blogs[i] = {\r\n id: d[\"odata.id\"],\r\n title: d.Title,\r\n description: d.Description,\r\n picture: image,\r\n date: d.Created,\r\n url: d.EncodedAbsUrl,\r\n author: sharepointUser['Title']\r\n //blob: blob\r\n };\r\n\r\n }\r\n }\r\n\r\n\r\n if (tasks.length) {\r\n yield Promise.all(tasks);\r\n }\r\n\r\n if (blogs.length && ((blogItems.length === 0) || (blogItems && blogItems[0].Id !== blogs[0].id))) {\r\n\r\n let old = blogItems.filter(n => !blogs.find(nn => nn.id == n.id));\r\n if (old != null && old.length > 0) {\r\n //yield newsItems.forEach(n => {\r\n for (let n of old) {\r\n yield localforage.removeItem(n.id.toString());\r\n }\r\n }\r\n\r\n for (let n of blogs) {\r\n if (n.blob == null) continue;\r\n yield localforage.setItem(n.id.toString(), n.blob);\r\n delete n.image;\r\n delete n.blob;\r\n }\r\n\r\n yield put({\r\n type: actions.SET_BLOGS,\r\n payload: blogs\r\n });\r\n }\r\n } catch (error) { /*console.log(error);*/ }\r\n });\r\n}\r\n\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getBlogs),\r\n ]);\r\n}\r\n","import { all, put, fork, takeEvery, select } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport localforage from 'localforage';\r\nimport messageActions from '../../message/actions';\r\nimport store from \"../../store\";\r\nimport { dataURItoBlob, fileToBase64, blobToBase64 } from '../../../helpers/functions';\r\nimport { getGOClient, getGraphClient, getCommonBlogItems, getTenantBlogItems } from '../../selectors'\r\n\r\nexport function* getTenantBlogs() {\r\n yield takeEvery(actions.GET_TENANT_BLOGS, function* (action) {\r\n\r\n const blogItems = yield select(getTenantBlogItems);\r\n const Client = yield select(getGOClient);\r\n const GraphClient = yield select(getGraphClient);\r\n\r\n if (!Client || !GraphClient) return;\r\n const blogs = yield Client.api(\"/common/blog/tenant\");\r\n\r\n if (blogs == null || !blogs) return;\r\n\r\n let tasks = blogs.map(async (n, i) => {\r\n if (n.authorId !== null && n.authorId !== '00000000-0000-0000-0000-000000000000') {\r\n const avatar = await GraphClient.api(`/users/${n.authorId}/photo/$value`, 'arrayBuffer');\r\n if (avatar == null) return;\r\n\r\n let image = 'data:image/png;base64, ' + new Buffer(avatar, 'binary').toString('base64');\r\n let blob = dataURItoBlob(image);\r\n let objectUrl = URL.createObjectURL(blob);\r\n\r\n n.image = objectUrl;\r\n n.blob = blob;\r\n }\r\n });\r\n\r\n if (tasks.length) {\r\n yield Promise.all(tasks);\r\n }\r\n\r\n if (blogs.length == 0 || (blogs.length && ((blogItems.length === 0) || (blogItems && blogItems[0].Id !== blogs[0].id)))) {\r\n //localforage.clear(); //clear local storage\r\n\r\n let old = blogItems.filter(n => !blogs.find(nn => nn.id == n.id));\r\n if (old != null && old.length > 0) {\r\n //yield newsItems.forEach(n => {\r\n for (let n of old) {\r\n yield localforage.removeItem(n.id);\r\n }\r\n }\r\n\r\n //if (blogItems) {\r\n // //yield blogItems.forEach(n => {\r\n // for (let n of blogItems) {\r\n // yield localforage.removeItem(n.id);\r\n // }\r\n //}\r\n\r\n //yield blogs.forEach(n => {\r\n for (let n of blogs) {\r\n if (n.blob == null) continue; // do nothing, maybe request failed\r\n yield localforage.setItem(n.id, n.blob);\r\n delete n.image;\r\n delete n.blob;\r\n }\r\n\r\n\r\n yield put({\r\n type: actions.SET_TENANT_BLOGS,\r\n payload: blogs\r\n });\r\n }\r\n });\r\n}\r\n\r\n\r\nexport function* postBlog() {\r\n yield takeEvery(actions.POST_TENANT_BLOG, function* (action) {\r\n\r\n const GoClient = yield select(getGOClient);\r\n\r\n let formFields = {\r\n title: action.payload.title,\r\n link: action.payload.link,\r\n author: action.payload.author,\r\n authorId: action.payload.authorId,\r\n date: new Date(action.payload.date).toISOString(),\r\n content: action.payload.content\r\n }\r\n\r\n let method = 'POST';\r\n if (action.payload.file) {\r\n const base64 = yield fileToBase64(action.payload.file[0]);\r\n\r\n formFields = {\r\n ...formFields,\r\n image: base64\r\n }\r\n }\r\n\r\n if (action.payload.id) {\r\n method = 'PUT';\r\n formFields = {\r\n ...formFields,\r\n id: action.payload.id,\r\n authorName: action.payload.authorName,\r\n authorId: action.payload.authorId\r\n }\r\n\r\n if (!action.payload.file && action.payload.currentImage) {\r\n const base64 = yield blobToBase64(action.payload.currentImage);\r\n\r\n formFields = {\r\n ...formFields,\r\n image: base64\r\n }\r\n }\r\n }\r\n\r\n //const result = yield GoClient.api('/common/blog', {\r\n // method: method,\r\n // body: JSON.stringify(formFields)\r\n //},\r\n // { 'Content-Type': 'application/json' },\r\n // true\r\n //);\r\n\r\n let result = false;\r\n if (method === 'POST') {\r\n result = yield GoClient.post('/common/blog', formFields, true);\r\n } else {\r\n result = yield GoClient.put('/common/blog', formFields, true);\r\n }\r\n\r\n if ( result ) {\r\n if (result.ok) {\r\n yield put({\r\n type: actions.GET_TENANT_BLOGS\r\n })\r\n if (method === 'PUT') {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Blog geupdated',\r\n type: 'success'\r\n }\r\n });\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Blog toegevoegd',\r\n type: 'success'\r\n }\r\n });\r\n }\r\n store.history.push('/self-service/blog');\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Er is iets misgegaan',\r\n type: 'error'\r\n }\r\n });\r\n }\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Er is iets misgegaan',\r\n type: 'error'\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\n\r\nexport function* deleteBlog() {\r\n yield takeEvery(actions.DELETE_BLOGS_ITEM, function* (action) {\r\n\r\n const GoClient = yield select(getGOClient);\r\n\r\n let formFields = {\r\n id: action.payload,\r\n }\r\n\r\n const result = yield GoClient.delete('/common/blog?id=' + action.payload,action.payload, true);\r\n\r\n if (result.ok) {\r\n yield put({\r\n type: actions.GET_TENANT_BLOGS\r\n })\r\n\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Blog verwijderd',\r\n type: 'success'\r\n }\r\n });\r\n\r\n store.history.push('/self-service/blog');\r\n\r\n } else {\r\n yield put({\r\n type: messageActions.MESSAGE,\r\n payload: {\r\n message: 'Er is iets misgegaan',\r\n type: 'error'\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\n\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getTenantBlogs),\r\n fork(postBlog),\r\n fork(deleteBlog)\r\n ]);\r\n}\r\n","import { all, fork, takeEvery, select, put, call } from 'redux-saga/effects';\r\nimport actions from './actions';\r\nimport slideOutActions from '../../slideOut/actions';\r\nimport localforage from 'localforage';\r\nimport EventObject from './EventObject';\r\nimport { dataURItoBlob, parseSharepointUrl, parsePictureUrl } from '../../../helpers/functions';\r\nimport { getMultiChannelEvent, getSharepointClient, getGOClient, getGraphClient } from '../../selectors';\r\n\r\nexport function* setActiveEvent() {\r\n yield takeEvery(actions.SET_ACTIVE_EVENT, function* (action) {\r\n yield put({\r\n type: slideOutActions.SET_ACTIVE_SLIDEOUT,\r\n payload: 'event'\r\n });\r\n });\r\n}\r\n\r\nexport function* getEvents() {\r\n yield takeEvery(actions.GET_EVENTS, function* (action) {\r\n try {\r\n yield put({\r\n type: actions.EVENTS_REQUEST_COMPLETED,\r\n payload: false\r\n })\r\n let eventResponse;\r\n let currentItems = [];\r\n let events = [];\r\n let tasks = [];\r\n let updatedItems = [];\r\n let containsGo = false;\r\n let data;\r\n let url;\r\n if(typeof currentItems == 'undefined') {\r\n currentItems = [];\r\n }\r\n const title = action.payload.title;\r\n currentItems = yield select(getMultiChannelEvent);\r\n if (action.payload && action.payload.payload) {\r\n for (let source of action.payload.payload) {\r\n if (source.source == \"sharepoint\") {\r\n const Client = yield select(getSharepointClient);\r\n if (!Client) return;\r\n if (source.url.indexOf(\"?\") == -1 && source.parameters != null && source.parameters != '') { //optional configured parameters\r\n url = source.url\r\n source.url += source.parameters;\r\n }\r\n eventResponse = yield Client.api(source.url)\r\n \r\n if (eventResponse == null || !eventResponse || !eventResponse.value) return;\r\n if (eventResponse.value.length === 0) return;\r\n data = eventResponse.value;\r\n let root = \"\";\r\n if(eventResponse['odata.metadata']) {\r\n root = parseSharepointUrl(eventResponse['odata.metadata']);\r\n }\r\n \r\n tasks = data.map(async (d, index) => {\r\n \r\n let parsedDescription;\r\n if(root !== \"\") { \r\n parsedDescription = parseDescription(d.Description, root)\r\n } else {\r\n parsedDescription = d.Description;\r\n }\r\n if (!d.BannerUrl) {\r\n events.push({\r\n id: d.Id,\r\n title: d.Title,\r\n description: parsedDescription,\r\n picture: 'https://placehold.it/500/500',\r\n date: d.Created,\r\n lastUpdated: d.Modified,\r\n allEventData: { Location: d.Location, EventDate: d.EventDate, EndDate: d.EndDate },\r\n externalUrl: d.Workspace,\r\n widget: title\r\n });\r\n }\r\n else {\r\n let url = decodeURIComponent(d.BannerUrl.Url);\r\n \r\n if (url) {\r\n events.push({\r\n id: d.Id,\r\n title: d.Title,\r\n description: parsedDescription,\r\n picture: url,\r\n allEventData: { Location: d.Location, EventDate: d.EventDate, EndDate: d.EndDate },\r\n externalUrl: d.Workspace,\r\n date: d.Created,\r\n lastUpdated: d.Modified,\r\n widget: title\r\n });\r\n return url;\r\n }\r\n }\r\n \r\n });\r\n }\r\n\r\n if (source.source == \"go\" && source.url == true) {\r\n containsGo = true;\r\n }\r\n }\r\n }\r\n \r\n /* const date = new Date();\r\n\r\n for (var i = 0; i < 4; i++) {\r\n events.unshift({\r\n id: Math.random(),\r\n title: \"test evenementen\",\r\n description: \"tijdens deze sessie gaan jullie leren om\",\r\n picture: 'https://placehold.it/500/500',\r\n date: date.setDate(date.getDate() + 1),\r\n allEventData: { Location: \"Rotterdam\", EventDate: date.setDate(date.getDate() + 1), EndDate: date.setDate(date.getDate() + 1) },\r\n externalUrl: \"https://www.google.nl\"\r\n });\r\n }*/\r\n\r\n const sortOnDate = ((a, b) => {\r\n if (a.unix > b.unix) {\r\n return -1;\r\n }\r\n \r\n if (a.unix < b.unix) {\r\n return 1;\r\n }\r\n \r\n return 0;\r\n });\r\n\r\n if (containsGo) {\r\n let commonEvents = yield call(getCommonEvents, title);\r\n if (commonEvents?.length > 0) {\r\n commonEvents = commonEvents.map(i => {\r\n i.widget = title\r\n return i; });\r\n }\r\n commonEvents = [...commonEvents, ...currentItems.filter(i => i.type == \"go\" && i.widget == title)];\r\n if (commonEvents) {\r\n events = [\r\n ...events,\r\n ...commonEvents\r\n ];\r\n }\r\n }\r\n\r\n if (tasks?.length) {\r\n yield Promise.all(tasks);\r\n }\r\n\r\n currentItems = currentItems.filter(i => i.widget == title);\r\n let old = currentItems.filter(n => !events.find(nn => nn.id == n.id));\r\n let newItems = events.filter(n => !currentItems.find(nn => nn.id == n.id));\r\n updatedItems = currentItems.filter(n => !events.find(nn => (nn.id == n.id && nn.lastUpdated == n.lastUpdated) ) );\r\n newItems = newItems.splice(0, 30);\r\n if(url) {\r\n yield put({\r\n type: actions.SET_SOURCE_URL,\r\n payload: url\r\n })\r\n }\r\n if ((old?.length > 0) || updatedItems?.length > 0 || newItems?.length > 0 || (currentItems?.length == 0 && events?.length > 0) || (currentItems?.length !== events?.length && events.length > 0)) {\r\n //postprocessing..\r\n let allItems = yield select(getMultiChannelEvent);\r\n if(typeof allItems == 'undefined') {\r\n allItems = [];\r\n }\r\n updatedItems.forEach(updatedItem => {\r\n let index = allItems.findIndex(allItem => allItem.id == updatedItem.id);\r\n if(index > 0) {\r\n allItems.splice(index, 1)\r\n }\r\n })\r\n allItems = allItems.filter(i => i.widget != title);\r\n allItems = allItems.concat(events); \r\n for(oldItem in old.length) {\r\n let index = allItems.findIndex(allItem => allItem.id == oldItem.id);\r\n if(index > 0) {\r\n allItems = allItems.splice(index, 1)\r\n }\r\n }\r\n yield put({\r\n type: actions.SET_EVENTS,\r\n payload: allItems.reverse()\r\n });\r\n }\r\n yield put({\r\n type: actions.EVENTS_REQUEST_COMPLETED,\r\n payload: true\r\n })\r\n //}\r\n } catch (error) { console.log(error); }\r\n });\r\n}\r\n\r\nexport function* getYearEvents() {\r\n yield takeEvery(actions.GET_YEAR_EVENTS, function* (action) {\r\n try {\r\n const Client = yield select(getSharepointClient);\r\n if (!Client) return;\r\n let eventResponse;\r\n let events = [];\r\n let tasks = [];\r\n let data;\r\n if(action.payload) {\r\n eventResponse = yield Client.api(action.payload.source+\"?$select=id,Title,Description,Created,Workspace,Location,Modified,EventDate,EndDate,fRecurrence,RecurrenceData&$orderBy=EventDate desc&$filter=(EventDate ge datetime'\"+action.payload.year+\"-01-01T00:00:00Z') and (EndDate le datetime'\"+action.payload.year+\"-12-31T23:59:59Z')\")\r\n }\r\n //https://avantage365.sharepoint.com/sites/dev-GOnieuws//_api/Web/Lists(guid'6b58a93a-3f93-4311-bc9f-88cfe1c6688f')/items\r\n \r\n\r\n if (eventResponse == null || !eventResponse || !eventResponse.value) return;\r\n if (eventResponse.value.length === 0) return;\r\n data = eventResponse.value;\r\n let root = \"\";\r\n if(eventResponse['odata.metadata']) {\r\n root = parseSharepointUrl(eventResponse['odata.metadata']);\r\n }\r\n\r\n tasks = data.map(async (d, index) => {\r\n \r\n let parsedDescription;\r\n if(root !== \"\") { \r\n parsedDescription = parseDescription(d.Description, root)\r\n } else {\r\n parsedDescription = d.Description;\r\n }\r\n if (!d.BannerUrl) {\r\n events.push({\r\n id: d.Id,\r\n title: d.Title,\r\n description: parsedDescription,\r\n picture: 'https://placehold.it/500/500',\r\n date: d.Created,\r\n lastUpdated: d.Modified,\r\n allEventData: { Location: d.Location, EventDate: d.EventDate, EndDate: d.EndDate },\r\n externalUrl: d.Workspace,\r\n widget: \"yearOverview\"\r\n });\r\n }\r\n else {\r\n let url = decodeURIComponent(d.BannerUrl.Url);\r\n\r\n if (url) {\r\n events.push({\r\n id: d.Id,\r\n title: d.Title,\r\n description: parsedDescription,\r\n picture: url,\r\n allEventData: { Location: d.Location, EventDate: d.EventDate, EndDate: d.EndDate },\r\n externalUrl: d.Workspace,\r\n date: d.Created,\r\n lastUpdated: d.Modified,\r\n widget: \"yearOverview\"\r\n });\r\n return url;\r\n }\r\n }\r\n\r\n });\r\n\r\n if (tasks?.length) {\r\n yield Promise.all(tasks);\r\n }\r\n\r\n\r\n yield put({\r\n type: actions.SET_YEAR_EVENTS,\r\n payload: events\r\n });\r\n } catch (error) { console.log(error); }\r\n });\r\n}\r\n\r\n\r\n\r\nfunction parseDescription(description, root) {\r\n if (!description) return '';\r\n const anchorContent = /]*?href=\\\"\\/.*\\\".*?>.*?<\\/a>/g;\r\n const urls = /href=\\\"(\\/.*?)\\\"/;\r\n let anchorContentMatch = [];\r\n let urlsMatch = [];\r\n anchorContentMatch = description.match(anchorContent);\r\n if(anchorContentMatch) {\r\n for(let i = 0; i < anchorContentMatch.length; i++) {\r\n urlsMatch = anchorContentMatch[i].match(urls);\r\n if(urlsMatch) {\r\n description = description.replace(urls, function (match, token) {\r\n return 'target=\"_blank\" href=\"' + root + urlsMatch[1] + '\"';\r\n });\r\n }\r\n }\r\n\r\n }\r\n\r\n return description;\r\n}\r\n\r\nfunction* getCommonEvents(title) {\r\n const Client = yield select(getGOClient);\r\n const GraphClient = yield select(getGraphClient);\r\n const eventItems = yield select(getMultiChannelEvent);\r\n if (!Client || !GraphClient) return;\r\n const events = yield Client.api(\"/common/events/list\");\r\n\r\n if (events == null || !events) return;\r\n\r\n let tasks = events.map(async (n, i) => {\r\n\r\n if (n.image == null) return;\r\n n.blob = dataURItoBlob(n.image);\r\n return;\r\n\r\n if (n.authorId !== null && n.authorId !== '00000000-0000-0000-0000-000000000000') {\r\n const avatar = await GraphClient.api(`/users/${n.authorId}/photo/$value`, 'arrayBuffer');\r\n let image = 'data:image/png;base64, ' + new Buffer.from(avatar, 'binary').toString('base64');\r\n let blob = dataURItoBlob(image);\r\n let objectUrl = URL.createObjectURL(blob);\r\n n.authorBlob = blob;\r\n }\r\n });\r\n if (tasks.length) {\r\n yield Promise.all(tasks);\r\n }\r\n\r\n\r\n\r\n if (events.length && ((eventItems.length === 0) || (eventItems && eventItems[0].id !== events[0].id))) {\r\n //localforage.clear(); //clear local storage\r\n\r\n let old = eventItems.filter(n => !events.find(nn => nn.id == n.id));\r\n if (old != null && old.length > 0) {\r\n //yield newsItems.forEach(n => {\r\n for (let n of old) {\r\n yield localforage.removeItem(n.id);\r\n }\r\n }\r\n\r\n //yield blogs.forEach(n => {\r\n for (let n of events) {\r\n if (n.blob == null) continue; // do nothing, maybe request failed\r\n yield localforage.setItem(n.id, n.blob);\r\n delete n.image;\r\n delete n.blob;\r\n }\r\n }\r\n\r\n let parsedEvents = yield parseCommonEvents(events, title);\r\n return parsedEvents;\r\n\r\n}\r\n\r\nasync function parseCommonEvents(events, title) {\r\n let parsedEvents = [];\r\n for (let key in events) {\r\n\r\n if (events[key]) {\r\n const item = events[key];\r\n\r\n let eventObject = new EventObject;\r\n eventObject.setID(item.id);\r\n eventObject.setAuthor(item.authorId);\r\n eventObject.setContent(item.content);\r\n eventObject.setAllEventData({EventDate: item.startDate,EndDate: item.endDate});\r\n eventObject.setTitle(item.title);\r\n eventObject.setType('common');\r\n eventObject.setPicture('parse-from-localForage');\r\n eventObject.setTenantId(item.tenantId);\r\n eventObject.setPicture(item.image);\r\n eventObject.setDate(item.startDate);\r\n eventObject.setExternalUrl(item.link)\r\n eventObject.setWidget(title);\r\n eventObject.setLocation(item.location ? item.location : \"unknown\")\r\n if (eventObject.getEventObject()) {\r\n parsedEvents.push(eventObject.getEventObject());\r\n }\r\n }\r\n }\r\n return parsedEvents;\r\n}\r\n\r\nexport default function* rootSaga() {\r\n yield all([\r\n fork(getEvents),\r\n fork(getYearEvents),\r\n fork(setActiveEvent)\r\n ]);\r\n}\r\n","import moment from 'moment';\r\nclass EventObject {\r\n constructor() {\r\n this._eventItem = {\r\n id : false,\r\n type : false,\r\n author : false,\r\n site: false,\r\n description : false,\r\n title : false,\r\n picture : false,\r\n url : false,\r\n tenantId: false,\r\n externalUrl: false,\r\n \r\n allEventData: false, \r\n widget: false, \r\n unix : false,\r\n moment : false,\r\n location: false,\r\n }\r\n }\r\n setID = (ID) => {\r\n this._eventItem = {\r\n ...this._eventItem,\r\n id : ID\r\n }\r\n }\r\n\r\n setType = (type) => {\r\n this._eventItem = {\r\n ...this._eventItem,\r\n type : type\r\n }\r\n }\r\n\r\n setAuthor = (author) => {\r\n this._eventItem = {\r\n ...this._eventItem,\r\n author : author\r\n }\r\n }\r\n\r\n setSite = (site) => {\r\n this._eventItem = {\r\n ...this._eventItem,\r\n site: site\r\n }\r\n }\r\n\r\n setContent = (description) => {\r\n this._eventItem = {\r\n ...this._eventItem,\r\n description : description\r\n }\r\n }\r\n\r\n setDate = (date, format = false) => {\r\n const parsedDate = moment(date, format);\r\n this._eventItem = {\r\n ...this._eventItem,\r\n unix : parsedDate.unix(),\r\n moment : parsedDate\r\n }\r\n }\r\n\r\n setTitle = (title) => {\r\n this._eventItem = {\r\n ...this._eventItem,\r\n title : title\r\n }\r\n }\r\n\r\n setPicture = (picture) => {\r\n this._eventItem = {\r\n ...this._eventItem,\r\n picture : picture\r\n }\r\n }\r\n\r\n setUrl = (URL) => {\r\n this._eventItem = {\r\n ...this._eventItem,\r\n url : URL\r\n }\r\n }\r\n\r\n setTenantId = (tenantId) => {\r\n this._eventItem = {\r\n ...this._eventItem,\r\n tenantId: tenantId\r\n }\r\n }\r\n\r\n setOpenExternal = (bool) => {\r\n this._eventItem = {\r\n ...this._eventItem,\r\n openExternal : bool\r\n }\r\n }\r\n\r\n setAllEventData = (allEventData) => {\r\n this._eventItem = {\r\n ...this._eventItem,\r\n allEventData: allEventData\r\n }\r\n }\r\n\r\n setWidget = (widget) => {\r\n this._eventItem = {\r\n ...this._eventItem,\r\n widget: widget\r\n }\r\n }\r\n\r\n setLocation = (location) => {\r\n this._eventItem = {\r\n ...this._eventItem,\r\n location: location\r\n }\r\n }\r\n\r\n setExternalUrl = (externalUrl) => {\r\n this._eventItem = {\r\n ...this._eventItem,\r\n externalUrl: externalUrl,\r\n location: location\r\n }\r\n }\r\n\r\n getEventObject = () => {\r\n for ( const property in this._eventItem ) {\r\n if ( this._eventItem.hasOwnProperty(property) ) {\r\n if( property !== 'url' && property !== 'imageUrl' && property !== 'picture'&& property !== 'openExternal' && property !== 'tenantId' && property !== 'site') {\r\n if ( !this._eventItem[property] ) {\r\n console.log(\"Missing eventItem: \" + property);\r\n return false;\r\n }\r\n }\r\n\r\n }\r\n }\r\n return this._eventItem;\r\n }\r\n}\r\n\r\nexport default EventObject;\r\n","import styled from 'styled-components';\r\nimport Box from '../../../styled/Box';\r\nimport * as Variables from '../../../../ThemeVariables';\r\n\r\nexport const BirthdayItem = styled.div`\r\n`;\r\n\r\nexport const Wrapper = styled.div`\r\n\tdisplay: grid;\r\n\talign-items: center;\r\n\tgrid-template-rows: none;\r\n\tgrid-template-columns: 80px 1fr 0px;\r\n\tgrid-gap: 14px;\r\n\tpadding: 10px;\r\n top: 5px;\r\n left: 6px;\r\n right: 18px;\r\n width: 430px;\r\n\r\n &.darkmode {\r\n color: ${Variables.mainTextColor.darkModeSoft};\r\n }\r\n`;\r\n\r\nexport const Icon = styled.img`\r\n\twidth: 65px;\r\n\theight: 65px;\r\n\tborder-radius: 50%;\r\n`;\r\n\r\nexport const Image = styled.div`\r\n\r\n`;\r\n\r\nexport const Name = styled.div`\r\n\tline-height: 24px;\r\n\tfont-size: 16px;\r\n`;\r\n\r\nexport const Date = styled.div`\r\n\tline-height: 24px;\r\n\tfont-size: 12px;\r\n`;\r\n\r\nexport const LetterAvatar = styled.div`\r\n width: 50px;\r\n height: 50px;\r\n line-height: 50px;\r\n text-align: center;\r\n border-radius: 50px;\r\n background: ${Variables.mainColor};\r\n color: white;\r\n font-weight: bold;\r\n`;\r\n\r\nexport const PersonAvatar = styled.div`\r\n width: 50px;\r\n height: 50px;\r\n border-radius: 50px;\r\n display: block;\r\n ${ props => props.img ? `background-image: url(${props.img})` : ''};\r\n background-size: cover;\r\n`;","import React, { useState, useEffect } from 'react';\r\nimport * as Styled from './styled';\r\nimport Observer from '@researchgate/react-intersection-observer';\r\nimport actions from '../../../../redux/birthday/actions';\r\nimport { bindActionCreators } from 'redux';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { faEnvelope, faCommentAlt } from '@fortawesome/free-regular-svg-icons';\r\nimport moment from 'moment/min/moment-with-locales';\r\n\r\nconst BirthdayItem = (props) => {\r\n const [inView, setInView] = useState(false);\r\n\r\n useEffect(() => {\r\n return () => {\r\n\r\n }\r\n }, [])\r\n\r\n const handleIntersection = (event) => {\r\n if (!inView && event.isIntersecting) {\r\n setInView(event.isIntersecting);\r\n\r\n if (!props.avatar) {\r\n props.actions.findAvatar(props.id);\r\n }\r\n }\r\n }\r\n const options = {\r\n onChange: handleIntersection,\r\n };\r\n\r\n\r\n const _getAvatarLetters = () => {\r\n\r\n\r\n let name = props.name.split(' ');\r\n if (name?.length) {\r\n return name[0].charAt(0) + name[name.length - 1].charAt(0);\r\n }\r\n }\r\n\r\n const _getAvatar = () => {\r\n if (props.avatar) {\r\n if (props.avatar !== 'none') {\r\n return ;\r\n }\r\n }\r\n return (\r\n \r\n {_getAvatarLetters()}\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {_getAvatar()}\r\n \r\n
\r\n {props.name}\r\n {moment(props.day).locale('nl').format('D MMMM')}\r\n
\r\n
\r\n
\r\n
\r\n
);\r\n\r\n}\r\n\r\n//BirthdayItem.propTypes = {\r\n// name: PropTypes.string,\r\n// icon: PropTypes.string,\r\n// none: PropTypes.bool,\r\n// demo: PropTypes.bool\r\n//}\r\n\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {\r\n darkmode: state.Layout.darkmode,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => ({ actions: bindActionCreators(actions, dispatch) });\r\nexport default connect(mapStateToProps, mapDispatchToProps, false, { pure: false })(BirthdayItem);\r\n","import styled from 'styled-components'\r\nimport { DocumentsList, Section } from '../../../widget/documentsList/styled';\r\nimport { DocumentsListItem } from '../../../widget/documentsList/documentsListItem/styled';\r\nimport { Loader } from '../styled';\r\n\r\nexport const List = styled(DocumentsList)`\r\n\tmargin-bottom: 40px;\r\n`;\r\n\r\nexport const DocumentSection = styled(Section)`\r\n\r\n`;\r\n\r\nexport const Item = styled(DocumentsListItem)`\r\n\t${Loader}\r\n\theight: 20px;\r\n\twidth: 80%;\r\n`;\r\n","import React from 'react';\r\nimport * as Styled from './styled';\r\nimport HeaderLoader from '../header';\r\n\r\n\r\nconst DocumentsLoader = props => (\r\n\t \r\n {/* */}\r\n \t\r\n \t\r\n \t\r\n \t\r\n {/* */}\r\n {/* */}\r\n \t{/* \r\n \t\r\n \t\r\n \t */}\r\n {/* */}\r\n \r\n)\r\n\r\n\r\n\r\nexport default DocumentsLoader; ","import React, { Component } from 'react';\r\nimport * as Styled from './styled';\r\nimport BirthdayItem from './birthdayItem';\r\nimport BirthdaySlideoutItem from './birthdaySlideoutItem';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport birthdayActions from '../../../redux/birthday/actions';\r\nimport { getMS } from '../../../helpers/functions';\r\nimport * as Layout from '../../layout/widget/styled';\r\nimport slideoutActions from '../../../redux/slideOut/actions';\r\nimport userActions from '../../../redux/user/actions';\r\nimport Heading from '../../layout/headingSlideout';\r\nimport { getUserApplicationSettings, openPopup } from '../../../helpers/launchApp';\r\nimport { withTranslate } from 'react-redux-multilingual';\r\nimport Search from '../../layout/search/slideOut';\r\nimport InfiniteScroll from 'react-infinite-scroller';\r\nimport InfiniteScrollWrapper from '../../layout/infiniteScrollWrapper';\r\n\r\nclass Birthdays extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n birthdays: [],\r\n clients: false,\r\n searchTerm: '',\r\n listHeight: false\r\n };\r\n this.perPage = 10;\r\n this.page = 0;\r\n\r\n }\r\n\r\n componentDidMount() {\r\n this._getBirthdays();\r\n if (this._getListHeight()) {\r\n this.setState({\r\n ...this.state,\r\n listHeight: this._getListHeight()\r\n })\r\n }\r\n\r\n if (this.timer) clearInterval(this.timer);\r\n this.timer = setInterval(this._getBirthdays.bind(this), getMS(15));\r\n\r\n window.addEventListener('resize', this._handleResize)\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const height = this._getListHeight();\r\n if (height && height != this.state.listHeight) {\r\n this.setState({\r\n ...this.state,\r\n listHeight: this._getListHeight()\r\n })\r\n }\r\n\r\n window.addEventListener('resize', this._handleResize)\r\n }\r\n\r\n _handleResize = () => {\r\n if (this._getListHeight()) {\r\n this.setState({\r\n ...this.state,\r\n listHeight: this._getListHeight()\r\n })\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.timer) clearInterval(this.timer);\r\n }\r\n\r\n _fetchUserPhoto = async () => {\r\n const userPhoto = await Client.api('/users/' + id + '/photo/$value', 'arrayBuffer');\r\n let parsedUserPhoto = null;\r\n if (userPhoto !== null) parsedUserPhoto = 'data:image/png;base64, ' + new Buffer(userPhoto, 'binary').toString('base64');\r\n return parsedUserPhoto;\r\n }\r\n\r\n _fetchMoreData = () => {\r\n //this.props.actions.fetchNextPage({skip:(this.page * this.perPage),take: this.perPage});\r\n }\r\n\r\n parseItems(items) {\r\n this.setState({\r\n items: items,\r\n scrollItems: [...items].slice(0, this.perPage),\r\n });\r\n }\r\n\r\n _setSearchTerm = (e) => {\r\n this.setState({\r\n ...this.state,\r\n searchTerm: e.target.value\r\n })\r\n }\r\n\r\n _filterSlideItems = (items) => {\r\n let filteredItems = [];\r\n let searchTerm = this.state.searchTerm;\r\n let lowercased = false\r\n if (searchTerm) {\r\n lowercased = searchTerm.toLowerCase();\r\n let returnItems = [];\r\n items.forEach((item, i) => {\r\n const flattened = JSON.stringify(item).toLowerCase();\r\n\r\n if (flattened.includes(lowercased)) {\r\n returnItems.push(item);\r\n }\r\n });\r\n return returnItems;\r\n }\r\n return items;\r\n }\r\n\r\n _getBirthdays() {\r\n this.props.actions.getBirthDays('/dashboard/birthdays');\r\n //if (this.timer) clearInterval(this.timer);\r\n //this.timer = setInterval(this._getBirthdays.bind(this), getMS(360));\r\n }\r\n\r\n _mapBirthdays = (birthday, key, length) => {\r\n return 1)} when={birthday.when} icon={birthday.avatar} name={birthday.name} key={key} />;\r\n }\r\n\r\n _mapBirthdaysSlide = (birthday, key) => {\r\n return 1)} when={birthday.when} icon={birthday.avatar} name={birthday.name} id={birthday.id} key={key} day={birthday.date} avatar={ birthday.avatar} />;\r\n }\r\n\r\n _prepareDemo = (small = true) => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n _openBirthdayUrl = () => {\r\n const { openAppInTarget, windowProperties } = getUserApplicationSettings();\r\n openPopup(`https://delve.office.com/?u=${this.props.userProfile.id}&v=editprofile`, openAppInTarget, windowProperties)\r\n }\r\n\r\n _getListHeight = () => {\r\n if (document.getElementById('popupWrapper') && document.getElementById('headerWrapper')) {\r\n const parentHeight = document.getElementById('popupWrapper').clientHeight;\r\n const headerHeight = document.getElementById('headerWrapper').clientHeight;\r\n const windowWidth = window.innerWidth;\r\n if (windowWidth <= 1024) {\r\n return parseInt(parentHeight) - (parseInt(headerHeight) + 25 + 66 + 52);\r\n }\r\n\r\n return parseInt(parentHeight) - (parseInt(headerHeight) + 25);\r\n }\r\n return false;\r\n }\r\n\r\n render() {\r\n \r\n\r\n if (this.props.popup) {\r\n\r\n if (window.tenantConfig.demo && window.tenantConfig.demo === \"true\") {\r\n return this._prepareDemo(false);\r\n }\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n {/*this.props.upcomingBirthdays.length > 0 && this.props.upcomingBirthdays.map(this._mapBirthdaysSlide)*/}\r\n {this.props.birthdays?.length == 0 ?

geen verjaardagen gevonden

:\r\n this.state.listHeight ?\r\n \r\n 0 && (this.props.birthdays.length / this.perPage) >= this.page)}\r\n isNextPageLoading={this.props.fetching}\r\n items={this._filterSlideItems(this.props.birthdays)}\r\n loadNextPage={this._fetchMoreData}\r\n renderItem={this._mapBirthdaysSlide}\r\n itemHeight={80}\r\n listHeight={this.state.listHeight}\r\n />\r\n \r\n : null}\r\n
\r\n
\r\n );\r\n }\r\n\r\n if (window.tenantConfig.demo && window.tenantConfig.demo === \"true\") {\r\n return this._prepareDemo();\r\n }\r\n\r\n if ((this.props.userProfile.birthday && this.props.userProfile.birthday != '0001-01-01T00:00:00Z') && this.props.upcomingBirthdays.filter(b => b.when == 'Morgen' || b.when == 'Vandaag').length == 0) {\r\n return
;\r\n }\r\n\r\n return (\r\n \r\n {\r\n {this.props.title} \r\n \r\n {\r\n this.props.actions.setActiveSlideOut((this.props.activeSlideOut === 'Birthdays' ? false : 'Birthdays'));\r\n }} href={null}>{this.props.translate(\"more\")}\r\n \r\n \r\n }\r\n\r\n {((this.props.userProfile?.birthday == '0001-01-01T00:00:00Z') && !this.props.settings.setBirthdayDismissed) ? Voeg je verjaardag toe this.props.actions.setSettingValue(true, 'setBirthdayDismissed')}>x : null}\r\n 1)}>\r\n {this.props.upcomingBirthdays?.length > 0 ? this.props.upcomingBirthdays.map(this._mapBirthdays, this.props.upcomingBirthdays.length) : }\r\n \r\n \r\n ); \r\n }\r\n}\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {\r\n userProfile : state.User.profile,\r\n settings : state.User.profile.data?.settings,\r\n birthdays: state.Birthday.birthdays,\r\n upcomingBirthdays: state.Birthday.upcoming,\r\n fetching: state.Birthday.fetching,\r\n nextPageAvailable: state.Birthday.nextPageAvailable,\r\n goClient: state.Client.GoClient,\r\n graphClient: state.Client.GraphClient,\r\n locale: state.Intl.locale,\r\n darkmode: state.Layout.darkmode\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => ({ actions: bindActionCreators({ ...userActions, ...birthdayActions, ...slideoutActions }, dispatch) });\r\nexport default withTranslate(connect(mapStateToProps, mapDispatchToProps)(Birthdays));\r\n","import styled from 'styled-components';\r\nimport * as Variables from '../../../ThemeVariables';\r\n\r\nexport const TeamsList = styled.ul`\r\n list-style: none;\r\n margin-left: 30px;\r\n .save-button {\r\n padding: 2px 5px;\r\n background: #f10000;\r\n color: white;\r\n font-size: 12px;\r\n font-weight: bold;\r\n border: none;\r\n\r\n\r\n cursor: pointer;\r\n display: inline-block;\r\n }\r\n\r\n .folder-active {\r\n font-weight: bold;\r\n }\r\n`;\r\n\r\n\r\nexport const TeamsChannelList = styled.ul`\r\n list-style: none;\r\n margin-left: 65px;\r\n display: none;\r\n\r\n &.active {\r\n display: block;\r\n }\r\n\r\n &.small {\r\n margin-left: 35px;\r\n li {\r\n span {\r\n margin-bottom: 10px;\r\n display: block;\r\n margin-top: 10px;\r\n cursor: pointer;\r\n }\r\n }\r\n ul {\r\n padding-left: 25px;\r\n\r\n li {\r\n cursor: pointer;\r\n margin-bottom: 10px;\r\n\r\n div {\r\n margin-bottom: 10px;\r\n }\r\n }\r\n }\r\n }\r\n\r\n`;\r\n\r\nexport const TeamsChannelListItem = styled.li`\r\n margin-bottom: 15px;\r\n\r\n &.explorermode {\r\n &:before {\r\n content: '';\r\n position: absolute;\r\n font-family: 'Font Awesome 5 Free';\r\n content: '\\f07b';\r\n left: 0;\r\n font-weight: 900;\r\n }\r\n &.document {\r\n &:before {\r\n content: '\\f15b';\r\n }\r\n }\r\n\r\n ul {\r\n list-style: none;\r\n li {\r\n &:before {\r\n content: '';\r\n position: absolute;\r\n font-family: 'Font Awesome 5 Free';\r\n content: '\\f07b';\r\n left: -25px;\r\n font-weight: 900;\r\n }\r\n div {\r\n\r\n }\r\n }\r\n &.document {\r\n &:before {\r\n content: '\\f15b';\r\n }\r\n }\r\n }\r\n padding-left: 25px;\r\n\r\n &.darkmode {\r\n &:before {\r\n color: white;\r\n\r\n }\r\n\r\n span {\r\n color: white;\r\n }\r\n\r\n ul {\r\n li {\r\n &:before {\r\n color: white;\r\n\r\n }\r\n div {\r\n color: white;\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n a {\r\n text-decoration: none;\r\n color: black;\r\n\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n\r\n &.darkmode {\r\n color: white;\r\n }\r\n }\r\n`;\r\n\r\nexport const TeamsListItem = styled.li`\r\n display: grid;\r\n margin-bottom: 25px;\r\n grid-template-columns: 50px 1fr 25px;\r\n grid-column-gap: 15px;\r\n margin-bottom: 30px;\r\n & > img {\r\n max-width: 35px;\r\n grid-area: image;\r\n border-radius: 8px;\r\n }\r\n &.small {\r\n grid-template-columns: 25px 1fr 25px;\r\n grid-column-gap: 10px;\r\n margin-bottom: 15px;\r\n & > img {\r\n max-width: 25px;\r\n grid-area: image;\r\n border-radius: 8px;\r\n }\r\n }\r\n\r\n\r\n grid-template-areas: \"image name arrow\"\r\n \"channels channels channels\";\r\n\r\n & > a, & > div, & > span {\r\n &.darkmode {\r\n color: white;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n & > a, & > div {\r\n grid-area: name;\r\n display: flex;\r\n align-items: center;\r\n text-decoration: none;\r\n color: black;\r\n cursor: pointer;\r\n }\r\n\r\n & > span {\r\n grid-area: arrow;\r\n display: flex;\r\n align-items: center;\r\n text-decoration: none;\r\n cursor: pointer;\r\n }\r\n\r\n & > ul {\r\n grid-area: channels;\r\n }\r\n &.darkmode {\r\n &:before {\r\n color: white;\r\n\r\n }\r\n }\r\n`;\r\n\r\nexport const BreadCrumbs = styled.ul`\r\n list-style: none;\r\n margin:5px 15px 5px 15px;\r\n`;\r\n\r\nexport const BreadCrumbsList = styled.li`\r\n display:inline-block;\r\n text-decoration: none;\r\n :hover {\r\n text-decoration: underline;\r\n }\r\n b {\r\n\r\n }\r\n`;\r\n\r\nexport const Sharepoint = styled.div`\r\n height: calc(100% - 10px);\r\n`;\r\n\r\nexport const TopInfo = styled.div`\r\n border-radius: 6px;\r\n padding:5px 15px 5px 0px;\r\n`;\r\n\r\nexport const Search = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n`;\r\n\r\n// export const SearchInput = styled.input`\r\n// //padding: 5px 15px; \r\n// width: 60%;\r\n// background: white;\r\n// display: inline-block;\r\n// border-radius: 6px;\r\n// color: #000000;\r\n// border: 2px solid #E4E4E4;\r\n// `;\r\n\r\nexport const SearchButton = styled.button`\r\n padding: 5px 15px;\r\n color: #1b1b1b;\r\n font-weight: bold;\r\n width: 30%;\r\n border: none;\r\n border-radius: 5px;\r\n cursor: pointer;\r\n display: inline-block;\r\n -webkit-text-decoration: none;\r\n -webkit-text-decoration: none;\r\n text-decoration: none;\r\n`;\r\n\r\nexport const ListTeam = styled.div`\r\n /* display: flex;\r\n flex-direction:column;\r\n gap:25px;\r\n width:100%;\r\n height:200px;\r\n flex-wrap:wrap;\r\n gap:10px 50px;\r\n overflow:auto;\r\n margin-top:10px; */\r\n\r\n display: grid;\r\n grid-auto-flow:column;\r\n grid-auto-columns: minmax(200px, 1fr);\r\n gap:25px;\r\n //width:500px;\r\n height:calc(100% - 100px);\r\n flex-wrap:wrap;\r\n gap:10px 20px;\r\n overflow-x:auto;\r\n grid-template-columns: fit-content(200px);\r\n grid-template-rows: repeat(auto-fill, 30px);\r\n\r\n &.darkmode {\r\n b{\r\n color:rgb(191, 188, 188);\r\n }\r\n }\r\n\r\n @media(max-width: ${Variables.md}) {\r\n grid-auto-flow:row;\r\n }\r\n`\r\n\r\nexport const Team = styled.div`\r\n /* overflow-wrap: break-word;\r\n box-shadow: 0px 0px 5px 4px rgba(0,0,0,0.09);\r\n padding:10px; */\r\n cursor: pointer;\r\n max-height:100px;\r\n display:flex;\r\n gap:10px;\r\n align-items:center;\r\n img {\r\n height:20px;\r\n }\r\n svg {\r\n height:20px;\r\n }\r\n\r\n div {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n width:100%;\r\n p{\r\n font-size: 10pt;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n }\r\n }\r\n`\r\n\r\n\r\n//SEARCH\r\nexport const SearchInput = styled.input`\r\n\twidth: calc(100% - 50px);\r\n\tline-height: ${Variables.headerHeight};\r\n\tfont-size: 16px;\r\n\tbackground: transparent;\r\n\tfloat: left;\r\n\r\n\t&:focus {\r\n\t\toutline : none;\r\n\t}\r\n`;\r\n\r\nexport const SearchWrapper = styled.div`\r\n\t/*width: calc(100% - 50px);*/\r\n\twidth: 100%;\r\n\r\n\tbackground: #ebedf0;\r\n\tborder-radius: 25px;\r\n\toverflow: hidden;\r\n margin:10px 0;\r\n\t&.greyout {\r\n\t\topacity: .3;\r\n\t}\r\n\r\n\r\n\theight: ${Variables.headerHeight};\r\n\r\n\t@media ( max-width: ${Variables.mxs}) {\r\n\t\tdisplay: none;\r\n\t}\r\n\r\n\r\n\r\n\t@media ( min-width: ${Variables.md} ) {\r\n\t\t${props => props.gridArea ? 'grid-area:' + props.gridArea : ''};\r\n\t\twidth: 25vw;\r\n\r\n\t\t//margin-left: 25px;\r\n\t}\r\n\r\n\t@media ( min-width: ${Variables.lgMin} ) {\r\n\t\twidth: 25vw;\r\n\t}\r\n\r\n\t${props => props.wrapped ? 'display: block !important;' : ''};\r\n\r\n\t@media ( min-width: ${Variables.xlg} ) {\r\n\t\tdisplay: block;\r\n\t\twidth: 25vw;\r\n\t\tgrid-area: search;\r\n\t}\r\n`;\r\n\r\nexport const Magnifier = styled.div`\r\n\twidth: 50px;\r\n\tfloat: left;\r\n\tline-height: ${Variables.headerHeight};\r\n\ttext-align: center;\r\n\r\n`;\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport actions from '../../../redux/widgets/sharepoint/actions';\r\nimport { NavLink } from 'react-router-dom';\r\nimport Heading from '../../layout/heading';\r\nimport FeedsLoader from '../../layout/loader/documents';\r\nimport TeamLoader from '../../layout/loader/team';\r\nimport { getMS } from '../../../helpers/functions';\r\nimport * as Styled from './styled';\r\nimport ReactTooltip from 'react-tooltip';\r\nimport { faEllipsisH, faSave, faFolder, faFolderMinus, faSearch } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { withTranslate } from 'react-redux-multilingual'\r\n\r\nclass Sharepoint extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n activeSharepointSite: false,\r\n\r\n breadCrumbs:[],\r\n search: '',\r\n height: 0,\r\n }\r\n }\r\n componentDidMount() {\r\n // if (this.props.teams == null) this._getTeams();\r\n if (this.timer) clearInterval(this.timer);\r\n this.timer = setInterval(this._getSharepointSites.bind(this), getMS(5));\r\n this.props.actions.fetchSharepointSites(this.state.search); \r\n }\r\n\r\n _setItemActive = (key) => {\r\n\r\n this.setState({\r\n activeSharepointSite: (this.state.activeSharepointSite === key ? false : key)\r\n })\r\n }\r\n // componentDidUpdate(prevProps, prevState, snapshot) {\r\n // const height = this.divElement.clientHeight;\r\n // console.log(\"height\")\r\n // console.log(this.divElement)\r\n // }\r\n\r\n componentWillUnmount() {\r\n if (this.timer) clearInterval(this.timer);\r\n }\r\n\r\n _loadingItem() {\r\n return ( \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n handleSearch(event) { \r\n let search = event.currentTarget.value;\r\n this.setState({ search: search });\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.props.actions.fetchSharepointSites(this.state.search); \r\n this.setState({breadCrumbs:[]})\r\n this.props.actions.clearSharepoint(['Sharepoint','Drive','DriveChildren','Folder']);\r\n }, 500);\r\n }\r\n\r\n _displayBreadCrumbs = () => {\r\n const breadCrumbs = this.state.breadCrumbs;\r\n //console.log(\"breadCrumbs\", breadCrumbs)\r\n let crumbs = [];\r\n for(let i=0; i { \r\n this.props.actions.fetchSharepointSites(breadCrumbs[i]); \r\n const newArray = breadCrumbs.slice(0,i+1)\r\n this.setState({breadCrumbs:[], search:\"\"})\r\n this.props.actions.clearSharepoint(['Sharepoint','Drive','DriveChildren','Folder']);\r\n this.props.actions.fetchSharepointSites(\"\");\r\n } }>\r\n \r\n \r\n {breadCrumbs[i].name}\r\n \r\n )\r\n }//Search\r\n if(i==1) {\r\n crumbs.push(\r\n { \r\n this._fetchSharepointDrives(breadCrumbs[i]); \r\n const newArray = breadCrumbs.slice(0,1)\r\n this.setState({breadCrumbs:[...newArray]})\r\n this.props.actions.clearSharepoint(['Drive','DriveChildren','Folder']);\r\n } }>\r\n \r\n \r\n {breadCrumbs[i].name}\r\n \r\n )\r\n }//Sharepoint site\r\n if(i == 2) {\r\n crumbs.push(\r\n { \r\n this._fetchSharepointDriveChildren(breadCrumbs[i]); \r\n const newArray = breadCrumbs.slice(0,i)\r\n this.setState({breadCrumbs:[...newArray]})\r\n this.props.actions.clearSharepoint(['DriveChildren','Folder']);\r\n } }>\r\n \r\n \r\n {breadCrumbs[i].name}\r\n \r\n )\r\n }//Drive\r\n if(i > 2) {\r\n crumbs.push(\r\n { \r\n this._fetchSharepointFolder(breadCrumbs[i]); \r\n const newArray = breadCrumbs.slice(0,i)\r\n this.setState({breadCrumbs:[...newArray]})\r\n this.props.actions.clearSharepoint(['Folder']);\r\n } }>\r\n \r\n \r\n {breadCrumbs[i].name}\r\n \r\n )\r\n }//Drive children\r\n }\r\n return (\r\n crumbs.length ?\r\n crumbs[crumbs.length-1]\r\n : null\r\n )\r\n }\r\n\r\n _getSharepointSites = async () => {\r\n this.props.actions.getSharepointSites();\r\n }\r\n\r\n _fetchSharepointDrives = (item) => {\r\n this.props.actions.fetchSharepointDrive(item);\r\n }\r\n\r\n _fetchSharepointDriveChildren = (item) => {\r\n this.props.actions.fetchSharepointDriveChildren(item);\r\n if (this.props.saveButtonAction) {\r\n this.props.saveButtonAction(item)\r\n }\r\n }\r\n _fetchSharepointFolder = (item) => {\r\n this.props.actions.fetchSharepointFolder(item);\r\n if (this.props.saveButtonAction) {\r\n this.props.saveButtonAction(item)\r\n }\r\n }\r\n\r\n _mapSharepoint = (item, key) => {\r\n if(!item.isFolder) {\r\n return;\r\n }\r\n if (this.props.explorerMode) {\r\n return (\r\n \r\n
{\r\n this._setItemActive(key); \r\n this._fetchSharepointDrives(item); \r\n this.setState({breadCrumbs: [...this.state.breadCrumbs,item]});\r\n }}>

{item.name}

\r\n
\r\n )\r\n }\r\n return (\r\n \r\n \r\n {item.name}\r\n \r\n {this.state.activeSharepointSite === key ? this._fetchSharepointDrives(item) : null}\r\n \r\n this._setItemActive(key)}>\r\n \r\n )\r\n }\r\n //\r\n _mapDrives = (item, key) => {\r\n if(!item.isFolder) {\r\n return;\r\n }\r\n if (this.props.explorerMode) {\r\n return (\r\n \r\n
{ \r\n if(item.isFolder) {\r\n this._setItemActive(key);\r\n this._fetchSharepointDriveChildren(item); \r\n this.setState({breadCrumbs: [...this.state.breadCrumbs,item]});\r\n } else {\r\n if (this.props.saveButtonAction) {\r\n this.props.saveButtonAction(item)\r\n }\r\n }\r\n } }>

{item.name}

\r\n
\r\n )\r\n }\r\n }\r\n //\r\n _mapDriveChildren = (item, key) => {\r\n if(!item.isFolder) {\r\n return;\r\n }\r\n if (this.props.explorerMode) {\r\n return (\r\n \r\n
{ \r\n if(item.isFolder) {\r\n this._setItemActive(key); \r\n this._fetchSharepointFolder(item); \r\n this.setState({breadCrumbs: [...this.state.breadCrumbs,item]})\r\n } else {\r\n if (this.props.saveButtonAction) {\r\n this.props.saveButtonAction(item)\r\n }\r\n }\r\n // this.props.actions.clearSharepoint(['Folder']);\r\n } }>

{item.name}

\r\n
\r\n )\r\n }\r\n }\r\n //\r\n _mapFolder = (item, key) => {\r\n if(!item.isFolder) {\r\n return;\r\n }\r\n if (this.props.explorerMode) {\r\n return (\r\n \r\n
{ \r\n if(item.isFolder) {\r\n this._setItemActive(key); \r\n this._fetchSharepointFolder(item); \r\n this.setState({breadCrumbs: [...this.state.breadCrumbs,item]})\r\n } else {\r\n if (this.props.saveButtonAction) {\r\n this.props.saveButtonAction(item)\r\n }\r\n }\r\n } }>

{item.name}

\r\n
\r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n { this.divElement = divElement } }>\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n {/* \r\n \r\n \r\n { \r\n this.props.actions.fetchSharepointSites(this.state.search); \r\n this.setState({breadCrumbs:[]})\r\n this.props.actions.clearSharepoint(['Sharepoint','Drive','DriveChildren','Folder']);\r\n }}>Search\r\n \r\n */}\r\n {!this.props.explorerMode ? : null}\r\n {this.props.sharepointState.isLoading ? this._loadingItem() : \r\n \r\n {this.props.sharepointState.sharepointFolderSet ?\r\n \r\n {this._displayBreadCrumbs()}\r\n {this.props.sharepointFolder.length ? this.props.sharepointFolder.map(this._mapFolder) : null }\r\n : null }\r\n {this.props.sharepointState.sharepointDriveChildrenSet && !this.props.sharepointState.sharepointFolderSet?\r\n \r\n {this._displayBreadCrumbs()}\r\n {this.props.sharepointState.isLoading ? this._loadingItem : this.props.sharepointDriveChildren.map(this._mapDriveChildren)}\r\n : null }\r\n {this.props.sharepointState.sharepointDriveSet && !this.props.sharepointState.sharepointDriveChildrenSet ?\r\n \r\n {this._displayBreadCrumbs()}\r\n {this.props.sharepointDrive.map(this._mapDrives)}\r\n : null }\r\n {this.props.sharepointState.sharePointSet && !this.props.sharepointState.sharepointDriveSet ?\r\n \r\n {this._displayBreadCrumbs()}\r\n {this.props.sharepoint.map(this._mapSharepoint)}\r\n : !this.props.sharepointState.sharePointSet && !this.props.sharepointState.sharepointDriveSet && this.props.sharepointState.isLoading ?\r\n this._loadingItem() : null}\r\n }\r\n
\r\n\r\n )\r\n\r\n\r\n }\r\n\r\n}\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n\r\n return {\r\n GraphClient: state.Client.GraphClient,\r\n darkmode: state.Layout.darkmode,\r\n sharepoint: state.Sharepoint.sharepoint,\r\n sharepointDrive: state.Sharepoint.sharepointDrive,\r\n sharepointDriveChildren: state.Sharepoint.sharepointDriveChildren,\r\n sharepointFolder: state.Sharepoint.sharepointFolder,\r\n sharepointState: state.Sharepoint\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => ({ actions: bindActionCreators(actions, dispatch) });\r\n\r\nexport default withTranslate(connect(mapStateToProps, mapDispatchToProps)(Sharepoint));\r\n","import styled from 'styled-components'\r\nimport { Loader } from '../styled';\r\nexport const HeaderWrapper = styled.div`\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n\tmargin-bottom: 20px;\r\n`;\r\n\r\nexport const Header = styled.div `\r\n margin: 0 13px 13px 0;\r\n height: 19px;\r\n width: 200px;\r\n\r\n ${props => props.position === 'left' ? 'float: left' : 'float: right'};\r\n ${Loader}\r\n`;\r\n","import React from 'react';\r\nimport * as Styled from './styled';\r\n\r\n\r\nconst HeaderLoader = props => (\r\n\t\r\n\t\t\r\n\t\r\n)\r\n\r\n\r\n\r\nexport default HeaderLoader; ","import styled from 'styled-components'\r\nimport * as Variables from '../../../ThemeVariables';\r\n\r\nexport const SliderWrapper = styled.div`\r\n\tposition: fixed;\r\n top: 0;\r\n left: 0;\r\n height: 100vh;\r\n background: rgba(0, 0, 0, .6);\r\n width: 100%;\r\n z-index: 5;\r\n\r\n &.fade-in {\r\n\t background: rgba(0, 0, 0, 1);\r\n\t animation-iteration-count: 1;\r\n\t animation: opac 5s normal forwards ease-in-out 5s;\r\n\r\n\t @keyframes opac {\r\n\t from {\r\n\t background: rgba(0, 0, 0, 1);\r\n\t }\r\n\r\n\t to {\r\n\t background: rgba(0, 0, 0, .85);\r\n\t }\r\n\r\n\r\n }\r\n}\r\n`;\r\n\r\nexport const Slide = styled.div`\r\n height: 100vh;\r\n\r\n`;\r\n\r\nexport const SlideInner = styled.div`\r\n height: 100%;\r\n\r\n width: 100%;\r\n display: flex;\r\n align-items: center;\r\n`;\r\n\r\nexport const SlideInnerContent = styled.div`\r\n\r\n max-width: 600px;\r\n width: 600px;\r\n @media(max-width: ${Variables.md}) {\r\n\t max-width: calc(100% - 40px);\r\n\t width: calc(100% - 40px);\r\n iframe {\r\n max-width: 100%;\r\n }\r\n }\r\n height: auto;\r\n margin: 0 auto;\r\n background: white;\r\n \tborder-radius: 10px;\r\n padding: 30px;\r\n`;\r\n\r\nexport const SlideTitle = styled.h1`\r\n font-size: 18px;\r\n margin-top: 20px;\r\n font-weight: 700;\r\n margin-bottom: 25px;\r\n`;\r\n\r\nexport const CloseSlide = styled.div`\r\n position: absolute;\r\n top: 30px;\r\n right: 30px;\r\n width: 30px;\r\n height: 30px;\r\n z-index: 5;\r\n cursor: pointer;\r\n &:after, &:before {\r\n content: '';\r\n right: 15px;\r\n width: 2px;\r\n height: 100%;\r\n background: black;\r\n position: absolute;\r\n }\r\n\r\n &:before {\r\n transform: rotate(45deg);\r\n }\r\n\r\n &:after {\r\n transform: rotate(-45deg);\r\n }\r\n`;\r\n\r\nexport const Button = styled.button`\r\n background: ${Variables.mainColor};\r\n padding: 10px;\r\n font-size: 20px;\r\n font-weight: 700;\r\n color: white;\r\n border-radius: 20px;\r\n bottom: 25px;\r\n position: absolute;\r\n`;\r\n","import styled from 'styled-components'\r\n\r\nexport const SlideTitle = styled.h1 `\r\n font-size: 18px;\r\n margin-top: 5px;\r\n font-weight: 700;\r\n margin-bottom: 25px;\r\n`;\r\n\r\nexport const SlideDescription = styled.p`\r\n text-align: left;\r\n font-size: 14px;\r\n margin-bottom: 25px;\r\n\r\n p {\r\n margin-bottom: 15px;\r\n font-size: 14px;\r\n } \r\n`;\r\n\r\n\r\nexport const DarkModeSelector = styled.div`\r\n width: 100%;\r\n display: grid;\r\n grid-template-columns: 1fr 1fr;\r\n grid-column-gap: 40px;\r\n\r\n`;\r\n\r\nexport const DarkModeSelectorColumn = styled.div`\r\n img {\r\n width: 100%;\r\n max-width: 100%;\r\n }\r\n\r\n p {\r\n text-align: center;\r\n font-size: 14px;\r\n margin-top: 10px;\r\n }\r\n\r\n cursor: pointer;\r\n`;\r\n\r\nexport const DarkModeCheckbox = styled.div`\r\n width: 100%;\r\n display: grid;\r\n grid-template-columns: 1fr 50px 1fr;\r\n margin-top: 25px;\r\n text-align: center;\r\n\r\n p {\r\n font-weight: 700;\r\n }\r\n`;\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport * as Styled from './styled';\r\nimport { bindActionCreators } from 'redux';\r\nimport dark from '../../../../../assets/img/dark.svg';\r\nimport light from '../../../../../assets/img/light.svg';\r\nimport Checkbox from '../../../checkbox';\r\nimport layoutActions from '../../../../../redux/layout/actions';\r\n\r\nclass DarkmodeSlide extends Component {\r\n\r\n\r\n _setDarkMode = () => {\r\n this.props.actions.setDarkMode(!this.props.darkmode);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n GO Darkmode\r\n Welke modus vindt je fijner?\r\n \r\n { this.props.actions.setDarkMode(false) }}>\r\n \"Go\r\n

Standaard hebben we GO een lichte jas aangetrokken. Wij vinden dat het uitstekend staat.

\r\n
\r\n { this.props.actions.setDarkMode(true) }}>\r\n \"Go\r\n

Of kies voor een donkere modus, die fijner aan je ogen is in het donker

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

Dag

\r\n \r\n

Nacht

\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {\r\n user: state.User,\r\n activeSlideOut: state.SlideOut.activeSlideOut,\r\n darkmode: state.Layout.darkmode,\r\n darkmodeAuto: state.Layout.darkmodeAuto\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n actions: bindActionCreators({\r\n ...layoutActions\r\n }, dispatch)\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DarkmodeSlide);\r\n","import styled from 'styled-components'\r\nimport * as Variables from '../../../../../ThemeVariables';\r\n\r\nexport const SlideTitle = styled.h1 `\r\n font-size: 18px;\r\n margin-top: 5px;\r\n font-weight: 700;\r\n margin-bottom: 25px;\r\n`;\r\nexport const List = styled.ul`\r\n list-style: none;\r\n`;\r\n\r\nexport const ListItem = styled.li`\r\n display: grid;\r\n grid-template-columns: 25px 1fr;\r\n grid-column-gap: 20px;\r\n img {\r\n width: 100%;\r\n }\r\n margin-bottom: 15px;\r\n`;\r\n\r\nexport const ListItemContent = styled.div`\r\n h3, p {\r\n font-size: 14px;\r\n }\r\n`;\r\n\r\nexport const ListItemImage = styled.div`\r\n color: ${Variables.mainColor};\r\n font-size: 25px;\r\n`;\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport * as Styled from './styled';\r\nimport { bindActionCreators } from 'redux';\r\nimport layoutActions from '../../../../../redux/layout/actions';\r\nimport { faListUl, faCalendarAlt, faBell } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n\r\nclass ListSlide extends Component {\r\n\r\n\r\n _setDarkMode = () => {\r\n this.props.actions.setDarkMode(!this.props.darkmode);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n Wat is er nieuw?\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n

Afspraken

\r\n

Klik op het getal en je ziet meteen welke afspraken er de komende week in je agenda staan. Die vergeet je niet meer!

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

Taken

\r\n

Als je 'Taken' aanklikt, weet je meteen waar je direct mee aan de slag moet of wat later kan. Je ziet ook de voortgang direct in beeld.

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

Afspraken

\r\n

GO houdt je automatisch op de hoogte van nieuwsberichten en nieuwe taken die aan jou zijn toegewezen.

\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {\r\n user: state.User,\r\n activeSlideOut: state.SlideOut.activeSlideOut,\r\n darkmode: state.Layout.darkmode,\r\n darkmodeAuto: state.Layout.darkmodeAuto\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n actions: bindActionCreators({\r\n ...layoutActions\r\n }, dispatch)\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ListSlide);\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\n\r\nimport layoutActions from '../../../../../redux/layout/actions';\r\n\r\n\r\nclass VideoSlide extends Component {\r\n\r\n\r\n _setDarkMode = () => {\r\n this.props.actions.setDarkMode(!this.props.darkmode);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {\r\n user: state.User,\r\n activeSlideOut: state.SlideOut.activeSlideOut,\r\n darkmode: state.Layout.darkmode,\r\n darkmodeAuto: state.Layout.darkmodeAuto\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n actions: bindActionCreators({\r\n ...layoutActions\r\n }, dispatch)\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(VideoSlide);\r\n","import styled from 'styled-components'\r\n\r\nexport const SlideTitle = styled.h1 `\r\n font-size: 18px;\r\n margin-top: 5px;\r\n font-weight: 700;\r\n margin-bottom: 25px;\r\n`;\r\n\r\nexport const SlideDescription = styled.p`\r\n text-align: left;\r\n font-size: 14px;\r\n`;\r\n\r\nexport const SelectCheckboxColumn = styled.div`\r\n width: 100%;\r\n margin: 0 auto;\r\n display: grid;\r\n grid-template-columns: 1fr 50px 1fr;\r\n margin-top: 25px;\r\n text-align: center;\r\n\r\n p {\r\n font-weight: 700;\r\n font-size: 15px;\r\n margin-top: 2px;\r\n\r\n &:first-of-type {\r\n text-align: right;\r\n padding-right: 25px;\r\n }\r\n &:last-of-type {\r\n text-align: left;\r\n padding-left: 25px;\r\n }\r\n }\r\n`;\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport * as Styled from './styled';\r\nimport { bindActionCreators } from 'redux';\r\nimport dark from '../../../../../assets/img/dark.svg';\r\nimport light from '../../../../../assets/img/light.svg';\r\nimport Checkbox from '../../../checkbox';\r\nimport layoutActions from '../../../../../redux/layout/actions';\r\nimport userActions from '../../../../../redux/user/actions';\r\n\r\nclass SettingSlide extends Component {\r\n\r\n componentDidMount() {\r\n if (this.props.defaultVal != null) {\r\n this.props.actions.setSettingValue(this.props.defaultVal, this.props.setting);\r\n }\r\n }\r\n\r\n _settingChanged(value, type) {\r\n // -- Maybe normalize values\r\n this.props.actions.setSettingValue(value, type)\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n \r\n {this.props.title}\r\n \r\n \r\n

{this.props.falseVal}

\r\n this._settingChanged(e.target.checked, this.props.setting)} checked={(this.props.settings?.[this.props.setting] ? 'checked' : '')} />\r\n

{this.props.trueVal}

\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {\r\n profile: state.User.profile,\r\n settings: state.User.profile.data?.settings\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n actions: bindActionCreators({\r\n ...layoutActions,\r\n ...userActions\r\n }, dispatch)\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SettingSlide);\r\n","import styled from 'styled-components'\r\n\r\nexport const SlideTitle = styled.h1 `\r\n font-size: 18px;\r\n margin-top: 5px;\r\n font-weight: 700;\r\n margin-bottom: 25px;\r\n`;\r\nexport const SlideDescription = styled.p`\r\n text-align: left;\r\n font-size: 14px;\r\n margin-bottom: 25px;\r\n\r\n p {\r\n margin-bottom: 15px;\r\n font-size: 14px;\r\n } \r\n`;\r\n\r\nexport const SelectCheckboxColumn = styled.div`\r\n width: 150px;\r\n display: grid;\r\n grid-template-columns: 1fr 50px 1fr;\r\n margin-top: 25px;\r\n text-align: center;\r\n\r\n p {\r\n font-weight: 700;\r\n\r\n &:first-of-type {\r\n text-align: left;\r\n }\r\n &:last-of-type {\r\n text-align: right;\r\n }\r\n }\r\n`;\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport * as Styled from './styled';\r\nimport { bindActionCreators } from 'redux';\r\nimport dark from '../../../../../assets/img/dark.svg';\r\nimport light from '../../../../../assets/img/light.svg';\r\nimport Checkbox from '../../../checkbox';\r\nimport layoutActions from '../../../../../redux/layout/actions';\r\nimport userActions from '../../../../../redux/user/actions';\r\n\r\nclass ContentSlide extends Component {\r\n render() {\r\n return (\r\n \r\n {this.props.title}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ContentSlide;\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport * as Styled from '../../styled';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport Button from '../../../button';\r\nimport actions from '../../../../../redux/user/actions';\r\nconst settings = {\r\n lazyload: false,\r\n nav: false,\r\n mouseDrag: false,\r\n controls: false // remove built-in nav buttons\r\n}\r\nclass SlideInner extends React.Component {\r\n\r\n _setInvisible = (e) => {\r\n if (e.target.classList.contains('slideInner')) {\r\n this._dismissSlider();\r\n }\r\n }\r\n\r\n _dismissSlider() {\r\n if (!this.props.alwaysVisible) {\r\n this.props.actions.setFeatureSliderVisible(this.props.location.pathname, false)\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n {!this.props.alwaysVisible ? { this._dismissSlider() }} /> : null}\r\n {this.props.children}\r\n {(this.props.prev && this.props.goTo) ?
}>\r\n \r\n \r\n\r\n
}>\r\n \r\n \r\n\r\n
}>\r\n \r\n \r\n\r\n
}>\r\n \r\n \r\n\r\n
}>\r\n \r\n \r\n\r\n \r\n\r\n {/*this.state.site && */}\r\n\r\n\r\n \r\n {this._renderChatbot()}\r\n\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n Start\r\n
\r\n
\r\n\r\n {window.tenantConfig.hulpDeactivated !== \"true\" &&\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n Hulp\r\n
\r\n
\r\n {/*\r\n \r\n
\r\n \r\n
\r\n Zelf\r\n
\r\n
*/}\r\n \r\n \r\n
\r\n {this.props.calls ? : null}\r\n \r\n
\r\n Meldingen\r\n
\r\n
\r\n
\r\n }\r\n
\r\n
\r\n \r\n );\r\n }\r\n\r\n\r\n render() {\r\n //if (this.provider.authenticationState === \"Authenticated\") return this._renderApplication();\r\n\r\n if (this.state.failure) {\r\n return (\r\n Er is een fout opgetreden!
{this.state.error}
\r\n {\"Loader\"}\r\n
)\r\n }\r\n\r\n if (this.state.authenticated && this.state.loaded) {\r\n return this._renderApplication();\r\n }\r\n\r\n if (!this.state.authenticated && !this.state.loaded) {\r\n return (\r\n Bezig met authenticeren..\r\n {\"Loader\"}\r\n )\r\n }\r\n\r\n if (this.state.authenticated && !this.state.loaded) {\r\n return (\r\n Bezig met authenticeren..\r\n {\"Loader\"}\r\n )\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return {\r\n activeSlideOut: state.SlideOut.activeSlideOut,\r\n isUnmounting: state.SlideOut.isUnmounting,\r\n activeOverlaySlideOut: state.SlideOut.activeOverlaySlideOut,\r\n sliderHidden: state.Layout.sliderHidden,\r\n isLoaded: state.Layout.IsLoaded,\r\n darkmode: state.Layout.darkmode,\r\n darkmodeAuto: state.Layout.darkmodeAuto,\r\n searchbarActive: state.Search.searchbarActive,\r\n Clients: state.Client,\r\n calls: state.Calls.items,\r\n appOnline: state.App.appOnline,\r\n locale: state.Intl.locale,\r\n savedLocale: state.User.profile.data?.settings?.locale,\r\n user: state.User.profile,\r\n widgets: state.Widgets.widgets,\r\n darkmodeSettings: state.User.profile?.data?.settings?.darkmode,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => ({ actions: bindActionCreators({ ...actions, ...IntlActions, ...userActions, ...action }, dispatch) });\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(Main));\r\n","import React, { Component } from 'react';\r\nimport Boot from \"./redux/boot\";\r\nimport { Provider } from \"react-redux\";\r\nimport { PersistGate } from 'redux-persist/integration/react';\r\nimport store from \"./redux/store\";\r\nimport Main from './components/main';\r\nimport translations from './translate/translations'\r\nimport { IntlReducer as Intl, IntlProvider } from 'react-redux-multilingual'\r\nimport { Router } from 'react-router-dom';\r\n\r\nimport localForage from \"localforage\";\r\n\r\nimport { library } from '@fortawesome/fontawesome-svg-core' //allows later to just use icon name to render-them\r\nimport { fas } from '@fortawesome/free-solid-svg-icons'\r\nimport { far } from '@fortawesome/free-regular-svg-icons'\r\n\r\nlibrary.add(fas);\r\nlibrary.add(far);\r\n\r\nconst onBeforeLift = () => {\r\n}\r\n\r\nclass App extends Component {\r\n\r\n componentDidMount() {\r\n Boot(store.store);\r\n }\r\n\r\n render() {\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 App;\r\n","import authActions from './auth/actions';\r\nimport appActions from './app/actions';\r\n\r\nexport default (store) =>\r\n\tnew Promise(() => {\r\n\t\tstore.dispatch(appActions.checkAppOnline())\r\n store.dispatch(authActions.checkAuthorization());\r\n\t});\r\n","const buildMsalConfig = () => ({\r\n auth: {\r\n clientId: window.tenantConfig.clientId,\r\n authority: 'https://login.microsoftonline.com/' + (window.tenantConfig.clientId === \"68a590d3-db74-4205-9bdc-bf3286663216\" ? 'common' : window.tenantConfig.tenant),\r\n knownAuthorities: [],\r\n cloudDiscoveryMetadata: \"\",\r\n redirectUri: window.location.origin,\r\n //postLogoutRedirectUri: \"enter_postlogout_uri_here\",\r\n navigateToLoginRequestUrl: true,\r\n clientCapabilities: [\"CP1\"] //conditional access, needs to be implemented continious evaluation access\r\n },\r\n cache: {\r\n cacheLocation: \"localStorage\",\r\n storeAuthStateInCookie: false\r\n },\r\n system: {\r\n //loggerOptions: {\r\n // loggerCallback: (level, message, containsPii) => {\r\n // if (containsPii) {\r\n // return;\r\n // }\r\n // switch (level) {\r\n // case LogLevel.Error:\r\n // console.error(message);\r\n // return;\r\n // case LogLevel.Info:\r\n // console.info(message);\r\n // return;\r\n // case LogLevel.Verbose:\r\n // console.debug(message);\r\n // return;\r\n // case LogLevel.Warning:\r\n // console.warn(message);\r\n // return;\r\n // }\r\n // },\r\n // piiLoggingEnabled: false\r\n //},\r\n windowHashTimeout: 60000,\r\n iframeHashTimeout: 6000,\r\n loadFrameTimeout: 0,\r\n asyncPopups: false\r\n }\r\n});\r\n\r\nexport default buildMsalConfig;\r\n\r\n//const msalInstance = new PublicClientApplication(msalConfig());","import { AccountInfo, Configuration, AuthenticationResult, PublicClientApplication, SilentRequest, RedirectRequest, EndSessionRequest } from \"@azure/msal-browser\"\r\n\r\nclass AuthService {\r\n\r\n constructor(msalConfig) {\r\n if (!msalConfig) {\r\n throw new Error('the msal settings was not provided');\r\n }\r\n\r\n this.msalConfig = msalConfig;\r\n this.msalApplication = new PublicClientApplication(msalConfig);\r\n\r\n //this.account = new AccountInfo;\r\n\r\n //let msalConfig = this.GetMsalClientConfiguration();\r\n //this.msalApplication = new PublicClientApplication(msalConfig);\r\n }\r\n\r\n //// msal application object\r\n //msalApplication: PublicClientApplication;\r\n\r\n //// settings service\r\n //appSettings: AppSettingsService;\r\n\r\n //// cached account info\r\n //account?: AccountInfo;\r\n\r\n HandlePageLoadEvent = () => {\r\n // let exceptions bubble up to the caller to handle\r\n return this.msalApplication.handleRedirectPromise().then((authResult) => {\r\n this.HandleRedirectResponse(authResult);\r\n });\r\n }\r\n\r\n HandleRedirectResponse = (authResult) => {\r\n // if this page load is redirect from the Microsoft Identity platform then the\r\n // authResult will be populated. Otherwise null on other page loads.\r\n\r\n if (authResult !== null) {\r\n // save the fresh account info from the result.\r\n this.account = authResult.account;\r\n }\r\n else {\r\n // see if we have cached accounts.\r\n const currentAccounts = this.msalApplication.getAllAccounts();\r\n\r\n if (currentAccounts === null) {\r\n // no cached accounts.\r\n // user will need to click the sign-in button and redirect to login.\r\n return;\r\n }\r\n else if (currentAccounts.length > 1) {\r\n // there are some situations where the user may have multiple (different) cached logins.\r\n // this code sample does not cover that scenario but just logs a warning here.\r\n // this conditional block would need to be updated to support multiple accounts.\r\n // otherwise it will just grab the first one below.\r\n console.warn(\"Multiple accounts detected in MSAL account cache.\");\r\n this.account = currentAccounts[0];\r\n }\r\n else if (currentAccounts.length === 1) {\r\n // we have exactly 1 cached account.\r\n // set the account info. user may not need to sign in.\r\n this.account = currentAccounts[0];\r\n }\r\n }\r\n }\r\n\r\n GetToken = async (scopes) => {\r\n\r\n let tokenRequest = {\r\n account: this.account,\r\n scopes: scopes,\r\n forceRefresh: false\r\n }\r\n // msal will return the cached token if present, or call to get a new one\r\n // if it is expired or near expiring.\r\n //return await this.msalApplication.acquireTokenSilent(tokenRequest);\r\n if (window.applicationOnline) {\r\n return this.msalApplication.acquireTokenSilent(tokenRequest).then((response) => {\r\n\r\n return response;\r\n })\r\n .catch((error) => {\r\n console.log('Raw error: ', error);\r\n //\r\n\r\n this.msalApplication.acquireTokenRedirect(tokenRequest).then((response) => {\r\n return response;\r\n }).catch(function (error) {\r\n if (error instanceof InteractionRequiredAuthError) {\r\n\r\n }\r\n });\r\n })\r\n } else {\r\n console.log(\"Offline\");\r\n }\r\n return null;\r\n }\r\n\r\n\r\n\r\n GetIdToken = async (scopes) => {\r\n\r\n // msal will return the cached token if present, or call to get a new one\r\n // if it is expired or near expiring.\r\n //return await this.account.getIdToken();\r\n //let test = this.msalApplication.getAccount();\r\n //return test.idToken;\r\n //this.account\r\n\r\n let test = this.account;\r\n return null;\r\n }\r\n\r\n\r\n\r\n SignIn() {\r\n let request = {\r\n scopes: [\r\n 'User.ReadBasic.All',\r\n 'email',\r\n 'profile',\r\n 'User.Read',\r\n 'Mail.Read',\r\n 'People.Read',\r\n 'offline_access'\r\n ],\r\n prompt: \"select_account\"\r\n }\r\n\r\n if (this.account) request.loginHint = this.account.username;\r\n\r\n\r\n // this will redirect the web application to the Microsoft Identity platform sign in pages.\r\n // no code will execute after this point.\r\n this.msalApplication.loginRedirect(request);\r\n }\r\n\r\n SignOut() {\r\n if (!this.account) {\r\n // no cached login to signout\r\n return;\r\n }\r\n\r\n let accountInfo = this.msalApplication.getAccountByUsername(this.account?.username);\r\n\r\n if (accountInfo !== null) {\r\n let logoutRequestPayload = {\r\n account: accountInfo\r\n }\r\n\r\n this.msalApplication.logout(logoutRequestPayload)\r\n }\r\n }\r\n}\r\n\r\nexport default AuthService;\r\n","// 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 users)\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://cra.link/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.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\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 caches.keys().then(cacheNames => {\r\n cacheNames.forEach(cacheName => {\r\n caches.delete(cacheName);\r\n });\r\n });\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://cra.link/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://cra.link/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 headers: { 'Service-Worker': 'script' },\r\n })\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('No internet connection found. App is running in offline mode.');\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then((registration) => {\r\n registration.unregister();\r\n })\r\n .catch((error) => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import styled from 'styled-components';\r\nimport * as Variables from '../../ThemeVariables';\r\n\r\n\r\nexport const StatusWrapper = styled.div`\r\n *{\r\n padding:0;\r\n margin:0;\r\n border:0;\r\n box-sizing:border-box;\r\n position:relative;\r\n font-family: 'Montserrat', sans-serif;\r\n }\r\n\r\n background: #F10000;\r\n width: 100%;\r\n height: 100%;\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n`;\r\n\r\nexport const StatusInner = styled.div`\r\n text-align: center;\r\n color: white;\r\n font-size: 35px;\r\n\r\n h4 {\r\n font-size: 35px;\r\n }\r\n p {\r\n font-size: 24px;\r\n }\r\n`;\r\nexport const StatusLogo = styled.div`\r\n margin-bottom: 25px;\r\n`;\r\n","export default __webpack_public_path__ + \"static/media/logo.fe8cd13e.svg\";","import styled from 'styled-components'\r\nimport * as Variables from './ThemeVariables';\r\n//import { WrappedToastContainer } from '../layout/WrappedToastContainer';\r\nexport const Wrapper = styled.div`\r\n\t&.darkmode {\r\n\t\tbackground: ${Variables.outerColumnBackground.darkMode};\r\n\t}\r\n`;\r\n\r\nexport const Body = styled.div`\r\n\tmin-height: ${Variables.appHeight};\r\n width: 100%;\r\n overflow-x: hidden;\r\n\t@media(min-width: ${Variables.md}) {\r\n\t\tmax-height: ${Variables.appHeight};\r\n\t\toverflow: hidden;\r\n\t}\r\n background: #f2f3f5;\r\n\r\n &.darkmode {\r\n\t\tbackground: ${Variables.outerColumnBackground.darkMode};\r\n\t}\r\n`;\r\n\r\nexport const Loader = styled.div`\r\n width: 100%;\r\n height: 100vh;\r\n background: #F10000;\r\n text-align: center;\r\n padding-top: 40vh;\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n z-index: 10;\r\n transition: all .5s;\r\n\r\n &.loader--hidden {\r\n margin-top: -100vh;\r\n opacity: 0;\r\n }\r\n &--visible {\r\n margin-top: 0;\r\n opacity: 1;\r\n }\r\n\r\n`;\r\n\r\nexport const LoaderText = styled.p`\r\n color: #FFF;\r\n margin-bottom: 50px;\r\n font-weight: bold;\r\n font-size: 2em;\r\n\r\n small {\r\n font-size: 12px;\r\n font-weight: normal;\r\n margin-top: 40px;\r\n }\r\n`;\r\n\r\n/*\r\nexport const StyledToastContainer = styled(WrappedToastContainer).attrs({\r\n // custom props\r\n})`\r\n .Toastify__toast-container {\r\n \t&--top-right {\r\n \t\ttop: 75px;\r\n \t}\r\n }\r\n .Toastify__toast {\r\n \tbackground: white;\r\n \tcolor: black;\r\n \tpadding: 25px 15px;\r\n }\r\n .Toastify__toast--error {}\r\n .Toastify__toast--warning {}\r\n .Toastify__toast--success {}\r\n .Toastify__toast-body {}\r\n .Toastify__progress-bar {\r\n \tbackground: ${Variables.mainColor}\r\n }\r\n .Toastify__close-button {\r\n \topacity: 1;\r\n\r\n }\r\n`;*/\r\n","import React, { Component } from 'react';\r\nimport { Offline, Online } from \"react-detect-offline\";\r\nimport * as Styled from './styled';\r\nimport Logo from '../../assets/img/logo.svg';\r\nclass AppStatus extends Component {\r\n\r\n render() {\r\n return(\r\n\r\n \r\n \r\n \r\n \r\n \r\n

Offline..

\r\n

Je hebt geen internetverbinding

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

Online..

\r\n

Het lijkt erop dat er iets is misgegaan tijdens het aanmelden

\r\n
\r\n
\r\n
\r\n\r\n )\r\n }\r\n}\r\n\r\nexport default AppStatus;\r\n","import { createGlobalStyle } from 'styled-components'\r\nimport * as Variables from './ThemeVariables';\r\n\r\nexport const GlobalStyle = createGlobalStyle`\r\n body {\r\n\t-webkit-font-smoothing: antialiased;\r\n\t-moz-osx-font-smoothing: grayscale;\r\n\r\n }\r\n\r\n *{\r\n \tpadding:0;\r\n \tmargin:0;\r\n \tborder:0;\r\n \tbox-sizing:border-box;\r\n \tposition:relative;\r\n \tfont-family: 'Montserrat', sans-serif;\r\n }\r\n\r\n p {\r\n \tfont-size: 18px;\r\n \tfont-weight: 400;\r\n }\r\n\r\n\r\n\r\n\r\n.ReactTable .rt-thead .rt-th, .ReactTable .rt-thead .rt-td {\r\n box-shadow: none !important;\r\n border: none !important;\r\n}\r\n\r\n.ReactTable {\r\n border: none !important;\r\n .rt-thead{\r\n &.-header {\r\n box-shadow: none !important;\r\n\r\n }\r\n\r\n .rt-th {\r\n text-align: left !important;\r\n font-weight: bold !important;\r\n }\r\n }\r\n\r\n .rt-tbody {\r\n .rt-tr-group {\r\n border: none !important;\r\n\r\n }\r\n }\r\n\r\n .rt-tr {\r\n padding: 10px;\r\n margin-bottom: 15px;\r\n background: white;\r\n box-shadow: 0px 0px 5px 4px rgba(0,0,0,0.03) !important;\r\n border-radius: 8px;\r\n cursor: pointer;\r\n }\r\n\r\n .-pagination {\r\n border: none !important;\r\n box-shadow: none !important;\r\n }\r\n\r\n .pagination-bottom {\r\n .-pagination {\r\n .-previous, .-next, .-pageInfo, .select-wrap {\r\n padding: 10px;\r\n margin-bottom: 15px;\r\n background: white;\r\n box-shadow: 0px 0px 5px 4px rgba(0,0,0,0.03) !important;\r\n border-radius: 8px;\r\n cursor: pointer;\r\n button {\r\n background: none;\r\n color: black;\r\n &:hover {\r\n background: none;\r\n color: black;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n.darkmode {\r\n .ReactTable {\r\n .rt-thead{\r\n .rt-th {\r\n color: white;\r\n }\r\n }\r\n\r\n .rt-tr {\r\n background:${Variables.tileBackground.darkMode};\r\n color: white;\r\n }\r\n\r\n .-pageInfo {\r\n color: white !important;\r\n }\r\n\r\n .pagination-bottom {\r\n .-pagination {\r\n .-previous, .-next, .-pageInfo, .select-wrap {\r\n background: ${Variables.tileBackground.darkMode};\r\n button {\r\n color: white;\r\n &:hover {\r\n color: white;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n`;\r\n","import React, { Component, Suspense, useEffect, useState } from 'react';\r\nimport App from './App';\r\nimport buildMsalConfig from './msalConfig';\r\nimport AppStatus from './components/appStatus';\r\nimport AuthService from './AuthService';\r\nimport { connect } from 'react-redux';\r\nimport * as Styled from './styled';\r\nimport { Offline, Online } from \"react-detect-offline\";\r\nimport { GlobalStyle } from './GlobalStyle';\r\n\r\nconst AppWrapper = (props) => {\r\n const [authService, setAuthService] = useState(false);\r\n const [error, setError] = useState(false);\r\n const [isAppOnline, setIsAppOnline] = useState(window.applicationOnline);\r\n\r\n const _handleAuthentication = async () => {\r\n let config = buildMsalConfig();\r\n let authService = new AuthService(config);\r\n authService.HandlePageLoadEvent().then(() => {\r\n setAuthService(authService);\r\n setError(false);\r\n\r\n }).catch((error) => {\r\n setAuthService(authService);\r\n setError(error.stack);\r\n });\r\n }\r\n\r\n\r\n useEffect(() => {\r\n\r\n if (isAppOnline && !authService) {\r\n _handleAuthentication();\r\n }\r\n\r\n document.querySelector('title').innerHTML = window.tenantConfig.title;\r\n if (window.tenantConfig.favicon) {\r\n document.querySelector('link[rel=\"shortcut icon\"]').setAttribute('href', window.tenantConfig.favicon);\r\n }\r\n // -- Unmount\r\n return () => {\r\n\r\n }\r\n }, [isAppOnline])\r\n\r\n const _setAppOnlineState = (bool) => {\r\n\r\n if (bool && !window.applicationOnline) {\r\n window.applicationOnline = bool\r\n }\r\n\r\n setIsAppOnline(bool);\r\n }\r\n\r\n if (authService) {\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 _setAppOnlineState(status)} polling={{ url: \"https://ipv4.icanhazip.com\" }}>\r\n \r\n Internetverbinding verloren\r\n {\"Loader\"}\r\n \r\n \r\n _setAppOnlineState(status)} polling={{ url: \"https://ipv4.icanhazip.com\" }}>\r\n \r\n Bezig met aanmelden\r\n {\"Loader\"}\r\n \r\n \r\n \r\n )\r\n\r\n}\r\n\r\n\r\nexport default AppWrapper;\r\n","/* eslint-disable */\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App';\r\nimport buildMsalConfig from './msalConfig';\r\nimport AuthService from './AuthService';\r\nimport * as serviceWorkerRegistration from './serviceWorkerRegistration';\r\nimport { PublicClientApplication } from '@azure/msal-browser';\r\nimport AppWrapper from './AppWrapper';\r\nimport localForage from \"localforage\";\r\n\r\nconst isLocalhost = Boolean(\r\n window.location === 5000 ||\r\n window.location.hostname === 'localhost' ||\r\n window.location.hostname === '[::1]' ||\r\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\r\n);\r\n\r\n\r\nwindow.addEventListener(\"load\", () => {\r\n function handleNetworkChange(event) {\r\n if (navigator.onLine) {\r\n window.applicationOnline = true;\r\n } else {\r\n window.applicationOnline = false;\r\n }\r\n }\r\n window.addEventListener(\"online\", handleNetworkChange);\r\n window.addEventListener(\"offline\", handleNetworkChange);\r\n});\r\n\r\nif (navigator.onLine) {\r\n window.applicationOnline = true;\r\n} else {\r\n window.applicationOnline = false;\r\n}\r\n\r\nif ( isLocalhost ) {\r\n window.apiURL = 'http://localhost:1337';\r\n} else {\r\n window.apiURL = '';\r\n}\r\n\r\nlet startApp = () => {\r\n ReactDOM.render(, document.getElementById('root'));\r\n}\r\n\r\nlet setup = async (startAfterSetup = true) => {\r\n const headers = {\r\n mode: 'cors',\r\n headers: {\r\n 'Access-Control-Allow-Origin':'*'\r\n }\r\n }\r\n await fetch(window.apiURL + '/api/setup', headers).then(response => response.json()).then(data => {\r\n data.notificationEnabled = false; //force\r\n\r\n if (window.tenantConfig?.version && window.tenantConfig?.version !== data.version) {\r\n console.log('reset!');\r\n localStorage.clear();\r\n localForage.clear();\r\n window.clearPersist = true;\r\n }\r\n\r\n window.tenantConfig = { ...window.tenantConfig, ...data };\r\n\r\n if (window.tenantConfig.common == \"true\") {\r\n window.tenantConfig.common = true;\r\n } else {\r\n window.tenantConfig.common = false;\r\n }\r\n window.tenantConfig.popup = true;\r\n\r\n window.tenantConfig.selfServiceGroup == data.selfServiceGroup\r\n\r\n //legacy\r\n window.tenantConfig.newsTreshold = 40;\r\n window.tenantConfig.blogTreshold = 4;\r\n window.tenantConfig.eventsTreshold = 4;\r\n\r\n window.userSettings = {};\r\n window.userSettings.rights = {};\r\n\r\n localStorage.setItem('tenantConfig', JSON.stringify(window.tenantConfig));\r\n\r\n if ( startAfterSetup ) {\r\n startApp();\r\n }\r\n });\r\n}\r\n\r\nif ( localStorage.getItem('tenantConfig') ) {\r\n window.tenantConfig = JSON.parse(localStorage.getItem('tenantConfig') );\r\n\r\n if ( window.applicationOnline ){\r\n setup(false);\r\n }\r\n\r\n startApp();\r\n} else {\r\n setup();\r\n}\r\n\r\nserviceWorkerRegistration.register();"],"sourceRoot":""}