{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/views/recorder/components/utils.ts","webpack:///./src/core/models/sessions/BaselineAnalysis.ts","webpack:///./src/core/utils/seminars.ts","webpack:///./src/components/layout/Navigation.vue?ed3e","webpack:///./src/assets/prezp_logo.png","webpack:///./src/core/utils/auth.ts","webpack:///./src/core/models/FileObject.ts","webpack:///./src/components/layout/components/LanguageSelect.vue?dd75","webpack:///./src/core/plugins/vuetify/index.ts","webpack:///./src/core/utils/LocalStorage.ts","webpack:///./src/core/router/utils.ts","webpack:///./src/assets/brand_logo_small.svg","webpack:///./src/core/models/sessions/Timestamp.ts","webpack:///./src/core/models/sessions/Session.ts","webpack:///./src/core/models/sessions/SharedSession.ts","webpack:///./src/core/models/sessions/ChartEntry.ts","webpack:///./src/core/models/sessions/FileInfo.ts","webpack:///./src/core/models/sessions/PDFInfo.ts","webpack:///./src/core/models/sessions/HeatMapEntry.ts","webpack:///./src/core/models/sessions/MovementAnalysis.ts","webpack:///./src/core/models/sessions/TextAnalysis.ts","webpack:///./src/core/models/sessions/AudioAnalysis.ts","webpack:///./src/core/models/sessions/Sentiment.ts","webpack:///./src/core/models/sessions/interfaces.ts","webpack:///./src/core/models/sessions/SentimentSentence.ts","webpack:///./src/core/models/sessions/MetaAnalysis.ts","webpack:///./src/core/models/sessions/MetaSettings.ts","webpack:///./src/core/models/sessions/Slide.ts","webpack:///./src/core/models/interfaces.ts","webpack:///./src/core/models/Permission.ts","webpack:///./src/core/models/User.ts","webpack:///./src/core/models/Article.ts","webpack:///./src/core/models/Presentation.ts","webpack:///./src/core/models/HowToVideo.ts","webpack:///./src/core/models/groups/GroupUser.ts","webpack:///./src/core/models/groups/GroupVideo.ts","webpack:///./src/core/models/groups/GroupPost.ts","webpack:///./src/core/models/groups/Group.ts","webpack:///./src/core/models/goals/ConditionType.ts","webpack:///./src/core/models/goals/AssignedUser.ts","webpack:///./src/core/models/goals/Goal.ts","webpack:///./src/core/models/goals/AssignedGoal.ts","webpack:///./src/core/models/meetings/Meeting.ts","webpack:///./src/core/models/meetings/MeetingTypes.ts","webpack:///./src/core/models/Notification.ts","webpack:///./src/core/models/company/Employee.ts","webpack:///./src/core/models/company/Company.ts","webpack:///./src/core/models/company/Product.ts","webpack:///./src/components/layout/components/LanguageSelect.vue?09d8","webpack:///./src/components/layout/components/LanguageSelect.vue","webpack:///./src/components/layout/components/LanguageSelect.vue?56a7","webpack:///./src/components/layout/components/LanguageSelect.vue?01dd","webpack:///./src/components/layout/AppBar.vue?0c44","webpack:///./src/core/models/Role.ts","webpack:///./src/core/plugins/i18n/en.ts","webpack:///./src/core/plugins/i18n/de.ts","webpack:///./src/core/plugins/i18n/index.ts","webpack:///./src/core/router/index.ts","webpack:///./src/core/utils/parsers.ts","webpack:///./src/settings.ts","webpack:///./src/core/utils/constants.ts","webpack:///./src/core/models/UserData.ts","webpack:///./src/core/store/root/actions.ts","webpack:///./src/core/store/root/mutations.ts","webpack:///./src/core/store/root/getters.ts","webpack:///./src/core/store/root/index.ts","webpack:///./src/core/store/profile/getters.ts","webpack:///./src/core/store/profile/actions.ts","webpack:///./src/core/store/profile/mutations.ts","webpack:///./src/core/store/profile/index.ts","webpack:///./src/core/store/sessions/getters.ts","webpack:///./src/core/utils/api-proxy.ts","webpack:///./src/core/store/sessions/actions.ts","webpack:///./src/core/store/sessions/mutations.ts","webpack:///./src/core/store/sessions/index.ts","webpack:///./src/core/store/presentations/getters.ts","webpack:///./src/core/store/presentations/actions.ts","webpack:///./src/core/store/presentations/mutations.ts","webpack:///./src/core/store/presentations/index.ts","webpack:///./src/core/store/groups/getters.ts","webpack:///./src/core/store/groups/posts/getters.ts","webpack:///./src/core/store/groups/videos/getters.ts","webpack:///./src/core/store/groups/users/getters.ts","webpack:///./src/core/store/groups/actions.ts","webpack:///./src/core/store/groups/posts/actions.ts","webpack:///./src/core/store/groups/videos/actions.ts","webpack:///./src/core/store/groups/users/actions.ts","webpack:///./src/core/store/groups/mutations.ts","webpack:///./src/core/store/groups/index.ts","webpack:///./src/core/store/news/getters.ts","webpack:///./src/core/store/news/actions.ts","webpack:///./src/core/store/news/mutations.ts","webpack:///./src/core/store/news/index.ts","webpack:///./src/core/store/goals/getters.ts","webpack:///./src/core/store/goals/actions.ts","webpack:///./src/core/store/goals/mutations.ts","webpack:///./src/core/store/goals/index.ts","webpack:///./src/core/store/meetings/getters.ts","webpack:///./src/core/store/meetings/actions.ts","webpack:///./src/core/store/meetings/index.ts","webpack:///./src/core/store/company/getters.ts","webpack:///./src/core/store/company/actions.ts","webpack:///./src/core/store/company/mutations.ts","webpack:///./src/core/store/company/index.ts","webpack:///./src/core/store/audio/actions.ts","webpack:///./src/core/store/audio/getters.ts","webpack:///./src/core/store/audio/index.ts","webpack:///./src/core/store/products/actions.ts","webpack:///./src/core/store/products/getters.ts","webpack:///./src/core/store/products/mutations.ts","webpack:///./src/core/store/products/index.ts","webpack:///./src/core/store/currentSession/actions.ts","webpack:///./src/core/store/currentSession/getters.ts","webpack:///./src/core/store/currentSession/index.ts","webpack:///./src/core/store/managed/getters.ts","webpack:///./src/core/store/managed/actions.ts","webpack:///./src/core/store/managed/index.ts","webpack:///./src/core/store/dashboard/actions.ts","webpack:///./src/core/store/dashboard/getters.ts","webpack:///./src/core/store/dashboard/index.ts","webpack:///./src/core/store/invitations/actions.ts","webpack:///./src/core/store/invitations/getters.ts","webpack:///./src/core/store/invitations/index.ts","webpack:///./src/core/store/seminars/actions.ts","webpack:///./src/core/store/seminars/getters.ts","webpack:///./src/core/store/seminars/index.ts","webpack:///./src/core/store/notifications/getters.ts","webpack:///./src/core/store/notifications/actions.ts","webpack:///./src/core/store/notifications/mutations.ts","webpack:///./src/core/store/notifications/index.ts","webpack:///./src/core/store/tenants/getters.ts","webpack:///./src/core/store/tenants/actions.ts","webpack:///./src/core/store/tenants/index.ts","webpack:///./src/core/store/contact/actions.ts","webpack:///./src/core/store/contact/getters.ts","webpack:///./src/core/store/contact/mutations.ts","webpack:///./src/core/store/contact/index.ts","webpack:///./src/core/store/howTos/getters.ts","webpack:///./src/core/store/howTos/actions.ts","webpack:///./src/core/store/howTos/index.ts","webpack:///./src/core/store/index.ts","webpack:///./src/components/layout/components/ProfileDropdown.vue?97a3","webpack:///./src/views lazy ^\\.\\/.*$ namespace object","webpack:///./src/core/utils/api.ts","webpack:///./src/assets/prezp_logo_alternate.png","webpack:///./src/App.vue?5b91","webpack:///./src/components/layout/util.ts","webpack:///./src/components/layout/AppBar.vue?e129","webpack:///./src/components/layout/components/BrowserWarning.vue?34ad","webpack:///./src/components/layout/components/BrowserWarning.vue","webpack:///./src/components/layout/components/BrowserWarning.vue?808c","webpack:///./src/components/layout/components/BrowserWarning.vue?58c9","webpack:///./src/components/layout/components/CurrentUser.vue?cf6d","webpack:///./src/components/layout/components/CurrentUser.vue","webpack:///./src/components/layout/components/CurrentUser.vue?65de","webpack:///./src/components/layout/components/CurrentUser.vue?db71","webpack:///./src/components/layout/components/Notifications.vue?6937","webpack:///./src/components/layout/components/Notifications.vue","webpack:///./src/components/layout/components/Notifications.vue?b5b8","webpack:///./src/components/layout/components/Notifications.vue?fefa","webpack:///./src/components/layout/components/ProfileDropdown.vue?df41","webpack:///./src/components/layout/components/ProfileDropdown.vue","webpack:///./src/components/layout/components/ProfileDropdown.vue?368f","webpack:///./src/components/layout/components/ProfileDropdown.vue?4b0e","webpack:///./src/components/layout/components/QuotaBar.vue?ffe4","webpack:///./src/components/layout/components/QuotaBar.vue","webpack:///./src/components/layout/components/QuotaBar.vue?0fc8","webpack:///./src/components/layout/components/QuotaBar.vue?5e1a","webpack:///./src/components/layout/components/SeminarSelect.vue?5487","webpack:///./src/components/layout/components/SeminarSelect.vue","webpack:///./src/components/layout/components/SeminarSelect.vue?caa3","webpack:///./src/components/layout/components/SeminarSelect.vue?cebd","webpack:///./src/components/layout/components/ToolbarMenu.vue?8973","webpack:///./src/components/layout/components/ToolbarMenu.vue","webpack:///./src/components/layout/components/ToolbarMenu.vue?0481","webpack:///./src/components/layout/components/ToolbarMenu.vue?08e0","webpack:///./src/components/layout/components/UpgradeButton.vue?401c","webpack:///./src/components/layout/components/UpgradeButton.vue","webpack:///./src/components/layout/components/UpgradeButton.vue?3654","webpack:///./src/components/layout/components/UpgradeButton.vue?a871","webpack:///./src/components/layout/AppBar.vue","webpack:///./src/components/layout/AppBar.vue?e658","webpack:///./src/components/layout/AppBar.vue?18b6","webpack:///./src/components/layout/Navigation.vue?e8be","webpack:///./src/components/layout/components/add-session/UploadAudio.vue?9945","webpack:///./src/components/layout/components/add-session/UploadSession.vue?f56d","webpack:///./src/components/layout/components/add-session/UploadSession.vue","webpack:///./src/components/layout/components/add-session/UploadSession.vue?a508","webpack:///./src/components/layout/components/add-session/UploadSession.vue?30f8","webpack:///./src/components/layout/components/add-session/UploadAudio.vue","webpack:///./src/components/layout/components/add-session/UploadAudio.vue?4787","webpack:///./src/components/layout/components/add-session/UploadAudio.vue?6dd0","webpack:///./src/components/layout/components/add-session/UploadVideo.vue?c642","webpack:///./src/components/layout/components/add-session/UploadVideo.vue","webpack:///./src/components/layout/components/add-session/UploadVideo.vue?f424","webpack:///./src/components/layout/components/add-session/UploadVideo.vue?df17","webpack:///./src/components/layout/components/add-session/RecordSession.vue?a485","webpack:///./src/components/layout/components/add-session/RecordSession.vue","webpack:///./src/components/layout/components/add-session/RecordSession.vue?96a7","webpack:///./src/components/layout/components/add-session/RecordSession.vue?cee0","webpack:///./src/components/layout/components/Menu.vue?5069","webpack:///./src/components/layout/components/Menu.vue","webpack:///./src/components/layout/components/Menu.vue?467c","webpack:///./src/components/layout/components/Menu.vue?f12a","webpack:///./src/components/layout/Navigation.vue","webpack:///./src/components/layout/Navigation.vue?52c0","webpack:///./src/components/layout/Navigation.vue?b1fc","webpack:///./src/components/layout/Footer.vue?c72b","webpack:///./src/components/layout/Footer.vue","webpack:///./src/components/layout/Footer.vue?ea9f","webpack:///./src/components/layout/Footer.vue?a33e","webpack:///./src/components/common/TourProgress.vue?23a2","webpack:///./src/components/common/TourProgress.vue","webpack:///./src/components/common/TourProgress.vue?3158","webpack:///./src/components/common/TourProgress.vue?20ad","webpack:///./src/components/common/SupportFAB.vue?500c","webpack:///./src/components/common/SupportFAB.vue","webpack:///./src/components/common/SupportFAB.vue?540c","webpack:///./src/components/common/SupportFAB.vue?1580","webpack:///./src/App.vue","webpack:///./src/App.vue?5eb4","webpack:///./src/App.vue?315a","webpack:///./src/core/plugins/signalrconnection/sessionHub.ts","webpack:///./src/core/plugins/signalrconnection/notificationHub.ts","webpack:///./src/main.ts","webpack:///./src/assets/prezp_avatar.jpg","webpack:///./src/App.vue?5399","webpack:///./src/components/layout/components/BrowserWarning.vue?2653"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","convertDuration","duration","seconds","ss","Math","floor","toString","padStart","minutes","mm","hours","hh","BaselineAnalysis","this","pitch","volume","has","analyzed","averagePitch","averageVolume","round","elementStatus","seminar","submissions","filter","x","elementId","id","subs","skipped","skippedSubs","completed","numReq","requiredSubmissions","numReqShared","rateableSubmissions","requiredNumShared","sharedSubs","isShared","progress","blocksInOrder","order","JSON","parse","stringify","arr","blocks","sort","a","b","blockIndex","bFind","find","blockId","some","block","elements","blockElements","elementIndex","el","requestFromElement","FormData","title","body","seminarId","append","Number","maxNumShared","maxSubmissions","isTimed","expectedLen","maxLen","forElement","answers","sentences","words","categories","text","requiredScore","conditions","map","Array","isArray","elementTypes","videoTypes","typeName","typeToEndpoint","base","emptyElement","videoURI","goalId","isAssignedToUser","hasPermissions","permittedClaims","permissions","store","getters","userClaims","includes","FileObject","size","uri","Name","Size","Type","URI","Vue","use","Vuetify","lightTheme","primary","accent","accentText","lightgray","lightgray2","prezpRed","main","other","darkgray","green","secondary","anchor","background","lightgray3","prezpGreen","menu","darkTheme","options","theme","customProperties","themes","light","dark","process","StorageModel","locale","userRole","Role","User","SubscriberFree","miniMenu","darkMode","accessToken","shouldShowRecordingTip","inputDevice","videoInputDevice","refreshToken","welcomeDialog","recordLimitDialog","VRMode","json","obj","storage","LocalStorage","item","localStorage","getItem","getStorage","token","setItem","roles","isMini","dispatchEvent","CustomEvent","detail","tip","setAccessToken","setRefreshToken","setInputDevice","setVideoInputDevice","setMenuMini","setUserRole","setDarkMode","setWelcomeDialog","setRecordLimitDialog","setVRMode","isAuth","Storage","getAccessToken","hasRole","permittedRoles","getUserRole","authGuard","_to","_from","next","adminGuard","liveTranscriptionGuard","analysisGuard","seminarGuard","challengeGuard","publicGroupGuard","Timestamp","index","time","slideURI","slideIndex","Session","audioUrl","recording","createdAt","movement","heatmap","video","pdf","transcriptionStatus","audioAnalysis","score","audioFile","videoFromRecording","videoFeedback","timestamps","slides","sharedWith","pres","averages","status","scores","aiFeedback","AnalysisStatus","NotStarted","Loaded","Loading","ID","AudioUrl","RecordingDate","Date","CreatedAt","timespan","split","total","SessionLength","MovementAnalysis","parseMovementAnalysis","VideoInfo","FileInfo","PDFInfo","pdfUri","TranscriptionStatus","TextAnalysis","parseTextAnalysis","AudioAnalysis","parseAudioAnalysis","SessionScore","SessionScores","AudioFile","VideoFromRecording","VideoFeedback","Completed","Timestamps","Slides","SharedWith","PresentationId","Averages","AiFeedback","Heatmap","entry","HeatMapEntry","y","count","responseData","parseSingleSession","audio","audioSasUri","date","recordingDate","sessionLength","movementAnalysis","videoInfo","pdfInfo","textAnalysis","sessionScore","parseFile","videoFile","transcriptionSlides","presId","presentationId","analysisStatus","Succeeded","sessionScores","res","Empty","SharedSession","sessionId","sessionName","sessionStatus","sharingUserName","sharingUserId","profilePicture","hasFeedback","hasFeedbackBeenRead","ChartEntry","timestamp","Value","Title","PdfUri","X","Y","Count","handMovement","headMovement","avgHand","avgHead","totalHand","totalHead","HandMovement","HeadMovement","AverageHandMovement","AverageHeadMovement","TotalHandMovement","TotalHeadMovement","analysis","blank","hand","parseEntries","averageHandMovement","averageHeadMovement","totalHandMovement","totalHeadMovement","entries","timeStamp","positive","negative","neutral","keyphrases","keywords","wpm","lWords","PositiveScore","NegativeScore","NeutralScore","Sentences","Keyphrases","Keywords","WordsPerMinute","Text","LookupWords","Words","SentimentSentence","parseSentence","positiveScore","negativeScore","neutralScore","keyPhrases","keyWords","wordsPerMinute","lookupWords","vol","pauses","avgPitch","avgVolume","avgPause","totalPause","isCompleted","times","calcLen","ppm","Pitch","Volume","Pauses","AveragePitch","AverageVolume","AveragePauses","TotalPauseTime","IsCompleted","TimedAverages","CalculationLength","PausesPerMinute","averagePauseTime","totalPauseTime","timedAverages","calculationLength","pausesPerMinute","Sentiment","LookupWordType","sent","pos","neg","neut","off","dur","Offset","Duration","sentence","sentiment","offset","MetaAnalysis","attributeType","avgFormerSessions","avgLatterSessions","deviation","mapper","metaAnalysisFormerSessions","metaAnalysisLatterSessions","numAvailableSessions","numSessionsPerSet","MetaSettings","attributes","Attributes","NumOfSessions","Slide","Uri","Permission","email","username","emailVerified","customerId","paymentMethodId","pfp","show","step","hasSubscription","ownsCompany","subscription","Email","Username","Roles","EmailVerified","CustomerId","PaymentMethodId","Permissions","UserClaims","Pfp","ShowTutorial","TutorialStep","isActive","roleClaims","showTutorial","tutorialStep","Article","postedAt","bannerImage","files","Body","PostedAt","BannerImage","Files","f","Presentation","file","inUse","UploadDate","File","InUse","presSlides","HowToVideo","description","uploader","Description","Uploader","Video","at","GroupUser","joinedAt","isOwner","isManager","isVisible","JoinedAt","IsOwner","IsManager","IsVisible","groupUser","joined","GroupVideo","groupId","uploadedAt","GroupID","UploadedAt","GroupPost","poster","banner","Poster","Group","isVisibleToCompany","isPublic","pinnedVideoId","pinnedPostId","users","videos","posts","IsVisibleToCompany","IsPublic","PinnedVideoID","PinnedPostID","Users","Videos","Posts","group","created","u","parseGroupUser","v","parseGroupVideo","parseGroupPost","pinnedVideoID","pinnedPostID","ConditionType","AssignedUser","Progress","ProgressText","Goal","creator","Creator","Target","Conditions","AssingedUsers","dueDate","toLowerCase","DueDate","assignedUsers","AssignedGoal","cAt","cond","pr","isComp","st","bt","et","GoalId","SeminarTitle","BlockTitle","ElementTitle","ProgressValue","ProgressColor","Meeting","subject","crAt","start","end","link","Subject","StartDate","EndDate","MeetingLink","InvitedUsers","startDate","meetingLink","invitedUsers","MeetingTypes","Custom","disabled","Blizz","NotificationType","Employee","HasAccepted","hasAccepted","Company","tier","companyUsers","IsActive","Tier","Employees","Owner","Product","monthlyPrice","yearlyPrice","unitAmount","metadata","active","images","unitAmountMonthly","unitAmountYearly","unit_amount","Notification","user","submissionId","getNotificatoinType","NotificationUser","FeedbackReceived","RateVideo","RatingReceived","firstname","lastname","render","_vm","_h","$createElement","_c","_self","VMenu","attrs","scopedSlots","_u","fn","ref","on","VBtn","_g","staticClass","VAvatar","_v","_s","VList","VListItemGroup","model","callback","$$v","expression","_l","lang","VListItem","$event","setLocale","staticRenderFns","LanguageSelect","langs","en","de","$i18n","availableLocales","Settings","defaultLocale","getLocale","Component","component","dashboardPage","yourGoalsCard","yourGoals","haveCompleted","loadingGoals","groupsCard","groups","viewAll","information","notGroupMember","groupsLoading","videosCard","loadingVids","noGroups","newsCard","news","readAll","posted","readMore","noNews","newsLoading","sessionsCard","sessions","pitchHdg","pitchSubHdgDeeper","ptichSubHdgHigher","speechSpdHdg","speechSpdSubHdgFaster","speechSpdSubHdgSlower","hertz400","hertz600","thisWeek","today","yesterday","presentationsCard","presentations","mb","empty","topPanel","settings","mail","refresh","logout","leftPanel","dashboard","goals","meetings","adminPanel","sessionsPage","noSessions","sessionsFor","yourSessionsSection","yourSessions","sessionFilters","filterByDate","beforeDate","afterDate","betweenTwoDates","filterByDuration","timeSpan","longerThan","shorterThan","minTime","maxTime","filterByName","startsWith","endsWith","exactMatch","searchTerm","caseInsensitive","filterByScore","greaterThanScore","lessThanScore","scoreRange","applyButton","clearButton","cancelButton","fetching","sessionsListSection","sessionsList","checkSessions","audioAnalHdg","aiBasedAnal","audioAnalNotComplete","textAnalHdg","textAnalNotComplete","movementAnalHdg","movementAnalNoData","points","volumeWarning","movementAnalCard","movementAnal","headMovementOverTime","headMoTInfo","avgHeadMovement","infoHeadM","handMovementOverTime","handMoTInfo","avgHandMovement","infoHandM","distance","changeOverTime","timePercent","speechSpeedCard","cardTitle","wpmInfo","wpmTimeUnit","wpmNotice","infoTitle","infoText","scoresCard","overall","overallTip","wpmTip","wpmFasterTip","wpmSlowerTip","pausesTip","morePausesTip","lessPausesTip","repetition","repetitionTip","filler","fillerTip","fillerTipWordlist","fillerTipContinued","speaking","speakingTip","none","feedback","recordButton","recordTooltip","playButton","playTooltip","playDialogTitle","deleteButton","deleteTooltip","deleteConfirmationTitle","deletionInfo","confirmButton","uploadSessionSection","uploadSession","createSessionFromAudio","chooseLang","deleteSession","deleteSessionButton","youSureDelete","confirmSessDel","cancelSessDel","sessionsProgressSection","AnalyzingAudio","AnalyzingText","AudioDone","ExtractingAudio","Running","null","TextDone","sessionsProgress","analyzingSession","gettingSession","recentData","display","audioAnal","textAnal","pitchOverTimeCard","pitchOverTime","voicePitch","infoPoT","volumeOverTimeCard","volumeOverTime","voiceVolume","infoVoT","pausesOverTimeCard","pausesOverTime","textAnalCard","sentimentOverTime","infoSoT","speechSpeedOverTimeCard","speechSpeedOverTime","infoSSoT","sessionFiltersPopUp","minTimeMin","maxTimeMin","clear","cancel","ok","after","between","endDate","aiFeedbackTitle","aiSessionTitle","new","groupsSections","yourGroupsPage","yourGroups","addNewGroup","addGroupButton","groupName","groupUsers","emailRules","submitButton","groupPage","latestVideosCard","latestVideos","editVideo","deleteVideo","addVidButton","addNewVideo","vidTitle","info","vidDescription","pinVideo","pinfo","linkButton","vidLink","submit","fileButton","latestPostsCard","latestPosts","editPost","deletePost","addPostButton","postTitle","postBody","pinPost","uploadBannerImage","otherFiles","postButton","usersCard","remove","makeManager","removeManager","addUserCard","addANewUser","addUserButton","userEmail","latestNewsSections","latestNewsPage","latestNews","read","back","edit","delete","err404","artWithId","notFound","goBack","addArticleButton","addArticlePopUp","addNewArticle","articleTitle","cannotBeEmpty","articleBody","addBannerImg","bannerImg","addArticle","articleActions","editArticle","newArticleTitle","newArticleBody","done","deleteArticle","areYouSure","confirm","addNewsArticle","addBannerImage","goalsSections","assignedGoalsCard","assignedGoals","completeNumSessions","completedSessions","noGoalAssignments","createdGoalsCard","createdGoals","goalCreatedAtMonth","goalCreatedAtMinutes","sessionsThatCount","sentimentAim","pausesAim","pitchAim","volumeAim","noCreatedGoals","addGoalButton","addGoalPopUp","addNewGoal","addCondition","conditionNum","conditionType","targetScore","targetSentiment","targetPitch","targetVolume","pausesPerMin","targetPauses","assignToUsers","selectAll","deselectAll","assignSelf","meetingsSection","yourMeetings","allMeetingsCard","allMeetings","noSubject","noMeetings","joinMeeting","editMeeting","cancelMeeting","dateFuture","datePast","addMeetingButton","addNewMeetingPopUp","addNewMeeting","meetingSub","chooseStart","chooseEnd","assignUsers","additionalUsers","emailRule","setPass","pass","meetingTypes","blizzMeeting","customMeeting","customMeetingLink","addMeeting","dateError","adminPanelSection","allUsers","changeRole","changeRolePopUp","changeRoleUser","admin","owner","passwordResetSection","resetPass","newPassRequired","confirmPass","doneRedirect","couldNotResetPass","resetMyPass","backToForgotPass","passRequired","passMustBe","passMustContain","confirmPassRequired","passNoMatch","registerSection","fNameRequired","lNameRequired","firstName","lastName","companyName","emailRequired","passwordRequired","emailPlaceHolder","agree","termsNCond","agreeEnd","register","fName","fNameMin","lName","lNameMin","flName","invalidEmail","emailAlreadyTaken","passMin","passMax","passRules","passwordExplanation","passMismatch","tOS","registerFailed","validationError","termsAndServices","yourInfo","yourEmail","yourName","registerToCompany","andSeminar","onboardingSection","titleFirstPart","titleSecondPart","bannerContent","learnMoreBtn","footerLinkPrivacy","footerLinkLegal","footerLinkContact","loginSection","dontHaveAccount","signIn","unconfirmedEmail","wrongPasswordError","unauthorizedError","password","forgotPass","newUser","thanks","welcome","inactiveProfile","notActivated","forgotPassSection","signUp","wantToSignIn","login","haveAnAccount","sentEmail","followLinkResetPass","emailSent","sendReset","passMinRule","passMaxRule","confirmEmailSection","emailConfirmed","contWeb","contApp","wait","couldNotConfirm","backToLogin","registerDeviceSection","deviceAuthentication","toActivate","step1","step2","step3","continue","couldNotGetCode","couldNotAuthenticate","confirmDeviceSection","deviceConfirmed","deviceConnected","deviceActivation","enterCode","oneTimeCode","confirmDeviceCode","notInitiated","codeRequired","codeMin","codeMax","audioSection","startAnal","scoreDetailsSection","sentimentSection","breakdown","noAnalyzedSentence","sentimentRatio","pausesCard","spentSubVerb","spentPrep","number","average","timeUnit","warning","ppmCaps","movementRatioCard","movementRatio","noMoveData","managedUsersCard","usersManaged","noManagedUsers","keywordsCard","basedOn","audioCard","yourAudio","audioFileInfo","volumeCard","avgVoiceVol","pitchCard","avgVoicePitch","sentimentRatioCard","appBar","notConfirmedEmail","sending","sendEmail","toolbarMenu","profileDropdown","loading","profile","checkoutSettings","newName","rename","nameRule","groupItem","deleteGroup","deleteInfo","leave","join","groupLeft","groupJoined","confirmLeave","confirmJoin","addGroupCard","addGroup","publicGroup","nav","dash","list","submitted","company","howto","presentation","sessionList","sessionProgress","seminars","seminarsDash","seminarsProg","seminarsAdmin","global","close","requiredf","save","reset","nomatch","upload","invalidURL","retry","backToSignUp","toApp","backToDashboard","imprint","dataprotection","dataprotection_link","nodata","forms","invalidform","invalidfield","reqfield","audiofile","videofile","namelen3","invaliddata","errors","missing","contact","messagePlaceHolder","messageRequired","success","fail","upsess","button","subtitle","go","hint","smallprint","select","rec","vrrec","rectip","rectext","rejected_file","errorHeading","videoTooBig","videoTooBigDownloadHint","uploading","uploadComplete","upsessv","noText","transcription","stop","uploadRec","nextSlide","resume","pause","audioOnly","occurrences","slide","wpmLower","transAudio","awaitingText","quota","fast","relaxed","upgrade","unlimited","liveTranscription","exceeded","maxTimeWarning","heading","maxAllowedTime","maxAllowedHint","dontAskAgain","shortRecordWarning","recordingTime","quotaLeftBoth","recordingTimeHint","noCompatibleDevice","noDevicePermission","noMicrophonePermission","alerts","beforeLeaveRecording","beforeLeaveUpload","public","you","removeu","confrem","remself","addv","addnv","vidtitlehint","vidtitlelabel","viddesc","vidpinlabel","vidpinhint","vidlinklabel","novideos","delv","editv","original_title","author","uploaded_by","addp","addnp","posttitle","postbody","postpin","bannerlabel","bannerfile","includeInvited","noposts","delpost","editpost","addu","addnu","adddexcel","missingexcel","uemail","makeman","remman","nousers","inv","accept","decline","accepted","declined","nonesent","asmanager","asemployee","desc","ispinned","howtos","assigned","tassigned","noassigned","assigner","tcreated","nocreated","add","complete","aim","addc","assign","assignedu","assigny","deselect","conds","ctype","due","overdue","clarity","condtype","condmsg","duein","session_score","speech_speed","filler_words","speech_clarity","overall_score","confirmmsg","meet","expired","dl","ed","rm","no_slides","tiptitle","tiptext","hide","voll","volgood","volh","latest","sess","succ","fromVideo","removetext","mic","mute","devices","microphones","cameras","prefix","meta","dev","earlier","recent","names","units","notfound","lookup","enter","exact","cards","avg","pvolume","ppitch","bench","choose","change","neu","nochart","filters","vpos","vneg","menutitle","activesub","noactivesub","plans","priceInterval","nextPayment","subscriptionEnds","lastPayment","paymentMethod","subscriberSince","canceledOn","latestInvoice","invoiceNr","downloadInvoice","paid","monthly","yearly","monthlyPayment","yearlyPayment","month","year","perMonth","perYear","desctitle","payment","paymentTo","selectedPlan","subFor","billing","checkout","buyAsCompany","vatData","enterCompanyName","companyNameRequired","companyNameMin","enterVatId","vatIdRequired","vatIdInvalid","confirmVatId","couldNotValidate","vatIdConfirmed","vatIdValidated","vatServiceDown","vatServiceOverload","companyIncomplete","reverseCharge","product","cycle","price","netTotal","vat","coupon","redeem","redeemed","discountMonths","discountForever","forever","legalNotice","purchaseSubscription","pricing","orContinueFree","continueFree","compare","cancelSubscription","deleteSubscription","canceled","youCanceled","toSubscribeAgain","statement","action","updating","pending","billedMonthly","billedYearly","billedCustom","individual","savePercentYearly","saveAmountYearly","subscribe","contactSales","badge","explore","casual","recommended","business","features","relaxed_live_transcription","fast_live_transcription","relaxed_analysis","fast_analysis","relaxed_ai_feedback","fast_ai_feedback","limited_public_group","full_public_group","b2b_group","basic_tutorial","advanced_tutorial","expert_tutorial","coach_review_booking","coach_1on1_booking","challenge","course","vr_mode","sso","custom_idp","external_api","onboarding","tech_support","dev_support","sla","redundant_service","everything_basic","everything_premium","unlimited_relaxed_hours_and_workers","unlimited_fast_hours_and_workers","basic_tutorial_and_challenge","advanced_tutorial_and_challenge","expert_tutorial_challenge_and_course","seminar_and_public_group","seminar_public_and_b2b_group","sso_and_custom_idp","dev_tech_support","sla_and_redundant_service","partof","notpartof","createbtn","invitations","noinv","companies","getting","inactive","pdesc","changep","selectp","same","emp","esingle","invite","adde","eemail","rem","sure","crole","crolefor","noemp","charts","avghand","avghead","pitchot","scoreot","avgvp","avgvol","avgwpm","sscore","noneselected","shared","sharedWithOne","sharedWithNone","noOneToShareWith","private","noneseelcted","vis","updated","sharing","usersSharing","otherUsers","changeuser","nouser","sharedback","progresslimit","before","longer","shorter","greater","less","range","label","hanging","removeOneDialogTitle","removeOneDialogText","removeAllButton","removeAllDialogTitle","removeAllDialogText","snack","removeAll","removeSome","removeFail","word","normal","activeProduct","coupons","createNewProduct","createProduct","maximumAllowedEmployees","page","productDescription","productName","productPrice","products","recorder","tuts","uploadTooltip","usersPageHeader","verifyEmail","editTitle","editText","removeTitle","removeText","modifyTitle","inherit","counter","upload_audio","upload_video","session_training","can_share_with_all","teacher","student","live_transcription_relaxed","live_transcription_fast","analysis_relaxed","analysis_fast","ai_feedback_relaxed","ai_feedback_fast","public_group_limited","public_group_full","tutorial_basic","tutorial_advanced","tutorial_expert","coach_booking_review","coach_booking_1on1","support_tech","support_dev","subscriberFree","subscriberBasic","subscriberStandard","subscriberPremium","subscriberEnterprise","employee","manager","feature_perms","analysis_relaxed_count","analysis_fast_count","ai_feedback_relaxed_count","ai_feedback_fast_count","live_transcription_relaxed_seconds","live_transcription_fast_seconds","activeUser","search","indef","mins","days","months","both","activate","deactivate","until","activateMsg","def_pres","current","currentmsg","uploadBtn","removeBtn","rupdated","emails","alreadyin","comp","createfail","invited","upsuccess","upfail","empmax","rejected","conflict","unadded","del","added","ingroup","allin","somein","cannotDelete","delsuccess","delfail","metafail","benchfail","basefail","fetchfail","vid","editsuccess","editfail","auth","confirmfail","sendfail","resetfail","deviceConfirmFail","stripe","elempty","elinvalid","elincomplete","purchase","pfail","entercode","codeinvalid","subscribing","subGetError","subCancelError","alreadyup","notanalyzed","upAt","avgVol","actions","items_per_page_text","baseline","up","base1","base2","base3","move","ratio","toosmall","toobig","noSeminars","adminLink","progressLink","yourSubmissions","noSubmissions","seeAllButton","participants","view","publish","form","lecturer","addBtn","addTitle","addText","requested","yourFeedback","alreadyGiven","removeAllUser","filterUsers","refreshInv","areYouSureTitle","areYouSureAllUserText","areYouSureAllSubs","forThisSeminar","removeThisUser","clearUserSubs","removeAllUsers","removeUsersAndSubs","numSubmissions","noParticipants","fetchFail","userNotFound","emptySub","userCount","progressLabel","progressHint","blockLabel","blockHint","elLabel","elHint","revokeFail","seminarList","yourSemis","participantOrOwnerOf","inviteTitle","inviteEmails","editBtn","blockTitle","blockDesc","elTitle","elDesc","uploadVid","embedVid","mkvFilesNo","currentVideo","uploadingWillReplace","desc_text","video_presentation","give_feedback","watch_feedback","gap_text","gapTexT","addRow","addCategory","newCategory","categoryTitle","deleteElement","rateable","embed_youtube","required_numer_of_submissions","maximum_number_of_submissions","number_range_1_100","number_range_0_10","max_condition","required_number_of_shared_submissions","shared_number_condition","max_number_of_shared_submissions","timed_video_recording","timers","exp_len","max_len","range100","range10","max_shared_rule_1","max_shared_rule_2","max_shared_rule_3","max_shared_rule_4","req_subs_rule_1","req_shared_rule_1","watch_video_rule","home","startTut","noSemisFound","noBlocks","tasks","skipTask","prev","percentComplete","submittedOn","yourSubmission","yourAnswer","sampleSolution","videoRecorder","uploadDialogTitle","uploadDialogText","askForFeedback","askForFeedbackInfo","expectedTime","uploadFeedback","flipVideo","nameYourFile","uploadYourPres","privateVid","sharedVid","wouldLikeFeedback","notShared","giveFeedbackInfo","read_text","watch_video","reqSubmissions","sharedSubmissions","reqSharedSubmissions","share","unshare","delConfirm","noRating","nextTitle","noVideo","noVideoDetail","no_feedback","rephrase","categorize","phrases","noMore","dnd","correct","vr_training","goal","nameRequired","descRequired","ratings","amusing","creative","professional","sortBy","placeholder","vrScores","noVr","doneText","finish","homePage","welcomeMessage","noPermissions","seminarBtnText","sessionTrainingBtnText","noSemiPermission","noSessPermission","revoke","noInvitations","zoomControl","notifications","feedback_received","rate_video","rating_received","weeks","fewSeconds","preview","uploadNew","chooseNew","cancelChange","removeImage","recSquare","api_errors","image_upload_failed","user_not_found","owner_not_found","invalid_type","user_exists","no_user_with_this_email","password_incorrect","email_not_confirmed","user_not_active","access_denied","element_not_found","block_not_found","seminar_not_found","user_not_authorized","seminar_order_not_found","block_data_not_found","element_data_not_found","invitation_not_found","invitation_deactivated","seminar_user_not_found","goal_not_found","cannot_delete","device_token_failed","browser_warnings","unsuppBrowser","unsuppBrowserTitle","unsuppBrowserText","dontShow","tour","box","skip","exit","of","btn1","btn2","finshed","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","feature","locked","toUnlockIt","toCloseThisWindow","maintenance","addexcel","gapText","numberFormats","currency","style","compact","notation","maximumFractionDigits","compactDisplay","roundingMode","compactFraction1","compactFraction2","VueI18N","i18n","messages","getVRMode","maintenanceMode","VUE_APP_MAINTENANCE_MODE_ENABLED","VueRouter","routes","path","redirect","children","beforeEnter","_","_1","dispatch","router","beforeEach","scrollTo","querySelector","scrollTop","commit","afterEach","parseBoolean","defaultValue","acceptedValue","isLocal","isDev","isBeta","isProd","apiBaseUrl","VUE_APP_API_BASE_URL","apiProxyBaseUrl","speechConfigSettings","speechServiceEndpoint","initialSilenceTimeoutMs","enableAudioLogging","enableTelemetry","speechRecognitionLanguage","profanityOption","sdk","Raw","requestWordLevelTimestamps","enableDictation","outputFormat","recordingSettings","pauseLen","durationThreshold","transcriptionSettings","fillerWordsDe","fillerWordsEn","passwordSettings","passwordRules","helpers","regex","minLength","maxLength","chatSettings","showSupportFABInsteadChat","chatReadyPollingInterval","chatReadyRetries","paymentSettings","publishableKey","testMode","vatIncluded","defaultVatRate","defaultPfp","require","UserData","articles","metaAnalysis","initialSession","lastCheckedNotifications","ag","cg","parseArticle","g","parseGroup","metaSettings","loadEverything","state","dataLoadSuccess","dataLoading","api","clearStorage","replace","clearEverything","displaySnackbar","setEverything","snackTimeout","mutations","loaded","appLoading","appLoaded","showSnackbar","snackbarText","vuetify","framework","currentTheme","isDarkMode","version","trim","isDefaultPfp","isAuthenticated","getUserEmail","getUserName","log","getUserHasPrivileges","role","userEmailVerified","getUserRoles","hasPermission","permission","userRoles","isAdmin","isFreeUser","isBasicUser","isStandardUser","isPremiumUser","isEnterpriseUser","isModerator","isCoach","isTeacher","isStudent","getAllUsers","admins","Admin","getAllUsersLoading","allUsersLoading","changeUserRoleLoading","changedUserRoleEmail","forgotPasswordLoading","forgotEmailSent","resetPasswordLoading","confirmEmailLoading","confirmEmailSent","createCompanyLoading","createCompanySuccess","editCompanyLoading","upgradeLoading","isCompany","subscriptionDetails","currentPeriodEnd","planId","subscriptionId","userId","priceId","validityDate","licenseCount","billingCycleAnchor","cancelAt","cancelAtPeriodEnd","collectionMethod","currentPeriodStart","customer","daysUntilDue","defaultPaymentMethodId","discountId","endedAt","latestInvoiceId","nextPendingInvoiceItemInvoice","pendingSetupIntentId","subStartDate","planAmount","planCurrency","planInterval","planIntervalCount","logoutUser","root","loginUser","rootState","post","from","userData","Event","deviceCode","currentRoute","query","msg","registerUser","emailToken","loadUser","updateTokens","getSubscriptionDetails","patch","fetchUserRoles","response","fetchPermissions","resetPassword","sendConfirmEmail","payload","emailTimeout","confirmEmail","uploadPfp","headers","removePfp","advanceTutorial","completeTutorial","addUsersFromExcel","loginByDeviceHandshake","clientId","createCompany","set","setBaseline","userLoadError","forgotPasswordSuccess","forgotPasswordError","resetPasswordSuccess","resetPasswordError","createCompanyLoaded","upgradeSuccess","upgradeLoaded","setHasSubscription","setUserRoles","setPermissions","setUserClaims","setSubscriptionDetails","allUsersRetrieved","namespaced","retrieved","getSessions","getSharedSessions","sharedSessions","sessionsCount","progressLoading","progressRetrieved","removingSession","uploadingSession","gettingSingleSession","retrievedSessionId","aiFeedbackLoading","aiFeedbackSessionId","aiFeedbackMessage","benchmark","benchmarks","benchmarkUser","baselineLoading","benchmarksRetrieved","benchmarksLoading","metaLoading","apiProxy","axios","baseURL","interceptors","config","Authorization","refreshingRequest","requestsToRetry","handleUnuth","handleError","getRefreshToken","skipRefresh","url","unauth","tokenExpired","shouldRefresh","clearSessions","getProgress","getSlimSessions","existing","newSessions","parseSlim","clearSlimSessions","getIncompleteSessions","ids","fetched","parseSessions","oldSessions","ContentType","loadSharedSessions","getSingleSession","idx","findIndex","session","copy","getSingleSharedSession","removedSessionId","updateSettings","endpoint","getBenchmarks","uploadBaseline","setBenchmark","clearBenchmark","addSession","update","updateShared","removeFromShared","put","allRemoved","newSharedWith","getAIFeedbackForSingleSession","setShared","setMeta","getSessionsSuccess","metaAnalysisDTO","getSharedSessionsSuccess","deleteSessionSuccess","getPresentations","getUploadLoading","uploadLoading","getDeleteLoading","deleteLoading","getDeletedPresentationID","deletedPresentationID","clearPresentations","getOne","uploadPresentation","formData","deletePresentation","errorMsg","presIdx","loadingGroups","retrievedGroups","getGroups","loadingPublicGroups","retrievedPublicGroups","getPublicGroups","publicGroups","loadingCompanyGroups","retrievedCompanyGroups","getCompanyGroups","companyGroups","getNames","pinnedVideos","canManage","addGroupLoading","removeGroupLoading","removedGroupID","renameGroupLoading","getPosts","flatMap","addPostLoading","editPostLoading","editedPostID","deletePostLoading","deletedPostID","getVideos","addVideoLoading","editVideoLoading","editedVideoID","deleteVideoLoading","deletedVideoID","addUsersLoading","editedUserEmail","removeUserLoading","removedUserEmail","rootGetters","currentUserEmail","Set","clearGroups","addGroupToList","renameGroup","removeGroup","addPost","isPinned","postId","newTitle","newBody","postToDelete","indexOf","addVideoFromLink","addVideoFromFile","gid","videoId","gidx","vidx","newDescription","uploadExcel","inviteUsers","str","changeUserRole","isCurrentUser","removeUser","uidx","leaveGroup","joinGroup","postGetters","videoGetters","userGetters","postActions","videoActions","userActions","getArticles","getLatestArticles","addArticleLoading","editArticleLoading","editedArticleID","deleteArticleLoading","deletedArticleID","clearArticles","article","articleId","getNewsSucess","getNewsError","addingArticle","addArticleError","addArticleSuccess","editingArticle","editArticleSuccess","editArticleError","deletingArticle","deleteArticleSuccess","articleToDelete","deleteArticleError","getAssignedGoals","getCreatedGoals","addGoalLoading","editedGoalID","editedGoalId","editGoalLoading","removedGoalID","removedGoalId","removeGoalLoading","clearGoals","getGoals","addGoal","currentEmail","assignedGoal","removeGoal","cidx","currentAssigned","assignToGoal","aidx","getMeetings","addMeetingLoading","editedMeetingID","editedMeetingId","editMeetingLoading","editingMeeting","removedMeetingID","removedMeetingId","removeMeetingLoading","clearMeetings","meetingId","removeMeeting","hasCompany","employees","myEmail","editing","creating","upgrading","adding","editName","updateRole","updateTime","currentTime","setProgress","setTotalTime","totalTime","computedProgress","timeFormatted","ms","hs","fallback","setProducts","setSession","setLimit","limit","setZoom","val","zoom","setZoomInterval","interval","updateFeedback","updateAiFeedback","rounder","canZoom","image","canLiveZoom","textCompleted","audioCompleted","videoUrl","hasSentence","handAvg","headAvg","pitchAvg","volumeAvg","pausesAvg","pausesTotal","calcLength","first","unshift","currentSlide","currentSession","usersLoading","sessionsLoading","selected","sharingUsers","selectedUser","setUser","getUsers","getShared","getUserShared","getSingleShared","managed","getData","send","invs","userEmails","location","reload","emptySubmissionElements","Map","updateArray","refetchSeminar","selectedIdx","setindices","indices","elIndex","prevBlock","lastElOfPrevBlock","prevEl","lastElIdxOfBlockIdx","lastBlockIdx","getAll","initialOrder","newArr","newSeminar","upTo","logo","debug","removeLogo","addBlock","newOrder","editBlock","newSelected","removeBlock","addElement","element","sIdx","bIdx","els","newIndex","editElement","vidUri","blockIdx","elIdx","removeElement","submitEmpty","sub","oldSubs","addSubmission","submission","getFeedbackVideos","gettingFeedback","feedbackVideos","toggleShared","numShared","reqShared","elInBlockIdx","rateFeedbackVideo","rating","vids","vidIndex","videoRatings","rIdx","rater","rateVideo","subIdx","removeSubmission","newSubs","getSubmissions","reorder","orderChanged","revertOrder","updateOrder","clearAllSubmissions","allSubmissions","newUsers","clearUserSubmissions","userIdx","refreshGoalElement","makeCall","setAssignedToGoal","gettingAll","skipping","selectedId","ownsSeminar","currentLogo","selectableUpTo","curr","selectedBlock","selectedElement","getNotifications","lastChecked","newNotificationsCount","loadNotifications","checkNotifications","now","setLastChecked","addNotification","notification","freshchatActive","supportInfo","getFreshchatActive","getSupportInfo","phone","tenants","sendMessage","messageTimeout","messageLoading","messageSent","clearHowTos","getHowTos","h","parseHowToVideo","howTos","Vuex","Store","webpackAsyncContext","req","keys","warn","VApp","showLayout","isMobile","toggleNav","_e","hideNav","isUploading","navOpened","VMain","backgroundColor","showSupportFAB","VSnackbar","directives","rawName","hideFooter","checkIsMobile","check","test","substr","navigator","userAgent","vendor","opera","hasPrivileges","staticStyle","switchVRMode","VIcon","VAppBar","stopPropagation","$emit","VSpacer","analysisFast","analysisRelaxed","aiFeedbackFast","aiFeedbackRelaxed","liveTranscriptionFast","liveTranscriptionRelaxed","isChrome","VProgressLinear","VDialog","$t","dialog","VCard","BrowserWarning","shouldShow","uids","__decorate","Getter","CurrentUser","charAt","Prop","default","VBadge","shown","VListItemIcon","getIcon","getNotificationTitle","getNotificationsTimeSpan","isNew","VDivider","Notifications","getTime","diff","Action","Watch","immediate","ProfileDropdown","$sessionHub","$notificationHub","$router","VTooltip","hasLiveTranscriptionQuota","class","parseInt","hasAnalysisQuota","hasAiFeedbackQuota","AppBar","methods","VSelect","items","SeminarSelect","$route","parts","newRoute","ToolbarMenu","analysisFastQuota","analysisRelaxedQuota","aiFeedbackFastQuota","aiFeedbackRelaxedQuota","liveTranscriptionFastQuota","liveTranscriptionRelaxedQuota","showBanner","quotaClaim","computed","components","QuotaBar","UpgradeButton","VNavigationDrawer","mini","open","selectedSeminarLogo","VImg","imageWidth","toggleMini","expanded","isTooBig","VOverlay","VForm","preventDefault","formValid","VFileInput","fileFormat","fileLabel","handleFileChange","uploadedFile","VTextField","localeItems","canSubmit","UploadSession","isAudio","$refs","substring","lastIndexOf","maxSize","uploadSessionAction","toISOString","resetValidation","PropSync","UploadAudio","UploadVideo","route","RecordSession","selectedLink","VListGroup","expandedProp","proxy","Menu","Boolean","Navigation","width","fullPath","isOnSessions","getMenuMini","VFooter","Footer","toggleMinimized","minimized","def","openTour","closeWelcomeDialog","finishedDialog","TourProgress","steps","getWelcomeDialog","showAgain","openCurrent","addEventListener","nextStep","justLoggedIn","removeEventListener","supportInfoVisible","VToolbar","emailLink","phoneLink","showSupportInfo","SupportFAB","App","freshchatDisplayed","freshchatRetryCount","widget","bottom","transition","timer","$freshchat","freshchatDisplayWidget","ready","setInterval","freshchatRetryWidgetDisplayed","clearInterval","isStarted","confirmStayInUpload","returnValue","load","$vuetify","getDarkMode","beforeWindowUnload","setExternalId","setUserProperties","install","sessionHub","getToken","connection","HubConnectionBuilder","withUrl","accessTokenFactory","configureLogging","LogLevel","build","handleUpdate","notificationHub","handleTokenUpdate","tokenNotification","VueQuillEditor","SessionHub","NotificationHub","Vuelidate","VueMasonry","VueProgressiveImage","VueSimpleMarkdown","directive","binding","userHasPermission","userHasRole","VueFreshchat","host","appToken","headerProperty","hideChatButton","DateTime","fromJSDate","isValid","fromISO","toLocaleString","DATE_MED","toFormat","maxChar","redactedSettings","registerHooks","productionTip","$mount"],"mappings":"aACE,SAASA,EAAqBC,GAQ7B,IAPA,IAMIC,EAAUC,EANVC,EAAWH,EAAK,GAChBI,EAAcJ,EAAK,GACnBK,EAAiBL,EAAK,GAIHM,EAAI,EAAGC,EAAW,GACpCD,EAAIH,EAASK,OAAQF,IACzBJ,EAAUC,EAASG,GAChBG,OAAOC,UAAUC,eAAeC,KAAKC,EAAiBX,IAAYW,EAAgBX,IACpFK,EAASO,KAAKD,EAAgBX,GAAS,IAExCW,EAAgBX,GAAW,EAE5B,IAAID,KAAYG,EACZK,OAAOC,UAAUC,eAAeC,KAAKR,EAAaH,KACpDc,EAAQd,GAAYG,EAAYH,IAG/Be,GAAqBA,EAAoBhB,GAE5C,MAAMO,EAASC,OACdD,EAASU,OAATV,GAOD,OAHAW,EAAgBJ,KAAKK,MAAMD,EAAiBb,GAAkB,IAGvDe,IAER,SAASA,IAER,IADA,IAAIC,EACIf,EAAI,EAAGA,EAAIY,EAAgBV,OAAQF,IAAK,CAG/C,IAFA,IAAIgB,EAAiBJ,EAAgBZ,GACjCiB,GAAY,EACRC,EAAI,EAAGA,EAAIF,EAAed,OAAQgB,IAAK,CAC9C,IAAIC,EAAQH,EAAeE,GACG,IAA3BX,EAAgBY,KAAcF,GAAY,GAE3CA,IACFL,EAAgBQ,OAAOpB,IAAK,GAC5Be,EAASM,EAAoBA,EAAoBC,EAAIN,EAAe,KAItE,OAAOD,EAIR,IAAIQ,EAAmB,GAGnBC,EAAqB,CACxB,IAAO,GAMJjB,EAAkB,CACrB,IAAO,GAGJK,EAAkB,GAGtB,SAASa,EAAe7B,GACvB,OAAOyB,EAAoBK,EAAI,cAAgB,GAAG9B,IAAUA,GAAW,IAAM,CAAC,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB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,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW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tiE,QAAS,CACPuqC,UACAtc,YACAa,iBACA7B,UACAS,QACA8B,SACAC,YACAmc,WACAl1B,SACA+uC,YACAs1B,kBACAW,WACAnsD,aACA0xB,eACAhV,YACAkrB,iBACA8qB,WACAl0C,WACA20C,YAIW,cAAIC,OAAKC,MAAiBz2E,K,kCC1DzC,W,uBCAA,IAAIf,EAAM,CACT,UAAW,CACV,OACA,kBAED,WAAY,CACX,OACA,kBAED,qBAAsB,CACrB,OACA,kBAED,yBAA0B,CACzB,OACA,kBAED,gCAAiC,CAChC,OACA,kBAED,oCAAqC,CACpC,OACA,kBAED,kCAAmC,CAClC,OACA,kBAED,sCAAuC,CACtC,OACA,kBAED,mCAAoC,CACnC,OACA,kBAED,uCAAwC,CACvC,OACA,kBAED,iCAAkC,CACjC,OACA,kBAED,qCAAsC,CACrC,OACA,kBAED,iCAAkC,CACjC,OACA,kBAED,qCAAsC,CACrC,OACA,kBAED,8BAA+B,CAC9B,OACA,kBAED,kCAAmC,CAClC,OACA,kBAED,+BAAgC,CAC/B,OACA,iBACA,kBAED,mCAAoC,CACnC,OACA,iBACA,kBAED,gBAAiB,CAChB,OACA,kBAED,mBAAoB,CACnB,OACA,kBAED,0BAA2B,CAC1B,OACA,kBAED,8BAA+B,CAC9B,OACA,kBAED,4BAA6B,CAC5B,OACA,iBACA,iBACA,kBAED,gCAAiC,CAChC,OACA,iBACA,iBACA,kBAED,uBAAwB,CACvB,OACA,kBAED,2BAA4B,CAC3B,OACA,kBAED,8BAA+B,CAC9B,OACA,kBAED,kCAAmC,CAClC,OACA,kBAED,+BAAgC,CAC/B,OACA,iBACA,kBAED,mCAAoC,CACnC,OACA,iBACA,kBAED,sBAAuB,CACtB,OACA,kBAED,0BAA2B,CAC1B,OACA,kBAED,SAAU,CACT,OACA,kBAED,UAAW,CACV,OACA,kBAED,kBAAmB,CAClB,OACA,kBAED,sBAAuB,CACtB,OACA,kBAED,+BAAgC,CAC/B,OACA,kBAED,mCAAoC,CACnC,OACA,kBAED,gCAAiC,CAChC,OACA,kBAED,oCAAqC,CACpC,OACA,kBAED,eAAgB,CACf,OACA,kBAED,kBAAmB,CAClB,OACA,kBAED,6BAA8B,CAC7B,OACA,kBAED,iCAAkC,CACjC,OACA,kBAED,4BAA6B,CAC5B,OACA,kBAED,gCAAiC,CAChC,OACA,kBAED,8BAA+B,CAC9B,OACA,kBAED,kCAAmC,CAClC,OACA,kBAED,+BAAgC,CAC/B,OACA,kBAED,mCAAoC,CACnC,OACA,kBAED,qBAAsB,CACrB,OACA,kBAED,yBAA0B,CACzB,OACA,kBAED,uBAAwB,CACvB,OACA,kBAED,2BAA4B,CAC3B,OACA,kBAED,0BAA2B,CAC1B,OACA,kBAED,8BAA+B,CAC9B,OACA,kBAED,wBAAyB,CACxB,OACA,kBAED,4BAA6B,CAC5B,OACA,kBAED,8BAA+B,CAC9B,OACA,kBAED,kCAAmC,CAClC,OACA,kBAED,6BAA8B,CAC7B,OACA,kBAED,iCAAkC,CACjC,OACA,kBAED,YAAa,CACZ,OACA,kBAED,aAAc,CACb,OACA,kBAED,wBAAyB,CACxB,OACA,kBAED,4BAA6B,CAC5B,OACA,kBAED,oCAAqC,CACpC,OACA,kBAED,wCAAyC,CACxC,OACA,kBAED,0CAA2C,CAC1C,OACA,iBACA,kBAED,8CAA+C,CAC9C,OACA,iBACA,kBAED,qCAAsC,CACrC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,yCAA0C,CACzC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,yCAA0C,CACzC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,6CAA8C,CAC7C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,uCAAwC,CACvC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,2CAA4C,CAC3C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,mCAAoC,CACnC,OACA,kBAED,uCAAwC,CACvC,OACA,kBAED,wCAAyC,CACxC,OACA,kBAED,4CAA6C,CAC5C,OACA,kBAED,sCAAuC,CACtC,OACA,kBAED,0CAA2C,CAC1C,OACA,kBAED,+BAAgC,CAC/B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,mCAAoC,CACnC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,+BAAgC,CAC/B,OACA,kBAED,kCAAmC,CAClC,OACA,kBAED,6BAA8B,CAC7B,OACA,kBAED,gCAAiC,CAChC,OACA,kBAED,kBAAmB,CAClB,OACA,kBAED,qBAAsB,CACrB,OACA,kBAED,mCAAoC,CACnC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,uCAAwC,CACvC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,8BAA+B,CAC9B,OACA,kBAED,kCAAmC,CAClC,OACA,kBAED,kCAAmC,CAClC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,sCAAuC,CACtC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,gCAAiC,CAChC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,oCAAqC,CACpC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,8BAA+B,CAC9B,QACA,kBAED,kCAAmC,CAClC,QACA,kBAED,cAAe,CACd,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,eAAgB,CACf,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,wBAAyB,CACxB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,4BAA6B,CAC5B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,yBAA0B,CACzB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,0BAA2B,CAC1B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,mCAAoC,CACnC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,uCAAwC,CACvC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,oCAAqC,CACpC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,wCAAyC,CACxC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,mCAAoC,CACnC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,uCAAwC,CACvC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,kCAAmC,CAClC,OACA,kBAED,sCAAuC,CACtC,OACA,kBAED,2CAA4C,CAC3C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,+CAAgD,CAC/C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,sCAAuC,CACtC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,0CAA2C,CAC1C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,oCAAqC,CACpC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,wCAAyC,CACxC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,+BAAgC,CAC/B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,kCAAmC,CAClC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,0DAA2D,CAC1D,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,8DAA+D,CAC9D,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,kDAAmD,CAClD,OACA,kBAED,sDAAuD,CACtD,OACA,kBAED,0DAA2D,CAC1D,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,8DAA+D,CAC9D,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,oBAAqB,CACpB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,uBAAwB,CACvB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,UAAW,CACV,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,WAAY,CACX,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,gBAAiB,CAChB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,oBAAqB,CACpB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,qBAAsB,CACrB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,sBAAuB,CACtB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,mCAAoC,CACnC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,uCAAwC,CACvC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,sCAAuC,CACtC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,0CAA2C,CAC1C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,sCAAuC,CACtC,OACA,kBAED,0CAA2C,CAC1C,OACA,kBAED,sCAAuC,CACtC,OACA,kBAED,0CAA2C,CAC1C,OACA,kBAED,iCAAkC,CACjC,OACA,kBAED,qCAAsC,CACrC,OACA,kBAED,2BAA4B,CAC3B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,8BAA+B,CAC9B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,gBAAiB,CAChB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,mBAAoB,CACnB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,wBAAyB,CACxB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,4BAA6B,CAC5B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,kBAAmB,CAClB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,sBAAuB,CACtB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,sBAAuB,CACtB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,uBAAwB,CACvB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,mCAAoC,CACnC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,uCAAwC,CACvC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,uCAAwC,CACvC,OACA,kBAED,2CAA4C,CAC3C,OACA,kBAED,oCAAqC,CACpC,OACA,kBAED,wCAAyC,CACxC,OACA,kBAED,uCAAwC,CACvC,OACA,kBAED,2CAA4C,CAC3C,OACA,kBAED,gCAAiC,CAChC,OACA,kBAED,oCAAqC,CACpC,OACA,kBAED,gCAAiC,CAChC,OACA,kBAED,oCAAqC,CACpC,OACA,kBAED,mCAAoC,CACnC,OACA,kBAED,uCAAwC,CACvC,OACA,kBAED,+BAAgC,CAC/B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,mCAAoC,CACnC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,sCAAuC,CACtC,OACA,kBAED,0CAA2C,CAC1C,OACA,kBAED,mCAAoC,CACnC,OACA,kBAED,uCAAwC,CACvC,OACA,kBAED,uCAAwC,CACvC,OACA,kBAED,2CAA4C,CAC3C,OACA,kBAED,4BAA6B,CAC5B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,+BAAgC,CAC/B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,0CAA2C,CAC1C,OACA,kBAED,8CAA+C,CAC9C,OACA,kBAED,0CAA2C,CAC1C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,8CAA+C,CAC9C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,0CAA2C,CAC1C,OACA,kBAED,8CAA+C,CAC9C,OACA,kBAED,2CAA4C,CAC3C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,+CAAgD,CAC/C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,wCAAyC,CACxC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,4CAA6C,CAC5C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,2CAA4C,CAC3C,OACA,kBAED,+CAAgD,CAC/C,OACA,kBAED,2CAA4C,CAC3C,OACA,kBAED,+CAAgD,CAC/C,OACA,kBAED,4CAA6C,CAC5C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,gDAAiD,CAChD,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,4CAA6C,CAC5C,OACA,iBACA,kBAED,gDAAiD,CAChD,OACA,iBACA,kBAED,4CAA6C,CAC5C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,gDAAiD,CAChD,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,4CAA6C,CAC5C,OACA,kBAED,gDAAiD,CAChD,OACA,kBAED,6CAA8C,CAC7C,OACA,iBACA,iBACA,kBAED,iDAAkD,CACjD,OACA,iBACA,iBACA,kBAED,SAAU,CACT,OACA,kBAED,UAAW,CACV,OACA,kBAED,cAAe,CACd,OACA,kBAED,kBAAmB,CAClB,OACA,kBAED,gCAAiC,CAChC,OACA,kBAED,oCAAqC,CACpC,OACA,kBAED,eAAgB,CACf,OACA,kBAED,kBAAmB,CAClB,OACA,kBAED,UAAW,CACV,OACA,kBAED,WAAY,CACX,OACA,kBAED,kBAAmB,CAClB,OACA,kBAED,sBAAuB,CACtB,OACA,kBAED,kBAAmB,CAClB,OACA,kBAED,sBAAuB,CACtB,OACA,kBAED,wBAAyB,CACxB,OACA,iBACA,iBACA,kBAED,4BAA6B,CAC5B,OACA,iBACA,iBACA,kBAED,yCAA0C,CACzC,OACA,kBAED,6CAA8C,CAC7C,OACA,kBAED,0BAA2B,CAC1B,OACA,kBAED,8BAA+B,CAC9B,OACA,kBAED,0BAA2B,CAC1B,OACA,kBAED,8BAA+B,CAC9B,OACA,kBAED,gCAAiC,CAChC,OACA,kBAED,oCAAqC,CACpC,OACA,kBAED,gCAAiC,CAChC,OACA,kBAED,oCAAqC,CACpC,OACA,kBAED,gBAAiB,CAChB,OACA,kBAED,mBAAoB,CACnB,OACA,kBAED,iBAAkB,CACjB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,kBAAmB,CAClB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,8BAA+B,CAC9B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,kCAAmC,CAClC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,4BAA6B,CAC5B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,6BAA8B,CAC7B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,+CAAgD,CAC/C,OACA,kBAED,mDAAoD,CACnD,OACA,kBAED,uCAAwC,CACvC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,2CAA4C,CAC3C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,4CAA6C,CAC5C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,gDAAiD,CAChD,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,0CAA2C,CAC1C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,8CAA+C,CAC9C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,kCAAmC,CAClC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,qCAAsC,CACrC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,uBAAwB,CACvB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,0BAA2B,CAC1B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,gBAAiB,CAChB,OACA,kBAED,iBAAkB,CACjB,OACA,kBAED,4BAA6B,CAC5B,OACA,kBAED,gCAAiC,CAChC,OACA,kBAED,sBAAuB,CACtB,OACA,kBAED,yBAA0B,CACzB,OACA,kBAED,aAAc,CACb,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,cAAe,CACd,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,sBAAuB,CACtB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,0BAA2B,CAC1B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,wBAAyB,CACxB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,yBAA0B,CACzB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,yCAA0C,CACzC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,6CAA8C,CAC7C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,oCAAqC,CACpC,OACA,kBAED,wCAAyC,CACxC,OACA,kBAED,8BAA+B,CAC9B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,iCAAkC,CACjC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,mBAAoB,CACnB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,sBAAuB,CACtB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,wBAAyB,CACxB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,4BAA6B,CAC5B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,cAAe,CACd,OACA,iBACA,iBACA,kBAED,kBAAmB,CAClB,OACA,iBACA,iBACA,kBAED,qCAAsC,CACrC,OACA,iBACA,kBAED,yCAA0C,CACzC,OACA,iBACA,kBAED,mCAAoC,CACnC,OACA,kBAED,uCAAwC,CACvC,OACA,kBAED,gCAAiC,CAChC,OACA,kBAED,oCAAqC,CACpC,OACA,kBAED,aAAc,CACb,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,cAAe,CACd,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,sBAAuB,CACtB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,0BAA2B,CAC1B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,wBAAyB,CACxB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,yBAA0B,CACzB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,sCAAuC,CACtC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,0CAA2C,CAC1C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,qCAAsC,CACrC,OACA,kBAED,yCAA0C,CACzC,OACA,kBAED,qCAAsC,CACrC,OACA,kBAED,yCAA0C,CACzC,OACA,kBAED,2CAA4C,CAC3C,OACA,kBAED,+CAAgD,CAC/C,OACA,kBAED,mCAAoC,CACnC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,uCAAwC,CACvC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,wCAAyC,CACxC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,4CAA6C,CAC5C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,sCAAuC,CACtC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,0CAA2C,CAC1C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,8BAA+B,CAC9B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,iCAAkC,CACjC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,8BAA+B,CAC9B,QAED,iCAAkC,CACjC,QAED,sCAAuC,CACtC,OACA,iBACA,iBACA,kBAED,uCAAwC,CACvC,OACA,iBACA,iBACA,kBAED,4CAA6C,CAC5C,OACA,kBAED,gDAAiD,CAChD,OACA,kBAED,mDAAoD,CACnD,OACA,kBAED,uDAAwD,CACvD,OACA,kBAED,mDAAoD,CACnD,OACA,iBACA,iBACA,kBAED,uDAAwD,CACvD,OACA,iBACA,iBACA,kBAED,4CAA6C,CAC5C,OACA,iBACA,iBACA,kBAED,+CAAgD,CAC/C,OACA,iBACA,iBACA,kBAED,mBAAoB,CACnB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,sBAAuB,CACtB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,iCAAkC,CACjC,OACA,iBACA,kBAED,oCAAqC,CACpC,OACA,iBACA,kBAED,yBAA0B,CACzB,OACA,kBAED,4BAA6B,CAC5B,OACA,kBAED,yBAA0B,CACzB,OACA,kBAED,4BAA6B,CAC5B,OACA,kBAED,0BAA2B,CAC1B,OACA,iBACA,kBAED,6BAA8B,CAC7B,OACA,iBACA,kBAED,wBAAyB,CACxB,OACA,iBACA,kBAED,2BAA4B,CAC3B,OACA,iBACA,kBAED,aAAc,CACb,OACA,kBAED,cAAe,CACd,OACA,kBAED,sBAAuB,CACtB,OACA,kBAED,0BAA2B,CAC1B,OACA,kBAED,8BAA+B,CAC9B,OACA,kBAED,kCAAmC,CAClC,OACA,kBAED,mCAAoC,CACnC,OACA,kBAED,uCAAwC,CACvC,OACA,kBAED,6CAA8C,CAC7C,OACA,kBAED,iDAAkD,CACjD,OACA,kBAED,gCAAiC,CAChC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,oCAAqC,CACpC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,wCAAyC,CACxC,OACA,kBAED,4CAA6C,CAC5C,OACA,kBAED,gCAAiC,CAChC,OACA,kBAED,oCAAqC,CACpC,OACA,kBAED,0CAA2C,CAC1C,OACA,kBAED,8CAA+C,CAC9C,OACA,kBAED,qCAAsC,CACrC,OACA,iBACA,iBACA,iBACA,kBAED,yCAA0C,CACzC,OACA,iBACA,iBACA,iBACA,kBAED,oCAAqC,CACpC,OACA,kBAED,wCAAyC,CACxC,OACA,kBAED,qCAAsC,CACrC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,yCAA0C,CACzC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,oCAAqC,CACpC,OACA,iBACA,iBACA,iBACA,kBAED,wCAAyC,CACxC,OACA,iBACA,iBACA,iBACA,kBAED,2CAA4C,CAC3C,OACA,kBAED,+CAAgD,CAC/C,OACA,kBAED,iCAAkC,CACjC,OACA,kBAED,qCAAsC,CACrC,OACA,kBAED,2CAA4C,CAC3C,OACA,kBAED,+CAAgD,CAC/C,OACA,kBAED,oCAAqC,CACpC,OACA,kBAED,wCAAyC,CACxC,OACA,kBAED,sCAAuC,CACtC,OACA,kBAED,0CAA2C,CAC1C,OACA,kBAED,gCAAiC,CAChC,OACA,kBAED,oCAAqC,CACpC,OACA,kBAED,yCAA0C,CACzC,OACA,kBAED,6CAA8C,CAC7C,OACA,kBAED,mCAAoC,CACnC,OACA,kBAED,uCAAwC,CACvC,OACA,kBAED,kCAAmC,CAClC,OACA,kBAED,sCAAuC,CACtC,OACA,kBAED,qCAAsC,CACrC,OACA,iBACA,kBAED,yCAA0C,CACzC,OACA,iBACA,kBAED,wCAAyC,CACxC,OACA,iBACA,kBAED,4CAA6C,CAC5C,OACA,iBACA,kBAED,sCAAuC,CACtC,OACA,iBACA,iBACA,kBAED,0CAA2C,CAC1C,OACA,iBACA,iBACA,kBAED,mCAAoC,CACnC,OACA,iBACA,kBAED,uCAAwC,CACvC,OACA,iBACA,kBAED,oCAAqC,CACpC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,wCAAyC,CACxC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,0CAA2C,CAC1C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,8CAA+C,CAC9C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,4CAA6C,CAC5C,OACA,kBAED,gDAAiD,CAChD,OACA,kBAED,sCAAuC,CACtC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,0CAA2C,CAC1C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,4CAA6C,CAC5C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,gDAAiD,CAChD,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,mBAAoB,CACnB,OACA,kBAED,sBAAuB,CACtB,OACA,kBAED,yBAA0B,CACzB,OACA,iBACA,kBAED,6BAA8B,CAC7B,OACA,iBACA,kBAED,6BAA8B,CAC7B,OACA,iBACA,iBACA,iBACA,kBAED,iCAAkC,CACjC,OACA,iBACA,iBACA,iBACA,kBAED,2BAA4B,CAC3B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,+BAAgC,CAC/B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,wBAAyB,CACxB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,4BAA6B,CAC5B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,wBAAyB,CACxB,OACA,iBACA,kBAED,4BAA6B,CAC5B,OACA,iBACA,kBAED,qCAAsC,CACrC,OACA,iBACA,iBACA,kBAED,yCAA0C,CACzC,OACA,iBACA,iBACA,kBAED,yBAA0B,CACzB,OACA,kBAED,6BAA8B,CAC7B,OACA,kBAED,0BAA2B,CAC1B,OACA,iBACA,iBACA,kBAED,8BAA+B,CAC9B,OACA,iBACA,iBACA,kBAED,6BAA8B,CAC7B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,iCAAkC,CACjC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,sBAAuB,CACtB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,0BAA2B,CAC1B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,+BAAgC,CAC/B,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,mCAAoC,CACnC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,0CAA2C,CAC1C,OACA,iBACA,kBAED,8CAA+C,CAC9C,OACA,iBACA,kBAED,uCAAwC,CACvC,OACA,iBACA,kBAED,2CAA4C,CAC3C,OACA,iBACA,kBAED,sCAAuC,CACtC,OACA,kBAED,0CAA2C,CAC1C,OACA,kBAED,uCAAwC,CACvC,OACA,kBAED,2CAA4C,CAC3C,OACA,kBAED,sCAAuC,CACtC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,0CAA2C,CAC1C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,4CAA6C,CAC5C,OACA,kBAED,gDAAiD,CAChD,OACA,kBAED,0CAA2C,CAC1C,OACA,iBACA,iBACA,kBAED,8CAA+C,CAC9C,OACA,iBACA,iBACA,kBAED,uCAAwC,CACvC,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,2CAA4C,CAC3C,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,uCAAwC,CACvC,OACA,kBAED,2CAA4C,CAC3C,OACA,kBAED,uCAAwC,CACvC,OACA,kBAED,2CAA4C,CAC3C,OACA,kBAED,2CAA4C,CAC3C,OACA,kBAED,+CAAgD,CAC/C,OACA,kBAED,6CAA8C,CAC7C,OACA,kBAED,iDAAkD,CACjD,OACA,kBAED,aAAc,CACb,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,cAAe,CACd,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,sBAAuB,CACtB,OACA,iBACA,iBACA,iBACA,kBAED,0BAA2B,CAC1B,OACA,iBACA,iBACA,iBACA,kBAED,2CAA4C,CAC3C,OACA,iBACA,kBAED,+CAAgD,CAC/C,OACA,iBACA,kBAED,8CAA+C,CAC9C,OACA,kBAED,kDAAmD,CAClD,OACA,kBAED,yCAA0C,CACzC,OACA,iBACA,kBAED,6CAA8C,CAC7C,OACA,iBACA,kBAED,uCAAwC,CACvC,OACA,kBAED,2CAA4C,CAC3C,OACA,kBAED,sCAAuC,CACtC,OACA,kBAED,0CAA2C,CAC1C,OACA,kBAED,sCAAuC,CACtC,OACA,kBAED,0CAA2C,CAC1C,OACA,kBAED,mBAAoB,CACnB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,sBAAuB,CACtB,OACA,iBACA,iBACA,iBACA,iBACA,kBAED,iBAAkB,CACjB,OACA,kBAED,kBAAmB,CAClB,OACA,kBAED,8BAA+B,CAC9B,OACA,kBAED,kCAAmC,CAClC,OACA,kBAED,wCAAyC,CACxC,OACA,kBAED,4CAA6C,CAC5C,OACA,kBAED,6CAA8C,CAC7C,OACA,iBACA,kBAED,iDAAkD,CACjD,OACA,iBACA,kBAED,qDAAsD,CACrD,OACA,iBACA,kBAED,yDAA0D,CACzD,OACA,iBACA,kBAED,oCAAqC,C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","file":"assets/js/app.6340de69.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"assets/js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-024b382e\":\"f9e08a23\",\"chunk-02ea73e0\":\"5057790e\",\"chunk-0c7fbcd5\":\"db794d5a\",\"chunk-15f568f7\":\"1aad27b6\",\"chunk-18881112\":\"a1598250\",\"chunk-2d0d3a04\":\"9b423ed0\",\"chunk-48bfba55\":\"1477abfc\",\"chunk-f18b7976\":\"aa068c71\",\"chunk-2be3681a\":\"85743b37\",\"chunk-2d0b2cbf\":\"bef1358b\",\"chunk-3a2dcbd4\":\"f7793349\",\"chunk-21160be2\":\"f1cd37e3\",\"chunk-4007ecae\":\"cbd21f1f\",\"chunk-924d911a\":\"607d4378\",\"chunk-53c626be\":\"82368b31\",\"chunk-7f0355d1\":\"43b8071a\",\"chunk-3df9ccf7\":\"2449b671\",\"chunk-f832fd00\":\"5bd07328\",\"chunk-0cd3a036\":\"07e2d8ce\",\"chunk-0d0dc92a\":\"20082253\",\"chunk-1b84cc7f\":\"768dfad7\",\"chunk-649d9a3a\":\"48bbd8ce\",\"chunk-73c8449e\":\"4281d42e\",\"chunk-5bc57d07\":\"3369a047\",\"chunk-6e5c1473\":\"eb42f3ea\",\"chunk-79cd1d8d\":\"daee2a35\",\"chunk-71951b55\":\"9d010925\",\"chunk-02db7a18\":\"ba4582ca\",\"chunk-055fca6b\":\"5eccd612\",\"chunk-05a9ced2\":\"697fad72\",\"chunk-05f32b27\":\"d88a6f3b\",\"chunk-080f2a98\":\"57a8b9ee\",\"chunk-0a731774\":\"9f3810f5\",\"chunk-0a8e09b8\":\"cddafb5b\",\"chunk-127dac8a\":\"3d9e4fca\",\"chunk-13043de1\":\"245ea99e\",\"chunk-1931257e\":\"ae57a423\",\"chunk-1a052c3c\":\"fc6a36fd\",\"chunk-1c3e1a3a\":\"cb2cfee4\",\"chunk-1c875b14\":\"6e106223\",\"chunk-1ded471a\":\"351285d8\",\"chunk-2031bd8e\":\"34d3970c\",\"chunk-20da1afc\":\"dd286e24\",\"chunk-20e84e14\":\"660eb2ff\",\"chunk-211f1963\":\"532bd771\",\"chunk-21532c36\":\"7d50c351\",\"chunk-220c6c45\":\"76ce7a3b\",\"chunk-26a50e1c\":\"5f0163f9\",\"chunk-26ad9d44\":\"355ca089\",\"chunk-2cecc0ab\":\"4b98c28e\",\"chunk-2d62230a\":\"20888069\",\"chunk-2e61a05b\":\"caa84e22\",\"chunk-30d46443\":\"c3be9fd4\",\"chunk-38845a50\":\"d8a0d9bc\",\"chunk-389a668c\":\"f2b275fd\",\"chunk-3a585e03\":\"fb5df5ee\",\"chunk-3f0ba718\":\"346f6c52\",\"chunk-4266a7e4\":\"257df24b\",\"chunk-4662f460\":\"6b5b4eb6\",\"chunk-4921691f\":\"d238640e\",\"chunk-4dc75630\":\"e41abc36\",\"chunk-4e4a65da\":\"8ba595d9\",\"chunk-52379dfa\":\"ce55db14\",\"chunk-56c34f6c\":\"a66d2f64\",\"chunk-57fac3ad\":\"030548d7\",\"chunk-5b970cbc\":\"8be4678e\",\"chunk-5bd2230e\":\"da1f8741\",\"chunk-5e5e95bb\":\"93900c95\",\"chunk-610011c3\":\"6d7d00c4\",\"chunk-656d23de\":\"a894c01f\",\"chunk-6742be2b\":\"054cc430\",\"chunk-75a8c51d\":\"a252ce37\",\"chunk-7f16e0ca\":\"54b7bd5a\",\"chunk-8379e448\":\"892edf3d\",\"chunk-891f88ae\":\"c8e126b2\",\"chunk-914bfe74\":\"a185d449\",\"chunk-99b0fa2e\":\"9bb1c8af\",\"chunk-9fad2154\":\"842ff4fe\",\"chunk-9ff351e8\":\"a8107f96\",\"chunk-a167ac3a\":\"0acd1242\",\"chunk-aa3b3128\":\"88b94cae\",\"chunk-ad7581ca\":\"9f3dd089\",\"chunk-b06618be\":\"140bd531\",\"chunk-deeac116\":\"b750c567\",\"chunk-dfbfa5d4\":\"8c6122b4\",\"chunk-e8278d78\":\"c88ddb56\",\"chunk-ea341076\":\"98c6a13d\",\"chunk-efb43160\":\"2535b0fd\",\"chunk-f5e74886\":\"3518680c\",\"chunk-03386bea\":\"c7b89803\",\"chunk-035ef681\":\"a3d4ff89\",\"chunk-04cdec4a\":\"eef14fdd\",\"chunk-07c9b67d\":\"06894e49\",\"chunk-083463ba\":\"791902cd\",\"chunk-08c06d15\":\"bebba9ef\",\"chunk-091aab35\":\"9a0503cc\",\"chunk-3defcf1a\":\"4f744fa5\",\"chunk-232b2e74\":\"b1a26853\",\"chunk-09d3bd92\":\"213e990f\",\"chunk-2d0bd640\":\"1bed6966\",\"chunk-c9c8e140\":\"bcf08e3c\",\"chunk-0d177668\":\"2e9127cf\",\"chunk-0dfe6dab\":\"8da91188\",\"chunk-10d05547\":\"a45e8834\",\"chunk-1172fd10\":\"97c52c87\",\"chunk-2d21eec9\":\"75c0200b\",\"chunk-12265e48\":\"2f3807bc\",\"chunk-186104d2\":\"7e0b885a\",\"chunk-0a3f2c2f\":\"cc37f78f\",\"chunk-18ad5444\":\"505c565c\",\"chunk-213b0f70\":\"00eff206\",\"chunk-2242eef6\":\"2f281b35\",\"chunk-247d05ab\":\"fccd75e5\",\"chunk-2d0a2db0\":\"1d9c4e98\",\"chunk-2d0a332c\":\"e75af966\",\"chunk-2d0a50f2\":\"1dfb5f84\",\"chunk-2d0ae9c3\":\"d14509b6\",\"chunk-2d0b2c70\":\"44cfa797\",\"chunk-2d0b33bf\":\"1124e2b7\",\"chunk-2d0ba8ec\":\"8530d38f\",\"chunk-2d0bacc7\":\"2ac83b6b\",\"chunk-2d0bae0c\":\"1f91732b\",\"chunk-2d0bd628\":\"998275f1\",\"chunk-2d0bddb5\":\"0bfe3d37\",\"chunk-2d0bfed7\":\"409885de\",\"chunk-2d0c11e8\":\"4da8f5f5\",\"chunk-2d0c2687\":\"c60f736b\",\"chunk-2d0c49fa\":\"b1bc9680\",\"chunk-2d0c7711\":\"0cc5af8e\",\"chunk-2d0c9acc\":\"8fb56757\",\"chunk-2d0cb721\":\"7cecb430\",\"chunk-2d0cc432\":\"9e828fb8\",\"chunk-2d0d7311\":\"273b04f2\",\"chunk-2d0e1a40\":\"6129c6ab\",\"chunk-2d0e62c9\":\"22c84a54\",\"chunk-2d0e6742\":\"4aefad2a\",\"chunk-2d0efd2e\":\"5e96140c\",\"chunk-2d0f04b8\":\"6b587fb3\",\"chunk-2d229b69\":\"f1224648\",\"chunk-630f4cff\":\"f7e914e2\",\"chunk-2d20f579\":\"791bfdf7\",\"chunk-2d216256\":\"4bc5d8b6\",\"chunk-2d2167a7\":\"b4385107\",\"chunk-2d21806b\":\"8f2619a1\",\"chunk-2d21a396\":\"64eca29d\",\"chunk-2d21a9a3\":\"5ec7699d\",\"chunk-2d21b336\":\"407bbd21\",\"chunk-2d222146\":\"c0840d71\",\"chunk-2d22613b\":\"38754b83\",\"chunk-2d22bf7e\":\"59ff2af2\",\"chunk-2d22ce96\":\"2a40f7f3\",\"chunk-2d22d5b3\":\"9d37af8b\",\"chunk-2d230333\":\"78afd3a5\",\"chunk-2d238098\":\"42c1f624\",\"chunk-2d238467\":\"93fe4aa0\",\"chunk-2ddc38f1\":\"f2fa85ec\",\"chunk-2ea0e2a4\":\"9f626fb0\",\"chunk-2f38cc30\":\"87b518d2\",\"chunk-34cfe5fb\":\"224a71d4\",\"chunk-35274162\":\"1595277e\",\"chunk-3686c30c\":\"ae2439cf\",\"chunk-36a57274\":\"e753425f\",\"chunk-bf5ef170\":\"39eb4c9a\",\"chunk-f120ec20\":\"4ce4bd47\",\"chunk-3b2cafeb\":\"4adcb1a5\",\"chunk-2d21445b\":\"dc3a32f2\",\"chunk-3e275b38\":\"70389df3\",\"chunk-3fadb0c8\":\"24fced25\",\"chunk-3fe6888f\":\"06c5f49c\",\"chunk-409ef6be\":\"b0280ee5\",\"chunk-43389a06\":\"13a583de\",\"chunk-47664258\":\"538bfe7e\",\"chunk-48f39aab\":\"c28841d9\",\"chunk-4b4171b6\":\"2183e504\",\"chunk-502553b6\":\"90f45e24\",\"chunk-5471779e\":\"1bba6ea6\",\"chunk-597ee9f0\":\"12e10539\",\"chunk-5a393167\":\"0ec170cb\",\"chunk-5a3b1f3a\":\"48537fc1\",\"chunk-5c2ea17e\":\"7e18cebc\",\"chunk-5e406758\":\"ed1e7818\",\"chunk-622a072c\":\"a88290a4\",\"chunk-64fd58dc\":\"e3a9386b\",\"chunk-68afedc3\":\"4acfcc65\",\"chunk-68b65227\":\"54b449d1\",\"chunk-69ef97b7\":\"07751c5f\",\"chunk-6bc3680e\":\"a520652b\",\"chunk-6c8c4d76\":\"0bf3f589\",\"chunk-6f44b09c\":\"2dcf2dcd\",\"chunk-6f81dfc0\":\"810d9b76\",\"chunk-715ea8c1\":\"fd8a6a42\",\"chunk-8e300562\":\"493d6381\",\"chunk-7176d6fb\":\"f1a35278\",\"chunk-4c893fbf\":\"72babd1a\",\"chunk-5c27c878\":\"7e0c5060\",\"chunk-d867dcce\":\"6b5f0e82\",\"chunk-50b8aafa\":\"51a4913a\",\"chunk-74829180\":\"d9fc5ab5\",\"chunk-7485c819\":\"104190e7\",\"chunk-781d7ee8\":\"03a45a07\",\"chunk-2d0ba8dd\":\"76376b36\",\"chunk-409b70b9\":\"d7326e7d\",\"chunk-456ac820\":\"1e1d4c5f\",\"chunk-6c1c781d\":\"f0a44100\",\"chunk-a65348e4\":\"3fdeb104\",\"chunk-7a687420\":\"a40c971f\",\"chunk-7c709662\":\"72524127\",\"chunk-7e74c094\":\"7644145f\",\"chunk-6044da8d\":\"a7616283\",\"chunk-7f7e72f4\":\"823c2374\",\"chunk-8b3d3f4a\":\"bd259584\",\"chunk-91ff4934\":\"b55af8e2\",\"chunk-92908aa4\":\"727badd7\",\"chunk-6cc8b85e\":\"146ad611\",\"chunk-9d1a26fa\":\"dd32f248\",\"chunk-66ef67ba\":\"7dde9cbd\",\"chunk-9cd6770a\":\"9671aaad\",\"chunk-9e0660b0\":\"f0cfb9f3\",\"chunk-b49c6bb0\":\"729167eb\",\"chunk-b8b3a7f8\":\"14f77f3c\",\"chunk-bd4b2036\":\"68866688\",\"chunk-c22b85fa\":\"04840e60\",\"chunk-c659955a\":\"051b36f5\",\"chunk-cae591d0\":\"62919ea5\",\"chunk-cb2cafa4\":\"c8b22e73\",\"chunk-cf8ee55e\":\"5ebfc40e\",\"chunk-dfd2cbfe\":\"28dc5c1f\",\"chunk-f2240006\":\"578e14e1\",\"chunk-f482f0b2\":\"4276344b\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-024b382e\":1,\"chunk-02ea73e0\":1,\"chunk-0c7fbcd5\":1,\"chunk-15f568f7\":1,\"chunk-18881112\":1,\"chunk-48bfba55\":1,\"chunk-f18b7976\":1,\"chunk-2be3681a\":1,\"chunk-21160be2\":1,\"chunk-4007ecae\":1,\"chunk-53c626be\":1,\"chunk-7f0355d1\":1,\"chunk-3df9ccf7\":1,\"chunk-f832fd00\":1,\"chunk-0cd3a036\":1,\"chunk-0d0dc92a\":1,\"chunk-73c8449e\":1,\"chunk-5bc57d07\":1,\"chunk-6e5c1473\":1,\"chunk-71951b55\":1,\"chunk-02db7a18\":1,\"chunk-055fca6b\":1,\"chunk-05a9ced2\":1,\"chunk-05f32b27\":1,\"chunk-080f2a98\":1,\"chunk-0a731774\":1,\"chunk-0a8e09b8\":1,\"chunk-127dac8a\":1,\"chunk-13043de1\":1,\"chunk-1931257e\":1,\"chunk-1a052c3c\":1,\"chunk-1c3e1a3a\":1,\"chunk-1c875b14\":1,\"chunk-1ded471a\":1,\"chunk-2031bd8e\":1,\"chunk-20da1afc\":1,\"chunk-20e84e14\":1,\"chunk-211f1963\":1,\"chunk-21532c36\":1,\"chunk-220c6c45\":1,\"chunk-26a50e1c\":1,\"chunk-26ad9d44\":1,\"chunk-2cecc0ab\":1,\"chunk-2d62230a\":1,\"chunk-2e61a05b\":1,\"chunk-30d46443\":1,\"chunk-38845a50\":1,\"chunk-389a668c\":1,\"chunk-3a585e03\":1,\"chunk-3f0ba718\":1,\"chunk-4266a7e4\":1,\"chunk-4662f460\":1,\"chunk-4921691f\":1,\"chunk-4dc75630\":1,\"chunk-4e4a65da\":1,\"chunk-52379dfa\":1,\"chunk-56c34f6c\":1,\"chunk-57fac3ad\":1,\"chunk-5b970cbc\":1,\"chunk-5bd2230e\":1,\"chunk-5e5e95bb\":1,\"chunk-610011c3\":1,\"chunk-656d23de\":1,\"chunk-6742be2b\":1,\"chunk-75a8c51d\":1,\"chunk-7f16e0ca\":1,\"chunk-8379e448\":1,\"chunk-891f88ae\":1,\"chunk-914bfe74\":1,\"chunk-99b0fa2e\":1,\"chunk-9fad2154\":1,\"chunk-9ff351e8\":1,\"chunk-a167ac3a\":1,\"chunk-aa3b3128\":1,\"chunk-ad7581ca\":1,\"chunk-b06618be\":1,\"chunk-deeac116\":1,\"chunk-dfbfa5d4\":1,\"chunk-e8278d78\":1,\"chunk-ea341076\":1,\"chunk-efb43160\":1,\"chunk-f5e74886\":1,\"chunk-035ef681\":1,\"chunk-08c06d15\":1,\"chunk-091aab35\":1,\"chunk-3defcf1a\":1,\"chunk-232b2e74\":1,\"chunk-09d3bd92\":1,\"chunk-0d177668\":1,\"chunk-10d05547\":1,\"chunk-1172fd10\":1,\"chunk-12265e48\":1,\"chunk-186104d2\":1,\"chunk-0a3f2c2f\":1,\"chunk-18ad5444\":1,\"chunk-213b0f70\":1,\"chunk-2242eef6\":1,\"chunk-247d05ab\":1,\"chunk-2ddc38f1\":1,\"chunk-2ea0e2a4\":1,\"chunk-34cfe5fb\":1,\"chunk-35274162\":1,\"chunk-3686c30c\":1,\"chunk-36a57274\":1,\"chunk-bf5ef170\":1,\"chunk-f120ec20\":1,\"chunk-3b2cafeb\":1,\"chunk-3e275b38\":1,\"chunk-3fadb0c8\":1,\"chunk-3fe6888f\":1,\"chunk-409ef6be\":1,\"chunk-47664258\":1,\"chunk-48f39aab\":1,\"chunk-4b4171b6\":1,\"chunk-502553b6\":1,\"chunk-597ee9f0\":1,\"chunk-5a393167\":1,\"chunk-5a3b1f3a\":1,\"chunk-5c2ea17e\":1,\"chunk-5e406758\":1,\"chunk-64fd58dc\":1,\"chunk-68afedc3\":1,\"chunk-68b65227\":1,\"chunk-69ef97b7\":1,\"chunk-6bc3680e\":1,\"chunk-6c8c4d76\":1,\"chunk-6f44b09c\":1,\"chunk-6f81dfc0\":1,\"chunk-715ea8c1\":1,\"chunk-8e300562\":1,\"chunk-7176d6fb\":1,\"chunk-d867dcce\":1,\"chunk-50b8aafa\":1,\"chunk-7485c819\":1,\"chunk-781d7ee8\":1,\"chunk-409b70b9\":1,\"chunk-7a687420\":1,\"chunk-7c709662\":1,\"chunk-6044da8d\":1,\"chunk-7f7e72f4\":1,\"chunk-8b3d3f4a\":1,\"chunk-91ff4934\":1,\"chunk-6cc8b85e\":1,\"chunk-9d1a26fa\":1,\"chunk-66ef67ba\":1,\"chunk-9cd6770a\":1,\"chunk-b49c6bb0\":1,\"chunk-b8b3a7f8\":1,\"chunk-bd4b2036\":1,\"chunk-c22b85fa\":1,\"chunk-c659955a\":1,\"chunk-cb2cafa4\":1,\"chunk-cf8ee55e\":1,\"chunk-dfd2cbfe\":1,\"chunk-f2240006\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"assets/css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-024b382e\":\"fcf72c66\",\"chunk-02ea73e0\":\"de5bc4e0\",\"chunk-0c7fbcd5\":\"5e90908b\",\"chunk-15f568f7\":\"fbc5f434\",\"chunk-18881112\":\"0ccb04eb\",\"chunk-2d0d3a04\":\"31d6cfe0\",\"chunk-48bfba55\":\"0ccb04eb\",\"chunk-f18b7976\":\"d9cc9107\",\"chunk-2be3681a\":\"49e534e0\",\"chunk-2d0b2cbf\":\"31d6cfe0\",\"chunk-3a2dcbd4\":\"31d6cfe0\",\"chunk-21160be2\":\"26d68a18\",\"chunk-4007ecae\":\"c04026cd\",\"chunk-924d911a\":\"31d6cfe0\",\"chunk-53c626be\":\"2b96baee\",\"chunk-7f0355d1\":\"02ecb396\",\"chunk-3df9ccf7\":\"19964ea3\",\"chunk-f832fd00\":\"4c371590\",\"chunk-0cd3a036\":\"8a0e8df7\",\"chunk-0d0dc92a\":\"85158468\",\"chunk-1b84cc7f\":\"31d6cfe0\",\"chunk-649d9a3a\":\"31d6cfe0\",\"chunk-73c8449e\":\"5400bf03\",\"chunk-5bc57d07\":\"9ad36949\",\"chunk-6e5c1473\":\"f07cb99a\",\"chunk-79cd1d8d\":\"31d6cfe0\",\"chunk-71951b55\":\"3294790a\",\"chunk-02db7a18\":\"64f65194\",\"chunk-055fca6b\":\"26c757dc\",\"chunk-05a9ced2\":\"d2dce04b\",\"chunk-05f32b27\":\"64f65194\",\"chunk-080f2a98\":\"65ed08b9\",\"chunk-0a731774\":\"831593f5\",\"chunk-0a8e09b8\":\"64f65194\",\"chunk-127dac8a\":\"24bca8a6\",\"chunk-13043de1\":\"d4d9d7d0\",\"chunk-1931257e\":\"e0d69e31\",\"chunk-1a052c3c\":\"9607b466\",\"chunk-1c3e1a3a\":\"c8b0a32d\",\"chunk-1c875b14\":\"4bee948d\",\"chunk-1ded471a\":\"64f65194\",\"chunk-2031bd8e\":\"7017980a\",\"chunk-20da1afc\":\"ca2575c3\",\"chunk-20e84e14\":\"ede354aa\",\"chunk-211f1963\":\"4bee948d\",\"chunk-21532c36\":\"c8b0a32d\",\"chunk-220c6c45\":\"64f65194\",\"chunk-26a50e1c\":\"831593f5\",\"chunk-26ad9d44\":\"64f65194\",\"chunk-2cecc0ab\":\"64f65194\",\"chunk-2d62230a\":\"e0773696\",\"chunk-2e61a05b\":\"bad9fab9\",\"chunk-30d46443\":\"c7fd1eb8\",\"chunk-38845a50\":\"e20e0dee\",\"chunk-389a668c\":\"64f65194\",\"chunk-3a585e03\":\"45142d16\",\"chunk-3f0ba718\":\"64f65194\",\"chunk-4266a7e4\":\"64f65194\",\"chunk-4662f460\":\"5578c28d\",\"chunk-4921691f\":\"9f9afb2c\",\"chunk-4dc75630\":\"64f65194\",\"chunk-4e4a65da\":\"64f65194\",\"chunk-52379dfa\":\"2c145ee1\",\"chunk-56c34f6c\":\"9607b466\",\"chunk-57fac3ad\":\"e4f29dd9\",\"chunk-5b970cbc\":\"831593f5\",\"chunk-5bd2230e\":\"6d23e357\",\"chunk-5e5e95bb\":\"831593f5\",\"chunk-610011c3\":\"831593f5\",\"chunk-656d23de\":\"9607b466\",\"chunk-6742be2b\":\"e0773696\",\"chunk-75a8c51d\":\"6d23e357\",\"chunk-7f16e0ca\":\"5b91621c\",\"chunk-8379e448\":\"7ae30c6e\",\"chunk-891f88ae\":\"c634ecf9\",\"chunk-914bfe74\":\"24bca8a6\",\"chunk-99b0fa2e\":\"bad9fab9\",\"chunk-9fad2154\":\"c8b0a32d\",\"chunk-9ff351e8\":\"5b91621c\",\"chunk-a167ac3a\":\"0c764209\",\"chunk-aa3b3128\":\"00191e4f\",\"chunk-ad7581ca\":\"c634ecf9\",\"chunk-b06618be\":\"26c757dc\",\"chunk-deeac116\":\"64f65194\",\"chunk-dfbfa5d4\":\"a33570d6\",\"chunk-e8278d78\":\"64f65194\",\"chunk-ea341076\":\"64f65194\",\"chunk-efb43160\":\"e20e0dee\",\"chunk-f5e74886\":\"64f65194\",\"chunk-03386bea\":\"31d6cfe0\",\"chunk-035ef681\":\"ccc60695\",\"chunk-04cdec4a\":\"31d6cfe0\",\"chunk-07c9b67d\":\"31d6cfe0\",\"chunk-083463ba\":\"31d6cfe0\",\"chunk-08c06d15\":\"0ccb04eb\",\"chunk-091aab35\":\"59131256\",\"chunk-3defcf1a\":\"8e217775\",\"chunk-232b2e74\":\"0ccb04eb\",\"chunk-09d3bd92\":\"f598136e\",\"chunk-2d0bd640\":\"31d6cfe0\",\"chunk-c9c8e140\":\"31d6cfe0\",\"chunk-0d177668\":\"866157c8\",\"chunk-0dfe6dab\":\"31d6cfe0\",\"chunk-10d05547\":\"ee7dded0\",\"chunk-1172fd10\":\"22190bf0\",\"chunk-2d21eec9\":\"31d6cfe0\",\"chunk-12265e48\":\"09ab2f05\",\"chunk-186104d2\":\"fcf72c66\",\"chunk-0a3f2c2f\":\"0ccb04eb\",\"chunk-18ad5444\":\"0ccb04eb\",\"chunk-213b0f70\":\"ac1842dc\",\"chunk-2242eef6\":\"0ccb04eb\",\"chunk-247d05ab\":\"7fb3898c\",\"chunk-2d0a2db0\":\"31d6cfe0\",\"chunk-2d0a332c\":\"31d6cfe0\",\"chunk-2d0a50f2\":\"31d6cfe0\",\"chunk-2d0ae9c3\":\"31d6cfe0\",\"chunk-2d0b2c70\":\"31d6cfe0\",\"chunk-2d0b33bf\":\"31d6cfe0\",\"chunk-2d0ba8ec\":\"31d6cfe0\",\"chunk-2d0bacc7\":\"31d6cfe0\",\"chunk-2d0bae0c\":\"31d6cfe0\",\"chunk-2d0bd628\":\"31d6cfe0\",\"chunk-2d0bddb5\":\"31d6cfe0\",\"chunk-2d0bfed7\":\"31d6cfe0\",\"chunk-2d0c11e8\":\"31d6cfe0\",\"chunk-2d0c2687\":\"31d6cfe0\",\"chunk-2d0c49fa\":\"31d6cfe0\",\"chunk-2d0c7711\":\"31d6cfe0\",\"chunk-2d0c9acc\":\"31d6cfe0\",\"chunk-2d0cb721\":\"31d6cfe0\",\"chunk-2d0cc432\":\"31d6cfe0\",\"chunk-2d0d7311\":\"31d6cfe0\",\"chunk-2d0e1a40\":\"31d6cfe0\",\"chunk-2d0e62c9\":\"31d6cfe0\",\"chunk-2d0e6742\":\"31d6cfe0\",\"chunk-2d0efd2e\":\"31d6cfe0\",\"chunk-2d0f04b8\":\"31d6cfe0\",\"chunk-2d229b69\":\"31d6cfe0\",\"chunk-630f4cff\":\"31d6cfe0\",\"chunk-2d20f579\":\"31d6cfe0\",\"chunk-2d216256\":\"31d6cfe0\",\"chunk-2d2167a7\":\"31d6cfe0\",\"chunk-2d21806b\":\"31d6cfe0\",\"chunk-2d21a396\":\"31d6cfe0\",\"chunk-2d21a9a3\":\"31d6cfe0\",\"chunk-2d21b336\":\"31d6cfe0\",\"chunk-2d222146\":\"31d6cfe0\",\"chunk-2d22613b\":\"31d6cfe0\",\"chunk-2d22bf7e\":\"31d6cfe0\",\"chunk-2d22ce96\":\"31d6cfe0\",\"chunk-2d22d5b3\":\"31d6cfe0\",\"chunk-2d230333\":\"31d6cfe0\",\"chunk-2d238098\":\"31d6cfe0\",\"chunk-2d238467\":\"31d6cfe0\",\"chunk-2ddc38f1\":\"efb69296\",\"chunk-2ea0e2a4\":\"0ccb04eb\",\"chunk-2f38cc30\":\"31d6cfe0\",\"chunk-34cfe5fb\":\"297f7bf9\",\"chunk-35274162\":\"b3714078\",\"chunk-3686c30c\":\"b46358af\",\"chunk-36a57274\":\"dedbb57b\",\"chunk-bf5ef170\":\"f921b4fd\",\"chunk-f120ec20\":\"f921b4fd\",\"chunk-3b2cafeb\":\"8bc5e703\",\"chunk-2d21445b\":\"31d6cfe0\",\"chunk-3e275b38\":\"f921b4fd\",\"chunk-3fadb0c8\":\"5b5ebb7a\",\"chunk-3fe6888f\":\"0ccb04eb\",\"chunk-409ef6be\":\"cd500e7f\",\"chunk-43389a06\":\"31d6cfe0\",\"chunk-47664258\":\"c04026cd\",\"chunk-48f39aab\":\"0ccb04eb\",\"chunk-4b4171b6\":\"d4f148e8\",\"chunk-502553b6\":\"fcf72c66\",\"chunk-5471779e\":\"31d6cfe0\",\"chunk-597ee9f0\":\"1a277322\",\"chunk-5a393167\":\"0ccb04eb\",\"chunk-5a3b1f3a\":\"fe3be41b\",\"chunk-5c2ea17e\":\"befe8587\",\"chunk-5e406758\":\"43654e07\",\"chunk-622a072c\":\"31d6cfe0\",\"chunk-64fd58dc\":\"fcf72c66\",\"chunk-68afedc3\":\"b3714078\",\"chunk-68b65227\":\"5b5ebb7a\",\"chunk-69ef97b7\":\"0ccb04eb\",\"chunk-6bc3680e\":\"0ccb04eb\",\"chunk-6c8c4d76\":\"7fb3898c\",\"chunk-6f44b09c\":\"0ccb04eb\",\"chunk-6f81dfc0\":\"f921b4fd\",\"chunk-715ea8c1\":\"dc38a93c\",\"chunk-8e300562\":\"fbe7b0ef\",\"chunk-7176d6fb\":\"3c7b7d8e\",\"chunk-4c893fbf\":\"31d6cfe0\",\"chunk-5c27c878\":\"31d6cfe0\",\"chunk-d867dcce\":\"fcf72c66\",\"chunk-50b8aafa\":\"0ccb04eb\",\"chunk-74829180\":\"31d6cfe0\",\"chunk-7485c819\":\"0ccb04eb\",\"chunk-781d7ee8\":\"8aa946aa\",\"chunk-2d0ba8dd\":\"31d6cfe0\",\"chunk-409b70b9\":\"50277a24\",\"chunk-456ac820\":\"31d6cfe0\",\"chunk-6c1c781d\":\"31d6cfe0\",\"chunk-a65348e4\":\"31d6cfe0\",\"chunk-7a687420\":\"61a3143a\",\"chunk-7c709662\":\"0ccb04eb\",\"chunk-7e74c094\":\"31d6cfe0\",\"chunk-6044da8d\":\"7ff29df4\",\"chunk-7f7e72f4\":\"f0ad61b3\",\"chunk-8b3d3f4a\":\"5e90908b\",\"chunk-91ff4934\":\"0ccb04eb\",\"chunk-92908aa4\":\"31d6cfe0\",\"chunk-6cc8b85e\":\"7e76e298\",\"chunk-9d1a26fa\":\"ff3134cb\",\"chunk-66ef67ba\":\"0f70f505\",\"chunk-9cd6770a\":\"37da470c\",\"chunk-9e0660b0\":\"31d6cfe0\",\"chunk-b49c6bb0\":\"0ccb04eb\",\"chunk-b8b3a7f8\":\"16796182\",\"chunk-bd4b2036\":\"e16f7355\",\"chunk-c22b85fa\":\"0ccb04eb\",\"chunk-c659955a\":\"0ccb04eb\",\"chunk-cae591d0\":\"31d6cfe0\",\"chunk-cb2cafa4\":\"0ccb04eb\",\"chunk-cf8ee55e\":\"efb69296\",\"chunk-dfd2cbfe\":\"b3714078\",\"chunk-f2240006\":\"478f2824\",\"chunk-f482f0b2\":\"31d6cfe0\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export const convertDuration = (duration: number) => {\r\n const seconds = duration % 60;\r\n const ss = Math.floor(seconds).toString().padStart(2, \"0\");\r\n const minutes = (duration / 60) % 60;\r\n const mm = Math.floor(minutes).toString().padStart(2, \"0\");\r\n const hours = (duration / 60 / 60) % 60;\r\n const hh = Math.floor(hours).toString().padStart(2, \"0\");\r\n\r\n if (Math.floor(hours) > 0) return `${hh}:${mm}:${ss}`;\r\n return `${mm}:${ss}`;\r\n};\r\n","class BaselineAnalysis {\r\n has?: boolean;\r\n pitch: number;\r\n volume: number;\r\n analyzed?: boolean;\r\n\r\n constructor(data: any) {\r\n if (!data || data === null) {\r\n this.pitch = 0;\r\n this.volume = 0;\r\n this.has = false;\r\n this.analyzed = false;\r\n return;\r\n }\r\n\r\n this.has = true;\r\n const { averagePitch, averageVolume } = data;\r\n if (averagePitch === -1 || averageVolume === -1) {\r\n this.pitch = 0;\r\n this.volume = 0;\r\n this.analyzed = false;\r\n return;\r\n }\r\n\r\n const pitch = Math.round(averagePitch * 100) / 100;\r\n const volume = Math.round(averageVolume * 100 * 100) / 100;\r\n this.analyzed = true;\r\n this.pitch = pitch;\r\n this.volume = volume;\r\n }\r\n}\r\nexport default BaselineAnalysis;\r\n","import VueI18n from \"vue-i18n\";\r\nimport {\r\n AddElementRequest,\r\n ElementType,\r\n Seminar,\r\n SeminarBlock,\r\n SeminarElement,\r\n SeminarOrder,\r\n} from \"../models\";\r\n\r\nexport const elementStatus = (e: SeminarElement, seminar?: Seminar) => {\r\n // subs for this el\r\n const all = seminar?.submissions?.filter(x => x.elementId === e.id) || [];\r\n\r\n const subs = all.filter(x => !x.skipped);\r\n const skippedSubs = all.filter(x => x.skipped);\r\n\r\n // check video_presentation differently\r\n let completed = false;\r\n if (e?.type === \"video_presentation\") {\r\n const numReq = e.requiredSubmissions || 1;\r\n const numReqShared = e.rateableSubmissions ? e.requiredNumShared || 0 : 0;\r\n const sharedSubs = subs?.filter(x => x.isShared).length || 0;\r\n completed = (subs?.length || 0) >= numReq && sharedSubs >= numReqShared;\r\n } else if (e.type === \"goal\") completed = e.progress >= e.target;\r\n else completed = (subs?.length || 0) > 0;\r\n\r\n return completed\r\n ? \"completed\"\r\n : skippedSubs.length > 0\r\n ? \"skipped\"\r\n : \"active\";\r\n};\r\n\r\nexport const blocksInOrder = (\r\n seminar?: Seminar,\r\n order?: SeminarOrder,\r\n): SeminarBlock[] => {\r\n if (!seminar || !order) return [];\r\n const s = JSON.parse(JSON.stringify(seminar)) as Seminar;\r\n const o = JSON.parse(JSON.stringify(order)) as SeminarOrder;\r\n\r\n // init\r\n const arr: SeminarBlock[] = [];\r\n\r\n // sorted blocks\r\n const blocks = o.blocks.sort((a, b) => a.blockIndex - b.blockIndex);\r\n\r\n // iterate over blocks\r\n for (const b of blocks) {\r\n // find actual block in seminar\r\n const bFind = s.blocks.find(x => x.id === b.blockId);\r\n if (!bFind) continue;\r\n if (arr.some(x => x.id === bFind.id)) continue;\r\n\r\n const block = JSON.parse(JSON.stringify(bFind)) as SeminarBlock;\r\n const elements: SeminarElement[] = [];\r\n\r\n // elements of this block\r\n const blockElements = o.elements\r\n .filter(x => x.blockId === b.blockId)\r\n .sort((a, b) => a.elementIndex - b.elementIndex);\r\n\r\n // iterate over elements\r\n for (const e of blockElements) {\r\n // find actual element in seminar\r\n const el = s.elements?.find(x => x.id === e.elementId);\r\n if (!el) continue;\r\n if (elements.some(x => x.id === el.id)) continue;\r\n\r\n // push in order\r\n elements.push(JSON.parse(JSON.stringify(el)));\r\n }\r\n\r\n // assign elements\r\n block.elements = elements;\r\n\r\n // push block in order\r\n arr.push(block);\r\n }\r\n\r\n // done\r\n return arr;\r\n};\r\n\r\nexport const requestFromElement = (\r\n el: SeminarElement,\r\n): AddElementRequest | undefined => {\r\n const data = new FormData();\r\n switch (el.type) {\r\n case \"read_text\":\r\n return {\r\n type: \"read_text\",\r\n data: {\r\n title: el.title,\r\n body: el.body,\r\n seminarId: el.seminarId,\r\n blockId: el.blockId,\r\n },\r\n };\r\n case \"watch_video\":\r\n data.append(\"body\", el.body);\r\n data.append(\"title\", el.title);\r\n data.append(\"blockId\", el.blockId.toString());\r\n data.append(\"seminarId\", el.seminarId.toString());\r\n return { type: \"watch_video\", data };\r\n case \"video_presentation\":\r\n return {\r\n type: \"video_presentation\",\r\n data: {\r\n blockId: el.blockId,\r\n body: el.body,\r\n seminarId: el.seminarId,\r\n title: el.title,\r\n rateableSubmissions: el.rateableSubmissions || false,\r\n requiredSubmissions: Number(el.requiredSubmissions || 1),\r\n maxNumShared: Number(el.maxNumShared || 2),\r\n maxSubmissions: Number(el.maxSubmissions || 10),\r\n requiredNumShared: Number(el.requiredNumShared || 0),\r\n isTimed: el.isTimed || false,\r\n expectedLen: el.isTimed && el.expectedLen ? el.expectedLen : 0,\r\n maxLen: el.isTimed && el.maxLen ? el.maxLen : 0,\r\n },\r\n };\r\n case \"watch_feedback\":\r\n return {\r\n type: \"watch_feedback\",\r\n data: {\r\n blockId: el.blockId,\r\n body: el.body,\r\n seminarId: el.seminarId,\r\n title: el.title,\r\n },\r\n };\r\n case \"give_feedback\":\r\n return {\r\n type: \"give_feedback\",\r\n data: {\r\n body: el.body,\r\n title: el.title,\r\n blockId: el.blockId,\r\n seminarId: el.seminarId,\r\n forElement: el.forElement,\r\n rateableSubmissions: el.rateableSubmissions || false,\r\n },\r\n };\r\n case \"rephrase\":\r\n return {\r\n type: \"rephrase\",\r\n data: {\r\n blockId: el.blockId,\r\n body: el.body,\r\n seminarId: el.seminarId,\r\n title: el.title,\r\n answers: el.answers,\r\n sentences: el.sentences,\r\n },\r\n };\r\n case \"categorize\":\r\n return {\r\n type: \"categorize\",\r\n data: {\r\n blockId: el.blockId,\r\n body: el.body,\r\n seminarId: el.seminarId,\r\n title: el.title,\r\n answers: el.answers,\r\n words: el.words,\r\n categories: el.categories,\r\n },\r\n };\r\n case \"gap_text\":\r\n return {\r\n type: \"gap_text\",\r\n data: {\r\n blockId: el.blockId,\r\n body: el.body,\r\n seminarId: el.seminarId,\r\n title: el.title,\r\n answers: el.answers,\r\n text: el.text,\r\n },\r\n };\r\n case \"vr_training\":\r\n return {\r\n type: \"vr_training\",\r\n data: {\r\n blockId: el.blockId,\r\n body: el.body,\r\n seminarId: el.seminarId,\r\n title: el.title,\r\n requiredScore: el.requiredScore,\r\n },\r\n };\r\n case \"goal\":\r\n return {\r\n type: \"goal\",\r\n data: {\r\n blockId: el.blockId,\r\n body: el.body,\r\n seminarId: el.seminarId,\r\n title: el.title,\r\n target: el.target,\r\n conditions: el.conditions.map(x => ({\r\n ...x,\r\n value: Array.isArray(x.value) ? JSON.stringify(x.value) : x.value,\r\n })),\r\n },\r\n };\r\n default:\r\n return undefined;\r\n }\r\n};\r\n\r\nexport const elementTypes = [\r\n \"read_text\",\r\n \"watch_video\",\r\n \"video_presentation\",\r\n \"give_feedback\",\r\n \"watch_feedback\",\r\n \"gap_text\",\r\n \"rephrase\",\r\n \"categorize\",\r\n \"vr_training\",\r\n \"goal\",\r\n];\r\n\r\nexport const videoTypes = [\"video_presentation\", \"give_feedback\"];\r\n\r\nexport const allTypes = (\r\n t?: (\r\n key: string,\r\n values?: VueI18n.Values | undefined,\r\n ) => VueI18n.TranslateResult,\r\n) => {\r\n return elementTypes.map(x => (t && t(`seminars.${x}.title`).toString()) || x);\r\n};\r\n\r\nexport const typeName = (\r\n type: ElementType,\r\n t?: (\r\n key: string,\r\n values?: VueI18n.Values | undefined,\r\n ) => VueI18n.TranslateResult,\r\n) => {\r\n switch (type) {\r\n case \"read_text\":\r\n return (t && t(`seminars.${type}.title`)) || \"Read text\";\r\n case \"categorize\":\r\n return (t && t(`seminars.${type}.title`)) || \"Put words into categories\";\r\n case \"gap_text\":\r\n return (t && t(`seminars.${type}.title`)) || \"Gap text\";\r\n case \"give_feedback\":\r\n return (t && t(`seminars.${type}.title`)) || \"Record feedback\";\r\n case \"rephrase\":\r\n return (t && t(`seminars.${type}.title`)) || \"Rephrase sentences\";\r\n case \"video_presentation\":\r\n return (t && t(`seminars.${type}.title`)) || \"Record presentation\";\r\n case \"vr_training\":\r\n return (t && t(`seminars.${type}.title`)) || \"VR Training\";\r\n case \"watch_feedback\":\r\n return (t && t(`seminars.${type}.title`)) || \"Watch feedback\";\r\n case \"watch_video\":\r\n return (t && t(`seminars.${type}.title`)) || \"Watch video\";\r\n case \"goal\":\r\n return (t && t(`seminars.${type}.title`)) || \"Goal\";\r\n default:\r\n return \"\";\r\n }\r\n};\r\n\r\nexport const typeToEndpoint = (t: ElementType) => {\r\n switch (t) {\r\n case \"read_text\":\r\n return \"/api/Elements/ReadText\";\r\n case \"categorize\":\r\n return \"/api/Elements/Categorize\";\r\n case \"gap_text\":\r\n return \"/api/Elements/GapText\";\r\n case \"give_feedback\":\r\n return \"/api/Elements/GiveFeedback\";\r\n case \"rephrase\":\r\n return \"/api/Elements/Rephrase\";\r\n case \"video_presentation\":\r\n return \"/api/Elements/VideoPresentation\";\r\n case \"vr_training\":\r\n return \"/api/Elements/VRTraining\";\r\n case \"watch_feedback\":\r\n return \"/api/Elements/WatchFeedback\";\r\n case \"watch_video\":\r\n return \"/api/Elements/WatchVideo\";\r\n case \"goal\":\r\n return \"/api/Elements/Goal\";\r\n default:\r\n return \"\";\r\n }\r\n};\r\n\r\nconst base = {\r\n id: 0,\r\n blockId: 0,\r\n seminarId: 0,\r\n title: \"\",\r\n body: \"\",\r\n completed: false,\r\n};\r\nexport const emptyElement = (t: ElementType): SeminarElement => {\r\n switch (t) {\r\n case \"read_text\":\r\n return {\r\n ...base,\r\n type: \"read_text\",\r\n };\r\n case \"categorize\":\r\n return {\r\n ...base,\r\n type: \"categorize\",\r\n words: [],\r\n answers: [[\"Answer 1\"]],\r\n categories: [\"Category #1\"],\r\n };\r\n case \"gap_text\":\r\n return {\r\n ...base,\r\n type: \"gap_text\",\r\n text: \"__ text\",\r\n answers: [\"Gap\"],\r\n };\r\n case \"give_feedback\":\r\n return {\r\n ...base,\r\n type: \"give_feedback\",\r\n forElement: 0,\r\n };\r\n case \"rephrase\":\r\n return {\r\n ...base,\r\n type: \"rephrase\",\r\n sentences: [\"Hey\"],\r\n answers: [\"Hello\"],\r\n };\r\n case \"video_presentation\":\r\n return {\r\n ...base,\r\n type: \"video_presentation\",\r\n maxNumShared: 2,\r\n maxSubmissions: 10,\r\n requiredNumShared: 0,\r\n requiredSubmissions: 1,\r\n rateableSubmissions: false,\r\n isTimed: false,\r\n expectedLen: 10,\r\n maxLen: 20,\r\n };\r\n case \"vr_training\":\r\n return {\r\n ...base,\r\n type: \"vr_training\",\r\n requiredScore: 7,\r\n };\r\n case \"watch_feedback\":\r\n return {\r\n ...base,\r\n type: \"watch_feedback\",\r\n };\r\n case \"watch_video\":\r\n return {\r\n ...base,\r\n type: \"watch_video\",\r\n videoURI: \"\",\r\n };\r\n case \"goal\":\r\n return {\r\n ...base,\r\n type: \"goal\",\r\n goalId: 0,\r\n target: 5,\r\n progress: 0,\r\n conditions: [],\r\n isAssignedToUser: false,\r\n };\r\n default:\r\n return {} as SeminarElement;\r\n }\r\n};\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=31dfdd2a&prod&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"assets/img/prezp_logo.fb26af70.png\";","import store from \"@/core/store\";\r\nimport { RoleClaims, UserClaims } from \"@/core/models\";\r\nimport Storage from \"@/core/utils/LocalStorage\";\r\n\r\nexport const hasPermissions = (permittedClaims: string[]) => {\r\n const permissions = store.getters[\"profile/permissions\"] as\r\n | RoleClaims[]\r\n | undefined;\r\n const userClaims = store.getters[\"profile/userClaims\"] as\r\n | UserClaims[]\r\n | undefined;\r\n return (\r\n permissions?.some(x => permittedClaims.includes(x.type)) ||\r\n userClaims?.some(x => permittedClaims.includes(x.type))\r\n );\r\n};\r\n\r\nexport const hasRole = (permittedRoles: string[]) => {\r\n const roles = Storage.getUserRole();\r\n return roles?.some(x => permittedRoles.includes(x.name));\r\n};\r\n","class FileObject {\r\n public Name: string;\r\n public Size: number;\r\n public Type: string;\r\n public URI: string;\r\n\r\n constructor(name: string, size: number, type: string, uri: string) {\r\n this.Name = name;\r\n this.Size = size;\r\n this.Type = type;\r\n this.URI = uri;\r\n }\r\n\r\n static parseFile(data: any): FileObject | null {\r\n if (data == null) return null;\r\n return new FileObject(data.name, data.size, data.type, data.uri);\r\n }\r\n}\r\n\r\nexport default FileObject;\r\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSelect.vue?vue&type=style&index=0&id=ed244248&prod&scoped=true&lang=css&\"","import Vue from \"vue\";\r\nimport \"vuetify/dist/vuetify.min.css\";\r\nimport Vuetify, { UserVuetifyPreset } from \"vuetify\";\r\nimport { VuetifyThemeVariant } from \"vuetify/types/services/theme\";\r\n\r\nVue.use(Vuetify);\r\n\r\nconst lightTheme: Partial = {\r\n primary: \"#2F9FF2\",\r\n accent: \"#DBDEE3\",\r\n accentText: \"#5B6974\",\r\n lightgray: \"#E3E9EE\",\r\n lightgray2: \"#F0F3F6\",\r\n prezpRed: \"#d55129\",\r\n main: \"#000\",\r\n other: \"#fff\",\r\n darkgray: \"#8f8f8f\",\r\n green: \"#009942\",\r\n\r\n secondary: \"#FF7729\",\r\n anchor: \"#808080\",\r\n // background: \"#e3e3e3\",\r\n background: \"#F0F3F6\",\r\n lightgray3: \"#b1b1b1\",\r\n prezpGreen: \"#568e1d\",\r\n menu: \"#36528b\",\r\n};\r\n\r\nconst darkTheme: Partial = {\r\n primary: \"#2F9FF2\",\r\n accent: \"#555\",\r\n accentText: \"#555\",\r\n lightgray: \"#444\",\r\n lightgray2: \"#333\",\r\n prezpRed: \"#d55129\",\r\n main: \"#fff\",\r\n other: \"#000\",\r\n darkgray: \"#f0f0f0\",\r\n green: \"#009942\",\r\n\r\n secondary: \"#FF7729\",\r\n anchor: \"#808080\",\r\n background: \"#222\",\r\n lightgray3: \"#b1b1b1\",\r\n prezpGreen: \"#568e1d\",\r\n menu: \"#36528b\",\r\n};\r\n\r\nconst options: UserVuetifyPreset = {\r\n theme: {\r\n options: {\r\n customProperties: true,\r\n },\r\n themes: {\r\n light: lightTheme,\r\n dark: darkTheme,\r\n },\r\n },\r\n};\r\n\r\nexport default new Vuetify(options);\r\n","import { Role } from \"@/core/models/Role\";\r\nimport { Roles } from \"@/core/models/interfaces\";\r\n\r\nconst key = process.env.VUE_APP_LOCAL_STORAGE_KEY as string;\r\n\r\nclass StorageModel {\r\n accessToken: string;\r\n refreshToken: string;\r\n userRole: Roles[];\r\n miniMenu: boolean;\r\n darkMode: boolean;\r\n locale: string;\r\n shouldShowRecordingTip: boolean;\r\n inputDevice: string;\r\n videoInputDevice: string;\r\n welcomeDialog: boolean;\r\n recordLimitDialog: boolean;\r\n VRMode: boolean;\r\n\r\n constructor() {\r\n this.locale = \"de\";\r\n this.userRole = [{ name: Role.User }, { name: Role.SubscriberFree }];\r\n this.miniMenu = false;\r\n this.darkMode = false;\r\n this.accessToken = \"\";\r\n this.shouldShowRecordingTip = true;\r\n this.inputDevice = \"\";\r\n this.videoInputDevice = \"\";\r\n this.refreshToken = \"\";\r\n this.welcomeDialog = true;\r\n this.recordLimitDialog = true;\r\n this.VRMode = false;\r\n }\r\n\r\n static parse(json: string) {\r\n const obj = JSON.parse(json);\r\n const storage = new StorageModel();\r\n storage.locale = obj.locale;\r\n storage.userRole = obj.userRole;\r\n storage.miniMenu = obj.miniMenu;\r\n storage.darkMode = obj.darkMode;\r\n storage.accessToken = obj.accessToken;\r\n storage.shouldShowRecordingTip = obj.shouldShowRecordingTip;\r\n storage.inputDevice = obj.inputDevice;\r\n storage.videoInputDevice = obj.videoInputDevice;\r\n\r\n storage.refreshToken = obj.refreshToken;\r\n storage.welcomeDialog = obj.welcomeDialog;\r\n storage.recordLimitDialog = obj.recordLimitDialog;\r\n storage.VRMode = obj.VRMode;\r\n return storage;\r\n }\r\n}\r\n\r\nclass LocalStorage {\r\n private static getStorage() {\r\n const item = localStorage.getItem(key);\r\n if (!item) return new StorageModel();\r\n return StorageModel.parse(item);\r\n }\r\n\r\n static getAccessToken() {\r\n return this.getStorage().accessToken;\r\n }\r\n static setAccessToken(token: string) {\r\n const storage = this.getStorage();\r\n storage.accessToken = token;\r\n localStorage.setItem(key, JSON.stringify(storage));\r\n }\r\n\r\n static getRefreshToken() {\r\n return this.getStorage().refreshToken;\r\n }\r\n static setRefreshToken(token: string) {\r\n const storage = this.getStorage();\r\n storage.refreshToken = token;\r\n localStorage.setItem(key, JSON.stringify(storage));\r\n }\r\n\r\n static getUserRole() {\r\n return this.getStorage().userRole;\r\n }\r\n static setUserRole(roles: Roles[]) {\r\n const storage = this.getStorage();\r\n storage.userRole = roles;\r\n localStorage.setItem(key, JSON.stringify(storage));\r\n }\r\n\r\n static getMenuMini() {\r\n return this.getStorage().miniMenu;\r\n }\r\n static setMenuMini(isMini: boolean) {\r\n const storage = this.getStorage();\r\n storage.miniMenu = isMini;\r\n localStorage.setItem(key, JSON.stringify(storage));\r\n }\r\n\r\n static getDarkMode() {\r\n return this.getStorage().darkMode;\r\n }\r\n static setDarkMode(mode: boolean) {\r\n const storage = this.getStorage();\r\n storage.darkMode = mode;\r\n localStorage.setItem(key, JSON.stringify(storage));\r\n }\r\n\r\n static getLocale() {\r\n return this.getStorage().locale;\r\n }\r\n static setLocale(locale: string) {\r\n const storage = this.getStorage();\r\n storage.locale = locale;\r\n localStorage.setItem(key, JSON.stringify(storage));\r\n window.dispatchEvent(\r\n new CustomEvent(\"locale-localstorage-changed\", {\r\n detail: {\r\n storage: this.getStorage().locale,\r\n },\r\n }),\r\n );\r\n }\r\n\r\n static getShouldShowRecordingTip() {\r\n return this.getStorage().shouldShowRecordingTip;\r\n }\r\n static setShouldShowRecordingTip(tip: boolean) {\r\n const storage = this.getStorage();\r\n storage.shouldShowRecordingTip = tip;\r\n localStorage.setItem(key, JSON.stringify(storage));\r\n }\r\n\r\n static getInputDevice() {\r\n return this.getStorage().inputDevice;\r\n }\r\n static setInputDevice(id: string) {\r\n const storage = this.getStorage();\r\n storage.inputDevice = id;\r\n localStorage.setItem(key, JSON.stringify(storage));\r\n }\r\n\r\n static getVideoInputDevice() {\r\n return this.getStorage().videoInputDevice;\r\n }\r\n static setVideoInputDevice(id: string) {\r\n const storage = this.getStorage();\r\n storage.videoInputDevice = id;\r\n localStorage.setItem(key, JSON.stringify(storage));\r\n }\r\n\r\n static getWelcomeDialog() {\r\n return this.getStorage().welcomeDialog;\r\n }\r\n static setWelcomeDialog(value: boolean) {\r\n const storage = this.getStorage();\r\n storage.welcomeDialog = value;\r\n localStorage.setItem(key, JSON.stringify(storage));\r\n }\r\n\r\n static getRecordLimitDialog() {\r\n return this.getStorage().recordLimitDialog;\r\n }\r\n static setRecordLimitDialog(value: boolean) {\r\n const storage = this.getStorage();\r\n storage.recordLimitDialog = value;\r\n localStorage.setItem(key, JSON.stringify(storage));\r\n }\r\n\r\n static getVRMode() {\r\n return this.getStorage().VRMode;\r\n }\r\n static setVRMode(value: boolean) {\r\n const storage = this.getStorage();\r\n storage.VRMode = value;\r\n localStorage.setItem(key, JSON.stringify(storage));\r\n }\r\n\r\n static clearStorage() {\r\n LocalStorage.setAccessToken(\"\");\r\n LocalStorage.setRefreshToken(\"\");\r\n LocalStorage.setInputDevice(\"\");\r\n LocalStorage.setVideoInputDevice(\"\");\r\n LocalStorage.setMenuMini(false);\r\n LocalStorage.setUserRole([]);\r\n LocalStorage.setDarkMode(false);\r\n LocalStorage.setDarkMode(false);\r\n LocalStorage.setWelcomeDialog(true);\r\n LocalStorage.setRecordLimitDialog(true);\r\n LocalStorage.setVRMode(false);\r\n }\r\n}\r\n\r\nexport default LocalStorage;\r\n","import store from \"@/core/store\";\r\nimport Storage from \"@/core/utils/LocalStorage\";\r\nimport { UserClaims } from \"@/core/models\";\r\nimport { RoleClaims } from \"@/core/models/interfaces\";\r\nimport { NavigationGuardNext, Route } from \"vue-router\";\r\n\r\ntype Next = NavigationGuardNext;\r\n\r\n// helpers\r\nconst isAuth = () => {\r\n const token = Storage.getAccessToken();\r\n return !!token;\r\n};\r\n\r\nconst hasPermissions = (permittedClaims: string[]) => {\r\n const permissions = store.getters[\"profile/permissions\"] as\r\n | RoleClaims[]\r\n | undefined;\r\n const userClaims = store.getters[\"profile/userClaims\"] as\r\n | UserClaims[]\r\n | undefined;\r\n return (\r\n permissions?.some(x => permittedClaims.includes(x.type)) ||\r\n userClaims?.some(x => permittedClaims.includes(x.type))\r\n );\r\n};\r\n\r\nconst hasRole = (permittedRoles: string[]) => {\r\n const roles = Storage.getUserRole();\r\n return roles?.some(x => permittedRoles.includes(x.name));\r\n};\r\n\r\n// Guards\r\nconst authGuard = (_to: Route, _from: Route, next: Next) => {\r\n if (!isAuth()) next(\"/\");\r\n else next();\r\n};\r\n\r\nconst adminGuard = (_to: Route, _from: Route, next: Next) => {\r\n if (!isAuth()) next(\"/\");\r\n else if (!hasRole([\"admin\"])) next(\"/dashboard\");\r\n else next();\r\n};\r\n\r\nconst subscriberGuard = (_to: Route, _from: Route, next: Next) => {\r\n if (!isAuth()) next(\"/\");\r\n else if (\r\n !hasRole([\r\n \"subscriber-free\",\r\n \"subscriber-basic\",\r\n \"subscriber-standard\",\r\n \"subscriber-premium\",\r\n \"subscriber-enterprise\",\r\n ])\r\n )\r\n next(\"/dashboard\");\r\n else next();\r\n};\r\n\r\nconst liveTranscriptionGuard = (_to: Route, _from: Route, next: Next) => {\r\n if (\r\n !isAuth() ||\r\n !hasPermissions([\"live_transcription:fast\", \"live_transcription:relaxed\"])\r\n )\r\n next(\"/\");\r\n else next();\r\n};\r\n\r\nconst analysisGuard = (_to: Route, _from: Route, next: Next) => {\r\n if (!isAuth() || !hasPermissions([\"analysis:fast\", \"analysis:relaxed\"]))\r\n next(\"/\");\r\n else next();\r\n};\r\n\r\nconst aiFeedbackGuard = (_to: Route, _from: Route, next: Next) => {\r\n if (!isAuth() || !hasPermissions([\"ai_feedback:fast\", \"ai_feedback:relaxed\"]))\r\n next(\"/\");\r\n else next();\r\n};\r\n\r\nconst seminarGuard = (_to: Route, _from: Route, next: Next) => {\r\n if (!isAuth() || !hasPermissions([\"seminar:default\"])) next(\"/\");\r\n else next();\r\n};\r\n\r\nconst challengeGuard = (_to: Route, _from: Route, next: Next) => {\r\n if (!isAuth() || !hasPermissions([\"challenge:default\"])) next(\"/\");\r\n else next();\r\n};\r\n\r\nconst publicGroupGuard = (_to: Route, _from: Route, next: Next) => {\r\n if (\r\n !isAuth() ||\r\n !hasPermissions([\"public_group:limited\", \"public_group:full\"])\r\n )\r\n next(\"/\");\r\n else next();\r\n};\r\n\r\nconst b2bGroupGuard = (_to: Route, _from: Route, next: Next) => {\r\n if (!isAuth() || !hasPermissions([\"b2b_group:default\"])) next(\"/\");\r\n else next();\r\n};\r\n\r\nexport {\r\n authGuard,\r\n adminGuard,\r\n subscriberGuard,\r\n liveTranscriptionGuard,\r\n analysisGuard,\r\n aiFeedbackGuard,\r\n seminarGuard,\r\n challengeGuard,\r\n publicGroupGuard,\r\n b2bGroupGuard,\r\n};\r\n","module.exports = __webpack_public_path__ + \"assets/img/brand_logo_small.7b35a004.svg\";","class Timestamp {\r\n index: number;\r\n time: number;\r\n slideURI: string;\r\n slideIndex: number;\r\n\r\n constructor(data: any) {\r\n const { index, time, slideURI, slideIndex } = data;\r\n this.index = index;\r\n this.time = time;\r\n this.slideURI = slideURI;\r\n this.slideIndex = slideIndex;\r\n }\r\n}\r\nexport default Timestamp;\r\n","import {\r\n AiFeedback,\r\n AudioAnalysis,\r\n FileInfo,\r\n HeatMapEntry,\r\n MovementAnalysis,\r\n PDFInfo,\r\n SessionScores,\r\n TextAnalysis,\r\n TranscriptionSlide,\r\n} from \"@/core/models/sessions\";\r\nimport Timestamp from \"./Timestamp\";\r\nimport FileObject from \"../FileObject\";\r\nimport { AnalysisStatus, SessionAvearges } from \"../interfaces\";\r\n\r\nclass Session {\r\n public ID: number;\r\n public Name: string;\r\n public AudioUrl: string;\r\n public CreatedAt: Date;\r\n public RecordingDate: Date;\r\n public SessionLength: number;\r\n public MovementAnalysis: MovementAnalysis;\r\n public Heatmap: HeatMapEntry[];\r\n public VideoInfo: FileInfo;\r\n public PDFInfo: PDFInfo;\r\n public TranscriptionStatus: string;\r\n public TextAnalysis: TextAnalysis;\r\n public AudioAnalysis: AudioAnalysis;\r\n public SessionScore: number;\r\n public AudioFile: FileObject | null;\r\n public VideoFromRecording: FileObject | null;\r\n public VideoFeedback: FileObject | null;\r\n public Completed: boolean;\r\n public Timestamps: Timestamp[];\r\n public Slides: TranscriptionSlide[];\r\n public SharedWith: string[];\r\n public PresentationId: number | null;\r\n public Averages: SessionAvearges;\r\n public AnalysisStatus = AnalysisStatus.NotStarted;\r\n public SessionScores: SessionScores;\r\n public AiFeedback: AiFeedback;\r\n\r\n // others\r\n public Loaded = false;\r\n public Loading = false;\r\n\r\n constructor(\r\n id: number,\r\n name: string,\r\n audioUrl: string,\r\n recording: string,\r\n createdAt: string,\r\n length: string,\r\n movement: any,\r\n heatmap: any,\r\n video: any,\r\n pdf: any,\r\n transcriptionStatus: string,\r\n text: any,\r\n audioAnalysis: any,\r\n score: any,\r\n audioFile: FileObject | null,\r\n videoFromRecording: FileObject | null,\r\n videoFeedback: FileObject | null,\r\n completed: boolean,\r\n timestamps: Timestamp[],\r\n slides: TranscriptionSlide[],\r\n sharedWith: string[],\r\n pres: number | null,\r\n averages: SessionAvearges,\r\n status: string,\r\n scores: any,\r\n aiFeedback: AiFeedback,\r\n ) {\r\n this.ID = id;\r\n this.Name = name;\r\n this.AudioUrl = audioUrl;\r\n this.RecordingDate = new Date(recording);\r\n this.CreatedAt = new Date(createdAt);\r\n\r\n const timespan = length.split(\":\");\r\n const total =\r\n Number(timespan[0]) * 3600 +\r\n Number(timespan[1]) * 60 +\r\n Number(timespan[2]);\r\n this.SessionLength = total || 0;\r\n this.MovementAnalysis = MovementAnalysis.parseMovementAnalysis(movement);\r\n if (video) this.VideoInfo = new FileInfo(video.title, video.uri);\r\n else this.VideoInfo = new FileInfo(\"\", \"\");\r\n if (pdf) this.PDFInfo = new PDFInfo(pdf.name, pdf.pdfUri);\r\n else this.PDFInfo = new PDFInfo(\"\", \"\");\r\n this.TranscriptionStatus = transcriptionStatus;\r\n this.TextAnalysis = TextAnalysis.parseTextAnalysis(text);\r\n this.AudioAnalysis = AudioAnalysis.parseAudioAnalysis(audioAnalysis);\r\n this.SessionScore = Math.round((score || 0) * 100) / 100;\r\n this.SessionScores = scores;\r\n this.AudioFile = audioFile;\r\n this.VideoFromRecording = videoFromRecording;\r\n this.VideoFeedback = videoFeedback;\r\n this.Completed = completed;\r\n this.Timestamps = timestamps;\r\n this.Slides = slides;\r\n this.SharedWith = sharedWith;\r\n this.PresentationId = pres;\r\n this.Averages = averages;\r\n this.AnalysisStatus = status;\r\n this.AiFeedback = aiFeedback;\r\n\r\n // Heatmap analysis\r\n if (heatmap && heatmap.length)\r\n this.Heatmap = heatmap.map(\r\n (entry: any) => new HeatMapEntry(entry.x, entry.y, entry.count),\r\n );\r\n else this.Heatmap = [];\r\n }\r\n\r\n public static parseSessions(responseData: any) {\r\n return responseData.map((entry: any) => this.parseSingleSession(entry));\r\n }\r\n\r\n public static parseSingleSession(data: any) {\r\n const id = Number(data.id);\r\n const name = data.name;\r\n const audio = data.audioSasUri;\r\n const date = data.recordingDate;\r\n const createdAt = data.createdAt;\r\n const length = data.sessionLength;\r\n const movement = data.movementAnalysis;\r\n const heatmap = data.heatmap;\r\n const video = data.videoInfo;\r\n const pdf = data.pdfInfo;\r\n const transcriptionStatus = data.transcriptionStatus;\r\n const text = data.textAnalysis;\r\n const audioAnalysis = data.audioAnalysis;\r\n const score = data.sessionScore;\r\n const audioFile = FileObject.parseFile(data.audioFile);\r\n const videoFile = FileObject.parseFile(data.videoFromRecording);\r\n const videoFeedback = FileObject.parseFile(data.videoFeedback);\r\n const timestamps = (data.timestamps as any[]).map(t => new Timestamp(t));\r\n const slides = data.transcriptionSlides as TranscriptionSlide[];\r\n const sharedWith = data.sharedWith as string[];\r\n const presId = data.presentationId;\r\n const averages = data.averages;\r\n const status = data.analysisStatus;\r\n const completed = data.completed || status === AnalysisStatus.Succeeded;\r\n const scores = data.sessionScores;\r\n const aiFeedback = data.aiFeedback;\r\n\r\n return new Session(\r\n id,\r\n name,\r\n audio,\r\n date,\r\n createdAt,\r\n length,\r\n movement,\r\n heatmap,\r\n video,\r\n pdf,\r\n transcriptionStatus,\r\n text,\r\n audioAnalysis,\r\n score,\r\n audioFile,\r\n videoFile,\r\n videoFeedback,\r\n completed,\r\n timestamps,\r\n slides,\r\n sharedWith,\r\n presId,\r\n averages,\r\n status,\r\n scores,\r\n aiFeedback,\r\n );\r\n }\r\n\r\n public static parseSlim(data: any) {\r\n const res = Session.Empty();\r\n\r\n res.Name = data.name;\r\n res.ID = Number(data.id);\r\n res.CreatedAt = new Date(data.createdAt);\r\n res.RecordingDate = new Date(data.recordingDate);\r\n\r\n const timespan = data.sessionLength.split(\":\");\r\n let total = 0;\r\n total += Number(timespan[0]) * 3600;\r\n total += Number(timespan[1]) * 60;\r\n total += Number(timespan[2]);\r\n res.SessionLength = Math.round(total || 0);\r\n\r\n res.VideoFeedback = FileObject.parseFile(data.videoFeedback);\r\n\r\n res.Completed = data.completed as boolean;\r\n res.AnalysisStatus = data.analysisStatus as string;\r\n res.Slides = data.transcriptionSlides as TranscriptionSlide[];\r\n res.SharedWith = data.sharedWith as string[];\r\n res.Averages = data.averages as SessionAvearges;\r\n res.PresentationId = data.presentationId\r\n ? Number(data.presentationId)\r\n : null;\r\n return res;\r\n }\r\n\r\n public static Empty() {\r\n return new Session(\r\n 0,\r\n \"\",\r\n \"\",\r\n \"\",\r\n \"\",\r\n \"\",\r\n \"\",\r\n [],\r\n \"\",\r\n \"\",\r\n \"\",\r\n \"\",\r\n \"\",\r\n \"\",\r\n null,\r\n null,\r\n null,\r\n false,\r\n [],\r\n [],\r\n [],\r\n null,\r\n {} as SessionAvearges,\r\n \"\",\r\n {} as SessionScores,\r\n {} as AiFeedback,\r\n );\r\n }\r\n}\r\n\r\nexport default Session;\r\n","class SharedSession {\r\n sessionId: number;\r\n sessionName: string;\r\n sessionStatus: string;\r\n createdAt: string;\r\n duration: string;\r\n sharingUserName: string;\r\n sharingUserId: string;\r\n profilePicture: string;\r\n hasFeedback: boolean;\r\n hasFeedbackBeenRead: boolean;\r\n\r\n constructor(\r\n sessionId: number,\r\n sessionName: string,\r\n sessionStatus: string,\r\n createdAt: string,\r\n duration: string,\r\n sharingUserName: string,\r\n sharingUserId: string,\r\n profilePicture: string,\r\n hasFeedback: boolean,\r\n hasFeedbackBeenRead: boolean,\r\n ) {\r\n this.sessionId = sessionId;\r\n this.sessionName = sessionName;\r\n this.sessionStatus = sessionStatus;\r\n this.createdAt = createdAt;\r\n this.duration = duration;\r\n this.sharingUserId = sharingUserId;\r\n this.sharingUserName = sharingUserName;\r\n this.profilePicture = profilePicture;\r\n this.hasFeedback = hasFeedback;\r\n this.hasFeedbackBeenRead = hasFeedbackBeenRead;\r\n }\r\n\r\n public static parseSessions(responseData: any) {\r\n return responseData.map((entry: any) => this.parseSingleSession(entry));\r\n }\r\n\r\n public static parseSingleSession(data: any) {\r\n const sessionId = Number(data.sessionId);\r\n const sessionName = data.sessionName;\r\n const sessionStatus = data.sessionStatus;\r\n const createdAt = data.createdAt;\r\n const duration = data.duration;\r\n const sharingUserId = data.sharingUserId;\r\n const sharingUserName = data.sharingUserName;\r\n const profilePicture = data.profilePicture;\r\n const hasFeedback = data.hasFeedback;\r\n const hasFeedbackBeenRead = data.hasFeedbackBeenRead;\r\n\r\n return new SharedSession(\r\n sessionId,\r\n sessionName,\r\n sessionStatus,\r\n createdAt,\r\n duration,\r\n sharingUserName,\r\n sharingUserId,\r\n profilePicture,\r\n hasFeedback,\r\n hasFeedbackBeenRead,\r\n );\r\n }\r\n}\r\n\r\nexport default SharedSession;\r\n","class ChartEntry {\r\n public Timestamp: number;\r\n public Value: number;\r\n\r\n constructor(timestamp: number, value: number) {\r\n this.Timestamp = timestamp;\r\n this.Value = value;\r\n }\r\n}\r\n\r\nexport default ChartEntry;\r\n","class FileInfo {\r\n public Title: string;\r\n public URI: string;\r\n\r\n constructor(title: string, uri: string) {\r\n this.Title = title;\r\n this.URI = uri;\r\n }\r\n}\r\n\r\nexport default FileInfo;\r\n","class PDFInfo {\r\n public Name: string;\r\n public PdfUri: string;\r\n\r\n constructor(title: string, uri: string) {\r\n this.Name = title;\r\n this.PdfUri = uri;\r\n }\r\n}\r\n\r\nexport default PDFInfo;\r\n","class HeatMapEntry {\r\n public X: number;\r\n public Y: number;\r\n public Count: number;\r\n\r\n constructor(x: number, y: number, count: number) {\r\n this.X = x;\r\n this.Y = y;\r\n this.Count = count;\r\n }\r\n}\r\n\r\nexport default HeatMapEntry;\r\n","import ChartEntry from \"./ChartEntry\";\r\n\r\nclass MovementAnalysis {\r\n public HandMovement: ChartEntry[];\r\n public HeadMovement: ChartEntry[];\r\n public AverageHandMovement: number;\r\n public AverageHeadMovement: number;\r\n public TotalHandMovement: number;\r\n public TotalHeadMovement: number;\r\n\r\n constructor(\r\n handMovement: ChartEntry[],\r\n headMovement: ChartEntry[],\r\n avgHand: number,\r\n avgHead: number,\r\n totalHand: number,\r\n totalHead: number,\r\n ) {\r\n this.HandMovement = handMovement;\r\n this.HeadMovement = headMovement;\r\n this.AverageHandMovement = avgHand;\r\n this.AverageHeadMovement = avgHead;\r\n this.TotalHandMovement = totalHand;\r\n this.TotalHeadMovement = totalHead;\r\n }\r\n\r\n public static parseMovementAnalysis(analysis: any) {\r\n if (!analysis) return this.blank();\r\n\r\n const hand = this.parseEntries(analysis.handMovement);\r\n const head = this.parseEntries(analysis.headMovement);\r\n return new MovementAnalysis(\r\n hand,\r\n head,\r\n analysis.averageHandMovement,\r\n analysis.averageHeadMovement,\r\n analysis.totalHandMovement,\r\n analysis.totalHeadMovement,\r\n );\r\n }\r\n\r\n public static blank() {\r\n return new MovementAnalysis([], [], 0, 0, 0, 0);\r\n }\r\n\r\n private static parseEntries(entries: any[]) {\r\n return entries.map(entry => {\r\n const time = entry.timeStamp;\r\n const value = Math.round(entry.value * 100) / 100;\r\n return new ChartEntry(time, value);\r\n });\r\n }\r\n}\r\n\r\nexport default MovementAnalysis;\r\n","import { SentimentSentence } from \"@/core/models/sessions\";\r\nimport { LookupWord, WordSegment } from \"./interfaces\";\r\n\r\nclass TextAnalysis {\r\n public PositiveScore: number;\r\n public NegativeScore: number;\r\n public NeutralScore: number;\r\n public Sentences: any[];\r\n public Keyphrases: string[];\r\n public Keywords: string[];\r\n public WordsPerMinute: number;\r\n public Text: string;\r\n public LookupWords: LookupWord[];\r\n public Words: WordSegment[];\r\n\r\n constructor(\r\n positive: number,\r\n negative: number,\r\n neutral: number,\r\n sentences: any[],\r\n keyphrases: string[],\r\n keywords: string[],\r\n wpm: number,\r\n text: string,\r\n lWords: LookupWord[],\r\n words: WordSegment[],\r\n ) {\r\n this.PositiveScore = Math.round(positive * 100);\r\n this.NegativeScore = Math.round(negative * 100);\r\n this.NeutralScore = Math.round(neutral * 100);\r\n this.Sentences = sentences;\r\n this.Keyphrases = keyphrases;\r\n this.Keywords = keywords;\r\n this.WordsPerMinute = Math.round(wpm * 10) / 10;\r\n this.Text = text;\r\n this.LookupWords = lWords;\r\n this.Words = words;\r\n }\r\n\r\n public static parseTextAnalysis(analysis: any): TextAnalysis {\r\n if (!analysis) return this.blank();\r\n\r\n const sentences = (analysis.sentences as any[]).map(s =>\r\n SentimentSentence.parseSentence(s),\r\n );\r\n return new TextAnalysis(\r\n analysis.positiveScore,\r\n analysis.negativeScore,\r\n analysis.neutralScore,\r\n sentences,\r\n analysis.keyPhrases,\r\n analysis.keyWords,\r\n analysis.wordsPerMinute,\r\n analysis.text,\r\n analysis.lookupWords as LookupWord[],\r\n analysis.words as WordSegment[],\r\n );\r\n }\r\n\r\n public static blank(): TextAnalysis {\r\n return new TextAnalysis(0, 0, 0, [], [], [], 0, \"\", [], []);\r\n }\r\n}\r\n\r\nexport default TextAnalysis;\r\n","import { TimedAverage, ChartEntry } from \".\";\r\n\r\n/**\r\n *\r\n */\r\nclass AudioAnalysis {\r\n /**\r\n * Represents a collection of chart entries.\r\n *\r\n * @typedef {Array} Pitch\r\n */\r\n public Pitch: ChartEntry[];\r\n /**\r\n * Represents the volume of a chart entry.\r\n *\r\n * @typedef {Object} Volume\r\n * @property {ChartEntry[]} data - An array of chart entries representing the volume.\r\n */\r\n public Volume: ChartEntry[];\r\n /**\r\n * Represents an array of ChartEntry objects that contain information about pauses in a chart.\r\n *\r\n * @typedef {Array} Pauses\r\n *\r\n * @typedef {Object} ChartEntry\r\n * @property {number} startTime - The start time of the pause in milliseconds.\r\n * @property {number} endTime - The end time of the pause in milliseconds.\r\n * @property {string} reason - The reason for the pause.\r\n */\r\n public Pauses: ChartEntry[];\r\n\r\n /**\r\n * Represents the average pitch value.\r\n *\r\n * @type {number}\r\n */\r\n public AveragePitch: number;\r\n /**\r\n * Represents the average volume.\r\n *\r\n * @type {number}\r\n */\r\n public AverageVolume: number;\r\n /**\r\n * Represents the average number of pauses.\r\n *\r\n * @typedef {number} AveragePauses\r\n */\r\n public AveragePauses: number;\r\n /**\r\n * The number of pauses per minute.\r\n *\r\n * @type {number}\r\n */\r\n public PausesPerMinute: number;\r\n /**\r\n * Represents the total pause time in milliseconds.\r\n *\r\n * @type {number}\r\n */\r\n public TotalPauseTime: number;\r\n /**\r\n * Represents the length of a calculation.\r\n *\r\n * @typedef {number} CalculationLength\r\n */\r\n public CalculationLength: number;\r\n\r\n /**\r\n * Represents an array of TimedAverage objects.\r\n *\r\n * @typedef {TimedAverage[]} TimedAverages\r\n */\r\n public TimedAverages: TimedAverage[];\r\n /**\r\n * Indicates whether a task or process has been completed.\r\n *\r\n * @type {boolean}\r\n */\r\n public IsCompleted: boolean;\r\n\r\n /**\r\n * Creates a new instance of the Constructor class.\r\n *\r\n * @param {ChartEntry[]} pitch - The pitch chart entries.\r\n * @param {ChartEntry[]} vol - The volume chart entries.\r\n * @param {ChartEntry[]} pauses - The pauses chart entries.\r\n * @param {number} avgPitch - The average pitch.\r\n * @param {number} avgVolume - The average volume.\r\n * @param {number} avgPause - The average pause.\r\n * @param {number} totalPause - The total pause time.\r\n * @param {boolean} isCompleted - The completion status.\r\n * @param {TimedAverage[]} times - The timed averages.\r\n * @param {number} calcLen - The calculation length.\r\n * @param {number} ppm - The pauses per minute.\r\n */\r\n constructor(\r\n pitch: ChartEntry[],\r\n vol: ChartEntry[],\r\n pauses: ChartEntry[],\r\n avgPitch: number,\r\n avgVolume: number,\r\n avgPause: number,\r\n totalPause: number,\r\n isCompleted: boolean,\r\n times: TimedAverage[],\r\n calcLen: number,\r\n ppm: number,\r\n ) {\r\n this.Pitch = pitch;\r\n this.Volume = vol;\r\n this.Pauses = pauses;\r\n this.AveragePitch = avgPitch;\r\n this.AverageVolume = avgVolume;\r\n this.AveragePauses = avgPause;\r\n this.TotalPauseTime = totalPause;\r\n this.IsCompleted = isCompleted;\r\n this.TimedAverages = times;\r\n this.CalculationLength = calcLen;\r\n this.PausesPerMinute = ppm;\r\n }\r\n\r\n /**\r\n * Parses the audio analysis object and returns an instance of AudioAnalysis.\r\n *\r\n * @param {any} analysis - The audio analysis object to parse.\r\n * @returns {AudioAnalysis} - The parsed AudioAnalysis instance.\r\n */\r\n public static parseAudioAnalysis(analysis: any): AudioAnalysis {\r\n if (!analysis) return this.blank();\r\n\r\n const pitch = this.parseEntries(analysis.pitch);\r\n const volume = this.parseEntries(analysis.volume).map(x => {\r\n x.Value = x.Value * 100;\r\n return x;\r\n });\r\n const pauses = this.parseEntries(analysis.pauses);\r\n return new AudioAnalysis(\r\n pitch,\r\n volume,\r\n pauses,\r\n analysis.averagePitch,\r\n analysis.averageVolume,\r\n analysis.averagePauseTime,\r\n analysis.totalPauseTime,\r\n analysis.isCompleted,\r\n analysis.timedAverages,\r\n analysis.calculationLength,\r\n analysis.pausesPerMinute,\r\n );\r\n }\r\n\r\n /**\r\n * Create a blank AudioAnalysis object.\r\n *\r\n * @returns {AudioAnalysis} A new AudioAnalysis object with empty arrays and default values for all properties.\r\n */\r\n public static blank(): AudioAnalysis {\r\n return new AudioAnalysis([], [], [], 0, 0, 0, 0, false, [], 0, 0);\r\n }\r\n\r\n /**\r\n * Parses an array of entries and returns an array of ChartEntry objects.\r\n *\r\n * @param {any[]} entries - The array of entries to be parsed.\r\n * @return {ChartEntry[]} - The parsed array of ChartEntry objects.\r\n */\r\n private static parseEntries(entries: any[]): ChartEntry[] {\r\n return entries.map(entry => {\r\n const time = entry.timeStamp;\r\n const value = Math.round(entry.value * 100) / 100;\r\n return new ChartEntry(time, value);\r\n });\r\n }\r\n}\r\n\r\nexport default AudioAnalysis;\r\n","class Sentiment {\r\n public static Positive = \"positive\";\r\n public static Negative = \"negative\";\r\n public static Neutral = \"neutral\";\r\n public static Mixed = \"mixed\";\r\n}\r\n\r\nexport default Sentiment;\r\n","import { SharingUser } from \"@/core/store/managed\";\r\nimport { Session } from \".\";\r\n\r\nexport interface Pause {\r\n offset: number;\r\n duration: number;\r\n slide: number;\r\n}\r\n\r\nexport interface TranscriptionSegment {\r\n text: string;\r\n offset: number;\r\n duration: number;\r\n slide: number;\r\n nBest: string[] | undefined;\r\n confidence: number;\r\n words: WordSegment[];\r\n}\r\n\r\nexport interface TranscriptionSlide {\r\n text: string;\r\n offset: number;\r\n duration: number;\r\n slide: number;\r\n words: WordSegment[];\r\n lookupWords: LookupWord[];\r\n wpm: number;\r\n pausesMade: number;\r\n totalPauseTime: number;\r\n avgPauseLength: number;\r\n ppm: number;\r\n wordsPerMinute?: number; // TODO: Use wpm only\r\n pausesPerMinute?: number; // TODO: Use ppm only\r\n avgVolume?: number;\r\n avgPitch?: number;\r\n image?: string;\r\n}\r\n\r\nexport enum LookupWordType {\r\n default = \"default\",\r\n stop = \"stop_word\",\r\n filler = \"filler_word\",\r\n}\r\n\r\nexport interface WordSegment {\r\n word: string;\r\n offset: number;\r\n duration: number;\r\n displayWord?: string;\r\n}\r\n\r\nexport interface LookupWord {\r\n text: string;\r\n occurrences: number;\r\n type: LookupWordType;\r\n}\r\n\r\ntype AverageData = { averagePitch: number; averageVolume: number };\r\nexport interface TimedAverage {\r\n endSeconds: number;\r\n startSeconds: number;\r\n audioAnalysisAverages: AverageData;\r\n}\r\n\r\nexport interface SessionStatus {\r\n SessionId: number;\r\n AnalysisStatus?: string;\r\n ProgressInPercent: number;\r\n}\r\n\r\nexport interface SharedSessions {\r\n user: SharingUser;\r\n sessions: Session[];\r\n}\r\n\r\nexport interface BaselineSession {\r\n id: number;\r\n name: string;\r\n uploadedDate: Date;\r\n averageVolume: number;\r\n averagePitch: number;\r\n}\r\n\r\nexport interface SessionScores {\r\n speechSpeedScore: number;\r\n pausesScore: number;\r\n repetitionScore: number;\r\n fillerWordsScore: number;\r\n speakingClearlyScore: number;\r\n overallScore: number;\r\n}\r\n","class SentimentSentence {\r\n public Text: string;\r\n public Sentiment: string;\r\n public PositiveScore: number;\r\n public NegativeScore: number;\r\n public NeutralScore: number;\r\n public Offset: number;\r\n public Duration: number;\r\n\r\n constructor(\r\n t: string,\r\n sent: string,\r\n pos: number,\r\n neg: number,\r\n neut: number,\r\n off: number,\r\n dur: number,\r\n ) {\r\n this.Text = t;\r\n this.Sentiment = sent;\r\n this.PositiveScore = Math.round(pos * 100);\r\n this.NegativeScore = Math.round(neg * 100);\r\n this.NeutralScore = Math.round(neut * 100);\r\n this.Offset = off;\r\n this.Duration = dur;\r\n }\r\n\r\n public static parseSentence(sentence: any): SentimentSentence {\r\n return new SentimentSentence(\r\n sentence.text,\r\n sentence.sentiment,\r\n sentence.positiveScore,\r\n sentence.negativeScore,\r\n sentence.neutralScore,\r\n sentence.offset,\r\n sentence.duration,\r\n );\r\n }\r\n}\r\n\r\nexport default SentimentSentence;\r\n","class MetaAnalysis {\r\n attributeType: string;\r\n avgFormerSessions: number;\r\n avgLatterSessions: number;\r\n deviation: number;\r\n metaAnalysisFormerSessions: {\r\n sessionId: number;\r\n average: number;\r\n date: Date;\r\n }[];\r\n metaAnalysisLatterSessions: {\r\n sessionId: number;\r\n average: number;\r\n date: Date;\r\n }[];\r\n numAvailableSessions: number;\r\n numSessionsPerSet: number;\r\n\r\n constructor(data: any) {\r\n this.attributeType = data.attributeType;\r\n this.avgFormerSessions = data.avgFormerSessions;\r\n this.avgLatterSessions = data.avgLatterSessions;\r\n this.deviation = data.deviation;\r\n const mapper = (s: any) => {\r\n s.date = new Date(s.date);\r\n return s;\r\n };\r\n this.metaAnalysisFormerSessions = data.metaAnalysisFormerSessions.map(\r\n mapper,\r\n );\r\n this.metaAnalysisLatterSessions = data.metaAnalysisLatterSessions.map(\r\n mapper,\r\n );\r\n this.numAvailableSessions = data.numAvailableSessions;\r\n this.numSessionsPerSet = data.numSessionsPerSet;\r\n }\r\n}\r\n\r\nexport default MetaAnalysis;\r\n","class MetaSettings {\r\n Attributes: string[];\r\n NumOfSessions: number;\r\n\r\n constructor(data: any) {\r\n const { attributes, value } = data;\r\n this.Attributes = attributes;\r\n this.NumOfSessions = value;\r\n }\r\n}\r\n\r\nexport default MetaSettings;\r\n","class Slide {\r\n Uri: string;\r\n Timestamp: number;\r\n\r\n constructor(uri: string, time: number) {\r\n this.Uri = uri;\r\n this.Timestamp = time;\r\n }\r\n\r\n static parse(data: any): Slide {\r\n const { uri, timestamp } = data;\r\n return new Slide(uri, timestamp);\r\n }\r\n}\r\n\r\nexport default Slide;\r\n","import { Condition } from \".\";\r\nimport { Timestamp, TranscriptionSlide } from \"./sessions\";\r\n\r\nexport class AnalysisStatus {\r\n static NotStarted = \"NotStarted\";\r\n static Failed = \"Failed\";\r\n static Running = \"Running\";\r\n static Succeeded = \"Succeeded\";\r\n static AnalyzingAudio = \"AnalyzingAudio\";\r\n static AudioDone = \"AudioDone\";\r\n static AnalyzingText = \"AnalyzingText\";\r\n static TextDone = \"TextDone\";\r\n}\r\n\r\nexport interface Subscription {\r\n subscriptionId: string;\r\n planId: string;\r\n status: string;\r\n currentPeriodEnd: Date;\r\n currency: string;\r\n planAmount: number;\r\n}\r\n\r\nexport interface Recording {\r\n id: number;\r\n blob: any;\r\n audioBlob: any;\r\n videoBlob: any;\r\n audioURI?: string;\r\n videoURI?: string;\r\n title: string;\r\n recordedAt: string;\r\n locale: \"en\" | \"de\";\r\n presentationId?: number;\r\n timestamps?: Timestamp[];\r\n slides?: TranscriptionSlide[];\r\n wpm?: number;\r\n text?: string;\r\n duration?: number;\r\n words?: [string, number][];\r\n type: \"audio\" | \"video\";\r\n}\r\n\r\nexport interface ApiRecording {\r\n id: number;\r\n file: any;\r\n title: string;\r\n recordedAt: string;\r\n locale: \"en\" | \"de\";\r\n audioURI?: string;\r\n videoURI?: string;\r\n presentationId?: number;\r\n timestamps: Timestamp[];\r\n type: \"audio\" | \"video\";\r\n}\r\n\r\nexport interface SelectItem {\r\n text: string;\r\n value: T;\r\n disabled?: boolean;\r\n}\r\n\r\nexport interface ChartClick {\r\n type: \"index\" | \"offset\";\r\n value: number;\r\n}\r\n\r\nexport interface GroupInvitation {\r\n id: number;\r\n inviter: string;\r\n group: string;\r\n createdAt: string;\r\n}\r\n\r\nexport interface SentInvitation {\r\n id: number;\r\n user: string;\r\n createdAt: string;\r\n}\r\n\r\nexport interface ProgressPoint {\r\n date: Date;\r\n value: number;\r\n}\r\nexport interface SessionsProgress {\r\n voicePitch: ProgressPoint[];\r\n voiceVolume: ProgressPoint[];\r\n pauses: ProgressPoint[];\r\n sentiment: ProgressPoint[];\r\n wordsPerMinute: ProgressPoint[];\r\n headMovement: ProgressPoint[];\r\n handMovement: ProgressPoint[];\r\n}\r\n\r\nexport interface SessionAvearges {\r\n ppm: number;\r\n wpm: number;\r\n sentiment: number;\r\n averagePitch: number;\r\n averageVolume: number;\r\n averageHeadMovement: number;\r\n averageHandMovement: number;\r\n}\r\n\r\nexport type FilterUser = {\r\n name: string;\r\n email: string;\r\n isManager: boolean;\r\n};\r\nexport type FilterGroup = {\r\n name: string;\r\n isManager: boolean;\r\n users: FilterUser[];\r\n};\r\n\r\nexport interface Interval {\r\n start: number;\r\n end: number;\r\n}\r\n\r\nexport interface AdminUser {\r\n email: string;\r\n username: string;\r\n isActive: boolean;\r\n customerId: string;\r\n emailVerified: boolean;\r\n activeUntil: string;\r\n permissions?: RoleClaims[];\r\n userClaims?: UserClaims[];\r\n roles?: Roles[];\r\n role: string[];\r\n}\r\n\r\nexport interface Roles {\r\n name: string;\r\n removeRoleDialog?: boolean;\r\n}\r\n\r\nexport interface RoleClaims {\r\n type: string;\r\n value?: string;\r\n removePermissionDialog?: boolean;\r\n modifyPermissionDialog?: boolean;\r\n claimType?: string;\r\n}\r\n\r\nexport interface UserClaims {\r\n type: string;\r\n value: string;\r\n removePermissionDialog?: boolean;\r\n modifyPermissionDialog?: boolean;\r\n claimType?: string;\r\n}\r\n\r\nexport interface Invitation {\r\n id: number;\r\n createdAt: Date;\r\n seminarName?: string;\r\n email?: string;\r\n active?: boolean;\r\n}\r\n\r\nexport type ElementType =\r\n | \"read_text\"\r\n | \"watch_video\"\r\n | \"video_presentation\"\r\n | \"give_feedback\"\r\n | \"watch_feedback\"\r\n | \"gap_text\"\r\n | \"rephrase\"\r\n | \"categorize\"\r\n | \"vr_training\"\r\n | \"goal\";\r\n\r\ntype BaseSubmission = {\r\n id: number;\r\n skipped: boolean;\r\n userId: string;\r\n elementId: number;\r\n seminarId: number;\r\n createdAt: string;\r\n isShared: boolean;\r\n};\r\n\r\ntype TypedSubmission =\r\n | {\r\n type: \"gap_text\";\r\n answers: string[];\r\n }\r\n | {\r\n type: \"vr_training\";\r\n score: string;\r\n }\r\n | {\r\n type: \"rephrase\";\r\n answers: string[];\r\n }\r\n | {\r\n type: \"categorize\";\r\n answers: string[][];\r\n }\r\n | {\r\n videoURI?: string;\r\n type: \"read_text\" | \"watch_video\";\r\n }\r\n | {\r\n videoURI?: string;\r\n feedbackFor?: string;\r\n isShared: boolean;\r\n IsRateable: boolean;\r\n feedbackForSubmission?: string;\r\n askForFeedback?: boolean;\r\n videoRatings?: Rating[];\r\n type: \"give_feedback\" | \"video_presentation\" | \"watch_feedback\";\r\n };\r\n\r\nexport type Submission = BaseSubmission & TypedSubmission;\r\n\r\nexport interface Rating {\r\n id: number;\r\n submissionId: number;\r\n rater: string;\r\n type: string;\r\n createdAt: string;\r\n}\r\n\r\ntype BaseElement = {\r\n id: number;\r\n seminarId: number;\r\n blockId: number;\r\n title: string;\r\n body: string;\r\n submissions?: Submission[];\r\n completed?: boolean;\r\n skipped?: boolean;\r\n};\r\ntype TypedElement =\r\n | { type: \"read_text\" }\r\n | { type: \"watch_video\"; videoURI: string }\r\n | {\r\n type: \"video_presentation\";\r\n rateableSubmissions?: boolean;\r\n requiredSubmissions?: number;\r\n maxNumShared?: number;\r\n maxSubmissions?: number;\r\n requiredNumShared?: number;\r\n isTimed?: boolean;\r\n expectedLen?: number;\r\n maxLen?: number;\r\n submission?: { uri: string; createdAt: Date };\r\n }\r\n | {\r\n type: \"give_feedback\";\r\n forElement: number;\r\n rateableSubmissions?: boolean;\r\n submission?: { uri: string; createdAt: Date; feedbackFor: string };\r\n }\r\n | { type: \"watch_feedback\"; submission?: { uri: string; createdAt: Date } }\r\n | {\r\n type: \"gap_text\";\r\n text: string;\r\n answers: string[];\r\n submission?: string[];\r\n }\r\n | {\r\n type: \"rephrase\";\r\n sentences: string[];\r\n answers: string[];\r\n submission?: string[];\r\n }\r\n | {\r\n type: \"categorize\";\r\n words: string[];\r\n categories: string[];\r\n answers: string[][];\r\n submission?: { words: string[] }[];\r\n }\r\n | { type: \"vr_training\"; requiredScore: number; submission?: number }\r\n | {\r\n type: \"goal\";\r\n goalId: number;\r\n target: number;\r\n progress: number;\r\n conditions: Condition[];\r\n isAssignedToUser: boolean;\r\n };\r\n\r\nexport type SeminarElement = BaseElement & TypedElement;\r\n\r\nexport interface SeminarBlock {\r\n id: number;\r\n seminarId: number;\r\n title: string;\r\n description: string;\r\n elements: SeminarElement[];\r\n}\r\n\r\nexport interface SimpleUser {\r\n email: string;\r\n username: string;\r\n id: string;\r\n}\r\n\r\nexport interface SeminarUser {\r\n id: string;\r\n email: string;\r\n username: string;\r\n isAdmin: boolean;\r\n joinedAt: string;\r\n currentBlock: number;\r\n currentElement: number;\r\n progress: number;\r\n}\r\n\r\nexport interface SeminarOrder {\r\n seminarId: number;\r\n blocks: {\r\n blockId: number;\r\n blockIndex: number;\r\n }[];\r\n elements: {\r\n blockId: number;\r\n elementId: number;\r\n elementIndex: number;\r\n }[];\r\n}\r\n\r\nexport interface Seminar {\r\n retrieved: boolean;\r\n logo?: string;\r\n id: number;\r\n owner?: SimpleUser;\r\n ownerId: string;\r\n isOwner?: boolean;\r\n name: string;\r\n createdAt: Date;\r\n description: string;\r\n blocks: SeminarBlock[];\r\n users?: SeminarUser[];\r\n elements?: SeminarElement[];\r\n submissions?: Submission[];\r\n allSubmissions?: Submission[];\r\n order?: SeminarOrder;\r\n initialOrder?: SeminarOrder;\r\n orderChanged?: boolean;\r\n}\r\n","export enum Permission {\r\n Seminar = \"seminar\",\r\n UploadAudio = \"upload:audio\",\r\n UploadVideo = \"upload:video\",\r\n SessionTraining = \"session_training\",\r\n CanShareWithAllUsers = \"can_share_with_all\",\r\n RelaxedLiveTranscription = \"live_transcription:relaxed\",\r\n FastLiveTranscription = \"live_transcription:fast\",\r\n RelaxedAnalysis = \"analysis:relaxed\",\r\n FastAnalysis = \"analysis:fast\",\r\n RelaxedAiFeedback = \"ai_feedback:relaxed\",\r\n FastAiFeedback = \"ai_feedback:fast\",\r\n LimitedPublicGroup = \"public_group:limited\",\r\n FullPublicGroup = \"public_group:full\",\r\n B2BGroup = \"b2b_group\",\r\n BasicTutorial = \"tutorial:basic\",\r\n AdvancedTutorial = \"tutorial:advanced\",\r\n ExpertTutorial = \"tutorial:expert\",\r\n CoachReviewBooking = \"coach:review_booking\",\r\n Coach1On1Booking = \"coach:1on1_booking\",\r\n Challenge = \"challenge\",\r\n Course = \"course\",\r\n VrMode = \"vr_mode\",\r\n Sso = \"sso\",\r\n CustomIdp = \"custom_idp\",\r\n ExternalApi = \"external_api\",\r\n Onboarding = \"onboarding\",\r\n TechSupport = \"tech_support\",\r\n DevSupport = \"dev_support\",\r\n Sla = \"sla\",\r\n RedundantService = \"redundant_service\",\r\n}\r\n\r\nexport default Permission;\r\n","import { UserClaims, RoleClaims } from \"./interfaces\";\r\nimport { Subscription } from \"./Subscription\";\r\nimport { Roles } from \"@/core/models/interfaces\";\r\n\r\nclass User {\r\n public ID: string;\r\n public Pfp: string;\r\n public Email: string;\r\n public Username: string;\r\n public Roles: Roles[];\r\n public EmailVerified: boolean;\r\n public CustomerId: string;\r\n public PaymentMethodId: string;\r\n public Permissions: RoleClaims[];\r\n public UserClaims: UserClaims[];\r\n public ShowTutorial: boolean;\r\n public TutorialStep: number;\r\n public hasSubscription: boolean;\r\n public ownsCompany: boolean;\r\n public subscription: Subscription | null;\r\n\r\n constructor(\r\n email: string,\r\n username: string,\r\n roles: Roles[] = [],\r\n emailVerified = false,\r\n customerId = \"\",\r\n paymentMethodId = \"\",\r\n permissions: RoleClaims[] = [],\r\n userClaims: UserClaims[] = [],\r\n id = \"\",\r\n pfp = \"\",\r\n show = false,\r\n step = 0,\r\n hasSubscription = false,\r\n ownsCompany = false,\r\n subscription: Subscription | null = null,\r\n ) {\r\n this.Email = email;\r\n this.Username = username;\r\n this.Roles = roles;\r\n this.EmailVerified = emailVerified;\r\n this.CustomerId = customerId;\r\n this.PaymentMethodId = paymentMethodId;\r\n this.Permissions = permissions;\r\n this.UserClaims = userClaims;\r\n this.ID = id;\r\n this.Pfp = pfp;\r\n this.ShowTutorial = show;\r\n this.TutorialStep = step;\r\n this.hasSubscription = hasSubscription;\r\n this.ownsCompany = ownsCompany;\r\n this.subscription = subscription;\r\n }\r\n\r\n public static parse(data: any): User {\r\n const hasSubscription = data.subscription?.isActive || false;\r\n\r\n return new User(\r\n data.email,\r\n data.username,\r\n data.roles,\r\n data.emailVerified,\r\n data.customerId,\r\n data.paymentMethodId,\r\n data.roleClaims || [],\r\n data.userClaims || [],\r\n data.id,\r\n data.profilePicture,\r\n data.showTutorial,\r\n data.tutorialStep,\r\n hasSubscription,\r\n data.ownsCompany,\r\n data.subscription,\r\n );\r\n }\r\n}\r\n\r\nexport default User;\r\n","import FileObject from \"./FileObject\";\r\n\r\nclass Article {\r\n public ID: number;\r\n public Title: string;\r\n public Body: string;\r\n public PostedAt: Date;\r\n public BannerImage: FileObject | null;\r\n public Files: FileObject[];\r\n\r\n constructor(\r\n id: number,\r\n title: string,\r\n body: string,\r\n postedAt: Date,\r\n bannerImage: FileObject | null,\r\n files: FileObject[],\r\n ) {\r\n this.ID = id;\r\n this.Title = title;\r\n this.Body = body;\r\n this.PostedAt = postedAt;\r\n this.BannerImage = bannerImage;\r\n this.Files = files;\r\n }\r\n static parseArticle(data: any): Article {\r\n const postedAt = new Date(Date.parse(data.createdAt));\r\n const bannerImage = data.bannerImage\r\n ? FileObject.parseFile(data.bannerImage)\r\n : null;\r\n const files = data.files\r\n ? (data.files as any[]).map(f => FileObject.parseFile(f)!)\r\n : [];\r\n return new Article(\r\n data.id,\r\n data.title,\r\n data.body,\r\n postedAt,\r\n bannerImage,\r\n files,\r\n );\r\n }\r\n}\r\n\r\nexport default Article;\r\n","import FileObject from \"./FileObject\";\r\nimport { Slide } from \"./sessions\";\r\n\r\nclass Presentation {\r\n public ID: number;\r\n public Name: string;\r\n public UploadDate: Date;\r\n public File: FileObject;\r\n public Slides: Slide[];\r\n public InUse: boolean;\r\n\r\n constructor(\r\n id: number,\r\n name: string,\r\n date: string,\r\n file: FileObject,\r\n slides: Slide[],\r\n inUse: boolean,\r\n ) {\r\n this.ID = id;\r\n this.Name = name;\r\n this.UploadDate = new Date(Date.parse(date));\r\n this.File = file;\r\n this.Slides = slides;\r\n this.InUse = inUse;\r\n }\r\n\r\n public static parse(pres: any): Presentation {\r\n const file = FileObject.parseFile(pres.file);\r\n const presSlides = (pres.slides as any[]) || [];\r\n const slides = presSlides.map(x => Slide.parse(x));\r\n return new Presentation(\r\n pres.id,\r\n pres.name || \"\",\r\n pres.createdAt,\r\n file!,\r\n slides,\r\n pres.inUse || false,\r\n );\r\n }\r\n}\r\n\r\nexport default Presentation;\r\n","import User from \"@/core/models/User\";\r\nimport FileObject from \"@/core/models/FileObject\";\r\n\r\nclass HowToVideo {\r\n public ID: number;\r\n public Title: string;\r\n public Description: string;\r\n public CreatedAt: Date;\r\n public Uploader: User | null;\r\n public File: FileObject | null;\r\n public Video: FileObject | null; // Workaround to allow res with Video instead of File\r\n\r\n constructor(\r\n id: number,\r\n title: string,\r\n description: string,\r\n uploader: User | null,\r\n createdAt: Date,\r\n file: FileObject | null,\r\n video: FileObject | null,\r\n ) {\r\n this.ID = id;\r\n this.Title = title;\r\n this.Description = description;\r\n this.Uploader = uploader;\r\n this.CreatedAt = createdAt;\r\n this.File = file;\r\n this.Video = video;\r\n }\r\n\r\n static parseHowToVideo(data: any) {\r\n const uploader = data.uploader\r\n ? new User(data.uploader.email, data.uploader.username)\r\n : null;\r\n const at = new Date(Date.parse(data.createdAt));\r\n const file = data.file ? FileObject.parseFile(data.file) : null;\r\n const video = data.video ? FileObject.parseFile(data.video) : null;\r\n return new HowToVideo(\r\n data.id,\r\n data.title,\r\n data.description,\r\n uploader,\r\n at,\r\n file,\r\n video,\r\n );\r\n }\r\n}\r\n\r\nexport default HowToVideo;\r\n","import User from \"../User\";\r\n\r\nclass GroupUser extends User {\r\n public JoinedAt: Date;\r\n public IsOwner: boolean;\r\n public IsManager: boolean;\r\n public IsVisible: boolean;\r\n\r\n constructor(\r\n email: string,\r\n name: string,\r\n joinedAt: Date,\r\n isOwner: boolean,\r\n isManager: boolean,\r\n isVisible: boolean,\r\n ) {\r\n super(email, name);\r\n this.JoinedAt = joinedAt;\r\n this.IsOwner = isOwner;\r\n this.IsManager = isManager;\r\n this.IsVisible = isVisible;\r\n }\r\n\r\n public static parseGroupUser(groupUser: any): GroupUser {\r\n const joined = new Date(Date.parse(groupUser.joinedAt));\r\n return new GroupUser(\r\n groupUser.email,\r\n groupUser.username || \"Unknown\",\r\n joined,\r\n groupUser.isOwner,\r\n groupUser.isManager,\r\n groupUser.isVisible,\r\n );\r\n }\r\n}\r\n\r\nexport default GroupUser;\r\n","import User from \"../User\";\r\nimport FileObject from \"../FileObject\";\r\n\r\nclass GroupVideo {\r\n public ID: number;\r\n public GroupID: number;\r\n public Title: string;\r\n public Description: string;\r\n public UploadedAt: Date;\r\n public Uploader: User;\r\n public File: FileObject | null;\r\n\r\n constructor(\r\n id: number,\r\n groupId: number,\r\n t: string,\r\n d: string,\r\n uploader: User,\r\n uploadedAt: Date,\r\n file: FileObject | null,\r\n ) {\r\n this.ID = id;\r\n this.GroupID = groupId;\r\n this.Title = t;\r\n this.Description = d;\r\n this.Uploader = uploader;\r\n this.UploadedAt = uploadedAt;\r\n this.File = file;\r\n }\r\n\r\n static parseGroupVideo(data: any) {\r\n const uploader = new User(data.uploader.email, data.uploader.username);\r\n const at = new Date(Date.parse(data.uploadedAt));\r\n const file = data.file ? FileObject.parseFile(data.file) : null;\r\n return new GroupVideo(\r\n data.id,\r\n data.groupId,\r\n data.title,\r\n data.description,\r\n uploader,\r\n at,\r\n file,\r\n );\r\n }\r\n}\r\n\r\nexport default GroupVideo;\r\n","import User from \"../User\";\r\nimport { FileObject } from \"@/core/models\";\r\n\r\nclass GroupPost {\r\n public ID: number;\r\n public Title: string;\r\n public Body: string;\r\n public Poster: User;\r\n public CreatedAt: Date;\r\n public BannerImage: FileObject | null;\r\n public Files: FileObject[];\r\n\r\n constructor(\r\n id: number,\r\n title: string,\r\n body: string,\r\n poster: User,\r\n createdAt: Date,\r\n banner: FileObject | null,\r\n files: FileObject[],\r\n ) {\r\n this.ID = id;\r\n this.Title = title;\r\n this.Body = body;\r\n this.Poster = poster;\r\n this.CreatedAt = createdAt;\r\n this.BannerImage = banner;\r\n this.Files = files;\r\n }\r\n\r\n static parseGroupPost(data: any): GroupPost {\r\n const poster = new User(data.poster.email, data.poster.username);\r\n const createdAt = new Date(Date.parse(data.createdAt));\r\n const bannerImage = FileObject.parseFile(data.bannerImage);\r\n let files: FileObject[] = [];\r\n if (data.files != null)\r\n files = (data.files as any[]).map(f => FileObject.parseFile(f)!);\r\n return new GroupPost(\r\n data.id,\r\n data.title,\r\n data.body,\r\n poster,\r\n createdAt,\r\n bannerImage,\r\n files,\r\n );\r\n }\r\n}\r\n\r\nexport default GroupPost;\r\n","import GroupUser from \"./GroupUser\";\r\nimport GroupVideo from \"./GroupVideo\";\r\nimport GroupPost from \"./GroupPost\";\r\n\r\nclass Group {\r\n public ID: number;\r\n public Name: string;\r\n public CreatedAt: Date;\r\n public JoinedAt: Date;\r\n public IsOwner: boolean;\r\n public IsManager: boolean;\r\n public IsVisible: boolean;\r\n public IsVisibleToCompany: boolean;\r\n public IsPublic: boolean;\r\n public PinnedVideoID: number;\r\n public PinnedPostID: number;\r\n public Users: GroupUser[];\r\n public Videos: GroupVideo[];\r\n public Posts: GroupPost[];\r\n\r\n constructor(\r\n id: number,\r\n name: string,\r\n createdAt: Date,\r\n joinedAt: Date,\r\n isOwner: boolean,\r\n isManager: boolean,\r\n isVisible: boolean,\r\n isVisibleToCompany: boolean,\r\n isPublic: boolean,\r\n pinnedVideoId: number,\r\n pinnedPostId: number,\r\n users: GroupUser[],\r\n videos: GroupVideo[],\r\n posts: GroupPost[],\r\n ) {\r\n this.ID = id;\r\n this.Name = name;\r\n this.CreatedAt = createdAt;\r\n this.JoinedAt = joinedAt;\r\n this.IsOwner = isOwner;\r\n this.IsManager = isManager;\r\n this.IsVisible = isVisible;\r\n this.IsVisibleToCompany = isVisibleToCompany;\r\n this.IsPublic = isPublic;\r\n this.PinnedVideoID = pinnedVideoId;\r\n this.PinnedPostID = pinnedPostId;\r\n this.Users = users;\r\n this.Videos = videos;\r\n this.Posts = posts;\r\n }\r\n\r\n public static parseGroup(group: any): Group {\r\n const created = new Date(Date.parse(group.createdAt));\r\n const joined = new Date(Date.parse(group.joinedAt));\r\n const users = (group.users as any[]).map(u => GroupUser.parseGroupUser(u));\r\n const videos = (group.videos as any[]).map(v =>\r\n GroupVideo.parseGroupVideo(v),\r\n );\r\n const posts = (group.posts as any[]).map(p => GroupPost.parseGroupPost(p));\r\n\r\n return new Group(\r\n group.id,\r\n group.name,\r\n created,\r\n joined,\r\n group.isOwner,\r\n group.isManager,\r\n group.isVisible,\r\n group.isVisibleToCompany,\r\n group.isPublic,\r\n group.pinnedVideoID,\r\n group.pinnedPostID,\r\n users,\r\n videos,\r\n posts,\r\n );\r\n }\r\n}\r\n\r\nexport default Group;\r\n","class ConditionType {\r\n public static DueDate = \"due_date\";\r\n public static SessionScore = \"session_score\";\r\n public static Sentiment = \"sentiment\";\r\n public static SpeechSpeed = \"speech_speed\";\r\n public static Pitch = \"pitch\";\r\n public static Volume = \"volume\";\r\n public static Pauses = \"pauses\";\r\n public static OverallScore = \"overall_score\";\r\n public static Repetition = \"repetition\";\r\n public static FillerWords = \"filler_words\";\r\n public static SpeechClarity = \"speech_clarity\";\r\n}\r\n\r\nexport default ConditionType;\r\n","class AssignedUser {\r\n public Email: string;\r\n public Username: string;\r\n public Progress: number;\r\n public IsCompleted: boolean;\r\n\r\n public ProgressText: string;\r\n\r\n constructor(\r\n email: string,\r\n username: string,\r\n progress: number,\r\n isCompleted: boolean,\r\n ) {\r\n this.Email = email;\r\n this.Username = username;\r\n this.Progress = progress;\r\n this.IsCompleted = isCompleted;\r\n\r\n this.ProgressText = `Completed ${this.Progress} sessions`;\r\n }\r\n\r\n public static parse(data: any): AssignedUser {\r\n return new AssignedUser(\r\n data.email,\r\n data.username,\r\n data.progress,\r\n data.isCompleted,\r\n );\r\n }\r\n}\r\n\r\nexport default AssignedUser;\r\n","import Condition from \"./Condition\";\r\nimport ConditionType from \"./ConditionType\";\r\nimport User from \"../User\";\r\nimport AssignedUser from \"./AssignedUser\";\r\n\r\nclass Goal {\r\n public ID: number;\r\n public Creator: User;\r\n public CreatedAt: Date;\r\n public Target: number;\r\n public Conditions: Condition[];\r\n public AssingedUsers: AssignedUser[];\r\n\r\n public Title: string;\r\n\r\n constructor(\r\n id: number,\r\n creator: User,\r\n createdAt: Date,\r\n target: number,\r\n conditions: any[],\r\n users: AssignedUser[],\r\n ) {\r\n this.ID = id;\r\n this.Creator = creator;\r\n this.CreatedAt = createdAt;\r\n this.Target = target;\r\n this.Conditions = conditions;\r\n this.AssingedUsers = users;\r\n\r\n this.Title = `Complete ${this.Target} sessions`;\r\n }\r\n\r\n getDueDate(): Date | null {\r\n const dueDate = this.Conditions.find(\r\n c => c.type.toLowerCase() === ConditionType.DueDate,\r\n );\r\n if (dueDate) return new Date(dueDate.value);\r\n else return null;\r\n }\r\n\r\n static parse(data: any): Goal {\r\n const creator = User.parse(data.creator);\r\n const createdAt = new Date(data.createdAt);\r\n const users = (data.assignedUsers as any[]).map(u => AssignedUser.parse(u));\r\n return new Goal(\r\n data.id,\r\n creator,\r\n createdAt,\r\n data.target,\r\n data.conditions,\r\n users,\r\n );\r\n }\r\n}\r\n\r\nexport default Goal;\r\n","import { Condition, User } from \"..\";\r\n\r\nclass AssignedGoal {\r\n public GoalId: number;\r\n public Target: number;\r\n public Creator: User;\r\n public CreatedAt: Date;\r\n public Conditions: Condition[];\r\n public Progress: number;\r\n public IsCompleted: boolean;\r\n\r\n // from seminars\r\n public SeminarTitle: string;\r\n public BlockTitle: string;\r\n public ElementTitle: string;\r\n\r\n // Helpers\r\n public ProgressValue: number;\r\n public ProgressText: string;\r\n public ProgressColor: string;\r\n\r\n constructor(\r\n id: number,\r\n t: number,\r\n c: User,\r\n cAt: Date,\r\n cond: Condition[],\r\n pr = 0,\r\n isComp = false,\r\n st = \"\",\r\n bt = \"\",\r\n et = \"\",\r\n ) {\r\n this.GoalId = id;\r\n this.Target = t;\r\n this.Creator = c;\r\n this.CreatedAt = cAt;\r\n this.Conditions = cond;\r\n this.Progress = pr;\r\n this.IsCompleted = isComp;\r\n\r\n this.SeminarTitle = st;\r\n this.BlockTitle = bt;\r\n this.ElementTitle = et;\r\n\r\n const progress = Math.round((this.Progress / this.Target) * 10000) / 100;\r\n this.ProgressValue = progress;\r\n\r\n this.ProgressText = `You have completed ${\r\n this.IsCompleted ? \"all\" : this.Progress\r\n } ${this.Progress === 1 ? \"session\" : \"sessions\"}`;\r\n\r\n this.ProgressColor = \"error\";\r\n if (this.ProgressValue > 10) this.ProgressColor = \"grey\";\r\n if (this.ProgressValue > 40) this.ProgressColor = \"primary\";\r\n if (this.ProgressValue > 90) this.ProgressColor = \"success\";\r\n }\r\n\r\n public static parse(data: any): AssignedGoal {\r\n const date = new Date(data.createdAt);\r\n const creator = User.parse(data.creator);\r\n return new AssignedGoal(\r\n data.goalId,\r\n data.target,\r\n creator,\r\n date,\r\n data.conditions,\r\n data.progress,\r\n data.isCompleted,\r\n );\r\n }\r\n}\r\n\r\nexport default AssignedGoal;\r\n","import { User } from \"@/core/models\";\r\n\r\nclass Meeting {\r\n public ID: string;\r\n public Type: string;\r\n public Subject: string;\r\n public Creator: User;\r\n public CreatedAt: Date;\r\n public StartDate: Date;\r\n public EndDate: Date;\r\n public MeetingLink: string;\r\n public InvitedUsers: string[];\r\n\r\n constructor(\r\n id: string,\r\n type: string,\r\n subject: string,\r\n creator: User,\r\n crAt: Date,\r\n start: Date,\r\n end: Date,\r\n link: string,\r\n users: string[],\r\n ) {\r\n this.ID = id;\r\n this.Type = type;\r\n this.Subject = subject;\r\n this.Creator = creator;\r\n this.CreatedAt = crAt;\r\n this.StartDate = start;\r\n this.EndDate = end;\r\n this.MeetingLink = link;\r\n this.InvitedUsers = users;\r\n }\r\n\r\n public static parse(data: any): Meeting {\r\n const crAt = new Date(data.createdAt);\r\n const creator = User.parse(data.creator);\r\n const start = new Date(data.startDate);\r\n const end = new Date(data.startDate);\r\n return new Meeting(\r\n data.id,\r\n data.type,\r\n data.subject,\r\n creator,\r\n crAt,\r\n start,\r\n end,\r\n data.meetingLink,\r\n data.invitedUsers,\r\n );\r\n }\r\n}\r\nexport default Meeting;\r\n","import { SelectItem } from \"../interfaces\";\r\n\r\nclass MeetingTypes {\r\n public static Custom = \"custom_meeting\";\r\n public static Blizz = \"blizz_meeting\";\r\n\r\n public static getValues(): SelectItem[] {\r\n const data = [\r\n { text: \"Custom Meeting\", value: this.Custom, disabled: false },\r\n { text: \"Blizz Meeting\", value: this.Blizz, disabled: false },\r\n ];\r\n return data;\r\n }\r\n}\r\n\r\nexport default MeetingTypes;\r\n","class Notification {\r\n date: Date;\r\n type: NotificationType;\r\n user?: NotificationUser;\r\n submissionId: number;\r\n // Submission || Submission id to create a direct link\r\n\r\n constructor(data: any) {\r\n const { date, type, user, submissionId } = data;\r\n this.date = new Date(date);\r\n this.submissionId = submissionId;\r\n this.type = this.getNotificatoinType(type);\r\n this.user = user ? new NotificationUser(user) : undefined;\r\n }\r\n\r\n getNotificatoinType(type: string): NotificationType {\r\n switch (type) {\r\n case \"feedback_received\":\r\n return NotificationType.FeedbackReceived;\r\n case \"rate_video\":\r\n return NotificationType.RateVideo;\r\n case \"rating_received\":\r\n return NotificationType.RatingReceived;\r\n }\r\n throw new Error(\"Notification type not supported!\");\r\n }\r\n}\r\n\r\nenum NotificationType {\r\n FeedbackReceived = \"feedback_received\",\r\n RateVideo = \"rate_viedo\",\r\n RatingReceived = \"rating_received\",\r\n}\r\n\r\nclass NotificationUser {\r\n username: string;\r\n id: string;\r\n firstname: string;\r\n lastname: string;\r\n\r\n constructor(data: any) {\r\n const { id, username, firstname, lastname } = data;\r\n this.id = id;\r\n this.username = username;\r\n this.firstname = firstname;\r\n this.lastname = lastname;\r\n }\r\n}\r\n\r\ninterface TokenNotification {\r\n accessToken: string;\r\n refreshToken: string;\r\n}\r\n\r\nexport { Notification, NotificationType, NotificationUser, TokenNotification };\r\n","class Employee {\r\n Email: string;\r\n Username: string;\r\n HasAccepted: boolean;\r\n IsManager: boolean;\r\n IsOwner: boolean;\r\n\r\n constructor(data: any) {\r\n this.Email = data.email;\r\n this.Username = data.username;\r\n this.HasAccepted = data.hasAccepted || false;\r\n this.IsManager = data.isManager || false;\r\n this.IsOwner = data.isOwner || false;\r\n }\r\n}\r\n\r\nexport default Employee;\r\n","import Employee from \"./Employee\";\r\n\r\nclass Company {\r\n ID: string;\r\n Name: string;\r\n Owner?: Employee;\r\n IsActive: boolean;\r\n Tier: string;\r\n Employees: Employee[];\r\n CreatedAt: Date;\r\n\r\n constructor(data: any) {\r\n const { id, name, subscription, tier, createdAt, companyUsers } = data;\r\n\r\n this.ID = id;\r\n this.Name = name;\r\n this.IsActive = (subscription && subscription.isActive) || false;\r\n this.Tier = tier;\r\n if (companyUsers)\r\n this.Employees = (companyUsers as object[]).map(e => new Employee(e));\r\n else this.Employees = [];\r\n this.Owner = this.Employees.find(e => e.IsOwner);\r\n this.CreatedAt = new Date(createdAt);\r\n }\r\n}\r\n\r\nexport default Company;\r\n","class Product {\r\n id: string;\r\n name: string;\r\n metadata: any;\r\n active: boolean;\r\n images: string[];\r\n monthlyPrice: string;\r\n yearlyPrice: string;\r\n unit_amount: number;\r\n unitAmountMonthly: number;\r\n unitAmountYearly: number;\r\n description: string;\r\n\r\n constructor(data: any) {\r\n const {\r\n monthlyPrice,\r\n yearlyPrice,\r\n unitAmount,\r\n id,\r\n name,\r\n metadata,\r\n active,\r\n description,\r\n images,\r\n unitAmountMonthly,\r\n unitAmountYearly,\r\n } = data;\r\n this.id = id;\r\n this.name = name;\r\n this.images = images;\r\n this.active = active;\r\n this.metadata = metadata;\r\n this.monthlyPrice = monthlyPrice;\r\n this.yearlyPrice = yearlyPrice;\r\n this.unit_amount = unitAmount;\r\n this.description = description;\r\n this.unitAmountMonthly = unitAmountMonthly;\r\n this.unitAmountYearly = unitAmountYearly;\r\n }\r\n}\r\nexport default Product;\r\n","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(VMenu,{attrs:{\"offset-y\":\"\",\"auto\":\"\",\"transition\":\"slide-y-transition\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c(VBtn,_vm._g({staticClass:\"px-0\",attrs:{\"text\":\"\",\"large\":\"\",\"width\":\"50px\",\"min-width\":\"50px\"}},on),[_c(VAvatar,{attrs:{\"tile\":\"\",\"size\":\"24\"}},[_c('span',[_vm._v(_vm._s(_vm.locale === \"en\" ? \"EN\" : \"DE\"))])])],1)]}}])},[_c(VList,[_c(VListItemGroup,{attrs:{\"mandatory\":\"\"},model:{value:(_vm.locale),callback:function ($$v) {_vm.locale=$$v},expression:\"locale\"}},_vm._l((_vm.langs),function(lang){return _c(VListItem,{key:lang.locale,attrs:{\"value\":lang.locale},on:{\"click\":function($event){return _vm.setLocale(lang.locale)}}},[_c(VListItemContent,[_vm._v(_vm._s(lang.name))])],1)}),1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Settings } from \"luxon\";\r\nimport { Component } from \"vue-property-decorator\";\r\nimport LocalStorage from \"@/core/utils/LocalStorage\";\r\n\r\n@Component\r\nexport default class LanguageSelect extends Vue {\r\n langs: any = {\r\n en: { locale: \"en\", name: \"English\" },\r\n de: { locale: \"de\", name: \"Deutsch\" },\r\n };\r\n\r\n locale = \"de\";\r\n get allLocales() {\r\n return this.$i18n.availableLocales;\r\n }\r\n get currentLang() {\r\n return this.langs[this.locale];\r\n }\r\n setLocale(value: string) {\r\n this.$i18n.locale = value;\r\n LocalStorage.setLocale(value);\r\n this.locale = value;\r\n Settings.defaultLocale = value;\r\n }\r\n\r\n created() {\r\n const locale = LocalStorage.getLocale();\r\n this.setLocale(locale);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LanguageSelect.vue?vue&type=template&id=ed244248&scoped=true&\"\nimport script from \"./LanguageSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./LanguageSelect.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LanguageSelect.vue?vue&type=style&index=0&id=ed244248&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ed244248\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppBar.vue?vue&type=style&index=0&id=30a56c50&prod&lang=scss&scoped=true&\"","export enum Role {\r\n Admin = \"admin\",\r\n Owner = \"owner\",\r\n User = \"user\",\r\n SubscriberFree = \"subscriber-free\",\r\n SubscriberBasic = \"subscriber-basic\",\r\n SubscriberStandard = \"subscriber-standard\",\r\n SubscriberPremium = \"subscriber-premium\",\r\n SubscriberEnterprise = \"subscriber-enterprise\",\r\n}\r\n\r\nexport default Role;\r\n\r\n/*class Roles {\r\n public static Owner: string = \"owner\";\r\n public static Admin: string = \"admin\";\r\n public static User: string = \"user\";\r\n public static Moderator: string = \"moderator\";\r\n public static Coach: string = \"coach\";\r\n public static Student: string = \"student\";\r\n public static Teacher: string = \"teacher\";\r\n public static SubscriberFree: string = \"subscriber-free\";\r\n public static SubscriberBasic: string = \"subscriber-basic\";\r\n public static SubscriberStandard: string = \"subscriber-standard\";\r\n public static SubscriberPremium: string = \"subscriber-premium\";\r\n public static SubscriberEnterprise: string = \"subscriber-enterprise\";\r\n}\r\n\r\nexport default Roles;\r\n*/\r\n","const en = {\r\n dashboardPage: {\r\n yourGoalsCard: {\r\n yourGoals: \"Your Goals\",\r\n haveCompleted: \"You have completed {number} session{plural}\",\r\n error: \"An error occurred.\",\r\n loadingGoals: \"Loading Goals...\",\r\n },\r\n groupsCard: {\r\n groups: \"Your Groups\",\r\n viewAll: \"View All\",\r\n information: \"Information\",\r\n created: \"Created:\",\r\n users: \"Users\",\r\n videos: \"Videos\",\r\n posts: \"Posts\",\r\n notGroupMember: \"You are not part of any groups yet.\",\r\n groupsLoading: \"Groups are loading...\",\r\n },\r\n videosCard: {\r\n all: \"All\",\r\n videos: \"Latest Group Videos\",\r\n group: \"Group\",\r\n loadingVids: \"Loading videos...\",\r\n noGroups: \"You are not a part of any groups\",\r\n },\r\n newsCard: {\r\n news: \"News\",\r\n readAll: \"Read All\",\r\n posted: \"Posted\",\r\n readMore: \"Read Article\",\r\n noNews: \"No news has been posted yet.\",\r\n newsLoading: \"News is loading.\",\r\n },\r\n sessionsCard: {\r\n sessions: \"Progress Breakdown\",\r\n pitchHdg: \"Pitch\",\r\n pitchSubHdgDeeper:\r\n \"You spoke in a deeper voice this week when compared to last week.\",\r\n ptichSubHdgHigher:\r\n \"You spoke in a higher voice this week when compared to last week.\",\r\n speechSpdHdg: \"Speech Speed\",\r\n speechSpdSubHdgFaster:\r\n \"You spoke faster today in comparison to yesterday.\",\r\n speechSpdSubHdgSlower:\r\n \"You spoke slower today in comparison to yesterday.\",\r\n hertz400: \"400Hz\",\r\n hertz600: \"600Hz\",\r\n thisWeek: \"This Week\",\r\n wpm: \"words/minute\",\r\n today: \"Today\",\r\n yesterday: \"Yesterday\",\r\n },\r\n presentationsCard: {\r\n presentations: \"Your Presentations\",\r\n mb: \"MB\",\r\n empty: \"Empty\",\r\n },\r\n },\r\n //isnt used\r\n topPanel: {\r\n settings: \"Settings\",\r\n mail: \"Mail\",\r\n refresh: \"Refresh\",\r\n logout: \"Logout\",\r\n },\r\n //isnt used\r\n leftPanel: {\r\n dashboard: \"Dashboard\",\r\n sessions: \"Sessions\",\r\n groups: \"Groups\",\r\n news: \"News\",\r\n goals: \"Goals\",\r\n meetings: \"Meetings\",\r\n adminPanel: \"Admin Panel\",\r\n },\r\n sessionsPage: {\r\n noSessions: \"No sessions could be found\",\r\n sessionsFor: \"Sessions for \",\r\n yourSessionsSection: {\r\n yourSessions: \"Sessions\",\r\n sessionFilters: \"Session Filters\",\r\n filterByDate: \"Filter by date\",\r\n beforeDate: \"Before date\",\r\n afterDate: \"After date\",\r\n betweenTwoDates: \"Between two dates\",\r\n filterByDuration: \"Filter by duration\",\r\n timeSpan: \"Time span (minutes)\",\r\n longerThan: \"Longer than (minutes)\",\r\n shorterThan: \"Shorter than (minutes)\",\r\n minTime: \"Minimum time (minutes)\",\r\n maxTime: \"Maximum time (minutes)\",\r\n filterByName: \"Filter by name\",\r\n startsWith: \"Starts with\",\r\n endsWith: \"Ends with\",\r\n includes: \"Includes\",\r\n exactMatch: \"Exact match\",\r\n searchTerm: \"Search term\",\r\n caseInsensitive: \"Case insensitive\",\r\n filterByScore: \"Filter by score\",\r\n greaterThanScore: \"Greater than\",\r\n lessThanScore: \"Less than\",\r\n scoreRange: \"Score range\",\r\n applyButton: \"Apply\",\r\n clearButton: \"Clear\",\r\n cancelButton: \"Cancel\",\r\n fetching: \"Fetching session...\",\r\n },\r\n sessionsListSection: {\r\n sessionsList: \"Sessions List\",\r\n sessions: \"Sessions\",\r\n checkSessions: \"Refresh\",\r\n audioAnalHdg: \"Audio Analysis\",\r\n aiBasedAnal: \"AI-Based Analysis\",\r\n audioAnalNotComplete:\r\n \"Audio Analysis hasn't been completed yet. You can wait for it to load or check if it is done by refreshing the page.\",\r\n textAnalHdg: \"Text Analysis\",\r\n textAnalNotComplete:\r\n \"Text Analysis not completed. You can refresh the page to check if it is ready or wait for the session to complete.\",\r\n movementAnalHdg: \"Movement Analysis\",\r\n movementAnalNoData: \"There is no movement data available.\",\r\n show: \"Show\",\r\n points: \"points\",\r\n volumeWarning:\r\n \"A too quiet or loud recording may influence the quality of the Analysis Results. To get precise Analysis Results, aim for a Voice Volume between 20% and 80%.\",\r\n movementAnalCard: {\r\n movementAnal: \"Movement Analysis\",\r\n headMovementOverTime: \"Head Movement over Time\",\r\n headMoTInfo:\r\n \"Head Movement over Time shows how much your movement has changed over the last few sessions.\",\r\n headMovement: \"Head Movement\",\r\n avgHeadMovement: \"Average head movement\",\r\n infoHeadM:\r\n \"Head Movement shows how much you move with your Head / Body. Try to move from one space to another with reason and purpose.\",\r\n handMovementOverTime: \"Hand Movement over Time\",\r\n handMoTInfo:\r\n \"Hand Movement over Time shows how much your movement has changed over the last few sessions.\",\r\n handMovement: \"Hand Movement\",\r\n avgHandMovement: \"Average hand movement\",\r\n infoHandM:\r\n \"Hand Movement shows how much you move your Hands / Gesture. A lot of movement may cause you to appear nervous and less movement may portray you as bored. Try to use your Gestures as a tool to build tension.\",\r\n distance: \"Distance\",\r\n changeOverTime: \"Change over time\",\r\n timePercent: \"Time in %\",\r\n },\r\n speechSpeedCard: {\r\n cardTitle: \"Speech Speed\",\r\n wpmInfo:\r\n \"This shows how fast you speak. / How many words you use in one minute on average.\",\r\n wpmTimeUnit: \"Words/Minute\",\r\n wpmNotice:\r\n \"For most presentations a value between 90 and 150 words per minute is suitable\",\r\n infoTitle: \"Speech Speed and Listening Speed\",\r\n infoText:\r\n \"An average speech speed between 90 and 150 words per minute (WPM) is considered pleasant and understandable. Listening we can understand 150 WPM just fine but we can read about at about 260 WPM! That means that listeners will prefer to read the text that is on the slide, rather than wait for the speaker to say the it out loud. Bear this in mind when creating your presentation slides.\",\r\n },\r\n scoresCard: {\r\n infoTitle: \"Session Scores\",\r\n infoText: \"These are the scores for this session\",\r\n cardTitle: \"Session Scores\",\r\n overall: \"Overall\",\r\n overallTip:\r\n \"Overall score is the average of all your individual scores. If you scored less than 3 in one area, this score is weighted triple!\",\r\n other: \"Other scores\",\r\n wpm: \"Speech Speed\",\r\n wpmTip:\r\n \"For most presentations a value between 90 and 150 words per minute is the best. You have spoken {value} words per minute. \",\r\n wpmFasterTip: \"Try to speak a bit faster next time.\",\r\n wpmSlowerTip: \"Try to speak a bit slower next time.\",\r\n pauses: \"Pauses\",\r\n pausesTip:\r\n \"A good presentation should contain enough pauses (Pauses longer than 2 seconds). We recommend between 2 to 3 pauses per minute. You did {value} pauses per minute. \",\r\n morePausesTip: \"Try to use more pauses. \",\r\n lessPausesTip:\r\n \"To have a more fluent presentation, try to reduce the count of pauses per minute to 2 - 3. \",\r\n repetition: \"Repetition\",\r\n repetitionTip:\r\n \"You shouldn't use the same word more than two times per minute in a good presentation. You have used following words very often: \",\r\n filler: \"Filler words\",\r\n fillerTip:\r\n \"A good presentation should not contain more than two filler words per minute. For this session, you used {value} filler words per minute. \",\r\n fillerTipWordlist: \"These were: \",\r\n fillerTipContinued:\r\n \"Short filler words (e.g. em) are sometimes not recognized by the system or misunderstood as single letters (e. g. M). Please listen to your presentation to check your use of filler words.\",\r\n speaking: \"Speech Clarity\",\r\n speakingTip:\r\n \"This score says how well understandable your presentation is. Try to reach a maximum value of 100%. Your score was {value}%. \",\r\n none: \"No scores for this session\",\r\n },\r\n feedback: {\r\n recordButton: \"Feedback\",\r\n recordTooltip: \"Record a video as feedback\",\r\n playButton: \"View\",\r\n playTooltip: \"View your feedback\",\r\n playDialogTitle: \"Your feedback\",\r\n deleteButton: \"Delete\",\r\n deleteTooltip: \"Delete your feedback\",\r\n deleteConfirmationTitle: \"Delete feedback\",\r\n deletionInfo:\r\n \"You can't undo deleting your feedback. Are you sure you want to delete your feedback?\",\r\n confirmButton: \"Confirm\",\r\n cancelButton: \"Cancel\",\r\n },\r\n },\r\n uploadSessionSection: {\r\n uploadSession: \"Upload Session\",\r\n createSessionFromAudio: \"Create session from audio file\",\r\n sessionName: \"Session Name *\",\r\n audioFile: \"Audio File *\",\r\n videoFile: \"Video File *\",\r\n chooseLang: \"Choose language\",\r\n },\r\n deleteSession: {\r\n deleteSessionButton: \"Delete this session\",\r\n youSureDelete: \"Are you sure you would like to delete this session?\",\r\n deletionInfo:\r\n \"Deleting a session is irreversible. Are you sure you would like to continue with deletion of this session?\",\r\n confirmSessDel: \"Confirm\",\r\n cancelSessDel: \"Cancel\",\r\n },\r\n sessionsProgressSection: {\r\n analysisStatus: {\r\n AnalyzingAudio: \"Analyzing audio...\",\r\n AnalyzingText: \"Analyzing text...\",\r\n AudioDone: \"Audio analysis complete\",\r\n ExtractingAudio: \"Extracting audio\",\r\n Running: \"Running...\",\r\n NotStarted: \"Not started\",\r\n Succeeded: \"Succeeded\",\r\n null: \"Running...\",\r\n TextDone: \"Text transcription completed\",\r\n },\r\n sessionsProgress: \"Sessions Progress\",\r\n analyzingSession: \"Analyzing...\",\r\n gettingSession: \"Getting session...\",\r\n recentData: \"Recent Data\",\r\n display: \"Display\",\r\n sessions: \"sessions\",\r\n audioAnal: \"Audio Analysis\",\r\n textAnal: \"Text Analysis\",\r\n movementAnal: \"Movement Analysis\",\r\n pitchOverTimeCard: {\r\n pitchOverTime: \"Pitch over Time\",\r\n changeOverTime: \"Change over time\",\r\n voicePitch: \"Voice Pitch\",\r\n infoPoT:\r\n \"With Pitch over Time you can see the progress of your voice. This is useful if you want to train to use a deeper or higher voice.\",\r\n },\r\n volumeOverTimeCard: {\r\n volumeOverTime: \"Volume over Time\",\r\n voiceVolume: \"Voice Volume\",\r\n changeOverTime: \"Change over Time\",\r\n infoVoT:\r\n \"Volume over Time shows the progress of the volume of your voice.\",\r\n },\r\n pausesOverTimeCard: {\r\n pausesOverTime: \"Pauses-per-minute over Time\",\r\n changeOverTime: \"Change over time\",\r\n totalPauseTime: \"Total Pause Time\",\r\n infoPoT:\r\n \"Pauses over Time shows how many pauses you made within your last few sessions.\",\r\n },\r\n textAnalCard: {\r\n sentimentOverTime: \"Sentiment over Time\",\r\n changeOverTime: \"Change over time\",\r\n sentiment: \"Sentiment\",\r\n infoSoT:\r\n \"Sentiment over Time shows your progress in terms of a positive choice of words.\",\r\n },\r\n speechSpeedOverTimeCard: {\r\n speechSpeedOverTime: \"Speech Speed over Time\",\r\n changeOverTime: \"Change over time\",\r\n wordsPerMinute: \"Words/Minute\",\r\n infoSSoT:\r\n \"This shows the speed of your latest sessions relative to previous ones.\",\r\n },\r\n movementAnalCard: {\r\n movementAnal: \"Movement Analysis\",\r\n headMovementOverTime: \"Head Movement over Time\",\r\n headMoTInfo:\r\n \"Head Movement over Time shows how much your movement has changed over the last few sessions.\",\r\n headMovement: \"Head Movement\",\r\n infoHeadM:\r\n \"Head Movement shows how much you move with your Head / Body. Try to move from one space to another with reason and purpose.\",\r\n handMovementOverTime: \"Hand Movement over Time\",\r\n handMoTInfo:\r\n \"Hand Movement over Time shows how much your movement has changed over the last few sessions.\",\r\n handMovement: \"Hand Movement\",\r\n infoHandM:\r\n \"Hand Movement shows how much you move your Hands / Gesture. A lot of movement may cause you to appear nervous and less movement may portray you as bored. Try to use your Gestures as a tool to build tension.\",\r\n distance: \"Distance\",\r\n changeOverTime: \"Change over time\",\r\n timePercent: \"Time in %\",\r\n },\r\n },\r\n sessionFiltersPopUp: {\r\n sessionFilters: \"Session filters\",\r\n filterByDate: \"Filter by date\",\r\n filterByDuration: \"Filter by duration\",\r\n minTimeMin: \"Minimum time (minutes)\",\r\n maxTimeMin: \"Maximum time (minutes)\",\r\n filterByName: \"Filter by name\",\r\n searchTerm: \"Search term\",\r\n caseInsensitive: \"Case insensitive\",\r\n filterByScore: \"Filter by score\",\r\n apply: \"Apply\",\r\n clear: \"Clear\",\r\n cancel: \"Cancel\",\r\n ok: \"OK\",\r\n beforeDate: \"Before date\",\r\n after: \"After date\",\r\n between: \"Between two dates\",\r\n startDate: \"Start date\",\r\n endDate: \"End date\",\r\n },\r\n aiFeedback: \"Get personal Feedback From Your AI Coach\",\r\n aiFeedbackTitle: \"Your AI Coach Feedback\",\r\n aiSessionTitle: \"AI Assisted Session\",\r\n new: \"New\",\r\n },\r\n groupsSections: {\r\n yourGroupsPage: {\r\n yourGroups: \"Your groups\",\r\n noGroups: \"You are not part of any groups.\",\r\n addNewGroup: \"Add A New Group\",\r\n addGroupButton: \"Add Group\",\r\n groupName: \"Group Name\",\r\n groupUsers: \"Group Users\",\r\n emailRules:\r\n \"Separate e-mails with comma(,) or by pressing space, tab or enter\",\r\n submitButton: \"Submit\",\r\n },\r\n //isnt used\r\n groupPage: {\r\n latestVideosCard: {\r\n latestVideos: \"Latest videos\",\r\n editVideo: \"Edit video\",\r\n deleteVideo: \"Delete video\",\r\n addVidButton: \"Add Video\",\r\n addNewVideo: \"Add new video\",\r\n vidTitle: \"Video Title (optional)\",\r\n info: \"If the title is empty, it will be set automatically\",\r\n vidDescription: \"Video Description (optional)\",\r\n pinVideo: \"Pin this video?\",\r\n pinfo: \"The pinned video will appear first\",\r\n linkButton: \"Link\",\r\n vidLink: \"Video Link\",\r\n submit: \"Submit\",\r\n fileButton: \"File\",\r\n },\r\n latestPostsCard: {\r\n latestPosts: \"Latest posts\",\r\n editPost: \"Edit post\",\r\n deletePost: \"Delete post\",\r\n addPostButton: \"Add Post\",\r\n postTitle: \"Post Title (required)\",\r\n postBody: \"Post Body (required)\",\r\n pinPost: \"Pin this post?\",\r\n uploadBannerImage: \"Upload banner image?\",\r\n bannerImage: \"Banner Image\",\r\n otherFiles: \"Other files\",\r\n postButton: \"Post\",\r\n },\r\n usersCard: {\r\n users: \"Users\",\r\n remove: \"Remove User\",\r\n makeManager: \"Make Manager\",\r\n removeManager: \"Remove Manager\",\r\n },\r\n addUserCard: {\r\n addANewUser: \"Add A New User\",\r\n addUserButton: \"Add User\",\r\n userEmail: \"User E-mail\",\r\n makeManager: \"Make Manager\",\r\n submitButton: \"Submit\",\r\n },\r\n },\r\n },\r\n latestNewsSections: {\r\n latestNewsPage: {\r\n latestNews: \"Latest News\",\r\n noNews: \"No news posted yet.\",\r\n newsLoading: \"News is loading\",\r\n read: \"Read\",\r\n back: \"Back\",\r\n edit: \"Edit\",\r\n delete: \"Delete\",\r\n err404: \"404\",\r\n artWithId: \"Article with ID\",\r\n notFound: \"could not be found.\",\r\n goBack: \"Go Back\",\r\n addArticleButton: \"Add Article\",\r\n addArticlePopUp: {\r\n addNewArticle: \"Adds a News Article\",\r\n articleTitle: \"Article Title\",\r\n cannotBeEmpty: \"Field cannot be empty\",\r\n articleBody: \"Article Body\",\r\n addBannerImg: \"Add Banner Image\",\r\n bannerImg: \"Banner Image\",\r\n otherFiles: \"Other Files\",\r\n addArticle: \"Add Article\",\r\n },\r\n },\r\n articleActions: {\r\n edit: \"Edit\",\r\n editArticle: \"Edit Article\",\r\n newArticleTitle: \"New Article Title\",\r\n newArticleBody: \"New Article Body\",\r\n done: \"Done\",\r\n deleteArticle: \"Delete article\",\r\n areYouSure: \"Are you sure you would like to delete the current article?\",\r\n confirm: \"Confirm\",\r\n cancel: \"Cancel\",\r\n },\r\n addArticleButton: {\r\n addArticle: \"Add Article\",\r\n addNewsArticle: \"Add a News Article\",\r\n articleTitle: \"Article Title\",\r\n articleBody: \"Article Body\",\r\n addBannerImage: \"Add Banner Image\",\r\n bannerImage: \"Banner Image\",\r\n otherFiles: \"Other files\",\r\n },\r\n },\r\n goalsSections: {\r\n yourGoals: \"Your Goals\",\r\n assignedGoalsCard: {\r\n assignedGoals: \"Assigned Goals\",\r\n completeNumSessions: \"Complete #### sessions\",\r\n dueDate: \"Due in #### years\",\r\n completedSessions: \"You have completed #### sessions\",\r\n noGoalAssignments: \"You have not been assigned any goals.\",\r\n },\r\n createdGoalsCard: {\r\n createdGoals: \"Created Goals\",\r\n completeNumSessions: \"Complete #### sessions\",\r\n goalCreatedAtMonth: \"a month ago\",\r\n goalCreatedAtMinutes: \"x minutes ago\",\r\n sessionsThatCount: \"Only sessions with a score greater than ## count\",\r\n sentimentAim: \"Aim for a sentiment score between xx% and yy%\",\r\n pausesAim: \"Aim to make anywhere between x and y pauses\",\r\n pitchAim: \"Aim for an average voice pitch between ##Hz and ##Hz\",\r\n volumeAim: \"Aim for an average volume between ##dB and ##dB\",\r\n noCreatedGoals: \"You have not created any goals.\",\r\n },\r\n addGoalButton: \"Add Goal\",\r\n addGoalPopUp: {\r\n addNewGoal: \"Add new goal\",\r\n addCondition: \"Add Condition\",\r\n conditionNum: \"Condition #x\",\r\n conditionType: \"Condition Type (required)\",\r\n dueDate: \"Due Date\",\r\n sessionScore: \"Session Score\",\r\n targetScore: \"Target Score\",\r\n sentiment: \"Sentiment\",\r\n targetSentiment: \"Target Sentiment\",\r\n avgPitch: \"Average Pitch\",\r\n targetPitch: \"Target Pitch\",\r\n avgVolume: \"Average Volume\",\r\n targetVolume: \"Target Volume\",\r\n pausesPerMin: \"Pauses per Minute\",\r\n targetPauses: \"Target Pauses\",\r\n assignToUsers: \"Assign to users\",\r\n selectAll: \"Select All\",\r\n deselectAll: \"Deselect All\",\r\n assignSelf: \"Assign yourself?\",\r\n submit: \"Submit Goal\",\r\n },\r\n },\r\n meetingsSection: {\r\n yourMeetings: \"Your Meetings\",\r\n allMeetingsCard: {\r\n allMeetings: \"All Meetings\",\r\n subject: \"Subject\",\r\n noSubject: \"No Subject Set\",\r\n noMeetings: \"You have not created any meetings.\",\r\n joinMeeting: \"Join Meeting\",\r\n editMeeting: \"Edit Meeting\",\r\n cancelMeeting: \"Cancel Meeting\",\r\n dateFuture: \"in xx days\",\r\n datePast: \"xx days ago\",\r\n done: \"Done\",\r\n },\r\n addMeetingButton: \"Add Meeting\",\r\n addNewMeetingPopUp: {\r\n addNewMeeting: \"Add a New Meeting\",\r\n meetingSub: \"Meeting Subject\",\r\n chooseStart: \"Choose start date/time\",\r\n chooseEnd: \"Choose end date/time\",\r\n assignUsers: \"Assign to users\",\r\n selectAll: \"Select All\",\r\n deselectAll: \"Deselect All\",\r\n additionalUsers: \"Additional Users\",\r\n emailRule:\r\n \"Separate e-mails with a comma(,) or by pressing space, tab or enter\",\r\n setPass: \"Set password?\",\r\n pass: \"Password\",\r\n meetingTypes: \"Meeting Types\",\r\n blizzMeeting: \"Blizz Meeting\",\r\n customMeeting: \"Custom Meeting\",\r\n customMeetingLink: \"Custom meeting link\",\r\n addMeeting: \"Add Meeting\",\r\n dateError: \"Meeting end date has to be after its start date\",\r\n },\r\n },\r\n adminPanelSection: {\r\n allUsers: \"All Users\",\r\n changeRole: \"Change Role\",\r\n changeRolePopUp: {\r\n changeRoleUser: \"Change role for user\",\r\n submit: \"Submit\",\r\n cancel: \"Cancel\",\r\n admin: \"Admin\",\r\n user: \"User\",\r\n owner: \"Owner\",\r\n },\r\n },\r\n passwordResetSection: {\r\n resetPass: \"Reset Password\",\r\n error: \"An error occurred\",\r\n newPassRequired: \"New Password (required)\",\r\n confirmPass: \"Confirm New Password (required)\",\r\n doneRedirect: \"Done! Redirecting you to Login in 5-seconds.\",\r\n couldNotResetPass: \"Could not reset your password\",\r\n resetMyPass: \"Reset my password\",\r\n backToForgotPass: 'Back to \"Forgot Password\"',\r\n passRequired: \"Password is required\",\r\n passMustBe: \"Password must be at least 8 characters long.\",\r\n passMustContain:\r\n \"Password must include uppercase and lowercase letters, a digit, and a special character\",\r\n confirmPassRequired: \"Password confirmation is required.\",\r\n passNoMatch: \"Passwords do not match.\",\r\n },\r\n registerSection: {\r\n error: \"An error occurred\",\r\n fNameRequired: \"First Name (required)\",\r\n lNameRequired: \"Last Name (required)\",\r\n firstName: \"First Name\",\r\n lastName: \"Last Name\",\r\n companyName: \"Company Name\",\r\n emailRequired: \"E-mail (required)\",\r\n passwordRequired: \"Password (required)\",\r\n confirmPassRequired: \"Confirm Password (required)\",\r\n emailPlaceHolder: \"demo@prezp.com\",\r\n agree: \"I agree with the\",\r\n termsNCond: \"Terms and Conditions\",\r\n agreeEnd: \"\",\r\n next: \"Next\",\r\n back: \"Back\",\r\n register: \"Register\",\r\n fName: \"First name is required\",\r\n fNameMin: \"First name has to be at least 2-letters long\",\r\n lName: \"Last name is required\",\r\n lNameMin: \"Last name has to be at least 2-letters long\",\r\n flName: \"First name and last name are required\",\r\n email: \"E-mail is required\",\r\n invalidEmail: \"Invalid e-mail\",\r\n emailAlreadyTaken: \"A user with this E-mail already exists\",\r\n passRequired: \"Password is required\",\r\n passMin: \"Password must be at least {min} characters long\",\r\n passMax: \"Password cannot be more than {max} characters long\",\r\n passRules:\r\n \"Passwords must include lowercase letters, uppercase letters, digits, and special characters.\",\r\n passwordExplanation:\r\n \"Your password must be at least 8 characters long. It must include lowercase letters, uppercase letters, digits, and special characters.\",\r\n confirmPass: \"Password confirmation is required\",\r\n passMismatch: \"Passwords do not match\",\r\n tOS: \"Please read and agree to the Terms of Service\",\r\n registerFailed: \"An error occurred\",\r\n validationError: \"The data you provided is incomplete\",\r\n termsAndServices:\r\n \"https://stprezpshareddata.blob.core.windows.net/hosted-files/Nutzungsbedingungen_Prezp_Deutsch_03.03.2021.pdf#toolbar=0\",\r\n yourInfo: \"Your information\",\r\n yourEmail: \"Email\",\r\n yourName: \"Username\",\r\n registerToCompany: \"Register to become part of the company\",\r\n andSeminar: \"and the seminar\",\r\n },\r\n onboardingSection: {\r\n titleFirstPart: \"YOUR COMMUNICATION TRAINING\",\r\n titleSecondPart: \"IN COMMUNICATION\",\r\n bannerContent:\r\n \"Would you like to communicate better,talk more grippingly and sell more successfully? Start now!\",\r\n learnMoreBtn: \"Learn more\",\r\n footerLinkPrivacy: \"Privacy\",\r\n footerLinkLegal: \"Legal\",\r\n footerLinkContact: \"Contact\",\r\n },\r\n loginSection: {\r\n dontHaveAccount: \"Don't have an account yet?\",\r\n register: \"Register\",\r\n signIn: \"Sign In\",\r\n title: \"Sign in to PREZP\",\r\n error: \"An error occurred\",\r\n unconfirmedEmail:\r\n \"Please confirm your email by clicking on the link in your registration mail. Your account is not yet activated.\",\r\n wrongPasswordError:\r\n \"Your user name or your password was not entered correctly!\",\r\n unauthorizedError:\r\n \"Authorization error. Please make sure you are signed in.\",\r\n email: \"E-mail\",\r\n password: \"Password\",\r\n forgotPass: \"Forgot password\",\r\n emailPlaceHolder: \"demo@prezp.com\",\r\n invalidEmail: \"Invalid e-mail\",\r\n emailRequired: \"E-mail is required\",\r\n passRequired: \"Password is required\",\r\n passMin: \"Password must be at least 6-characters long\",\r\n passMax: \"Password cannot be more than 16-characters long\",\r\n },\r\n newUser: {\r\n thanks:\r\n \"Thank you for registering an account on PREZP. Plase confirm your email by clicking on the link in your registration mail to activate your account.\",\r\n welcome: \"Welcome to PREZP\",\r\n },\r\n inactiveProfile: {\r\n notActivated:\r\n \"This profile has not been activated. For more information please contact the administrators of this website.\",\r\n },\r\n forgotPassSection: {\r\n signUp: \"Don’t have an account yet?\",\r\n register: \"Register\",\r\n wantToSignIn: \"Want to sign in?\",\r\n login: \"Login\",\r\n resetPass: \"Reset Password\",\r\n haveAnAccount: \"Have an account?\",\r\n signIn: \"Sign in\",\r\n forgotPass: \"Forgot your password?\",\r\n error: \"An error occurred\",\r\n email: \"E-mail\",\r\n sentEmail: \"An e-mail was sent to\",\r\n followLinkResetPass:\r\n \"Follow the link in the e-mail to reset your password.\",\r\n emailSent: \"E-mail sent!\",\r\n sendReset: \"Send Reset E-mail\",\r\n invalidEmail: \"Invalid e-mail\",\r\n emailRequired: \"An e-mail address is required\",\r\n passRequired: \"Password is required\",\r\n passMinRule: \"Password must be at least 6-characters long\",\r\n passMaxRule: \"Password cannot be more than 16-characters long\",\r\n emailPlaceHolder: \"demo@prezp.com\",\r\n },\r\n confirmEmailSection: {\r\n emailConfirmed: \"E-mail Successfully Confirmed!\",\r\n contWeb: \"Continue to website\",\r\n contApp: \"Continue to app\",\r\n wait: \"Give us a sec...\",\r\n error: \"An error occurred\",\r\n couldNotConfirm: \"E-mail could not be confirmed...\",\r\n backToLogin: \"Back to Login\",\r\n },\r\n registerDeviceSection: {\r\n deviceAuthentication: \"Device Authentication\",\r\n toActivate: \"To activate this VR Device\",\r\n step1: \"1. On your computer or mobile device, go to:\",\r\n step2: \"2. Enter the following code:\",\r\n step3:\r\n \"3. Push continue once you have authenticated on your computer or mobile device:\",\r\n continue: \"Continue\",\r\n wait: \"Give us a sec...\",\r\n error: \"An error occurred\",\r\n couldNotGetCode: \"Code could not be requested...\",\r\n couldNotAuthenticate:\r\n \"Signup error, please check authentication on the 2nd device.\",\r\n backToLogin: \"Back to Login\",\r\n },\r\n confirmDeviceSection: {\r\n deviceConfirmed: \"Device successfully authorized!\",\r\n deviceConnected: \"Your device is now connected.\",\r\n contApp: \"Continue to app\",\r\n deviceActivation: \"Device Activation\",\r\n enterCode: \"Enter the code displayed on your device\",\r\n oneTimeCode: \"One-time code\",\r\n confirmDeviceCode:\r\n \"Please confirm this is the code displayed on your VR Headset:\",\r\n notInitiated:\r\n \"If you did not initiate this action or you do not recognize this device select cancel.\",\r\n continue: \"Continue\",\r\n cancel: \"Cancel\",\r\n confirm: \"Confirm\",\r\n wait: \"Give us a sec...\",\r\n error: \"An error occurred. Device could not be authorized.\",\r\n couldNotConfirm: \"Please check your activation code.\",\r\n backToLogin: \"Back to Login\",\r\n codeRequired: \"Code is required\",\r\n codeMin: \"Code must be at least {min} characters\",\r\n codeMax: \"Code can be a maximum of {max} characters\",\r\n },\r\n audioSection: {\r\n startAnal: \"Start Analysis\",\r\n },\r\n scoreDetailsSection: {\r\n sessionScore: \"Session Score\",\r\n },\r\n sentimentSection: {\r\n breakdown: \"Breakdown by sentence\",\r\n positive: \"Positive\",\r\n negative: \"Negative\",\r\n neutral: \"Neutral\",\r\n noAnalyzedSentence: \"No sentences were analyzed.\",\r\n sentimentRatio: \"Sentiment\",\r\n },\r\n pausesCard: {\r\n pauses: \"Pauses\",\r\n spentSubVerb: \"You spent\",\r\n spentPrep: \"of time in pause.\",\r\n number: \"Pauses Made\",\r\n average: \"Average Pause Time\",\r\n total: \"Total Pause Time\",\r\n timeUnit: \"seconds\",\r\n warning:\r\n \"The duration of a pause is at least 2 seconds. Low volume can be interpreted as a pause.\",\r\n ppm: \"Pauses / Minute\",\r\n ppmCaps: \"PAUSES / MINUTE\",\r\n },\r\n movementRatioCard: {\r\n movementRatio: \"Movement Ratio\",\r\n headMovement: \"Head Movement\",\r\n handMovement: \"Hand Movement\",\r\n noMoveData: \"No movement data found.\",\r\n },\r\n managedUsersCard: {\r\n usersManaged: \"Users you manage\",\r\n noManagedUsers: \"You do not manage any users\",\r\n },\r\n keywordsCard: {\r\n keywords: \"Keywords\",\r\n basedOn: \"Based on AI\",\r\n },\r\n audioCard: {\r\n yourAudio: \"Your audio\",\r\n audioFileInfo:\r\n \"This is the audio file you recorded for this session. Listen back to it and as you scrub through you will see the charts update\",\r\n },\r\n volumeCard: {\r\n voiceVolume: \"Voice Volume\",\r\n avgVoiceVol: \"Average Volume\",\r\n },\r\n pitchCard: {\r\n voicePitch: \"Voice Pitch\",\r\n avgVoicePitch: \"Average Pitch\",\r\n },\r\n sentimentRatioCard: {\r\n sentimentRatio: \"Sentiment\",\r\n },\r\n\r\n appBar: {\r\n notConfirmedEmail: \"You have not confirmed your e-mail. Please do so.\",\r\n sending: \"Sending...\",\r\n sendEmail: \"Send E-mail\",\r\n emailSent: \"E-mail Sent!\",\r\n },\r\n toolbarMenu: {\r\n settings: \"Settings\",\r\n mail: \"Mail\",\r\n refresh: \"Refresh\",\r\n logout: \"Logout\",\r\n },\r\n profileDropdown: {\r\n loading: \"Loading...\",\r\n profile: \"Profile\",\r\n checkoutSettings: \"Check out the settings\",\r\n logout: \"Logout\",\r\n },\r\n groupName: {\r\n newName: \"New Group Name\",\r\n rename: \"Rename\",\r\n nameRule: \"Name must be at least 3-letters long\",\r\n },\r\n groupItem: {\r\n deleteGroup: \"Delete group\",\r\n areYouSure: \"Are you sure you wish to delete \",\r\n deleteInfo: \"This will delete all videos associated with it as well.\",\r\n confirm: \"Confirm\",\r\n cancel: \"Cancel\",\r\n\r\n leave: \"Leave group\",\r\n join: \"Join group\",\r\n groupLeft: \"You have left the group {name}\",\r\n groupJoined: \"You have joined the group {name}\",\r\n confirmLeave: \"Are you sure you wish to leave {name}?\",\r\n confirmJoin: \"Are you sure you wish to join {name}?\",\r\n },\r\n addGroupCard: {\r\n addNewGroup: \"Add A New Group\",\r\n groupName: \"Group Name\",\r\n users: \"Group Users\",\r\n submit: \"Submit\",\r\n addGroup: \"Add Group\",\r\n publicGroup: \"Public Group\",\r\n isVisibleToCompany: \"Company Only\",\r\n },\r\n // Navigation panel\r\n nav: {\r\n dash: \"Dashboard\",\r\n sessions: \"Sessions\",\r\n list: \"Session list\",\r\n submitted: \"Submitted sessions\",\r\n progress: \"Session progress\",\r\n groups: \"Groups\",\r\n news: \"News\",\r\n goals: \"Goals\",\r\n meetings: \"Meetings\",\r\n company: \"Company\",\r\n howto: \"Tutorials\",\r\n presentation: \"Presentation\",\r\n admin: \"Admin panel\",\r\n sessionList: \"Session List\",\r\n sessionProgress: \"Session Progress\",\r\n seminars: \"Seminars\",\r\n seminarsDash: \"Dashboard\",\r\n seminarsProg: \"Progress\",\r\n seminarsAdmin: \"Seminar Admin\",\r\n },\r\n // New stuff\r\n global: {\r\n loading: \"Loading\",\r\n submit: \"Submit\",\r\n empty: \"Empty\",\r\n close: \"Close\",\r\n requiredf: \"Field required\",\r\n cancel: \"Cancel\",\r\n files: \"Attached files\",\r\n confirm: \"Confirm\",\r\n none: \"None\",\r\n back: \"Back\",\r\n done: \"Done\",\r\n save: \"Save changes\",\r\n refresh: \"Refresh\",\r\n reset: \"Reset\",\r\n clear: \"Clear\",\r\n nomatch: \"No items that match your search\",\r\n upload: \"Upload\",\r\n create: \"Create\",\r\n invalidURL: \"Invalid URL\",\r\n err: \"An error occurred\",\r\n retry: \"Try again\",\r\n backToLogin: \"Back to login\",\r\n backToSignUp: \"Back to sign-up\",\r\n contApp: \"Continue to app\",\r\n toApp: \"PREZP App\",\r\n backToDashboard: \"Back to dashboard\",\r\n imprint: \"Imprint\",\r\n dataprotection: \"Privacy Policy\",\r\n dataprotection_link:\r\n \"https://prezpstore.blob.core.windows.net/site-files/EN_Datenschutzerkla%CC%88rung_08.11.2022.pdf?sp=r&st=2022-11-08T11:31:11Z&se=2032-11-08T19:31:11Z&spr=https&sv=2021-06-08&sr=b&sig=FrLKJIaWhi%2BXAI01m%2FvWdxWPfv5T1mxlc4PbNhs19nQ%3D\",\r\n feedback: \"For Feedback and Questions: info@prezp.com\",\r\n nodata: \"No data available\",\r\n remove: \"Delete\",\r\n },\r\n\r\n forms: {\r\n invalidform: \"This form is invalid\",\r\n invalidfield: \"This field is invalid\",\r\n reqfield: \"This field is required\",\r\n audiofile: \"Please provide an audio file\",\r\n videofile: \"Please provide a video file\",\r\n namelen3: \"Name must be at least 3 letters long.\",\r\n file: \"Please provide a file\",\r\n invaliddata: \"Invalid input data\",\r\n errors: \"Cannot continue with errors present\",\r\n missing: \"Some files were missing\",\r\n contact: {\r\n title: \"Contact\",\r\n email: \"Email\",\r\n emailPlaceHolder: \"demo@prezp.com\",\r\n message: \"Message\",\r\n messagePlaceHolder: \"Write a message\",\r\n submit: \"Send Message\",\r\n invalidEmail: \"Invalid e-mail\",\r\n emailRequired: \"E-mail is required\",\r\n messageRequired: \"Message is required\",\r\n success: \"Message was sent successfully\",\r\n fail: \"Message sending failed\",\r\n },\r\n },\r\n\r\n upsess: {\r\n button: \"Upload audio\",\r\n title: \"Upload a new session from an audiofile\",\r\n subtitle: \"Create new session\",\r\n text:\r\n 'Upload a session from an audio file. Uploaded sessions can be viewed in the \"Sessions\" page. Analysis starts right after you upload. Click refresh once in a while to check if your session\\'s analysis is complete.',\r\n go: \"Create now\",\r\n hint:\r\n \"We support the most common audio-file formats such as mp3, wav, ogg, m4a(*) and mpeg(*)\",\r\n smallprint:\r\n \"*in some rare cases the transcription for .m4a or .mpeg files cannot be created\",\r\n\r\n select: \"Select presentation\",\r\n rec: \"Record session\",\r\n vrrec: \"VR Recording\",\r\n rectip: \"Record a new session directly\",\r\n rectext: \"Record a new session, with or without a presentation\",\r\n rejected_file:\r\n \"This file format is not supported. only the following audio formats are allowed: mp3, wav, ogg, m4a, mpeg\",\r\n errorHeading: \"Error\",\r\n videoTooBig:\r\n \"Your video is too large (> 400 MB). Please reduce the resolution or keep your presentation shorter.\",\r\n videoTooBigDownloadHint:\r\n \"Hint: You may download the video using the three dots on the lower right corner in the video recorder to reduce the resolution.\",\r\n uploading: \"Uploading audio ...\",\r\n uploadComplete: \"Audio upload completed\",\r\n },\r\n\r\n upsessv: {\r\n button: \"Upload video\",\r\n title: \"Upload a new session from a videofile\",\r\n text:\r\n \"Upload a session from a video file. Analysis results will be displayed in the list of sessions. Analysis starts Analysis starts right after the upload completes.\",\r\n hint: \"We support only the mp4-videofile format\",\r\n smallprint: \"* In some cases we cannot process an uploaded video file\",\r\n rejected_file:\r\n \"Unsupported file type. Only the mp4 video format is allowed.\",\r\n noText: \"No spoken text could be recognized.\",\r\n uploading: \"Uploading video ...\",\r\n uploadComplete: \"Video upload completed\",\r\n },\r\n\r\n transcription: {\r\n start: \"Start\",\r\n stop: \"Stop\",\r\n uploadRec: \"Upload recording\",\r\n nextSlide: \"Next slide\",\r\n resume: \"Resume\",\r\n pause: \"Pause\",\r\n audioOnly: \"Audio Only\",\r\n video: \"Video\",\r\n total: \"Total\",\r\n duration: \"Duration: \",\r\n wpm: \"Words per minute: \",\r\n occurrences: \"Word occurrences: \",\r\n slides: \"Slides\",\r\n slide: \"Slide\",\r\n wpmLower: \" words per minute\",\r\n transAudio: \"Transcribed audio\",\r\n awaitingText: \"Waiting for text recognition...\",\r\n },\r\n\r\n quota: {\r\n title: \"PREZP Quota\",\r\n fast: \"Fast processing\",\r\n relaxed: \"Relaxed processing\",\r\n upgrade: \"Upgrade\",\r\n unlimited: \"Unlimited\",\r\n\r\n tip: {\r\n liveTranscription:\r\n \"Your remaining quota for Live Transcriptions (in seconds)\",\r\n analysis: \"Your remaining quota for Session Analysis\",\r\n aiFeedback: \"Your remaining quota for AI-Feedbacks\",\r\n exceeded:\r\n \"Your quota has been exceeded. You can upgrade your plan \\n or wait until the end of the next reset period.\",\r\n },\r\n },\r\n\r\n recording: {\r\n maxTimeWarning: {\r\n heading: \"Recording Limit\",\r\n maxAllowedTime: \"{minutes} minutes\",\r\n maxAllowedHint:\r\n \"TED Style Talks: The maximum duration for session recording is {0}. For an optimal presentation, we recommend a target time of {1}.\",\r\n confirm: \"Lets Go\",\r\n cancel: \"Not ready\",\r\n dontAskAgain: \"Do not show again\",\r\n },\r\n shortRecordWarning: {\r\n heading: \"Short Recording\",\r\n recordingTime: \"{seconds} seconds\",\r\n quotaLeftBoth:\r\n \"Your analysis quotas - Fast: {fastQuota}, Relaxed: {relaxedQuota}\",\r\n recordingTimeHint:\r\n \"The recording lasts only {0}. If you have this recording analyzed, it will decrease your analysis quota by 1.\\n{1}\\nAre you sure?\",\r\n confirm: \"Yes, Upload\",\r\n cancel: \"Cancel\",\r\n },\r\n noCompatibleDevice: \"No compatible devices found.\",\r\n noDevicePermission:\r\n \"Camera and microphone permissions are required for recording.\",\r\n noMicrophonePermission:\r\n \"Microphone permissions are required for recording.\",\r\n },\r\n\r\n alerts: {\r\n beforeLeaveRecording:\r\n \"Do you really want to leave? The recording will be canceled!\",\r\n beforeLeaveUpload:\r\n \"Do you really want to leave? The upload will be canceled!\",\r\n },\r\n\r\n groups: {\r\n groups: \"Groups\",\r\n public: \"Public Groups\",\r\n company: \"Company Groups\",\r\n all: \"All groups\",\r\n none: \"You are not part of any group yet\",\r\n hint: \"Separate e-mails with comma (,) or by pressing tab or enter\",\r\n created: \"Created at\",\r\n delete: \"Delete group\",\r\n you: \"(you)\",\r\n\r\n creator: \"Group creator\",\r\n joined: \"Joined\",\r\n removeu: \"Remove user\",\r\n confrem: \"Are you sure you wish to remove {u} from the group?\",\r\n remself: \"yourself\",\r\n\r\n videos: \"Latest videos\",\r\n addv: \"Add video\",\r\n addnv: \"Add new video\",\r\n vidtitlehint: \"If the title is empty, it will be set automatically\",\r\n vidtitlelabel: \"Video title\",\r\n viddesc: \"Video description\",\r\n vidpinlabel: \"Pin this video?\",\r\n vidpinhint: \"The pinned video will appear first\",\r\n link: \"Link\",\r\n vidlinklabel: \"Video link\",\r\n file: \"File\",\r\n novideos: \"No videos found\",\r\n delv: \"Delete video\",\r\n editv: \"Edit video\",\r\n original_title: \"Original title\",\r\n author: \"Author\",\r\n uploaded_by: \"Uploaded by\",\r\n\r\n posts: \"Latest posts\",\r\n addp: \"Add post\",\r\n addnp: \"Create new post\",\r\n posttitle: \"Post title*\",\r\n postbody: \"Post body*\",\r\n postpin: \"Pin this post?\",\r\n bannerlabel: \"Upload banner image?\",\r\n bannerfile: \"Banner image\",\r\n sendEmail: \"Send this post as email?\",\r\n includeInvited:\r\n \"Email users, which have not yet accepted their invitation?\",\r\n files: \"Other files\",\r\n noposts: \"No posts found\",\r\n delpost: \"Delete post\",\r\n editpost: \"Edit post\",\r\n\r\n users: \"Group members\",\r\n addu: \"Add member\",\r\n addnu: \"Add member to group\",\r\n adddexcel: \"Add member from excel worksheet\",\r\n upload: \"Upload\",\r\n missingexcel: \"No excel to upload\",\r\n uemail: \"User e-mail\",\r\n makeman: \"Make manager\",\r\n remman: \"Remove as manager\",\r\n nousers: \"No user e-mails that include {term}\",\r\n\r\n inv: {\r\n title: \"Your invitations\",\r\n message: \"{inviter} invited you to group {group}\",\r\n accept: \"Accept\",\r\n decline: \"Decline\",\r\n accepted: \"You were added to the group {group}\",\r\n declined: \"Invitation from {inviter} declined\",\r\n sent: \"Sent invitations\",\r\n nonesent: \"No invitations sent\",\r\n },\r\n },\r\n\r\n inv: {\r\n title: \"Your invitations\",\r\n message: \"{inviter} invited you to group {group}\",\r\n accept: \"Accept\",\r\n decline: \"Decline\",\r\n accepted: \"You were added to the group {group}\",\r\n declined: \"Invitation from {inviter} declined\",\r\n sent: \"Sent invitations\",\r\n nonesent: \"No invitations sent\",\r\n asmanager: \"Invited as manager\",\r\n asemployee: \"Invited as employee\",\r\n },\r\n\r\n videos: {\r\n videos: \"Videos\",\r\n none: \"No videos in that group\",\r\n edit: \"Edit video\",\r\n delete: \"Delete video\",\r\n desc: \"Video description\",\r\n title: \"Video title\",\r\n ispinned: \"Is pinned?\",\r\n },\r\n\r\n howtos: {\r\n title: \"Tutorials\",\r\n loading: \"Tutorials loading\",\r\n none: \"No tutorials available\",\r\n },\r\n\r\n goals: {\r\n goals: \"Your goals\",\r\n none: \"You have no goals\",\r\n\r\n assigned: \"Assigned goals\",\r\n tassigned: \"All goals that were assigned to you\",\r\n noassigned: \"No assigned goals\",\r\n assigner: \"From\",\r\n\r\n created: \"Created goals\",\r\n tcreated: \"All goals that were created by you\",\r\n nocreated: \"No created goals\",\r\n\r\n add: \"Add goal\",\r\n complete: \"Complete {n} sessions\",\r\n aim: \"Aim for\",\r\n addc: \"Add condition\",\r\n assign: \"Assign to user\",\r\n assignedu: \"Assigned users\",\r\n assigny: \"Assign yourself?\",\r\n submit: \"Submit goal\",\r\n remove: \"Remove goal\",\r\n select: \"Select all\",\r\n deselect: \"Deselect all\",\r\n cond: \"Condition\",\r\n conds: \"Goal conditions\",\r\n ctype: \"Condition type\",\r\n\r\n score: \"Target score\",\r\n due: \"Due date\",\r\n duration: \"Target duration\",\r\n sentiment: \"Target sentiment\",\r\n pitch: \"Target pitch\",\r\n volume: \"Target volume\",\r\n pauses: \"Target pauses\",\r\n wpm: \"Target speech speed\",\r\n overdue: \"Overdue\",\r\n filler: \"Target filler words score\",\r\n clarity: \"Target speech clarity score\",\r\n repetition: \"Target repetitions score\",\r\n overall: \"Target overall score\",\r\n\r\n condtype: {\r\n date: \"Due Date\",\r\n duration: \"Duration (In seconds)\",\r\n sentiment: \"Sentiment\",\r\n pitch: \"Average Pitch\",\r\n vol: \"Average Volume\",\r\n ppm: \"Pauses per Minute\",\r\n wpm: \"Speech Speed\",\r\n filler: \"Filler words\",\r\n clarity: \"Speech clarity\",\r\n repetition: \"Repetitions\",\r\n overall: \"Overall score\",\r\n },\r\n\r\n condmsg: {\r\n overdue: \"Overdue\",\r\n duein: \"Due\",\r\n duration: \"Record a session with a length between {n1} and {n2} seconds\",\r\n session_score: \"Only sessions with score greater than {n} count\",\r\n sentiment: \"Aim for a sentiment score between {n1}% and {n2}%\",\r\n pitch: \"Aim for an average voice pitch between {n1}Hz and {n2}Hz\",\r\n volume: \"Aim for an average volume between {n1}% and {n2}%\",\r\n pauses: \"Aim to make anywhere between {n1} and {n2} pauses per minute\",\r\n speech_speed: \"Aim for {n1} to {n2} words per minute\",\r\n filler_words:\r\n \"Aim for a score of {n} or higher in the 'Filler Words' category.\",\r\n speech_clarity:\r\n \"Aim for a score of {n} or higher in the 'Speech Clarity' category.\",\r\n overall_score:\r\n \"Aim for a score of {n} or higher in the 'Overall' category.\",\r\n repetition:\r\n \"Aim for a score of {n} or higher in the 'Repetition' category.\",\r\n },\r\n\r\n confirm: \"Are you sure?\",\r\n confirmmsg:\r\n \"Are you sure you wish to delete this goal? The action is irreversible.\",\r\n },\r\n\r\n news: {\r\n news: \"News\",\r\n read: \"Read Article\",\r\n all: \"Read all\",\r\n posted: \"Posted on\",\r\n },\r\n\r\n meet: {\r\n created: \"Created by:\",\r\n expired: \"This meeting has expired\",\r\n add: \"Add meeting\",\r\n },\r\n\r\n pres: {\r\n pres: \"Presentations\",\r\n none: \"You have no presentations\",\r\n dl: \"Download\",\r\n ed: \"Edit\",\r\n rm: \"Remove\",\r\n edit: \"Edit Presentation\",\r\n no_slides:\r\n \"If you're not seeing images, then the presentation could not be converted\",\r\n tip: \"Upload your presentations (.pdf) here to use on your VR Headset\",\r\n },\r\n\r\n rec: {\r\n tiptitle: \"How to use the built-in recorder\",\r\n tiptext:\r\n \"You can test your microphone volume to determine if it is within the best range for audio analysis.\",\r\n hide: \"Don't show this tip again.\",\r\n voll: \"Too quiet\",\r\n volgood: \"Good\",\r\n volh: \"Too loud\",\r\n latest: \"Latest recordings\",\r\n save: \"Save recording as\",\r\n sess: \"New session\",\r\n base: \"Add as baseline\",\r\n succ: \"Session Created Successfully\",\r\n fromVideo: \"Session from Video created successfully\",\r\n fail: \"Could not create session\",\r\n remove: \"Remove recording\",\r\n removetext: \"Are you sure you wish to remove the following recording?\",\r\n mic: \"Adjust mute gain\",\r\n mute: \"Mute/unmute\",\r\n devices: \"Devices\",\r\n microphones: \"Microphones\",\r\n cameras: \"Camera\",\r\n prefix: \"Recorded on\",\r\n },\r\n\r\n meta: {\r\n dev: \"Deviation\",\r\n earlier: \"Earlier sessions average\",\r\n recent: \"Recent sessions average\",\r\n names: {\r\n pitch: \"Pitch\",\r\n volume: \"Volume\",\r\n pauses: \"Pauses\",\r\n sentiment: \"Sentiment\",\r\n session_score: \"Session score\",\r\n speech_speed: \"Speech speed\",\r\n },\r\n units: {\r\n pitch: \"Hz\",\r\n volume: \"%\",\r\n pauses: \"pauses/minute\",\r\n },\r\n },\r\n\r\n slides: {\r\n slides: \"Slides\",\r\n tip: \"Slides from presentation\",\r\n pitch: \"Average pitch\",\r\n volume: \"Average volume\",\r\n wpm: \"Words/Minute\",\r\n start: \"Start time\",\r\n end: \"End time\",\r\n duration: \"Duration\",\r\n\r\n notfound: \"No slide that matches the current time\",\r\n none: \"There are no slides for this session\",\r\n },\r\n\r\n lookup: {\r\n title: \"Look Up Words\",\r\n enter: \"Enter text to filter by\",\r\n exact: \"Exact match\",\r\n show: \"Show all\",\r\n hide: \"Show less\",\r\n start: \"start typing...\",\r\n filter: \"Filter by\",\r\n missing: \"Not enough data to show lookup words\",\r\n },\r\n\r\n cards: {\r\n avg: \"Average\",\r\n pvolume: \"Personal volume\",\r\n ppitch: \"Personal pitch\",\r\n wpm: \"Words/Minute\",\r\n keywords: \"Keywords (Based on AI)\",\r\n },\r\n\r\n bench: {\r\n choose: \"Choose benchmark\",\r\n change: \"Change benchmark\",\r\n title: \"Benchmark session\",\r\n text:\r\n \"Choose a benchmark session to be displayed on the same graphs. You can use to benchmark session to compare your performance to it.\",\r\n },\r\n\r\n sentences: {\r\n filter: \"Sentence filter\",\r\n none: \"No sentences found\",\r\n pos: \"Positive\",\r\n neu: \"Neutral\",\r\n neg: \"Negative\",\r\n nochart: \"No sentiment data found\",\r\n filters: {\r\n none: \"None\",\r\n vpos: \"Very positive\",\r\n vneg: \"Very negative\",\r\n },\r\n },\r\n\r\n subscription: {\r\n title: \"Subscriptions\",\r\n menutitle: \"Your subscriptions\",\r\n activesub: \"Active subscription\",\r\n noactivesub: \"No subscription\",\r\n plans: \"Select plan\",\r\n priceInterval: \"Price / interval\",\r\n nextPayment: \"Next payment due on\",\r\n subscriptionEnds: \"Subscription ends on\",\r\n lastPayment: \"Last payment\",\r\n paymentMethod: \"Payment method\",\r\n subscriberSince: \"Subscriber since\",\r\n canceledOn: \"Canceled on\",\r\n\r\n latestInvoice: \"Latest invoice\",\r\n viewAll: \"View All\",\r\n invoiceNr: \"Invoice#\",\r\n status: \"Status\",\r\n downloadInvoice: \"Download Invoice\",\r\n\r\n active: \"Active\",\r\n paid: \"Paid\",\r\n\r\n monthly: \"monthly\",\r\n yearly: \"annually\",\r\n monthlyPayment: \"Monthly payment\",\r\n yearlyPayment: \"Annual payment\",\r\n month: \"month\",\r\n year: \"year\",\r\n perMonth: \"per month\",\r\n perYear: \"per year\",\r\n desctitle: \"Description\",\r\n payment: \"payment\",\r\n\r\n paymentTo: \"Payment to\",\r\n selectedPlan: \"Selected plan\",\r\n subFor: \"Subscription for\",\r\n billing: \"Billing details\",\r\n checkout: \"Checkout\",\r\n\r\n buyAsCompany: \"Purchase as a company\",\r\n vatData: \"VAT data\",\r\n enterCompanyName: \"Company Name\",\r\n companyNameRequired: \"Your company name is required.\",\r\n companyNameMin: \"Your company name is too short.\",\r\n enterVatId: \"VAT-ID\",\r\n vatIdRequired: \"Your VAT ID is required.\",\r\n vatIdInvalid: \"Your VAT ID is invalid.\",\r\n confirmVatId: \"Confirm VAT ID\",\r\n couldNotValidate: \"Could not validate VAT ID number.\",\r\n vatIdConfirmed: \"VAT ID successfully confirmed.\",\r\n vatIdValidated: \"Your VAT ID has been validated.\",\r\n vatServiceDown:\r\n \"The VAT ID validation service is currently unavailable. Please try again later.\",\r\n vatServiceOverload:\r\n \"The VAT ID validation service is currently overloaded. Please try again later.\",\r\n companyIncomplete: \"The company details are incomplete.\",\r\n reverseCharge:\r\n \"Reverse charge: Tax liability lies with the recipient of the service.\",\r\n\r\n product: \"Product\",\r\n cycle: \"Cycle\",\r\n duration: \"Duration\",\r\n price: \"Price\",\r\n netTotal: \"Net Total\",\r\n vat: \"VAT\",\r\n total: \"Total\",\r\n coupon: \"Coupon\",\r\n redeem: \"Redeem\",\r\n enterCode: \"Coupon Code\",\r\n redeemed: \"redeemed\",\r\n remove: \"Remove\",\r\n discountMonths:\r\n \"* Coupon applies for the first {d} months, the standard price of the selected plan then applies.\",\r\n discountForever: \"* Coupon applies until the subscription is canceled.\",\r\n forever: \"forever\",\r\n legalNotice:\r\n \"By confirming your subscription, you permit 111 Medien Service GmbH to charge future payments to your payment instrument in accordance with the terms and conditions. You can cancel your subscription at any time.\",\r\n\r\n cancel: \"Cancel\",\r\n back: \"Back\",\r\n next: \"Next Step\",\r\n purchaseSubscription: \"Purchase Subscription\",\r\n\r\n pricing: {\r\n title: \"Choose your PREZP plan\",\r\n description:\r\n \"PREZP offers a wide range of different pricing plans to perfectly suite your needs. For individuals and at enterprise scale.\",\r\n fetching: \"Fetching Prices...\",\r\n orContinueFree:\r\n \"Or continue with the free version to explore PREZP with limitations.\",\r\n continueFree: \"Continue with PREZP free\",\r\n compare: \"Compare pricing plans\",\r\n },\r\n\r\n cancelSubscription: \"Cancel subscription\",\r\n deleteSubscription: \"Delete subscription\",\r\n areYouSure: \"Are you sure you want to cancel your subscription?\",\r\n canceled: \"Subscription Canceled\",\r\n youCanceled:\r\n \"You have canceled your subscription. You will continue to have all the benefits of your remaining quota until your subscription is permanently deleted.\",\r\n toSubscribeAgain:\r\n \"To resubscribe to PREZP you must wait until the end of the current payment cycle.\",\r\n },\r\n\r\n checkout: {\r\n success: {\r\n statement: \"Thank You\",\r\n message: \"Your PREZP plan order was completed successfully\",\r\n contact:\r\n \"An e-mail including the details about your order \\n\" +\r\n \"has been sent to the e-mail address provided.\",\r\n action: \"Start\",\r\n updating: \"User data is being updated...\",\r\n },\r\n error: {\r\n statement: \"Payment Error\",\r\n message:\r\n \"We are sorry. Your payment could not be processed. \\n\" +\r\n \"Please try again.\",\r\n contact: \"If this problem persists, please contact our Support Team.\",\r\n action: \"Go Back\",\r\n },\r\n pending: {\r\n statement: \"Payment Pending\",\r\n message:\r\n \"Your payment is still processing or requires additional confirmation. \\n\" +\r\n \"Please check your inbox for further instructions.\",\r\n contact:\r\n \"If the payment can't be completed, please contact our Support Team.\",\r\n action: \"Go Back\",\r\n },\r\n },\r\n\r\n tier: {\r\n billedMonthly: \"Billed monthly\",\r\n billedYearly: \"Billed annually\",\r\n billedCustom: \"Depending on your needs\",\r\n individual: \"Individual\",\r\n savePercentYearly: \"Save {percent}% with annual billing\",\r\n saveAmountYearly: \"Save {currency} {amount} with annual billing\",\r\n subscribe: \"Subscribe\",\r\n contactSales: \"Contact Sales\",\r\n\r\n badge: {\r\n explore: \"To explore PREZP\", // free\r\n casual: \"For casual training\", // basic\r\n recommended: \"Recommended for most users\", // standard / basic(mvp)\r\n business: \"For business training\", // premium\r\n },\r\n },\r\n\r\n features: {\r\n // single features - keep in sync with permission scope naming\r\n relaxed_live_transcription:\r\n \"Relaxed Live-Transcriptions ({hours}h / month)\",\r\n fast_live_transcription: \"Fast Live-Transcriptions ({hours}h / month)\",\r\n\r\n relaxed_analysis: \"{count} Relaxed Scored Analyzes\",\r\n fast_analysis: \"{count} Fast Scored Analyzes\",\r\n\r\n relaxed_ai_feedback: \"{count} Relaxed AI Feedbacks\",\r\n fast_ai_feedback: \"{count} Fast AI Feedbacks\",\r\n\r\n limited_public_group: \"Limited Access to Public Groups\",\r\n full_public_group: \"Access to Public Groups\",\r\n b2b_group: \"Access to B2B Groups\",\r\n\r\n basic_tutorial: \"Basic Tutorials\",\r\n advanced_tutorial: \"Advanced Tutorials\",\r\n expert_tutorial: \"Expert Tutorials\",\r\n\r\n coach_review_booking: \"Human-Coach™ Review Bookings\",\r\n coach_1on1_booking: \"Human-Coach™ 1-on-1 Bookings\",\r\n\r\n seminar: \"Access to Seminars\",\r\n challenge: \"Access to Challenges\",\r\n course: \"Access to Courses\",\r\n vr_mode: \"PREZP VR Access\",\r\n sso: \"Single Sign On\",\r\n custom_idp: \"Custom IDP Integration\",\r\n external_api: \"External API Integration\",\r\n onboarding: \"On-Boarding & Training\",\r\n tech_support: \"Dedicated Tech Support\",\r\n dev_support: \"Dedicated Developer Support\",\r\n sla: \"SLA + With 99% Uptime\",\r\n redundant_service: \"Redundant Services\",\r\n\r\n // feature combos - just used for compact lists\r\n everything_basic: \"Includes everything from Basic Plan\",\r\n everything_premium: \"Includes everything from Premium Plan\",\r\n\r\n unlimited_relaxed_hours_and_workers: \"Unlimited Relaxed Hours & AI Workers\",\r\n unlimited_fast_hours_and_workers: \"Unlimited Fast Hours & AI Workers\",\r\n\r\n basic_tutorial_and_challenge: \"Basic Tutorials & Challenges\",\r\n advanced_tutorial_and_challenge: \"Advanced Tutorials & Challenges\",\r\n expert_tutorial_challenge_and_course:\r\n \"Expert Tutorials, Challenges and Courses\",\r\n\r\n seminar_and_public_group: \"Access to Seminars & Public Groups\",\r\n seminar_public_and_b2b_group: \"Access to Seminars, Public & B2B Groups\",\r\n\r\n sso_and_custom_idp: \"SSO & Custom IDP Integration\",\r\n dev_tech_support: \"Dedicated Tech Support\",\r\n\r\n sla_and_redundant_service: \"SLA + Redundant Services\",\r\n },\r\n\r\n company: {\r\n title: \"Company\",\r\n partof: \"You are part of a company\",\r\n notpartof: \"You are not part of a company\",\r\n create: \"Feel free to create a company\",\r\n createbtn: \"Create company\",\r\n invitations:\r\n \"Or, you may accept any of the following invitations you have received to join an existing company\",\r\n noinv: \"No invitations\",\r\n\r\n companies: \"Companies\",\r\n getting: \"Getting companies...\",\r\n notfound: \"No companies found\",\r\n\r\n none: \"You do not have a company\",\r\n inactive: \"This company has not been activated\",\r\n pdesc: \"Click here to select a plan for purchasing a subscription\",\r\n\r\n plans: \"Plans\",\r\n changep: \"Change plan\",\r\n selectp: \"Select new plan\",\r\n same: \"Select a different plan\",\r\n\r\n emp: \"Employees\",\r\n esingle: \"Employee\",\r\n invite: \"Invite user(s)\",\r\n adde: \"Add employee\",\r\n eemail: \"User e-mail\",\r\n makeman: \"Make manager?\",\r\n rem: \"Remove\",\r\n sure: \"Are you sure you wish to remove this employee?\",\r\n crole: \"Change role\",\r\n crolefor: \"Change role for\",\r\n noemp: \"No company employees yet\",\r\n\r\n edit: \"Edit company name\",\r\n name: \"Company name\",\r\n },\r\n\r\n charts: {\r\n avghand: \"Average hand movement\",\r\n avghead: \"Average head movement\",\r\n ppm: \"Pauses/minute\",\r\n sent: \"Sentiment\",\r\n pitchot: \"Pitch over time\",\r\n scoreot: \"Score over time\",\r\n avgvp: \"Average voice pitch\",\r\n avgvol: \"Average voice volume\",\r\n avgwpm: \"Average words/minute\",\r\n sscore: \"Session score\",\r\n points: \"Show {n} points\",\r\n all: \"all\",\r\n },\r\n\r\n sess: {\r\n noneselected: \"No session selected\",\r\n shared: \"Shared with {n} users\",\r\n sharedWithOne: \"Shared with {n} user\",\r\n sharedWith: \"Shared with \",\r\n sharedWithNone: \"Shared with no one\",\r\n noOneToShareWith:\r\n \"You can share your sessions only with users in one of your groups.\",\r\n private: \"Private\",\r\n duration: \"Duration\",\r\n none: \"No sessions found\",\r\n noneseelcted: \"No session selected\",\r\n edit: \"Edit session\",\r\n name: \"Session name\",\r\n vis: \"Visibility\",\r\n updated: \"Session updated\",\r\n filter: \"Filter sessions\",\r\n keywords: \"Keywords\",\r\n\r\n sharing: \"See shared Sessions\",\r\n usersSharing: \"Users that are sharing sessions with you\",\r\n usersManaged: \"Users you're managing\",\r\n otherUsers: \"Other users from groups\",\r\n changeuser: \"Change user\",\r\n nouser: \"No user selected\",\r\n sharedback: \"Back to shared sessions\",\r\n\r\n list: \"List\",\r\n progress: \"Progress\",\r\n progresslimit: \"Choose number of sessions to show\",\r\n\r\n filters: {\r\n date: {\r\n before: \"Before date\",\r\n after: \"After date\",\r\n between: \"Between two dates\",\r\n },\r\n duration: {\r\n longer: \"Longer than (minutes)\",\r\n shorter: \"Shorter than (minutes)\",\r\n between: \"Time span (minutes)\",\r\n },\r\n name: {\r\n startsWith: \"Starts with\",\r\n endsWith: \"Ends with\",\r\n includes: \"Includes\",\r\n exact: \"Exact match\",\r\n },\r\n score: {\r\n greater: \"Greater than\",\r\n less: \"Less than\",\r\n range: \"Score range\",\r\n },\r\n pres: {\r\n title: \"Filter by presentation\",\r\n label: \"Select presentation\",\r\n },\r\n },\r\n\r\n hanging: {\r\n title: \"Other users\",\r\n text:\r\n \"You're still sharing this session with some users, with whom you are no longer in any group.\",\r\n removeOneDialogTitle:\r\n \"Are you sure you with to stop sharing this session with {u}\",\r\n removeOneDialogText:\r\n \"This action is irreversible. You'll need to be in at least one group with {u} to be able to share a session with them again later.\",\r\n removeAllButton: \"Remove all such users\",\r\n removeAllDialogTitle: \"Are you sure you want to remove all such users?\",\r\n removeAllDialogText:\r\n \"This action is irreversible. You'll need to be in at least one group with each of these users to be able to share a session with them again later\",\r\n snack: {\r\n removeAll: \"Success. Users removed\",\r\n removeSome:\r\n \"Not all users were removed. Users {e-mails} could not be removed\",\r\n removeFail: \"Could not stop sharing session with one or more users\",\r\n },\r\n },\r\n\r\n clear: {\r\n title: \"Remove all users\",\r\n text: `You'll still have to confirm your action by clicking the \"Confirm\" button`,\r\n },\r\n },\r\n\r\n words: {\r\n word: \"word\",\r\n filler: \"Filler word\",\r\n stop: \"Stop word\",\r\n normal: \"Default word\",\r\n },\r\n\r\n admin: {\r\n activeProduct: \"Active product\",\r\n companies: \"Companies\",\r\n coupons: \"Stripe coupons\",\r\n createNewProduct: \"Create new product\",\r\n createProduct: \"Create product\",\r\n maximumAllowedEmployees: \"Maximum allowed employees\",\r\n page: \"Admin page\",\r\n productDescription: \"Product description\",\r\n productName: \"Product name\",\r\n productPrice: \"Product price (in Euro)\",\r\n products: \"Stripe products\",\r\n recorder: \"Dev-Recorder\",\r\n slides: \"Presentation slides\",\r\n tuts: \"Tutorials\",\r\n transcription: \"Transcription\",\r\n uploadTooltip: \"Upload excel file with users\",\r\n users: \"Users\",\r\n usersPageHeader: \"Users\",\r\n verifyEmail: \"Verify this user's e-mail\",\r\n },\r\n\r\n permissions: {\r\n editTitle: \"Manage permissions\",\r\n editText: \"Add, remove or extend permissions for\",\r\n removeTitle: \"Are you sure?\",\r\n removeText:\r\n \"You can choose to add the same permission type at a later date.\",\r\n modifyTitle: \"Update counter\",\r\n add: \"Add\",\r\n confirm: \"Confirm\",\r\n inherit: \"Inherit from\",\r\n counter: \"Remaining number\",\r\n seconds: \"Remaining seconds\",\r\n\r\n seminar: \"Seminars\",\r\n upload_audio: \"Upload audio\",\r\n upload_video: \"Upload video\",\r\n session_training: \"Session Training\",\r\n can_share_with_all: \"Can share sessions with all users\",\r\n teacher: \"Lecturer Access\",\r\n student: \"Student Access\",\r\n live_transcription_relaxed: \"Relaxed live transcription\",\r\n live_transcription_fast: \"Fast live transcription\",\r\n analysis_relaxed: \"Relaxed analysis\",\r\n analysis_fast: \"Fast analysis\",\r\n ai_feedback_relaxed: \"Relaxed AI feedback\",\r\n ai_feedback_fast: \"Fast AI feedback\",\r\n public_group_limited: \"Limited public group\",\r\n public_group_full: \"Full public group\",\r\n b2b_group: \"B2B group\",\r\n tutorial_basic: \"Basic tutorial\",\r\n tutorial_advanced: \"Advanced tutorial\",\r\n tutorial_expert: \"Expert tutorial\",\r\n coach_booking_review: \"Coach review booking\",\r\n coach_booking_1on1: \"Coach 1-on-1 booking\",\r\n challenge: \"Challenges\",\r\n course: \"Courses\",\r\n vr_mode: \"VR mode\",\r\n sso: \"Single Sign-On (SSO)\",\r\n custom_idp: \"Custom Identity Provider (IDP)\",\r\n external_api: \"External API\",\r\n onboarding: \"Onboarding\",\r\n support_tech: \"Tech support\",\r\n support_dev: \"Dev support\",\r\n sla: \"Service Level Agreement (SLA)\",\r\n redundant_service: \"Redundant service\",\r\n },\r\n\r\n roles: {\r\n editTitle: \"Manage roles\",\r\n editText: \"Add or remove roles for user\",\r\n removeTitle: \"Are you sure?\",\r\n removeText: \"You can choose to add the same role at a later date.\",\r\n modifyTitle: \"Change date\",\r\n add: \"Add\",\r\n confirm: \"Confirm\",\r\n\r\n subscriberFree: \"Subscriber Free\",\r\n subscriberBasic: \"Subscriber Basic\",\r\n subscriberStandard: \"Subscriber Standard\",\r\n subscriberPremium: \"Subscriber Premium\",\r\n subscriberEnterprise: \"Subscriber Enterprise\",\r\n employee: \"Employee\",\r\n manager: \"Manager\",\r\n owner: \"Owner\",\r\n admin: \"Admin\",\r\n user: \"User\",\r\n },\r\n\r\n feature_perms: {\r\n editTitle: \"Manage permissions\",\r\n editText: \"Add, remove or extend permissions for\",\r\n removeTitle: \"Are you sure?\",\r\n removeText:\r\n \"You can choose to add the same permission type at a later date.\",\r\n modifyTitle: \"Change date\",\r\n add: \"Add\",\r\n confirm: \"Confirm\",\r\n analysis_relaxed_count: \"Relaxed analysis count\",\r\n analysis_fast_count: \"Fast analysis count\",\r\n ai_feedback_relaxed_count: \"Relaxed AI feedback count\",\r\n ai_feedback_fast_count: \"Fast AI feedback count\",\r\n live_transcription_relaxed_seconds: \"Relaxed live transcription seconds\",\r\n live_transcription_fast_seconds: \"Fast live transcription seconds\",\r\n },\r\n\r\n activeUser: {\r\n search: \"Search users\",\r\n none: \"No users found\",\r\n indef: \"Indefinite\",\r\n mins: \" minutes\",\r\n hours: \" hour(s)\",\r\n days: \" day(s)\",\r\n months: \" month(s)\",\r\n both: \"Active/Deactivated\",\r\n active: \"Active\",\r\n inactive: \"Deactivated\",\r\n activate: \"Activate\",\r\n deactivate: \"Deactivate\",\r\n change: \"Change active status for user \",\r\n until: \"until\",\r\n confirm: \"Are you sure you want to deactivate this user?\",\r\n activateMsg:\r\n \"You are about to activate this user. Please select how long this user will remain active.\",\r\n },\r\n\r\n def_pres: {\r\n title: \"Default presentation slides\",\r\n current: \"Currently uploaded slides\",\r\n currentmsg:\r\n \"These are the slides every new user gets when they register for PREZP\",\r\n none: \"No default presentation has been set\",\r\n upload: \"Upload new presentation\",\r\n uploadBtn: \"Upload\",\r\n remove: \"Delete default presentation\",\r\n removeBtn: \"Remove presentation\",\r\n confirm: \"Are you sure you wish to remove the default slides?\",\r\n no_slides: \"This presentation could not be converted or is empty\",\r\n },\r\n\r\n snack: {\r\n users: {\r\n rupdated: \"User role updated\",\r\n rem: \"User removed\",\r\n emails: \"One or more e-mails were invalid\",\r\n alreadyin: \"One or more users are already in the group\",\r\n },\r\n comp: {\r\n created: \"Company successfully created\",\r\n createfail: \"Could not create company\",\r\n invited: \"User successfully invited\",\r\n rupdated: \"User role updated\",\r\n upsuccess: \"Upgrading successful\",\r\n upfail: \"Upgrading did not succeed\",\r\n empmax: \"Employees exceeds max number\",\r\n rejected: \"Following users couldn't be added: \",\r\n success: \"Invitation successfully sent\",\r\n conflict: \"One or more users are already in a company\",\r\n },\r\n groups: {\r\n unadded: \"These users could not be added: \",\r\n del: \"Group deleted successfully\",\r\n added: \"Group added successfully\",\r\n\r\n ingroup: \"User already in group\",\r\n allin: \"All users already in group\",\r\n somein: \"Some users are already in this group: \",\r\n },\r\n news: {\r\n added: \"Article successfully deleted\",\r\n },\r\n pres: {\r\n del: \"Successfully deleted presentation\",\r\n cannotDelete:\r\n \"You cannot delete this presentation, you already recorded a session from it.\",\r\n },\r\n sess: {\r\n delsuccess: \"Successfully deleted session\",\r\n delfail: \"Could not delete session\",\r\n metafail: \"Could not update meta analysis settings\",\r\n benchfail: \"Could not fetch benchmark sessions\",\r\n basefail: \"Could not upload baseline sessions\",\r\n fetchfail: \"Could not fetch sessions for {e}\",\r\n },\r\n vid: {\r\n editsuccess: \"Successfully edited video\",\r\n editfail: \"Error editing video\",\r\n delsuccess: \"Successfully deleted video\",\r\n delfail: \"Error deleting video\",\r\n },\r\n auth: {\r\n fail: \"An error occured, redirecting to login\",\r\n confirmfail: \"Could not verify this e-mail\",\r\n sent: \"E-mail sent\",\r\n sendfail: \"Could not send e-mail\",\r\n reset: \"Successfully reset password\",\r\n resetfail: \"Could not reset password\",\r\n deviceConfirmFail: \"Could not verify the device\",\r\n },\r\n stripe: {\r\n elempty: \"Element cannot be empty\",\r\n elinvalid: \"Invalid payment information\",\r\n elincomplete: \"Incomplete data\",\r\n purchase: \"Success\",\r\n pfail: \"Could not purchase subscription\",\r\n entercode: \"Please enter a coupon code\",\r\n codeinvalid: \"Invalid coupon code\",\r\n subscribing: \"Setting your subscription up...\",\r\n subGetError: \"Error retrieving subscription\",\r\n subCancelError: \"Error canceling subscription\",\r\n },\r\n meta: {\r\n attrs: \"Please select at least one attribute\",\r\n },\r\n },\r\n\r\n settings: {\r\n title: \"User settings\",\r\n pfp: \"Profile picture\",\r\n dark: \"Enable dark mode\",\r\n alreadyup: \"You've already uploaded one or more baseline sessions.\",\r\n analyzed: \"Sessions have been analyzed.\",\r\n notanalyzed: \"Sessions have not been analyzed yet.\",\r\n upAt: \"Uploaded at\",\r\n avgVol: \"Average volume\",\r\n avgPitch: \"Average pitch\",\r\n actions: \"Actions\",\r\n items_per_page_text: \"Rows per page\",\r\n },\r\n\r\n baseline: {\r\n up: \"Upload baseline session\",\r\n base: \"Baseline Sessions\",\r\n base1: \"Baseline Session (1)\",\r\n base2: \"Baseline Session (2)\",\r\n base3: \"Baseline Session (3)\",\r\n text:\r\n \"This is going to be the baseline session, used to compare your future sessions to. You will be asked to read out a certain paragraph a few times in different ways\",\r\n lang: \"Choose language\",\r\n },\r\n\r\n move: {\r\n title: \"Movement Analysis\",\r\n none:\r\n \"You have not yet completed any VR training. There is no motion data to display.\",\r\n head: {\r\n title: \"Head movement\",\r\n avg: \"Average head movement\",\r\n tip: \"Shows head movement in the VR during presentation\",\r\n },\r\n hand: {\r\n title: \"Hand movement\",\r\n avg: \"Average hand movement\",\r\n tip: \"Shows hand movement in the VR during presentation\",\r\n },\r\n ratio: {\r\n title: \"Movement ratio\",\r\n tip: \"This shows the ratio between head and hand movement\",\r\n },\r\n },\r\n\r\n number: {\r\n toosmall: \"Number is too small (min.: {n})\",\r\n toobig: \"Number is too big (max.: {n})\",\r\n },\r\n\r\n seminars: {\r\n dash: {\r\n title: \"Seminar Dashboard\",\r\n noSeminars: \"No Seminars found\",\r\n adminLink: \"Admin Page\",\r\n progressLink: \"Progress\",\r\n yourSubmissions: \"Your submissions\",\r\n feedback: \"Feedback for me\",\r\n submissions: \"Submissions\",\r\n noSubmissions: \"No submissions yet\",\r\n seeAllButton: \"See all\",\r\n participants: \"Participants\",\r\n\r\n edit: \"Edit\",\r\n view: \"View\",\r\n publish: \"Publish\",\r\n form: {\r\n publish: \"Publish this seminar\",\r\n title: \"Title\",\r\n description: \"Description\",\r\n lecturer: \"Lecturer\",\r\n price: \"Price\",\r\n success: \"Successfully published seminar\",\r\n fail: \"There was an error while publishing this seminar\",\r\n },\r\n },\r\n admin: {\r\n title: \"Seminar Admin Panel\",\r\n addBtn: \"Add Seminar\",\r\n addTitle: \"Add new seminar\",\r\n addText:\r\n \"A seminar can be constructed here. Course elements such as fill-in-the-blanks, video feedback exercises or other course components can be created and added easily and flexibly. Afterwards, publish the seminar and invite your participants with one click.\",\r\n\r\n feedback: {\r\n title: \"Give feedback to user\",\r\n requested: \"Feedback requested\",\r\n desc:\r\n \"The following video submissions have requested feedback from the seminar owner\",\r\n yourFeedback: \"Your feedback\",\r\n alreadyGiven: \"You have already given feedback to this video.\",\r\n },\r\n participants: {\r\n title: \"Seminar Participants\",\r\n removeAllUser: \"Remove all user and submissions\",\r\n removeAll: \"Remove all submissions\",\r\n filterUsers: \"Filter users\",\r\n refreshInv: \"Refresh invitations and users\",\r\n search: \"Search\",\r\n areYouSureTitle: \"Are you sure\",\r\n areYouSureAllUserText:\r\n \"Are you sure you wish to clear all submissions of all users? They will have to restart the entire seminar.\",\r\n areYouSureAllSubs:\r\n \"Are you sure you wish to remove all submissions of this user\",\r\n forThisSeminar: \"for this seminar?\",\r\n removeThisUser: \"Remove this user\",\r\n clearUserSubs: \"Clear this user's submissions\",\r\n removeAllUsers: \"Remove all users\",\r\n areYouSure: \"Are you sure?\",\r\n removeUsersAndSubs:\r\n \"Are you sure you wish to remove all users and their submissions? This will effectively reset the seminar.\",\r\n detail: \"Aufzeichnungen von\",\r\n numSubmissions: \"Number of submissions\",\r\n noParticipants: \"No participants\",\r\n pos: \"Position\",\r\n progress: \"Progress\",\r\n name: \"Name\",\r\n fetchFail: \"Could not fetch all users\",\r\n userNotFound: \"User not found\",\r\n emptySub: \"Nothing to see. Empty submission.\",\r\n filter: {\r\n title: \"Filter users in this seminar\",\r\n userCount: \"{n} Users in total\",\r\n progressLabel: \"Target Current Progress\",\r\n progressHint:\r\n \"All users that have a progress percentage higher than or equal to this value will be included\",\r\n blockLabel: \"Target Current Block\",\r\n blockHint: \"All users that are past this block will be included\",\r\n elLabel: \"Target Current Element\",\r\n elHint: \"All users that are past this element will be included\",\r\n },\r\n },\r\n invitations: {\r\n fetchFail: \"Could not retrieve sent invitations\",\r\n revokeFail: \"Could not revoke invitation\",\r\n invalidEmail: \"Invalid email detected\",\r\n },\r\n seminarList: {\r\n yourSemis: \"Your seminars\",\r\n participantOrOwnerOf: \"You are participant or owner of {n} in total\",\r\n },\r\n },\r\n\r\n edit: {\r\n actions: \"Submissions\",\r\n invite: \"Invite users\",\r\n inviteTitle: \"Invite users to this seminar\",\r\n inviteEmails: \"E-mails that will be invited\",\r\n editBtn: \"Edit seminar\",\r\n editTitle: \"Edit seminar\",\r\n blocks: {\r\n title: \"Seminar blocks\",\r\n addBtn: \"Add block\",\r\n editBtn: \"Edit block\",\r\n blockTitle: \"Block title\",\r\n blockDesc: \"Block description\",\r\n },\r\n elements: {\r\n title: \"Elements in this block\",\r\n addBtn: \"Add element\",\r\n editBtn: \"Edit element\",\r\n elTitle: \"Element title\",\r\n elDesc: \"Element description\",\r\n uploadVid: \"Upload new video\",\r\n embedVid: \"Embed video\",\r\n mkvFilesNo: \"Warning: MKV files will NOT work!\",\r\n file: \"Video file\",\r\n currentVideo: \"Currently uploaded video\",\r\n uploadingWillReplace:\r\n \"Uploading a new video will replace the existing one and the existing one will be deleted\",\r\n link: \"Link to video\",\r\n desc_text: \"Put stuff here...\",\r\n\r\n video_presentation: \"Users will record a video, nothing to specify\",\r\n give_feedback:\r\n \"Users will give feedback to an uploaded video, nothing to specify here\",\r\n watch_feedback:\r\n \"Users will watch a feedback video made for them, nothing to specify here\",\r\n gap_text: {\r\n title: 'Specify blanks by putting down \"__\" (double underscore)',\r\n answers: \"Fill in the blanks (sample solution)\",\r\n gapTexT: \"Gap text\",\r\n },\r\n addRow: \"Add row\",\r\n addCategory: \"Add category\",\r\n newCategory: \"New category\",\r\n categoryTitle: \"Category title\",\r\n deleteElement: {\r\n title: \"Delete element\",\r\n detail: \"Are you sure you wish to delete this element?\",\r\n },\r\n rateable: \"This element's submissions are shared and can be rated\",\r\n embed_youtube:\r\n \"If you are linking youtube videos make sure they are able to be embedded\",\r\n required_numer_of_submissions:\r\n \"Required number of submissions for this element\",\r\n maximum_number_of_submissions:\r\n \"Maximum number of submissions for this element\",\r\n number_range_1_100: \"Number range is 1-100\",\r\n number_range_0_10: \"Number range is 0-10\",\r\n max_condition:\r\n \"Max must be greater than or equal to the required number submissions\",\r\n required_number_of_shared_submissions:\r\n \"Required number of SHARED submissions for this element\",\r\n shared_number_condition:\r\n \"Required number of shared submissions must be less than or equal to the number of required submissions\",\r\n max_number_of_shared_submissions:\r\n \"Maximum number of SHARED submissions for this element\",\r\n timed_video_recording: \"Timed video recording\",\r\n timers: \"Timers\",\r\n exp_len: \"Expected length of recording (in seconds)\",\r\n max_len: \"Maximum length of recording (in seconds)\",\r\n range100: \"Number range is 0-100\",\r\n range10: \"Number range is 1-10\",\r\n\r\n max_shared_rule_1:\r\n \"Max. number of shared submissions must be greater than or equal to required number of shared submissions\",\r\n max_shared_rule_2:\r\n \"Max. number of shared submissions must be less than or equal to required number of shared submissions\",\r\n max_shared_rule_3:\r\n \"Max. num. of submissions must be greater than the number of required submissions and in the range 1-100\",\r\n max_shared_rule_4:\r\n \"Max. num. of shared submissions must be greater than or equal to required number of shared submissions and in the range 1-10\",\r\n req_subs_rule_1:\r\n \"Required number of submissions must be greater than the number of shared submissions and in the range 0-10\",\r\n req_shared_rule_1:\r\n \"Required num. of shared submissions must be less than or equal to the number of required submissions and in the range 0-10\",\r\n watch_video_rule:\r\n \"This element type requires a video. Please link a YouTube video or upload a file.\",\r\n },\r\n participants: {\r\n title: \"Seminar Participants\",\r\n detail: \"Viewing submissions for\",\r\n numSubmissions: \"Total submissions\",\r\n noParticipants: \"No Participants\",\r\n },\r\n },\r\n home: {\r\n startTut: \"Start Tutorial\",\r\n loading: \"Loading...\",\r\n noSemisFound: \"No Seminars found\",\r\n yourSemis: \"Your seminars\",\r\n },\r\n\r\n name: \"Seminar name\",\r\n description: \"Seminar description\",\r\n loading: \"Loading seminar...\",\r\n notFound: \"Seminar not found\",\r\n noBlocks: \"This seminar has no blocks yet.\",\r\n progress: \"Seminar progress\",\r\n tasks: \"Tasks\",\r\n skipTask: \"Skip task\",\r\n prev: \"Previous\",\r\n next: \"Next\",\r\n percentComplete: \"{percent}% complete\",\r\n submittedOn: \"Submitted on\",\r\n yourSubmission: \"Your submission\",\r\n yourAnswer: \"Your answer\",\r\n sampleSolution: \"Sample solution\",\r\n\r\n submissions: {\r\n videoRecorder: {\r\n uploadDialogTitle: \"Upload your recording\",\r\n uploadDialogText: \"Upload your video recording.\",\r\n askForFeedback: \"Ask for feedback\",\r\n askForFeedbackInfo:\r\n \"If you ask for feedback, the seminar owner will see your video and can give feedback to it.\",\r\n expectedTime: \"Expected time:\",\r\n maxAllowedTime: \"max. recording time:\",\r\n title: \"Video recorder\",\r\n actions: \"Actions\",\r\n start: \"Record\",\r\n stop: \"Stop\",\r\n upload: \"Analyze\",\r\n uploadFeedback: \"Submit feedback\",\r\n reset: \"Discard\",\r\n pause: \"Pause\",\r\n resume: \"Resume\",\r\n flipVideo: \"Flip Video\",\r\n nameYourFile: \"Name your file\",\r\n save: \"Save\",\r\n uploadYourPres: \"Upload your presentation\",\r\n privateVid: \"Private video\",\r\n sharedVid: \"Shared video\",\r\n wouldLikeFeedback: \"Yes, I would like to request feedback from owner\",\r\n shared:\r\n \"The recording will be shared to all other seminar participants. Are you sure you want to do this?\",\r\n notShared:\r\n \"The following video will be saved as a submission to the current element of this seminar\",\r\n },\r\n giveFeedbackInfo:\r\n \"You need to give feedback to another user. If no video is shown, feel free to skip the task\",\r\n },\r\n read_text: { title: \"Read text\" },\r\n watch_video: { title: \"Watch video\" },\r\n video_presentation: {\r\n title: \"Record presentation\",\r\n submissions: \"max. submission(s)\",\r\n reqSubmissions: \"required submission(s)\",\r\n sharedSubmissions: \"max. shared submission(s)\",\r\n reqSharedSubmissions: \"required shared submission(s)\",\r\n share: \"Share submission\",\r\n unshare: \"Unshare submission\",\r\n delete: \"Delete Submission\",\r\n delConfirm: \"Are you sure you wish to delete this submission?\",\r\n error:\r\n \"You need {submissions} more submission(s) and {sharedSubmissions} more shared submission(s)!\",\r\n skipped: \"This is an empty (skipped) submission\",\r\n },\r\n give_feedback: {\r\n title: \"Give feedback\",\r\n text: \"Record a video as feedback to this video\",\r\n noRating: \"This video cannot be rated\",\r\n nextTitle: \"Record your feedbaack\",\r\n yourSubmissions: \"Your submission\",\r\n noVideo: \"No video found\",\r\n noVideoDetail:\r\n \"We could not find a video that hasn't been reviewed by another user yet.\",\r\n },\r\n watch_feedback: {\r\n title: \"Watch feedback\",\r\n no_feedback: \"No one has given feedback to your video, yet.\",\r\n text:\r\n \"Watch this video that another participant has given as feedback to your presentation\",\r\n },\r\n gap_text: {\r\n title: \"Fill in the blanks\",\r\n error: \"Please fill out all blanks before submitting\",\r\n },\r\n rephrase: {\r\n title: \"Rephrase\",\r\n sentences: \"Sentences\",\r\n error: \"Please fill out all fields\",\r\n },\r\n categorize: {\r\n title: \"Link Questions\",\r\n phrases: \"Phrases\",\r\n noMore: \"No more phrases\",\r\n categories: \"Categories\",\r\n dnd: \"Drag and drop here\",\r\n error: \"Please put all phrases in categories\",\r\n correct: \"Correct category\",\r\n },\r\n vr_training: {\r\n title: \"VR Training\",\r\n requiredScore: \"Required score\",\r\n yourSubmissions: \"Your submissions\",\r\n score: \"Score\",\r\n refresh: \"Refresh submissions\",\r\n },\r\n goal: {\r\n title: \"Goal\",\r\n target: \"Required number of sessions\",\r\n progress: \"Accepted sessions\",\r\n start: \"Start challenge!\",\r\n description:\r\n \"You have not been assigned to this goal. Click the button below, then complete the target number of sessions to progress in the seminar. Keep the conditions in mind!\",\r\n assign: \"Assign me to the goal!\",\r\n },\r\n\r\n nameRequired: \"Name required\",\r\n descRequired: \"Description required\",\r\n\r\n ratings: {\r\n amusing: \"Amusing\",\r\n creative: \"Creative\",\r\n professional: \"Professional\",\r\n },\r\n\r\n videos: {\r\n title: \"All videos\",\r\n noSubmissions: \"No submissions yet\",\r\n\r\n sortBy: {\r\n title: \"Sort by\",\r\n date: \"Date\",\r\n },\r\n filter: {\r\n users: {\r\n title: \"Users\",\r\n detail: \"Filter by user\",\r\n placeholder: \"Filter by name...\",\r\n },\r\n elements: {\r\n title: \"Elements\",\r\n detail: \"Filter by element\",\r\n },\r\n },\r\n },\r\n vrScores: {\r\n title: \"VR Scores\",\r\n noVr: \"No VR elements in this seminar\",\r\n },\r\n done: \"Done\",\r\n doneText: \"You are done with this seminar. Your progress has been saved\",\r\n back: \"Back to dashboard\",\r\n finish: \"Finish\",\r\n },\r\n\r\n homePage: {\r\n welcomeMessage: \"Welcome to PREZP\",\r\n noPermissions:\r\n \"You have no permissions. When seminar/training permissions are granted, you can reload the window and start training.\",\r\n seminarBtnText: \"PREZP Seminars\",\r\n sessionTrainingBtnText: \"PREZP Session Training\",\r\n noSemiPermission:\r\n \"This section is disabled because you have not licensed a PREZP Seminar. If you want to learn more about it just contact us via the chat function.\",\r\n noSessPermission:\r\n \"This section is disabled because you have not licensed PREZP Session Training. If you want to learn more about it just contact us via the chat function.\",\r\n },\r\n\r\n invitations: {\r\n title: \"Invitations\",\r\n type: \"Invitation type\",\r\n all: \"All\",\r\n active: \"Active\",\r\n inactive: \"Inactive\",\r\n sent: \"Sent invitations\",\r\n revoke: \"Revoke invitation\",\r\n accept: \"Accept invitation\",\r\n decline: \"Decline invitation\",\r\n noInvitations: \"You have no new invitation.\",\r\n },\r\n\r\n zoomControl: \"Zoom to slide\",\r\n\r\n notifications: {\r\n feedback_received: \"Received feedback\",\r\n rate_video: \"Upload new video for feedback\",\r\n rating_received: \"Received new feedback\",\r\n months: \"months\",\r\n weeks: \"weeks\",\r\n days: \"days\",\r\n hours: \"hours\",\r\n minutes: \"minutes\",\r\n fewSeconds: \"few seconds ago\",\r\n },\r\n\r\n pfp: {\r\n preview: \"This is a preview of your new profile picture\",\r\n uploadNew: \"Upload this image\",\r\n chooseNew: \"Choose new image\",\r\n cancelChange: \"Cancel change\",\r\n removeImage: \"Remove current image\",\r\n recSquare: \"We recommend a square image\",\r\n },\r\n\r\n api_errors: {\r\n image_upload_failed: \"Image upload failed\",\r\n user_not_found: \"User not found\",\r\n owner_not_found: \"Owner not found\",\r\n invalid_type: \"Invalid type\",\r\n user_exists: \"User already exists\",\r\n no_user_with_this_email: \"There is no user with this Email\",\r\n password_incorrect: \"Incorrect password\",\r\n email_not_confirmed:\r\n \"Please confirm your email by clicking on the link in your registration mail. Your account is not yet activated.\",\r\n user_not_active: \"User is not active\",\r\n access_denied: \"Access denied\",\r\n element_not_found: \"Element not found\",\r\n block_not_found: \"Block not found\",\r\n seminar_not_found: \"Seminar not found\",\r\n user_not_authorized: \"User not authorized\",\r\n seminar_order_not_found: \"Seminar order not found\",\r\n block_data_not_found: \"Block data not found\",\r\n element_data_not_found: \"Element data not found\",\r\n invitation_not_found: \"Invitation not found\",\r\n invitation_deactivated: \"Not an active invitation\",\r\n seminar_user_not_found: \"Seminar user not found\",\r\n goal_not_found: \"Goal not found\",\r\n cannot_delete: \"Cannot delete\",\r\n device_token_failed: \"An error occurred. Device could not be authorized.\",\r\n },\r\n\r\n browser_warnings: {\r\n unsuppBrowser: \"Unsupported Browser\",\r\n unsuppBrowserTitle: \"Unsupported browser detected\",\r\n unsuppBrowserText:\r\n \"Some features, such as the audio/video recorder might not work correctly. For the best experience, please use the Chrome browser.\",\r\n dontShow: \"Don't show me this again\",\r\n ok: \"Ok\",\r\n },\r\n\r\n tour: {\r\n box: {\r\n title: \"Site tour progress\",\r\n home: \"PREZP Seminars\",\r\n dash: \"PREZP Dashboard\",\r\n goals: \"Goals\",\r\n recorder: \"PREZP Recorder\",\r\n sessions: \"Sessions\",\r\n },\r\n step: {\r\n skip: \"Skip\",\r\n exit: \"Exit\",\r\n next: \"Next\",\r\n finish: \"Finish\",\r\n close: \"Close\",\r\n of: \"of\",\r\n },\r\n welcome: {\r\n title: \"Welcome to PREZP\",\r\n body:\r\n \"If you are new to PREZP we have a tutorial to get you started with the platform. It will show you the most important features and how to use them! Please look for the flashing blue dot in order to find the next step to your tutorial!\",\r\n btn1: \"Do not show me this again\",\r\n btn2: \"Start Tutorial\",\r\n },\r\n finshed: {\r\n title: \"Well done\",\r\n body:\r\n \"You completed the entire tutorial. If you would like to revisit any tutorial, a 'Start Tutorial' button is available at the top of each page.\",\r\n },\r\n home: {\r\n 0: {\r\n title: \"Welcome to PREZP Seminars\",\r\n body:\r\n \"Here you will find two sections: The first is a list of seminars for each of which you are either a participant or the owner. The second is a list of your invitations to other seminars. Let us take a look at each section individually.\",\r\n },\r\n 1: {\r\n title: \"List of seminars\",\r\n body:\r\n \"This is a list of all of your invitations to various areas of PREZP. Accept to get started.\",\r\n // \"This area shows all of your seminars. This includes both seminars that you have created and seminars in which you are participating. Click on the item to start your seminar.\",\r\n },\r\n 2: {\r\n title: \"List of invitations\",\r\n body:\r\n \"This is a list of all of your invitations to various areas of PREZP. Currently, an invitation can relate to either a seminar or a group. Upon accepting an invitation you will be added as a participant or member of the seminar or group to which you were invited, respectively. If you choose to decline an invitation, the invitation will be deleted without notifying the owner of the seminar or the group. The owner will be able to see, however, that the invitation was removed.\",\r\n },\r\n 3: {\r\n title: \"Next up\",\r\n body:\r\n \"This concludes our tour of PREZP Seminars. Next, let’s navigate to the dashboard by clicking on “Dashboard”\",\r\n // \"This concludes our tour of PREZP Seminars. Don’t forget, you can always come back later and repeat this part of the tour! Next, let’s navigate to the dashboard section via the left-side menu by clicking on “Dashboard”, where we will begin the next step of our tour.\",\r\n },\r\n },\r\n dash: {\r\n 0: {\r\n title: \"Welcome to the PREZP Dashboard\",\r\n body:\r\n \"Here you will find your own personalized dashboard and useful information regarding to your training. Let us begin the tour!\",\r\n // \"Here you will find your own personalized dashboard. Throughout this portion of the tutorial you will be taken on a tour where you will be shown cards that contain a small amount of useful information pertaining to everything else available on the PREZP platform. Let us begin the tour!\",\r\n },\r\n 1: {\r\n title: \"Presentations\",\r\n body:\r\n \"Here you can upload presentations. Improve your presentations by recording yourself with the PREZP Recorder, the PREZP Video Recorder or PREZP VR. We will visit those later in the tour. Note: Currently please use pdf-slides.\",\r\n // \"Here you can upload presentations. A presentation can be a set of PDF-slides or a PowerPoint presentation. Uploaded presentations are used as visual aids to help with recording yourself via the PREZP Recorder™ or the PREZP Video Recorder™ (We will visit those later in the tour).\",\r\n },\r\n 2: {\r\n title: \"Presentation Upload\",\r\n body: \"Click this button to upload your presentation\",\r\n },\r\n 3: {\r\n title: \"List of presentations\",\r\n body:\r\n \"Here is a list of all uploaded presentations. The microphone button leads you directly to the PREZP Recorder. The next allows you to view the presentation in full-screen. Furthermore you can download, rename or delete your presentation.\",\r\n // \"Here is a list of all of your previously uploaded presentations. The buttons next to each item allow you to view the presentation in full-screen. You can also download, rename or delete your presentation. The first button next to a presentation, the one with the microphone, when clicked will lead you directly to the PREZP Recorder™. It will automatically select that presentation, and allow you to jump directly into a recording.\",\r\n },\r\n 4: {\r\n title: \"Presentation slides\",\r\n body:\r\n \"Slides for each presentation will appear here. Use the arrows to switch between slides.\",\r\n },\r\n 5: {\r\n title: \"Goals\",\r\n body:\r\n \"All goals that have been created by you or were assigned to you will be listed here, with the most recently created one on top. You will learn more about goals later in the tour.\",\r\n },\r\n 6: {\r\n title: \"Groups\",\r\n body: \"Groups that you are a part of will be shown here.\",\r\n },\r\n 7: {\r\n title: \"Videos\",\r\n body:\r\n \"This card shows you all uploaded videos across all of your groups. Use the button “All Groups” to select the videos of a particular group.\",\r\n // \"This card shows you all uploaded videos across all of your groups. Use the button to show the drop-down list at the top right of the card. The list shows the videos of a particular group.\",\r\n },\r\n 8: {\r\n title: \"News\",\r\n body:\r\n \"All platform related news and updates will be listed here in short form. Clicking the button on the top right of the card will take you to the news page, where you can also view all articles and updates.\",\r\n },\r\n 9: {\r\n title: \"Well done\",\r\n body:\r\n \"Well done. Now you know everything there is to know about the Dashboard page. Let us move on to the PREZP Recorder. And don’t forget, if you forgot how something works or would just like to revisit any particular section, you can always start a section of the tutorial from the beginning any time.\",\r\n },\r\n },\r\n goals: {\r\n 0: {\r\n title: \"PREZP Goals\",\r\n body:\r\n \"On this page you will find a list of all of your goals. The list contains both goals created by you and assigned to you by a group leader. Let us begin this section by setting a goal for yourself.\",\r\n },\r\n 1: {\r\n title: \"Add a new goal\",\r\n body: \"Click here to set up a new goal.\",\r\n },\r\n 2: {\r\n title: \"Setting up a goal\",\r\n body:\r\n \"Goals are important. Based on the goals you set, you can change your speaking style! Are you currently talking too fast? Then simply set your speaking rate target lower. And you will get a feeling for your speaking speed and start speaking more slowly.\",\r\n },\r\n 3: {\r\n title: \"Target sessions\",\r\n body: \"Set the target number of sessions to be completed.\",\r\n },\r\n 4: {\r\n title: \"Goal conditions\",\r\n body:\r\n \"Set the conditions needed to be completed before the goal is counted towards your completed goals.\",\r\n },\r\n 5: {\r\n title: \"Users\",\r\n body:\r\n \"Assign users to this goal. If you are the leader of a group, then you can assign both yourself and other group members to a goal that you have created. As a leader, you are not required to assign yourself to a goal. If you are a member of a group, but not a group leader, then you can only assign yourself to a goal. (Remember, you have to assign at least one user to a goal before it can be submitted.)\",\r\n },\r\n 6: {\r\n title: \"Confirm\",\r\n body: \"Click here to submit the goal.\",\r\n },\r\n 7: {\r\n title: \"Done\",\r\n body:\r\n \"The goal you have just created will be listed in either the created goals, assigned goals or both depending on how they were assigned.\",\r\n },\r\n },\r\n recorder: {\r\n 0: {\r\n title: \"PREZP Recorder\",\r\n body:\r\n \"In this part of the tour, you'll learn how to create both an audio recording and a video recording. Then, you'll learn how to create a session from those recordings. Remember, you just set a goal for yourself. So, keep the condition of that goal in mind when you are creating your recordings.\",\r\n },\r\n 1: {\r\n title: \"List of recordings\",\r\n body:\r\n \"This is a list of your recordings. This is a list of your recordings. Here you can see the date and time that a recording was recorded and in which language a recording was recorded. When clicking a recording a dialog box opens that allows you to take further steps in regards to editing and converting a recording into a session etc. Also, you can click the little trash can icon to delete a particular recording.\",\r\n },\r\n 2: {\r\n title: \"Recorder\",\r\n body:\r\n \"Here you can either record an audio track or a video. These can be later used to create sessions.\",\r\n },\r\n 3: {\r\n title: \"Presentation select\",\r\n body:\r\n \"Select a presenation. The presentation will serve as a visual aid.\",\r\n },\r\n 4: {\r\n title: \"Slides\",\r\n body:\r\n \"Move from one presentation slide to the next. Each time you press this button we set a timestamp. (A timestamp is a recording of the date and time that a change from one to slide to another takes place)\",\r\n },\r\n 5: {\r\n title: \"Langauge select\",\r\n body: \"Select a langauge.\",\r\n },\r\n 6: {\r\n title: \"Device select\",\r\n body: \"Select a recording device.\",\r\n },\r\n 7: {\r\n title: \"Mute/unmute\",\r\n body: \"Here you can mute and unmute the microphone.\",\r\n },\r\n 8: {\r\n title: \"Volume tester\",\r\n body:\r\n \"Use this to test your microphone’s volume. (Note: If the meter is not moving, check that your microphone is working and turned on)\",\r\n },\r\n 9: {\r\n title: \"Record audio\",\r\n body: \"Press to start recording audio.\",\r\n },\r\n 10: {\r\n title: \"Your recording\",\r\n body: \"Click the newly created recording.\",\r\n },\r\n 11: {\r\n title: \"Recording details\",\r\n body:\r\n \"Here you choose the language of the recording (currently only English and German). You also can rename your presentation and save it.\",\r\n },\r\n 12: {\r\n title: \"Switch to video\",\r\n body: \"Switch to video recording.\",\r\n },\r\n 13: {\r\n title: \"Video preview\",\r\n body: \"Watch yourself in real-time while you're recording.\",\r\n },\r\n 14: {\r\n title: \"Actions\",\r\n body: \"Start, pause, stop, or flip a video.\",\r\n },\r\n 15: {\r\n title: \"Record video\",\r\n body: \"Record a short video of you speaking.\",\r\n },\r\n 16: {\r\n title: \"Choose a recording\",\r\n body:\r\n \"Click on any of your recordings and let us create a session from it.\",\r\n },\r\n 17: {\r\n title: \"Create session\",\r\n body:\r\n \"Click the 'Save recording as' button and select the 'New Session' option.\",\r\n },\r\n 18: {\r\n title: \"Awesome\",\r\n body: \"Let us move on to sessions\",\r\n },\r\n },\r\n sessions: {\r\n 0: {\r\n title: \"Sessions page\",\r\n body:\r\n \"Welcome to the Session-Analysis page. Here your presentations will be analysed.\",\r\n },\r\n 1: {\r\n title: \"List of sessions\",\r\n body: \"This is a list of your saved sessions\",\r\n },\r\n 2: {\r\n title: \"Filter sessions\",\r\n body:\r\n \"Filter your sessions easily by duration, date, name or presentation content\",\r\n },\r\n 3: {\r\n title: \"Shared sessions\",\r\n body:\r\n \"Here you can share your sessions with other participants and get important feedback.\",\r\n },\r\n 4: {\r\n title: \"Select a session\",\r\n body: \"Select a fully analyzed session to continue.\",\r\n },\r\n 5: {\r\n title: \"Session details\",\r\n body:\r\n \"Here you will find all the details about a session you have created.\",\r\n },\r\n 6: {\r\n title: \"Scores card\",\r\n body:\r\n \"Here we show the scores you have achieved on your sessions. This gives you an overview of your personal development.\",\r\n },\r\n 7: {\r\n title: \"Slides card\",\r\n body: \"Find here the slides you used to give a presentation.\",\r\n },\r\n 8: {\r\n title: \"Speech speed card\",\r\n body: \"This card shows you, on average, how fast you spoke.\",\r\n },\r\n 9: {\r\n title: \"Pauses card\",\r\n body:\r\n \"This card shows you how many pauses you took during your speech or presentation. (Remember, this only includes pauses that are 1-second or longer.)\",\r\n },\r\n 10: {\r\n title: \"Voice pitch card\",\r\n body:\r\n \"Get a feeling for your voice pitch during your performance. Speaking in a high-pitched voice during a presentation may cause the speaker to be perceived as nervous, unsure and untrustworthy.\",\r\n },\r\n 11: {\r\n title: \"Sentiment sentences\",\r\n body:\r\n \"This is purely an AI analysis of whether a word, phrase or sentence has either a positive, negative or neutral sentiment.\",\r\n },\r\n 12: {\r\n title: \"Lookup words\",\r\n body:\r\n \"Here you can see information about word choice and see if you are using too many filler words which are also known as “softeners”. Some examples of these are, “Uhm, Hmm, Uhh, you see, I mean,” etc.\",\r\n },\r\n 13: {\r\n title: \"Sentiment ratio\",\r\n body:\r\n 'The sentiment ratio is a measurement that gauges how \"positive\" or \"negative\" of a feeling that a sentence or word conveys. When there is not a clearly defined distinction whether the word or sentence is positive or negative, it will get a sentiment rating of \"neutral\".',\r\n },\r\n 14: {\r\n title: \"Keywords card\",\r\n body:\r\n \"Here you will see which “keywords” the AI recognised in your presentation.\",\r\n },\r\n 15: {\r\n title: \"Movement data\",\r\n body:\r\n \"In this section you will find the movement analysis of your VR training.\",\r\n },\r\n 16: {\r\n title: \"Current session controls\",\r\n body:\r\n \"Here you can choose how many data points are shown on the graph, choose a benchmark session, or replay the chosen session.\",\r\n },\r\n 17: {\r\n title: \"Zoom to slide/time\",\r\n body:\r\n \"With this function you can zoom in on individual slides, for example, if your presentation contains several pages and you have set timestamps for those pages.\",\r\n },\r\n 18: {\r\n title: \"Select data points count\",\r\n body:\r\n \"With this button, the data points can be fine-tuned. The default setting is 50 data-points.\",\r\n },\r\n 19: {\r\n title: \"Benchmark sessions\",\r\n body:\r\n \"Here you can upload a benchmark presentation. You will use this presentation as a point of reference for assessment and to serve as a guide for your training. By choosing a particular presentation style, you will possibly be able to reach your goal more efficiently.\",\r\n },\r\n 20: {\r\n title: \"Sessions progress\",\r\n body:\r\n \"Select the 'Session Progress' menu item from the left-side menu.\",\r\n },\r\n 21: {\r\n title: \"Progress page\",\r\n body:\r\n \"On the Progress page, all of the progress you have made in each area of focus (e.g. pitch, volume, words-per-minute etc.) from your training program can be found.\",\r\n },\r\n 22: {\r\n title: \"Comparison limit\",\r\n body: \"...\",\r\n },\r\n 23: {\r\n title: \"Done\",\r\n body: \"...\",\r\n },\r\n },\r\n },\r\n feature: {\r\n locked: \"This feature is locked\",\r\n toUnlockIt: \"Speak to a rep to unlock it.\",\r\n toCloseThisWindow: \"To close this dialog, click outside the card.\",\r\n },\r\n maintenance: {\r\n label: \"Maintenance\",\r\n message: \"We will be available again shortly\",\r\n },\r\n};\r\n\r\nexport default en;\r\n","const de = {\r\n dashboardPage: {\r\n yourGoalsCard: {\r\n yourGoals: \"Deine Ziele\",\r\n haveCompleted: \"Du hast {number} Session{plural} abgeschlossen.\",\r\n error: \"Ein Fehler ist aufgetreten..\",\r\n loadingGoals: \"Ziele laden...\",\r\n },\r\n groupsCard: {\r\n groups: \"Deine Gruppen\",\r\n viewAll: \"Alle ansehen\",\r\n information: \"Information\",\r\n created: \"Erstellt:\",\r\n users: \"Nutzer\",\r\n videos: \"Videos\",\r\n posts: \"Beiträge\",\r\n notGroupMember: \"Du bist noch keiner Gruppe beigetreten.\",\r\n groupsLoading: \"Gruppen werden geladen ...\",\r\n },\r\n videosCard: {\r\n all: \"Alles\",\r\n videos: \"Aktuelle Videos aus deinen Gruppen\",\r\n group: \"Gruppe\",\r\n loadingVids: \"Videos werden geladen...\",\r\n noGroups: \"Du bist noch keiner Gruppe beigetreten.\",\r\n },\r\n newsCard: {\r\n news: \"Nachrichten\",\r\n readAll: \"Alles lesen\",\r\n posted: \"Gesendet\",\r\n readMore: \"Weiterlesen\",\r\n noNews: \"Es wurden noch keine Nachrichten veröffentlicht.\",\r\n newsLoading: \"Nachrichten werden geladen ...\",\r\n },\r\n sessionsCard: {\r\n sessions: \"Sessions\",\r\n pitchHdg: \"Tonhöhe\",\r\n pitchSubHdgDeeper:\r\n \"Du hast diese Woche im Vergleich zur letzten Woche mit tieferer Stimme gesprochen.\",\r\n ptichSubHdgHigher:\r\n \"Du hast diese Woche im Vergleich zur letzten Woche mit höherer Stimme gesprochen.\",\r\n speechSpdHdg: \"Sprechgeschwindigkeit\",\r\n speechSpdSubHdgFaster: \"Du hast heute schneller gesprochen als gestern.\",\r\n speechSpdSubHdgSlower: \"Du hast heute langsamer gesprochen als gestern.\",\r\n hertz400: \"400Hz\",\r\n hertz600: \"600Hz\",\r\n thisWeek: \"Diese Woche\",\r\n wpm: \"Wörter / Minute\",\r\n today: \"Heute\",\r\n yesterday: \"Gestern\",\r\n },\r\n presentationsCard: {\r\n presentations: \"Deine Präsentationen\",\r\n mb: \"MB\",\r\n empty: \"Leer\",\r\n },\r\n },\r\n //isnt used\r\n topPanel: {\r\n settings: \"Einstellungen\",\r\n mail: \"Mail\",\r\n refresh: \"Aktualisierung\",\r\n logout: \"Ausloggen\",\r\n },\r\n //isnt used\r\n leftPanel: {\r\n dashboard: \"Dashboard\",\r\n sessions: \"Sessions\",\r\n groups: \"Gruppen\",\r\n news: \"Nachrichten\",\r\n goals: \"Ziele\",\r\n meetings: \"Meetings\",\r\n adminPanel: \"Administrationsmenü\",\r\n },\r\n sessionsPage: {\r\n noSessions: \"Es konnten keine Sitzungen gefunden werden.\",\r\n sessionsFor: \"Sessions für \",\r\n yourSessionsSection: {\r\n yourSessions: \"Sessions\",\r\n sessionFilters: \"Session Filter\",\r\n filterByDate: \"nach Datum filtern\",\r\n beforeDate: \"vor dem Datum\",\r\n afterDate: \"nach dem Datum\",\r\n betweenTwoDates: \"zwischen zwei Daten\",\r\n filterByDuration: \"nach Dauer filtern\",\r\n timeSpan: \"Zeitspanne (Minuten)\",\r\n longerThan: \"Länger als (Minuten)\",\r\n shorterThan: \"Kürzer als (Minuten)\",\r\n minTime: \"Mindestzeit (Minuten)\",\r\n maxTime: \"Maximale Zeit (Minuten)\",\r\n filterByName: \"Nach Namen filtern\",\r\n startsWith: \"Beginnt mit\",\r\n endsWith: \"Endet mit\",\r\n includes: \"Beinhaltet\",\r\n exactMatch: \"Genaue Übereinstimmung\",\r\n searchTerm: \"Suchbegriff\",\r\n caseInsensitive: \"Groß- und Kleinschreibung wird nicht berücksichtigt\",\r\n filterByScore: \"Filtern nach Punktzahl\",\r\n greaterThanScore: \"größer als\",\r\n lessThanScore: \"weniger als\",\r\n scoreRange: \"Punktebereich\",\r\n applyButton: \"anwenden\",\r\n clearButton: \"löschen\",\r\n cancelButton: \"abbrechen\",\r\n fetching: \"Session abrufen...\",\r\n },\r\n sessionsListSection: {\r\n sessionsList: \"Session Liste\",\r\n sessions: \"Sessions\",\r\n checkSessions: \"Aktualisieren\",\r\n audioAnalHdg: \"Audioanalyse\",\r\n aiBasedAnal: \"KI-basierte Analyse\",\r\n audioAnalNotComplete:\r\n \"Die Audioanalyse wurde noch nicht abgeschlossen. Du kannst entweder noch ein bisschen warten oder den Status überprüfen, indem du die Seite aktualisierst.\",\r\n textAnalHdg: \"Textanalyse\",\r\n textAnalNotComplete:\r\n \"Textanalyse nicht abgeschlossen. Du kannst die Seite aktualisieren, um zu überprüfen, ob die Sessionauswertung fertig ist, oder einfach noch ein bischen warten.\",\r\n movementAnalHdg: \"Bewegungsanalyse\",\r\n movementAnalNoData: \"Es sind keine Bewegungsdaten verfügbar.\",\r\n show: \"Zeigen\",\r\n points: \"Punkte\",\r\n volumeWarning:\r\n \"Eine zu leise oder laute Aufnahme kann die Qualität der Analyse Ergebnisse beeinflussen. Um präzise Analyse Ergebnisse zu erzielen versuche eine Lautstärke zwischen 20% und 80% zu erreichen.\",\r\n movementAnalCard: {\r\n movementAnal: \"Bewegungsanalyse\",\r\n headMovementOverTime: \"Kopfbewegung im Laufe der Zeit\",\r\n headMoTInfo:\r\n \"Die Kopfbewegung im Laufe der Zeit zeigt, wie stark dich deine Bewegung in den letzten Sitzungen verändert hat.\",\r\n headMovement: \"Kopfbewegung\",\r\n avgHeadMovement: \"Durchschnittliche Kopfbewegung\",\r\n infoHeadM:\r\n \"Die Kopfbewegung zeigt, wie viel du dich mit deinem Kopf / Körper bewegen. Versuchst du, dich mit Grund und Zweck von einem Raum zum anderen zu bewegen.\",\r\n handMovementOverTime: \"Handbewegung im Laufe der Zeit\",\r\n handMoTInfo:\r\n \"Handbewegung im Laufe der Zeit zeigt, wie stark dich deine Bewegung in den letzten Sitzungen verändert hat\",\r\n handMovement: \"Handbewegung\",\r\n avgHandMovement: \"Durchschnittliche Handbewegung\",\r\n infoHandM:\r\n \"Handbewegung zeigt an, wie viel du deine Hände / Gesten bewegen. Viele Bewegungen können dazu führen, dass du nervös erscheinst, und weniger Bewegung kann du als gelangweilt darstellen. Versuche deine Gesten als Werkzeug zum Aufbau von Spannung zu verwenden.\",\r\n distance: \"Entfernung\",\r\n changeOverTime: \"Veränderung im Laufe der Zeit\",\r\n timePercent: \"Zeit in %\",\r\n },\r\n speechSpeedCard: {\r\n cardTitle: \"Sprechgeschwindigkeit\",\r\n wpmInfo:\r\n \"Dies zeigt, wie schnell du sprichst. / Wie viele Wörter verwendest du durchschnittlich in einer Minute.\",\r\n wpmTimeUnit: \"Wörter/Minute\",\r\n wpmNotice:\r\n \"Für die meisten Vorträge sollte ein Zielwert zwischen 90 und 150 Wörter pro Minute angestrebt werden\",\r\n infoTitle: \"Sprechgeschwindigkeit und Hörgeschwindigkeit\",\r\n infoText:\r\n \"Die durchschnittliche Sprechgeschwindigkeit von 90 bis 150 Wörter pro Minute wird allgemein als angenehm und verständlich wahrgenommen. Ein Hörer kann 150 Wörter pro Minute noch gut verstehen. Lesen können wir aber durchschnittlich 260 Wörter pro Minute! Das bedeutet: Wenn wir viel Text auf einer Vortragsfolie haben, wird der Hörer intuitiv den Text lesen und nicht zuhören, bis der Redner den Text vorgelesen hat, weil es schneller geht. Das sollte man beim Konzipieren seiner Folien immer im Hinterkopf behalten.\",\r\n },\r\n scoresCard: {\r\n infoTitle: \"Session Ergebnisse\",\r\n infoText: \"Diese Ergebnisse wurden für dieses Session kalkuliert\",\r\n cardTitle: \"Session Ergebnisse\",\r\n overall: \"Gesamt\",\r\n overallTip:\r\n \"Der Gesamtwert ergibt sich als Durchschnitt der Einzelergebnisse. Wenn Du in einem Bereich weniger als 3 erreicht hast, wird dieser Wert dreifach gewichtet!\",\r\n other: \"Andere Ergebnisse\",\r\n wpm: \"Sprechgeschwindigkeit\",\r\n wpmTip:\r\n \"Für die meisten Vorträge sollte ein Zielwert zwischen 90 und 150 Wörter pro Minute angestrebt werden. Du hast mit einer Geschwindigkeit von {value} Wörtern gesprochen. \",\r\n wpmFasterTip: \"Versuche beim nächsten Mal etwas schneller zu sprechen.\",\r\n wpmSlowerTip: \"Versuche beim nächsten Mal etwas langsamer zu sprechen.\",\r\n pauses: \"Pausen\",\r\n pausesTip:\r\n \"Ein guter Vortrag sollte genügend rhetorische Pausen (Pausen länger als 2 Sekunden) enthalten. Wir empfehlen dir zwischen 2-3 solcher Pausen in der Minute zu machen. Du hast {value} Pausen pro Minute verwendet. \",\r\n morePausesTip: \"Versuche noch bewusster mehr Pausen zu machen. \",\r\n lessPausesTip:\r\n \"Um den Vortrag flüssiger wirken zu lassen, versuche beim nächsten Mal deine Anzahl auf 2-3 Pausen zu reduzieren. \",\r\n repetition: \"Wiederholungen\",\r\n repetitionTip:\r\n \"Eine sehr gute Rede sollte maximal zwei Wortwiederholungen pro Minute enthalten. Du hast in diesem Vortrag folgende Worte besonders häufig verwendet: \",\r\n filler: \"Füllwörter\",\r\n fillerTip:\r\n \"Ein guter Vortrag sollte nicht mehr als zwei Füllwörter pro Minute enthalten. Du hast bei deinem Training insgesamt {value} Füllwörter pro Minute verwendet. \",\r\n fillerTipWordlist: \"Diese waren: \",\r\n fillerTipContinued:\r\n \"Kurze Füllwörter (wie z. B. Ähm) werden von der Spracherkennung nicht immer erkannt oder als Buchstabe (z. B. M) missverstanden. Bitte prüfe Deinen Vortrag nochmal selbst auf Füllwörter.\",\r\n speaking: \"Deutlichkeit\",\r\n speakingTip:\r\n \"Diese Note gibt dir an, wie deutlich die Aussprache in deinem Vortrag verstanden wird. Versuche hier möglichst den Maximalwert von 100% zu erreichen. Du hast in diesem Vortrag eine Deutlichkeit von {value}% erreicht. \",\r\n none: \"Keine Ergebnisse für dieses Session\",\r\n },\r\n feedback: {\r\n recordButton: \"Feedback\",\r\n recordTooltip: \"Gib Feedback als Video\",\r\n playButton: \"Ansehen\",\r\n playTooltip: \"Sieh Dir Dein Feedback an\",\r\n playDialogTitle: \"Dein Feedback\",\r\n deleteButton: \"Löschen\",\r\n deleteTooltip: \"Lösche Dein Feedback\",\r\n deleteConfirmationTitle: \"Feedback löschen\",\r\n deletionInfo:\r\n \"Das Löschen Deines Feedbacks ist irreversibel. Bist du sicher, dass du mit dem Löschen Deines Feedbacks fortfahren möchtest?\",\r\n confirmButton: \"Bestätigen\",\r\n cancelButton: \"Abbrechen\",\r\n },\r\n },\r\n uploadSessionSection: {\r\n uploadSession: \"Session hochladen\",\r\n createSessionFromAudio: \"Session aus Audiodatei erstellen\",\r\n sessionName: \"Session Name *\",\r\n audioFile: \"Audiodatei *\",\r\n videoFile: \"Videodatei *\",\r\n chooseLang: \"Sprache wählen\",\r\n },\r\n deleteSession: {\r\n deleteSessionButton: \"Diese Session löschen\",\r\n youSureDelete: \"Möchtest du diese Session wirklich löschen?\",\r\n deletionInfo:\r\n \"Das Löschen einer Session ist irreversibel. Bist du sicher, dass du mit dem Löschen dieser Session fortfahren möchtest?\",\r\n confirmSessDel: \"Bestätigen\",\r\n cancelSessDel: \"Abbrechen\",\r\n },\r\n sessionsProgressSection: {\r\n analysisStatus: {\r\n AnalyzingAudio: \"Audio wird analysiert...\",\r\n AnalyzingText: \"Transkript wird erstellt...\",\r\n AudioDone: \"Audioanlyze fertig\",\r\n ExtractingAudio: \"Extrahiere Audio\",\r\n Running: \"Laufen...\",\r\n NotStarted: \"Noch nicht angefangen\",\r\n Succeeded: \"Erflog\",\r\n null: \"Laufen...\",\r\n TextDone: \"Transkribieren fertig\",\r\n },\r\n sessionsProgress: \"Session Fortschritte\",\r\n analyzingSession: \"Analysieren...\",\r\n gettingSession: \"Session abrufen...\",\r\n recentData: \"aktuelle Daten\",\r\n display: \"Anzeige\",\r\n sessions: \"Sessions\",\r\n audioAnal: \"Audioanalyse\",\r\n textAnal: \"Textanalyse\",\r\n movementAnal: \"Bewegungsanalyse\",\r\n pitchOverTimeCard: {\r\n pitchOverTime: \"Stimmhöhe im Laufe der Zeit\",\r\n changeOverTime: \"Veränderung im Laufe der Zeit\",\r\n voicePitch: \"Stimmhöhe\",\r\n infoPoT:\r\n \"Mit Pitch over Time kannst du den Fortschritt deiner Stimme sehen. Dies ist nützlich, wenn du trainieren möchtest, um eine tiefere oder höhere Stimme zu verwenden.\",\r\n },\r\n volumeOverTimeCard: {\r\n volumeOverTime: \"Lautstärke im Laufe der Zeit\",\r\n voiceVolume: \"Stimmen Lautstärke\",\r\n changeOverTime: \"im Laufe der Zeit ändern\",\r\n infoVoT:\r\n \"Lautstärke über im Laufe der Zeit zeigt den Fortschritt der Lautstärke deiner Stimme an.\",\r\n },\r\n pausesOverTimeCard: {\r\n pausesOverTime: \"Pausen-pro-Minute im Laufe der Zeit\",\r\n changeOverTime: \"im Laufe der Zeit ändern\",\r\n totalPauseTime: \"Gesamtpausenzeit\",\r\n infoPoT:\r\n \"Pausen im Laufe der Zeit zeigt an, wie viele Pausen du in den letzten Sessions gemacht hast.\",\r\n },\r\n textAnalCard: {\r\n sentimentOverTime: \"Stimmung im Laufe der Zeit\",\r\n changeOverTime: \"im Laufe der Zeit ändern\",\r\n sentiment: \"Stimmung\",\r\n infoSoT:\r\n \"Stimmung über im Laufe der zeigt deine Fortschritte im Hinblick auf eine positive Wortwahl.\",\r\n },\r\n speechSpeedOverTimeCard: {\r\n speechSpeedOverTime: \"Sprachgeschwindigkeit im Laufe der Zeit\",\r\n changeOverTime: \"im Laufe der Zeit ändern\",\r\n wordsPerMinute: \"Wörter / Minute\",\r\n infoSSoT:\r\n \"Dies zeigt die Geschwindigkeit deiner letzten Sessions im Vergleich zu früheren.\",\r\n },\r\n movementAnalCard: {\r\n movementAnal: \"Bewegungsanalyse\",\r\n headMovementOverTime: \"Kopfbewegung im Laufe der Zeit\",\r\n headMoTInfo:\r\n \"Die Kopfbewegung im Laufe der Zeit zeigt an, wie stark sich deine Bewegung in den letzten Sitzungen verändert hat.\",\r\n headMovement: \"Kopfbewegung\",\r\n infoHeadM:\r\n \"Die Kopfbewegung zeigt an, wie viel du dich mit deinem Kopf / Körper bewegst. Versuchst du, dich mit Grund und Zweck von einem Raum zum anderen zu bewegen.\",\r\n handMovementOverTime: \"Handbewegung im Laufe der Zeit\",\r\n handMoTInfo:\r\n \"Handbewegung im Laufe der Zeit zeigt an, wie stark dich deine Bewegung in den letzten Sitzungen verändert hat.\",\r\n handMovement: \"Handbewegung\",\r\n infoHandM:\r\n \"Handbewegung zeigt an, wie viel du deine Hände / Geste bewegst. Eine Menge Bewegung kann dazu führen, dass du nervös erscheinst, und weniger Bewegung kann du als gelangweilt darstellen. Versuchst du, deine Gesten als Werkzeug zu verwenden, um Spannung aufzubauen.\",\r\n distance: \"Entfernung\",\r\n changeOverTime: \"Veränderung im Laufe der Zeit\",\r\n timePercent: \"Zeit in %\",\r\n },\r\n },\r\n sessionFiltersPopUp: {\r\n sessionFilters: \"Session-Filter\",\r\n filterByDate: \"Nach Datum filtern\",\r\n filterByDuration: \"Nach Dauer filtern\",\r\n minTimeMin: \"Mindestzeit (Minuten)\",\r\n maxTimeMin: \"Maximale Zeit (Minuten)\",\r\n filterByName: \"Nach Namen filtern\",\r\n searchTerm: \"Suchbegriff\",\r\n caseInsensitive: \"Groß- und Kleinschreibung nicht berücksichtigen\",\r\n filterByScore: \"Nach Punktzahl filtern\",\r\n apply: \"Anwenden\",\r\n clear: \"Löschen\",\r\n cancel: \"Abbrechen\",\r\n ok: \"OK\",\r\n beforeDate: \"Vor dem Datum\",\r\n after: \"Nach dem Datum\",\r\n between: \"Zwischen zwei Daten\",\r\n startDate: \"Anfangsdatum\",\r\n endDate: \"Enddatum\",\r\n },\r\n aiFeedback: \"Persönliches Feedback von deinem KI Coach\",\r\n aiFeedbackTitle: \"Dein KI Coach Feedback\",\r\n aiSessionTitle: \"KI-Unterstützte Session\",\r\n new: \"Neu\",\r\n },\r\n groupsSections: {\r\n yourGroupsPage: {\r\n yourGroups: \"Deine Gruppen\",\r\n noGroups: \"Du bist in keiner Gruppe.\",\r\n addNewGroup: \"Füge eine neue Gruppe hinzu\",\r\n addGroupButton: \"Gruppe hinzufügen\",\r\n groupName: \"Gruppenname\",\r\n groupUsers: \"Gruppenbenutzer\",\r\n emailRules:\r\n \"Trenne Emails durch Komma (,) oder durch Drücken der Leertaste, Tabulatortaste ('Tab') oder Eingabetaste ('Enter')\",\r\n submitButton: \"Einreichen\",\r\n },\r\n //isnt used\r\n groupPage: {\r\n latestVideosCard: {\r\n latestVideos: \"Neueste Videos\",\r\n editVideo: \"Video bearbeiten\",\r\n deleteVideo: \"Video löschen\",\r\n addVidButton: \"Video hinzufügen\",\r\n addNewVideo: \"Neues Video hinzufügen\",\r\n vidTitle: \"Videotitel (optional)\",\r\n info: \"Falls der Titel leer ist, wird er automatisch festgelegt\",\r\n vidDescription: \"Videobeschreibung (optional)\",\r\n pinVideo: \"Dieses Video anheften?\",\r\n pinfo: \"Das angeheftete Video wird zuerst angezeigt\",\r\n linkButton: \"Link\",\r\n vidLink: \"Video-Link\",\r\n submit: \"Bestätigen\",\r\n fileButton: \"Datei\",\r\n },\r\n latestPostsCard: {\r\n latestPosts: \"Neueste Beiträge\",\r\n editPost: \"Beitrag bearbeiten\",\r\n deletePost: \"Beitrag löschen\",\r\n addPostButton: \"Beitrag hinzufügen\",\r\n postTitle: \"Beitragstitel (erforderlich)\",\r\n postBody: \"Post Body (erforderlich)\",\r\n pinPost: \"Diesen Beitrag anheften?\",\r\n uploadBannerImage: \"Bannerbild hochladen?\",\r\n bannerImage: \"Banner Bild\",\r\n otherFiles: \"Andere Dateien\",\r\n postButton: \"Beitrag\",\r\n },\r\n usersCard: {\r\n users: \"Benutzer\",\r\n remove: \"Benutzer entfernen\",\r\n makeManager: \"Zum Manager machen\",\r\n removeManager: \"Manager Rolle entfernen\",\r\n },\r\n addUserCard: {\r\n addANewUser: \"Neuen Benutzer hinzufügen\",\r\n addUserButton: \"Benutzer hinzufügen\",\r\n userEmail: \"Benutzer Email\",\r\n makeManager: \"Zum Manager machen\",\r\n submitButton: \"einreichen\",\r\n },\r\n },\r\n },\r\n latestNewsSections: {\r\n latestNewsPage: {\r\n latestNews: \"Neueste Beiträge\",\r\n noNews: \"Noch keine Beiträge gepostet.\",\r\n newsLoading: \"Beiträge werden geladen ...\",\r\n read: \"Lesen\",\r\n back: \"Zurück\",\r\n edit: \"Bearbeiten\",\r\n delete: \"Löschen\",\r\n err404: \"404\",\r\n artWithId: \"Artikel mit ID\",\r\n notFound: \"konnte nicht gefunden werden.\",\r\n goBack: \"zurückgehen\",\r\n addArticleButton: \"Artikel hinzufügen\",\r\n addArticlePopUp: {\r\n addNewArticle: \"Fügt einen Artikel hinzu\",\r\n articleTitle: \"Artikelüberschrift\",\r\n cannotBeEmpty: \"Feld darf nicht leer sein\",\r\n articleBody: \"Artikelinhalt\",\r\n addBannerImg: \"Banner Image hinzufügen\",\r\n bannerImg: \"Banner Bild\",\r\n otherFiles: \"Andere Dateien\",\r\n addArticle: \"Artikel hinzufügen\",\r\n },\r\n },\r\n articleActions: {\r\n edit: \"Bearbeiten\",\r\n editArticle: \"Artikel bearbeiten\",\r\n newArticleTitle: \"Neuer Artikel-Titel\",\r\n newArticleBody: \"Neuer Artikel-Text\",\r\n done: \"Fertig\",\r\n deleteArticle: \"Artikel löschen\",\r\n areYouSure: \"Möchtest du den aktuellen Artikel wirklich löschen?\",\r\n confirm: \"Bestätigen\",\r\n cancel: \"Abbrechen\",\r\n },\r\n addArticleButton: {\r\n addArticle: \"Artikel hinzufügen\",\r\n addNewsArticle: \"Füge einen Nachrichtenartikel hinzu\",\r\n articleTitle: \"Artikeltitel\",\r\n articleBody: \"Artikelinhalt\",\r\n addBannerImage: \"Bannerbild hinzufügen\",\r\n bannerImage: \"Banner Bild\",\r\n otherFiles: \"Andere Dateien\",\r\n },\r\n },\r\n goalsSections: {\r\n yourGoals: \"Deine Ziele\",\r\n assignedGoalsCard: {\r\n assignedGoals: \"Zugewiesene Ziele\",\r\n completeNumSessions: \"Schließe #### Sitzungen ab\",\r\n dueDate: \"Fällig in #### Jahren\",\r\n completedSessions: \"Du hast #### Sessions abgeschlossen\",\r\n noGoalAssignments: \"Dir wurden keine Ziele zugewiesen.\",\r\n },\r\n createdGoalsCard: {\r\n createdGoals: \"Erstellte Ziele\",\r\n completeNumSessions: \"Schließe #### Sessions\",\r\n goalCreatedAtMonth: \"vor einem Monat\",\r\n goalCreatedAtMinutes: \"vor x Minuten\",\r\n sessionsThatCount:\r\n \"Nur Sitzungen mit einer Punktzahl größer als ## zählen\",\r\n sentimentAim: \"Strebe einen Stimmungswert zwischen {from}% und {to}% an.\",\r\n pausesAim: \"Versuche x- bis y-Pausen zu machen\",\r\n pitchAim:\r\n \"Strebe eine durchschnittliche Tonhöhe zwischen ## Hz und ## Hz an\",\r\n volumeAim:\r\n \"Strebe du eine durchschnittliche Lautstärke zwischen ## dB und ## dB an\",\r\n noCreatedGoals: \"Du hast keine Ziele erstellt.\",\r\n },\r\n addGoalButton: \"Ziel hinzufügen\",\r\n addGoalPopUp: {\r\n addNewGoal: \"Neues Ziel hinzufügen\",\r\n addCondition: \"Bedingung hinzufügen\",\r\n conditionNum: \"Bedingung #x\",\r\n conditionType: \"Art der Bedingung (erforderlich)\",\r\n dueDate: \"Fälligkeitsdatum\",\r\n sessionScore: \"Session Ergebnis\",\r\n targetScore: \"Zielpunktzahl\",\r\n sentiment: \"Stimmung\",\r\n targetSentiment: \"Ziel Stimmung\",\r\n avgPitch: \"Durchschnittliche Tonhöhe\",\r\n targetPitch: \"Ziel Tonhöhe\",\r\n avgVolume: \"Durchschnittliches Volumen\",\r\n targetVolume: \"Zielvolumen\",\r\n pausesPerMin: \"Pausen pro Minute\",\r\n targetPauses: \"Zielpausen\",\r\n assignToUsers: \"Benutzer zuweisen\",\r\n selectAll: \"Alle auswählen\",\r\n deselectAll: \"Alle abwählen\",\r\n assignSelf: \"Sich zuweisen?\",\r\n submit: \"Ziel senden\",\r\n },\r\n },\r\n meetingsSection: {\r\n yourMeetings: \"Deine Meetings\",\r\n allMeetingsCard: {\r\n allMeetings: \"Alle Meetings\",\r\n subject: \"Betreff\",\r\n noSubject: \"Kein Betreff festgelegt\",\r\n noMeetings: \"Keine anstehenden Meetings.\",\r\n joinMeeting: \"Einem Meeting beitreten\",\r\n editMeeting: \"Meeting bearbeiten\",\r\n cancelMeeting: \"Meeting abbrechen\",\r\n dateFuture: \"in xx Tagen\",\r\n datePast: \"vor xx Tagen\",\r\n done: \"Fertig\",\r\n },\r\n addMeetingButton: \"Meeting hinzufügen\",\r\n addNewMeetingPopUp: {\r\n addNewMeeting: \"Füge eine neue Besprechung hinzu\",\r\n meetingSub: \"Besprechungsthema\",\r\n chooseStart: \"Wähle das Startdatum / -zeit\",\r\n chooseEnd: \"Wähle das Enddatum / die Endzeit\",\r\n assignUsers: \"Benutzer zuweisen\",\r\n selectAll: \"Alle auswählen\",\r\n deselectAll: \"Auswahl löschen\",\r\n additionalUsers: \"Zusätzliche Nutzer\",\r\n emailRule:\r\n \"Trenne Emails durch ein Komma (,) oder durch Drücken der Leertaste, Tabulatortaste ('Tab') oder Eingabetaste ('Enter')\",\r\n setPass: \"Passwort festlegen?\",\r\n pass: \"Passwort\",\r\n meetingTypes: \"Besprechungstypen\",\r\n blizzMeeting: \"Blizz Meeting\",\r\n customMeeting: \"benutzerdefinierte Meeting\",\r\n customMeetingLink: \"Benutzerdefinierter Meeting-Link\",\r\n addMeeting: \"Meeting hinzufügen\",\r\n dateError: \"Das Enddatum des Meetings muss nach dem Startdatum liegen.\",\r\n },\r\n },\r\n adminPanelSection: {\r\n allUsers: \"Alle Nutzer\",\r\n changeRole: \"Rolle ändern\",\r\n changeRolePopUp: {\r\n changeRoleUser: \"Ändere die Rolle für den Benutzer\",\r\n submit: \"Senden\",\r\n cancel: \"Abbrechen\",\r\n admin: \"Admin\",\r\n user: \"Benutzer\",\r\n owner: \"Besitzer\",\r\n },\r\n },\r\n passwordResetSection: {\r\n resetPass: \"Password zurücksetzen\",\r\n error: \"Ein Fehler ist aufgetreten.\",\r\n newPassRequired: \"Neues Passwort (erforderlich)\",\r\n confirmPass: \"Neues Passwort bestätigen (erforderlich)\",\r\n doneRedirect: \"Fertig! Wir leiten dich in 5 Sekunden zum Login weiter.\",\r\n couldNotResetPass: \"Passwort konnte nicht zurückgesetzt werden\",\r\n resetMyPass: \"Passwort zurücksetzen\",\r\n backToForgotPass: 'Zurück zu \"Passwort vergessen\"',\r\n passRequired: \"Passwort ist erforderlich\",\r\n passMustBe: \"Das Passwort muss mindestens 8 Zeichen lang sein.\",\r\n passMustContain:\r\n \"Das Passwort muss mindestens je einen Klein- und Großbuchstaben, eine Ziffer, sowie ein Sonderzeichen enthalten.\",\r\n confirmPassRequired: \"Passwortbestätigung erforderlich.\",\r\n passNoMatch: \"Passwörter stimmen nicht überein.\",\r\n },\r\n registerSection: {\r\n error: \"Ein Fehler ist aufgetreten.\",\r\n fNameRequired: \"Vorname (erforderlich)\",\r\n lNameRequired: \"Nachname (erforderlich)\",\r\n firstName: \"Vorname\",\r\n lastName: \"Nachname\",\r\n companyName: \"Firmenname\",\r\n emailRequired: \"Email (erforderlich)\",\r\n passwordRequired: \"Passwort (erforderlich)\",\r\n confirmPassRequired: \"Passwort bestätigen (erforderlich)\",\r\n agree: \"Ich stimme den\",\r\n termsNCond: \"Allgemeinen Geschäftsbedingungen\",\r\n agreeEnd: \"zu\",\r\n next: \"Weiter\",\r\n back: \"Zurück\",\r\n register: \"Registrieren\",\r\n fName: \"Vorname ist erforderlich\",\r\n fNameMin: \"Der Vorname muss mindestens 2 Zeichen lang sein\",\r\n lName: \"Nachname ist erforderlich\",\r\n lNameMin: \"Nachname muss mindestens 2 Zeichen lang sein\",\r\n flName: \"Vorname und Nachname sind erforderlich\",\r\n email: \"Email ist erforderlich\",\r\n invalidEmail: \"Ungültige Email\",\r\n emailAlreadyTaken: \"Es existiert bereits ein Benutzer mit dieser Email\",\r\n passRequired: \"Passwort ist erforderlich\",\r\n passMin: \"Passwort muss mindestens {min} Zeichen lang sein\",\r\n passMax: \"Passwort darf nicht länger als {max} Zeichen sein\",\r\n passRules:\r\n \"Das Passwort muss Kleinbuchstaben, Großbuchstaben, Ziffern und Sonderzeichen enthalten\",\r\n passwordExplanation:\r\n \"Dein Passwort muss mindestens 8 Zeichen haben. Es muss Kleinbuchstaben, Großbuchstaben, Ziffern und Sonderzeichen beinhalten.\",\r\n confirmPass: \"Passwortbestätigung erforderlich\",\r\n passMismatch: \"Passwörter stimmen nicht überein\",\r\n tOS: \"Bitte lese die Nutzungsbedingungen und stimme diesen zu\",\r\n registerFailed: \"Es ist ein Fehler aufgetreten\",\r\n validationError: \"Deine angegebenen Daten sind unvollständig\",\r\n termsAndServices:\r\n \"https://stprezpshareddata.blob.core.windows.net/hosted-files/Nutzungsbedingungen_Prezp_Deutsch_03.03.2021.pdf#toolbar=0\",\r\n yourInfo: \"Deine Angaben\",\r\n yourEmail: \"Email\",\r\n yourName: \"Benutzername\",\r\n registerToCompany: \"Registriere Dich zum Beitreten des Unternehmens\",\r\n andSeminar: \"und dem Seminar\",\r\n },\r\n onboardingSection: {\r\n titleFirstPart: \"YOUR COMMUNICATION TRAINING\", // this is left in English by design\r\n titleSecondPart: \"MENSCHEN GEWINNEN\",\r\n bannerContent:\r\n \"Du möchtest besser kommunizieren, packender reden und erfolgreicher verkaufen? Jetzt loslegen!\",\r\n learnMoreBtn: \"Mehr erfahren\",\r\n footerLinkPrivacy: \"Datenschutz\",\r\n footerLinkLegal: \"Legal\",\r\n footerLinkContact: \"Kontakt\",\r\n },\r\n loginSection: {\r\n dontHaveAccount: \"Du hast noch keinen Account?\",\r\n register: \"Registrieren\",\r\n signIn: \"Einloggen\",\r\n title: \"Bei PREZP einloggen\",\r\n error: \"Ein Fehler ist aufgetreten.\",\r\n unconfirmedEmail:\r\n \"Bitte bestätige Deine E-Mail Adresse über den Link in Deiner Registrierungsemail. Dein Account ist noch nicht aktiviert.\",\r\n wrongPasswordError:\r\n \"Dein Benutzername oder Dein Passwort sind nicht korrekt!\",\r\n unauthorizedError:\r\n \"Autorisierungsfehler. Bitte stelle sicher, dass Du angemeldet bist.\",\r\n email: \"Email\",\r\n password: \"Passwort\",\r\n forgotPass: \"Passwort vergessen\",\r\n emailPlaceHolder: \"demo@prezp.com\",\r\n invalidEmail: \"Ungültige Email\",\r\n emailRequired: \"Email ist erforderlich\",\r\n passRequired: \"Passwort ist erforderlich\",\r\n passMin: \"Das Passwort muss mindestens 6 Zeichen lang sein\",\r\n passMax: \"Das Passwort darf nicht länger als 16 Zeichen sein\",\r\n },\r\n newUser: {\r\n thanks:\r\n \"Vielen Dank, dass du dich bei PREZP registriert hast. Bitte bestätige Deine E-Mail Adresse, in dem Du in der Registrierungsmail auf den Link klickst, um Dein Konto zu aktivieren.\",\r\n welcome: \"Willkommen bei PREZP\",\r\n },\r\n inactiveProfile: {\r\n notActivated:\r\n \"Dieses Profil wurde nicht aktiviert. Für weitere Informationen wendest du dich bitte an die Administratoren dieser Website.\",\r\n },\r\n forgotPassSection: {\r\n signUp: \"Willst du dich anmelden?\",\r\n register: \"Registrieren\",\r\n wantToSignIn: \"Möchtest du dich anmelden?\",\r\n login: \"Einloggen\",\r\n resetPass: \"Passwort zurücksetzen\",\r\n error: \"Ein Fehler ist aufgetreten.\",\r\n email: \"Email\",\r\n sentEmail: \"Eine Email wurde gesendet an\",\r\n followLinkResetPass:\r\n \"Folge dem Link in der Email, um dein Passwort zurückzusetzen.\",\r\n emailSent: \"Email gesendet!\",\r\n sendReset: \"Email zurücksetzen senden\",\r\n invalidEmail: \"Ungültige Email\",\r\n emailRequired: \"Eine Email-Adresse ist erforderlich\",\r\n passRequired: \"Passwort ist erforderlich\",\r\n passMinRule: \"Das Passwort muss mindestens 6 Zeichen lang sein\",\r\n passMaxRule: \"Passwort darf nicht länger als 16 Zeichen sein\",\r\n emailPlaceHolder: \"demo@prezp.com\",\r\n haveAnAccount: \"Du hast schon einen Account?\",\r\n signIn: \"Einloggen\",\r\n forgotPass: \"Passwort vergessen?\",\r\n },\r\n confirmEmailSection: {\r\n emailConfirmed: \"Email erfolgreich bestätigt!\",\r\n contWeb: \"Weiter zur Website\",\r\n contApp: \"Weiter zur App\",\r\n wait: \"Gib uns eine Sekunde ...\",\r\n error: \"Ein Fehler ist aufgetreten.\",\r\n couldNotConfirm: \"Email konnte nicht bestätigt werden ...\",\r\n backToLogin: \"Zurück zum Login\",\r\n },\r\n registerDeviceSection: {\r\n deviceAuthentication: \"Geräteauthentifizierung\",\r\n toActivate: \"Um dieses VR Gerät zu aktivieren\",\r\n step1: \"1. Gehe auf deinem Computer oder Mobilgerät zu:\",\r\n step2: \"2. Gebe den folgenden Code ein:\",\r\n step3:\r\n \"3. Drücke auf „Weiter“ sobald Du dich auf deinem Computer oder Mobilgerät authentifiziert hast:\",\r\n continue: \"Weiter\",\r\n wait: \"Gib uns eine Sekunde ...\",\r\n error: \"Ein Fehler ist aufgetreten.\",\r\n couldNotGetCode: \"Code konnte nicht angefordert werden ...\",\r\n couldNotAuthenticate:\r\n \"Anmeldefehler, bitte überprüfe die Authentifizierung auf dem 2. Gerät.\",\r\n backToLogin: \"Zurück zum Login\",\r\n },\r\n confirmDeviceSection: {\r\n deviceConfirmed: \"Gerät erfolgreich authorisiert!\",\r\n deviceConnected:\r\n \"Dein Gerät ist jetzt verbunden und kann verwendet werden.\",\r\n contApp: \"Weiter zur App\",\r\n deviceActivation: \"Geräteaktivierung\",\r\n enterCode: \"Gebe den auf deinem Gerät angezeigten Code ein\",\r\n oneTimeCode: \"Einmalcode\",\r\n confirmDeviceCode:\r\n \"Bitte bestätige, dass dies der auf deinem VR Headset angezeigte Code ist:\",\r\n notInitiated:\r\n \"Wenn Du diese Aktion nicht eingeleitet hast oder dieses Gerät nicht erkennst, wähle „Abbrechen“.\",\r\n continue: \"Weiter\",\r\n cancel: \"Abbrechen\",\r\n confirm: \"Bestätigen\",\r\n wait: \"Gib uns eine Sekunde ...\",\r\n error:\r\n \"Ein Fehler ist aufgetreten. Gerät konnte nicht authorisiert werden.\",\r\n couldNotConfirm: \"Bitte überprüfe den Aktivierungscode.\",\r\n backToLogin: \"Zurück zum Login\",\r\n codeRequired: \"Code ist erforderlich\",\r\n codeMin: \"Code muss mindest {min} Zeichen lang sein\",\r\n codeMax: \"Code darf maximal {max} Zeichen lang sein\",\r\n },\r\n audioSection: {\r\n startAnal: \"Analyse starten\",\r\n },\r\n scoreDetailsSection: {\r\n sessionScore: \"Session Score\",\r\n },\r\n sentimentSection: {\r\n breakdown: \"Aufschlüsselung nach Satz\",\r\n positive: \"Positiv\",\r\n negative: \"Negativ\",\r\n neutral: \"Neutral\",\r\n noAnalyzedSentence: \"Es wurden keine Sätze analysiert.\",\r\n sentimentRatio: \"Stimmung\",\r\n },\r\n pausesCard: {\r\n pauses: \"Pausen\",\r\n spentSubVerb: \"Du hast ausgegeben\",\r\n spentPrep: \"Zeit in Pause.\",\r\n number: \"Pausen gemacht\",\r\n average: \"Durchschnittliche Pausenzeit\",\r\n total: \"Gesamtpausenzeit\",\r\n timeUnit: \"Sekunden\",\r\n warning:\r\n \"Pausen werden ab 2 Sekunden definiert. Wenn die Stimme zu leise ist kann dies als Pause interpretiert werden.\",\r\n ppm: \"Pausen/ Minute\",\r\n ppmCaps: \"PAUSEN / MINUTE\",\r\n },\r\n movementRatioCard: {\r\n movementRatio: \"Bewegungsverhältnis\",\r\n headMovement: \"Kopfbewegung\",\r\n handMovement: \"Handbewegung\",\r\n noMoveData: \"Keine Bewegungsdaten gefunden.\",\r\n },\r\n managedUsersCard: {\r\n usersManaged: \"Benutzer, die du verwaltest\",\r\n noManagedUsers: \"Du verwaltest keine Benutzer\",\r\n },\r\n keywordsCard: {\r\n keywords: \"Schlüsselwörter\",\r\n basedOn: \"Basierend auf KI\",\r\n },\r\n audioCard: {\r\n yourAudio: \"Dein Audio\",\r\n audioFileInfo:\r\n \"Dies ist die Audiodatei, die du für diese Sitzung aufgenommen hast. Während du sie abspielst werden die Diagramme aktualisiert\",\r\n },\r\n volumeCard: {\r\n voiceVolume: \"Stimmen Lautstärke\",\r\n avgVoiceVol: \"Durchschnittliches Volumen\",\r\n },\r\n pitchCard: {\r\n voicePitch: \"Stimmhöhe\",\r\n avgVoicePitch: \"Durchschnittliche Tonhöhe\",\r\n },\r\n sentimentRatioCard: {\r\n sentimentRatio: \"Stimmung\",\r\n },\r\n appBar: {\r\n notConfirmedEmail:\r\n \"Email nicht bestätigt. Bitte klicke auf den Link in der Mail.\",\r\n sending: \"Senden...\",\r\n sendEmail: \"Email senden\",\r\n emailSent: \"Email gesendet!\",\r\n },\r\n toolbarMenu: {\r\n settings: \"Einstellungen\",\r\n mail: \"Mail\",\r\n refresh: \"Aktualisieren\",\r\n logout: \"Abmelden\",\r\n },\r\n profileDropdown: {\r\n loading: \"Laden...\",\r\n profile: \"Profil\",\r\n checkoutSettings: \"Überprüfe die Einstellungen\",\r\n logout: \"Abmelden\",\r\n },\r\n groupName: {\r\n newName: \"Neuer Gruppenname\",\r\n rename: \"Umbenennen\",\r\n nameRule: \"Name muss mindestens 3 Buchstaben lang sein\",\r\n },\r\n groupItem: {\r\n deleteGroup: \"Gruppe löschen\",\r\n areYouSure: \"Möchtest du die Gruppe wirklich löschen?\",\r\n deleteInfo: \"Dadurch werden auch alle damit verbundenen Videos gelöscht.\",\r\n confirm: \"Bestätigen\",\r\n cancel: \"Abbrechen\",\r\n\r\n leave: \"Gruppe verlassen\",\r\n join: \"Gruppe beitreten\",\r\n groupLeft: \"Du hast Gruppe {name} verlassen\",\r\n groupJoined: \"Du bist Gruppe {name} beigetreten\",\r\n confirmLeave: \"Bist du sicher, dass Du {name} verlassen möchtest?\",\r\n confirmJoin: \"Bist du sicher, dass Du {name} beitreten möchtest?\",\r\n },\r\n addGroupCard: {\r\n addNewGroup: \"Neue Gruppe hinzufügen\",\r\n groupName: \"Gruppenname\",\r\n users: \"Mitglieder hinzufügen\",\r\n submit: \"Bestätigen\",\r\n addGroup: \"Gruppe hinzufügen\",\r\n publicGroup: \"Öffentliche Gruppe\",\r\n isVisibleToCompany: \"Unternehmensgruppe\",\r\n },\r\n // Navigation panel\r\n nav: {\r\n dash: \"Dashboard\",\r\n sessions: \"Sessions\",\r\n list: \"Session Liste\",\r\n submitted: \"Eingereichte Sessions\",\r\n progress: \"Session Fortschritt\",\r\n groups: \"Gruppen\",\r\n news: \"Neuigkeiten\",\r\n goals: \"Ziele\",\r\n meetings: \"Meetings\",\r\n company: \"Unternehmen\",\r\n howto: \"Tutorials\",\r\n presentation: \"Präsentation\",\r\n admin: \"Admin Bereich\",\r\n sessionList: \"Session Liste\",\r\n sessionProgress: \"Session Fortschritt\",\r\n seminars: \"Seminare\",\r\n seminarsDash: \"Dashboard\",\r\n seminarsProg: \"Fortschritt\",\r\n seminarsAdmin: \"Seminar Admin\",\r\n },\r\n // New stuff\r\n global: {\r\n loading: \"Laden\",\r\n submit: \"Absenden\",\r\n empty: \"Leer\",\r\n close: \"Schliessen\",\r\n requiredf: \"Pflichtfeld\",\r\n cancel: \"Abbrechen\",\r\n files: \"Angehängte Dokumente\",\r\n confirm: \"Bestätigen\",\r\n none: \"Keine\",\r\n done: \"Bestätigen\",\r\n save: \"Änderungen speichern\",\r\n refresh: \"Aktualisieren\",\r\n reset: \"zurücksetzen\",\r\n clear: \"Auswahl zurücksetzen\",\r\n nomatch: \"Keine Elemente, die deiner Suche entsprechen\",\r\n upload: \"Hochladen\",\r\n create: \"Erstellen\",\r\n back: \"Zurück\",\r\n invalidURL: \"ungültige URL\",\r\n err: \"Es ist ein Fehler aufgetreten\",\r\n retry: \"Noch einmal versuchen\",\r\n backToLogin: \"Zurück zum Login\",\r\n backToSignUp: \"Zurück zur Anmeldung\",\r\n contApp: \"Weiter zur App\",\r\n toApp: \"PREZP Anwedung\",\r\n backToDashboard: \"Zurück zum Dashboard\",\r\n imprint: \"Impressum\",\r\n dataprotection: \"Datenschutz\",\r\n dataprotection_link:\r\n \"https://prezpstore.blob.core.windows.net/site-files/PREZP_Datenschutzerkla%CC%88rung_07112022.pdf?sp=r&st=2022-11-08T10:52:05Z&se=2032-11-08T18:52:05Z&spr=https&sv=2021-06-08&sr=b&sig=SRBEScXShur3bga4yonler4KzE447kXOhqazQLowMvo%3D\",\r\n feedback: \"Für Feedback und Fragen: info@prezp.com\",\r\n nodata: \"Keine Daten verfügbar\",\r\n remove: \"Entfernen\",\r\n },\r\n\r\n forms: {\r\n invalidform: \"Diese Form ist ungültig\",\r\n invalidfield: \"Dieses Feld ist ungültig\",\r\n reqfield: \"Dieses Feld ist erforderlich\",\r\n audiofile: \"Bitte gebe eine Audiodatei an\",\r\n videofile: \"Bitte gebe eine Videodatei an\",\r\n namelen3: \"Der Name muss mindestens 3 Buchstaben lang sein\",\r\n file: \"Bitte gebe eine Datei an\",\r\n invaliddata: \"Ungültige Eingabedaten\",\r\n errors: \"Kann mit vorhandenen Fehlern nicht fortgesetzt werden\",\r\n missing: \"Einige Dateien fehlten\",\r\n contact: {\r\n title: \"Kontakt\",\r\n email: \"Email\",\r\n emailPlaceHolder: \"demo@prezp.com\",\r\n message: \"Nachricht\",\r\n messagePlaceHolder: \"Schreibe eine Nachricht\",\r\n submit: \"Nachricht Senden\",\r\n invalidEmail: \"Ungültige Email\",\r\n emailRequired: \"Email ist erforderlich\",\r\n messageRequired: \"Nachricht ist erforderlich\",\r\n success: \"Nachricht wurde gesendet\",\r\n fail: \"Nachricht konnte nicht gesendet werden\",\r\n },\r\n },\r\n\r\n upsess: {\r\n button: \"Audio hochladen\",\r\n title: \"Neue Session erstellen aus Audiodatei\",\r\n subtitle: \"Neue Session erstellen\",\r\n text:\r\n 'Erstelle eine Session auf Basis einer Audiodatei. Die Analyse Ergebnisse können auf der Seite \"Session\" angezeigt werden. Die Analyse beginnt direkt nach dem Hochladen.',\r\n go: \"Jetzt erstellen\",\r\n hint:\r\n \"Wir unterstützen die gängigsten Audiodateiformate wie mp3, wav, ogg, m4a* und mpeg*\",\r\n smallprint:\r\n \"* In seltenen Fällen kann die Transkription für .m4a- oder .mpeg-Dateien nicht erstellt werden\",\r\n\r\n select: \"Präsentation wählen\",\r\n rec: \"Session aufzeichnen\",\r\n vrrec: \"VR Aufnahme\",\r\n rectip: \"Neue Session direkt aufzeichnen\",\r\n rectext: \"Nimm eine neue Session mit oder ohne Präsentation auf\",\r\n rejected_file:\r\n \"Nicht unterstütztes Dateiformat. Nur Audioformate erlaubt (mp3, wav, ogg, m4a, mpeg)\",\r\n errorHeading: \"Fehler\",\r\n videoTooBig:\r\n \"Dein Video ist zu groß (> 400 MB), um hochgeladen zu werden. Bitte verringere die Auflösung oder kürze Deine Präsentation.\",\r\n videoTooBigDownloadHint:\r\n \"Hinweis: Du kannst dein Video herunterladen, um die Auflösung zu reduzieren. Klick einfach die drei senkrechten Punkte in der rechten unteren Ecke des Videos an.\",\r\n uploading: \"Audio wird hochgeladen...\",\r\n uploadComplete: \"Audio-Upload abgeschlossen\",\r\n },\r\n upsessv: {\r\n button: \"Video hochladen\",\r\n title: \"Neue Session erstellen aus Videodatei\",\r\n text:\r\n \"Erstelle eine Session auf Basis einer Videodatei. Die Ergebnisse der Analyse werden in der Liste der Sessions angezeigt. Die Analyse startet direkt nach dem Hochladen.\",\r\n hint: \"Wir unterstützen als Videodateiformate ausschließlich mp4\",\r\n smallprint:\r\n \"* In seltenen Fällen kann eine Videodatei nicht verarbeitet werden\",\r\n rejected_file:\r\n \"Nicht unterstütztes Dateiformat. Es ist nur das MP4-Videoformat zulässig.\",\r\n noText: \"Es konnte kein gesprochener Text erkannt werden.\",\r\n uploading: \"Video wird hochgeladen...\",\r\n uploadComplete: \"Video-Upload abgeschlossen\",\r\n },\r\n transcription: {\r\n start: \"Start\",\r\n stop: \"Halt\",\r\n uploadRec: \"Aufnahme hochladen\",\r\n nextSlide: \"Nächste Folie\",\r\n resume: \"fortsetzen\",\r\n pause: \"pausiere\",\r\n audioOnly: \"Nur Audio\",\r\n video: \"Video\",\r\n total: \"Gesamt\",\r\n duration: \"Dauer: \",\r\n wpm: \"Wörter pro Minute: \",\r\n occurrences: \"Wortvorkommen: \",\r\n slides: \"Folien\",\r\n slide: \"Folie\",\r\n wpmLower: \" Wörter pro Minute\",\r\n transAudio: \"Transkribiertes Audio\",\r\n awaitingText: \"Warte auf Texterkennung...\",\r\n },\r\n\r\n quota: {\r\n title: \"PREZP Kontingent\",\r\n fast: \"Schnelle Verarbeitung\",\r\n relaxed: \"Entspannte Verarbeitung\",\r\n upgrade: \"Upgrade\",\r\n unlimited: \"Unbegrenzt\",\r\n\r\n tip: {\r\n liveTranscription:\r\n \"Dein verbleibendes Kontingent für Live-Transkriptionen (als Timer)\",\r\n analysis: \"Dein verbleibendes Kontingent für die Sessionanalyse\",\r\n aiFeedback: \"Dein verbleibendes Kontingent für KI-Feedbacks\",\r\n exceeded:\r\n \"Dein Kontingent ist aufgebraucht. Du kannst deinen Plan upgraden \\n oder bis zum Ende des nächsten Reset-Zeitraums warten.\",\r\n },\r\n },\r\n\r\n recording: {\r\n maxTimeWarning: {\r\n heading: \"Aufnahmelimit\",\r\n maxAllowedTime: \"{minutes} Minuten\",\r\n maxAllowedHint:\r\n \"Im Stil von TED Talks: Die maximale Dauer für die Sessionaufnahme liegt bei {0}. Für einen optimalen Vortrag empfehlen wir eine Zielzeit von {1}.\",\r\n confirm: \"Los Gehts\",\r\n cancel: \"Nicht bereit\",\r\n dontAskAgain: \"Nicht mehr anzeigen\",\r\n },\r\n shortRecordWarning: {\r\n heading: \"Kurze Aufnahme\",\r\n recordingTime: \"{seconds} Sekunden\",\r\n quotaLeftBoth:\r\n \"Deine Analysekontingente - Schnell: {fastQuota}, Entspannt: {relaxedQuota}\",\r\n recordingTimeHint:\r\n \"Die Aufnahme hat nur eine Dauer von {0}. Wenn du diese Aufnahme analysieren lässt, wird dies dein Analysekontingent um 1 verringern.\\n{1}\\nBist du dir sicher?\",\r\n confirm: \"Ja, Hochladen\",\r\n cancel: \"Abbrechen\",\r\n },\r\n noCompatibleDevice: \"Es sind keine kompatiblen Geräte verfügbar.\",\r\n noDevicePermission:\r\n \"Für die Aufnahme sind Kamera- und Mikrofonberechtigungen erforderlich.\",\r\n noMicrophonePermission:\r\n \"Für die Aufnahme sind Mikrofonberechtigungen erforderlich.\",\r\n },\r\n\r\n alerts: {\r\n beforeLeaveRecording:\r\n \"Seite wirklich verlassen? Die Aufnahme wird hierdurch abgebrochen!\",\r\n beforeLeaveUpload:\r\n \"Seite wirklich verlassen? Der Upload wird hierdurch abgebrochen!\",\r\n },\r\n\r\n groups: {\r\n groups: \"Gruppen\",\r\n public: \"Öffentliche Gruppen\",\r\n company: \"Unternehmensgruppen\",\r\n all: \"Alle Gruppen\",\r\n none: \"Du bist noch keiner Gruppe zugeordnet\",\r\n hint:\r\n \"Trenne Emails mit Komma (,) mit der Tabulatortaste ('Tab') oder mit der Eingabetaste ('Enter')\",\r\n created: \"Erstellt am\",\r\n delete: \"Gruppe löschen\",\r\n you: \"(du)\",\r\n creator: \"Gruppengründer\",\r\n joined: \"Mitglied seit\",\r\n removeu: \"Benutzer entfernen\",\r\n confrem: \"Möchtest du {u} wirklich aus der Gruppe entfernen?\",\r\n remself: \"dich selbst\",\r\n videos: \"Neueste Videos\",\r\n addv: \"Video hinzufügen\",\r\n addnv: \"Neues Video hinzufügen\",\r\n vidtitlehint: \"Wenn der Titel leer ist, wird er automatisch festgelegt\",\r\n vidtitlelabel: \"Videotitel\",\r\n viddesc: \"Videobeschreibung\",\r\n vidpinlabel: \"Dieses Video anheften?\",\r\n vidpinhint: \"Das gepinnte Video wird zuerst angezeigt\",\r\n link: \"Link\",\r\n vidlinklabel: \"Video-Link\",\r\n file: \"Datei\",\r\n novideos: \"Keine Videos gefunden\",\r\n delv: \"Video löschen\",\r\n editv: \"Video bearbeiten\",\r\n original_title: \"Original Titel\",\r\n author: \"Autor\",\r\n uploaded_by: \"Hochgeladen von\",\r\n posts: \"Neueste Beiträge\",\r\n addp: \"Beitrag hinzufügen\",\r\n addnp: \"Neuen Beitrag erstellen\",\r\n posttitle: \"Titel des Posts*\",\r\n postbody: \"Inhalt des Posts*\",\r\n postpin: \"Diesen Post anheften?\",\r\n bannerlabel: \"Lade das Bannerbild hoch?\",\r\n bannerfile: \"Bannerbild\",\r\n sendEmail: \"Post zusätzlich als Email versenden?\",\r\n includeInvited:\r\n \"Email an Benutzer, die Ihre Einladung noch nicht angenommen haben?\",\r\n files: \"Andere Dateien\",\r\n noposts: \"Keine Einträge gefunden\",\r\n delpost: \"Beitrag löschen\",\r\n editpost: \"Beitrag bearbeiten\",\r\n users: \"Gruppenmitglieder\",\r\n addu: \"Mitglied hinzufügen\",\r\n addnu: \"Neues Mitglied zur Gruppe hinzufügen\",\r\n addexcel: \"Neue Mitglieder aus Excelliste hinzufügen\",\r\n upload: \"Hochladen\",\r\n missingexcel: \"Kein Excel zum Hochladen\",\r\n uemail: \"Benutzer Email\",\r\n makeman: \"Zum Manager machen\",\r\n remman: \"Als Manager entfernen\",\r\n nousers: \"Keine Benutzer Emails, die {term} enthalten\",\r\n inv: {\r\n title: \"Deine Einladungen\",\r\n message: \"{inviter} hat Dich zur Gruppe {group} eingeladen\",\r\n accept: \"Akzeptieren\",\r\n decline: \"Ablehnen\",\r\n accepted: \"Du wurdest zur Gruppe hinzugefügt: {group}\",\r\n declined: \"Die Einladung von {inviter} wurde abgelehnt\",\r\n sent: \"Gesendete Einladungen\",\r\n nonesent: \"Keine gesendeten Einladungen\",\r\n },\r\n },\r\n inv: {\r\n title: \"Deine Einladungen\",\r\n message: \"{inviter} hat Dich zur Gruppe {group} eingeladen\",\r\n accept: \"Akzeptieren\",\r\n decline: \"Ablehnen\",\r\n accepted: \"Du wurdest zur Gruppe hinzugefügt: {group}\",\r\n declined: \"Die Einladung von {inviter} wurde abgelehnt\",\r\n sent: \"Gesendete Einladungen\",\r\n nonesent: \"Keine gesendeten Einladungen\",\r\n asmanager: \"Eingeladen als Manager\",\r\n asemployee: \"Eingeladen als Mitarbeiter\",\r\n },\r\n\r\n videos: {\r\n videos: \"Videos\",\r\n none: \"Keine Videos in dieser Gruppe\",\r\n edit: \"Video bearbeiten\",\r\n delete: \"Video löschen\",\r\n desc: \"Videobeschreibung\",\r\n title: \"Video Titel\",\r\n ispinned: \"Gepinnt?\",\r\n },\r\n\r\n howtos: {\r\n title: \"Tutorials\",\r\n loading: \"Tutorials werden geladen\",\r\n none: \"Keine Tutorials vorhanden\",\r\n },\r\n\r\n goals: {\r\n goals: \"Deine Ziele\",\r\n none: \"Du hast keine Ziele\",\r\n\r\n assigned: \"Zugewiesene Ziele\",\r\n tassigned: \"Alle Ziele, die dir zugewiesen wurden\",\r\n noassigned: \"Keine zugewiesene Ziele\",\r\n assigner: \"Von\",\r\n\r\n created: \"Erstellte Ziele\",\r\n tcreated: \"Alle Ziele, die du erstellt hast\",\r\n nocreated: \"Keine erstellten Ziele\",\r\n\r\n add: \"Ziel hinzufügen\",\r\n complete: \"Schließe {n} Sessions ab\",\r\n aim: \"Erreiche\",\r\n addc: \"Bedingung hinzufügen\",\r\n assign: \"Benutzer zuweisen\",\r\n assignedu: \"Zugewiesene Benutzer\",\r\n assigny: \"Selbst zuweisen?\",\r\n submit: \"Ziel festlegen\",\r\n remove: \"Ziel entfernen\",\r\n select: \"Wähle alle\",\r\n deselect: \"Wähle keine\",\r\n cond: \"Bedingung\",\r\n conds: \"Ziel Bedingungen\",\r\n ctype: \"Art der Bedingung\",\r\n\r\n score: \"Ergebnis Ziel\",\r\n due: \"Fälligkeitsdatum\",\r\n duration: \"Aufnahmedauer\",\r\n sentiment: \"Stimmung Ziel\",\r\n pitch: \"Stimmton Ziel\",\r\n volume: \"Lautstärke Ziel\",\r\n pauses: \"Pausen Ziel\",\r\n wpm: \"Sprechgeschwindigkeit Ziel\",\r\n overdue: \"Überfällig\",\r\n filler: \"Ziel für Füllwörter\",\r\n clarity: \"Ziel für Sprechdeutlichkeit\",\r\n repetition: \"Ziel für Wiederholungen\",\r\n overall: \"Ziel für Gesamtergebnis\",\r\n\r\n condtype: {\r\n date: \"Enddatum\",\r\n duration: \"Dauer (In Sekunden)\",\r\n sentiment: \"Stimmung\",\r\n pitch: \"Durchschnittliche Stimmhöhe\",\r\n vol: \"Durchschnittliche Lautstärke\",\r\n ppm: \"Pausen pro Minute\",\r\n wpm: \"Sprechgeschwindigkeit\",\r\n filler: \"Füllwörter\",\r\n clarity: \"Sprechdeutlichkeit\",\r\n repetition: \"Wiederholungen\",\r\n overall: \"Gesamtergebnis\",\r\n },\r\n\r\n condmsg: {\r\n overdue: \"Überfällig\",\r\n duein: \"Fällig\",\r\n duration:\r\n \"Zeichne eine Session mit einer Länge zwischen {n1} und {n2} Sekudnen auf\",\r\n session_score: \"Nur Sessions mit einem Ergebnis größer als {n} zählen\",\r\n sentiment: \"Strebe nach einem Stimmungswert zwischen {n1}% und {n2}%\",\r\n pitch:\r\n \"Strebe nach einer durchschnittliche Tonhöhe zwischen {n1}Hz und {n2}Hz\",\r\n volume:\r\n \"Strebe nach einem durchschnittliches Volumen zwischen {n1}% und {n2}%\",\r\n pauses: \"Versuche zwischen {n1} und {n2} Pausen pro Minute zu machen\",\r\n speech_speed: \"Strebe nach {n1} bis {n2} Wörtern pro Minute\",\r\n filler_words:\r\n \"Strebe nach einee Punktzahl von {n} oder höher in der Kategorie 'Füllwörter'.\",\r\n speech_clarity:\r\n \"Strebe nach einer Punktzahl von {n} oder höher in der Kategorie 'Sprechdeutlichkeit'.\",\r\n overall_score:\r\n \"Strebe nach einer Punktzahl von {n} oder höher in der Kategorie 'Gesamt'.\",\r\n repetition:\r\n \"Strebe nach einer Punktzahl von {n} oder höher in der Kategorie 'Wiederholungen'.\",\r\n },\r\n\r\n confirm: \"Bist du sicher?\",\r\n confirmmsg:\r\n \"Möchtest du dieses Ziel wirklich löschen? Die Aktion ist irreversibel.\",\r\n },\r\n\r\n news: {\r\n news: \"News\",\r\n read: \"Artikel lesen\",\r\n all: \"Alle lesen\",\r\n posted: \"Gepostet am\",\r\n },\r\n\r\n meet: {\r\n created: \"Erstellt von:\",\r\n expired: \"Dieses Meeting ist abgelaufen\",\r\n add: \"Meeting hinzufügen\",\r\n },\r\n\r\n pres: {\r\n pres: \"Präsentationen\",\r\n none: \"Du hast keine Präsentationen\",\r\n edit: \"Präsentationen bearbeiten\",\r\n dl: \"Herunterladen\",\r\n ed: \"Bearbeiten\",\r\n rm: \"Entfernen\",\r\n no_slides:\r\n \"Wenn hier keine Bilder zu sehen sind, dann konnten wir die Folien nicht konvertieren\",\r\n tip:\r\n \"Lade deine Präsentationen (.pdf) hoch, um sie in deinen VR-Headset zu benutzen\",\r\n },\r\n\r\n rec: {\r\n tiptitle: \"Tipps zum PREZP Recorder\",\r\n tiptext:\r\n \"Du kannst dein Mikrofon testen, um zu überprüfen, ob dein Signal gut ankommt.\",\r\n hide: \"Diesen Tipp nicht mehr zeigen\",\r\n voll: \"Zu leise\",\r\n volgood: \"Gut\",\r\n volh: \"Zu laut\",\r\n latest: \"Neuste Aufnahmen\",\r\n save: \"Aufnahme speichern unter\",\r\n sess: \"Neue Session\",\r\n base: \"Zur Basissession hinzufügen\",\r\n succ: \"Session erfolgreich erstellt\",\r\n fromVideo: \"Session aus Video wurde erstellt\",\r\n fail: \"Sitzung konnte nicht erstellt werden\",\r\n remove: \"Aufnahme entfernen\",\r\n removetext:\r\n \"Bist du sicher, dass du die folgende Aufnahme entfernen möchtest?\",\r\n mic: \"Mikrofonlautstärke einstellen\",\r\n mute: \"Mikrofon ein-/ausschalten\",\r\n devices: \"Geräte\",\r\n microphones: \"Mikrofon\",\r\n cameras: \"Kamera\",\r\n prefix: \"Aufgenommen am\",\r\n },\r\n\r\n meta: {\r\n dev: \"Abweichung\",\r\n earlier: \"Durchschnitt der früheren Sessions\",\r\n recent: \"Durchschnitt der letzten Sessions\",\r\n names: {\r\n pitch: \"Stimmton\",\r\n volume: \"Lautstärke\",\r\n pauses: \"Pausen\",\r\n sentiment: \"Stimmung\",\r\n session_score: \"Sessionergebnis\",\r\n speech_speed: \"Sprechgeschwindigkeit\",\r\n },\r\n units: {\r\n pitch: \"Hz\",\r\n volume: \"%\",\r\n pauses: \"Pausen/Minute\",\r\n },\r\n },\r\n\r\n slides: {\r\n slides: \"Folien\",\r\n tip: \"Präsentationsfolien\",\r\n pitch: \"Durchschnittliche Stimmhöhe\",\r\n volume: \"Durchschnittliche Lautstärke\",\r\n wpm: \"Wörter/Minute\",\r\n start: \"Startzeit\",\r\n end: \"Endzeit\",\r\n duration: \"Länge\",\r\n\r\n notfound: \"Keine Folie für diese Zeit\",\r\n none: \"Es gibt keine Folien für diese Session\",\r\n },\r\n\r\n lookup: {\r\n title: \"Wörter nachschlagen\",\r\n enter: \"Gib den zu suchenden Text ein\",\r\n exact: \"Genaue Übereinstimmung\",\r\n show: \"Alle anzeigen\",\r\n hide: \"Weniger anzeigen\",\r\n start: \"Mit dem Tippen beginnen...\",\r\n filter: \"Filtrieren mit\",\r\n missing: \"Nicht genügend Daten um Wörter anzuzeigen\",\r\n },\r\n\r\n cards: {\r\n avg: \"Durchschnitt\",\r\n pvolume: \"Grundlautstärke\",\r\n ppitch: \"Grundton\",\r\n wpm: \"Wörter/Minute\",\r\n keywords: \"Schlüsselwörter (KI-basiert)\",\r\n },\r\n\r\n bench: {\r\n choose: \"Benchmark wählen\",\r\n change: \"Benchmark ändern\",\r\n title: \"Benchmark Session\",\r\n text:\r\n \"Wähle ein Benchmark Session, die an die Graphen angezeigt wird. Damit kannst du dich mit anderen Sessions vegleichen.\",\r\n },\r\n\r\n sentences: {\r\n filter: \"Sätze filtrieren\",\r\n none: \"Keine Sätze gefunden\",\r\n pos: \"Positiv\",\r\n neu: \"Neutral\",\r\n neg: \"Negativ\",\r\n nochart: \"Keine Dateien für die Stimmung gefunden\",\r\n filters: {\r\n none: \"Kein\",\r\n vpos: \"Sehr positiv\",\r\n vneg: \"Sehr negativ\",\r\n },\r\n },\r\n\r\n subscription: {\r\n // Ok to use formal salutations for DE Stripe conventions\r\n title: \"Abonnements\",\r\n menutitle: \"Deine Abonnements\",\r\n activesub: \"Aktives Abonnement\",\r\n noactivesub: \"Kein Abonnement\",\r\n plans: \"Plan auswählen\",\r\n priceInterval: \"Preis / Intervall\",\r\n nextPayment: \"Nächste Zahlung fällig am\",\r\n subscriptionEnds: \"Abonnement endet am\",\r\n lastPayment: \"Letzte Zahlung\",\r\n paymentMethod: \"Zahlungsmethode\",\r\n subscriberSince: \"Abonnent seit\",\r\n canceledOn: \"Gekündigt zum\",\r\n\r\n latestInvoice: \"Letzte Rechnung\",\r\n viewAll: \"Alle ansehen\",\r\n invoiceNr: \"Rechnung#\",\r\n status: \"Status\",\r\n downloadInvoice: \"Rechnung Herunterladen\",\r\n\r\n active: \"Aktiv\",\r\n paid: \"Bezahlt\",\r\n\r\n monthly: \"monatlich\",\r\n yearly: \"jährlich\",\r\n monthlyPayment: \"Monatliche Zahlung\",\r\n yearlyPayment: \"Jährliche Zahlung\",\r\n month: \"Monat\",\r\n year: \"Jahr\",\r\n perMonth: \"pro Monat\",\r\n perYear: \"pro Jahr\",\r\n desctitle: \"Beschreibung\",\r\n payment: \"Bezahlung\",\r\n\r\n paymentTo: \"Zahlung an\",\r\n selectedPlan: \"Gewählter Plan\",\r\n subFor: \"Abonnement für\",\r\n billing: \"Rechnungsdaten\",\r\n checkout: \"Checkout\",\r\n\r\n buyAsCompany: \"Als Firma einkaufen\",\r\n vatData: \"USt.-Daten\",\r\n enterCompanyName: \"Firmenname\",\r\n companyNameRequired: \"Ihr Firmenname wird benötigt.\",\r\n companyNameMin: \"Ihr Firmenname ist zu kurz.\",\r\n enterVatId: \"USt.-ID\",\r\n vatIdRequired: \"Ihre USt.-ID wird benötigt.\",\r\n vatIdInvalid: \"Ihre USt.-ID ist ungültig.\",\r\n confirmVatId: \"USt.-ID Bestätigen\",\r\n couldNotValidate: \"USt.-ID konnte nicht validiert werden.\",\r\n vatIdConfirmed: \"USt.-ID erfolgreich bestätigt.\",\r\n vatIdValidated: \"Ihre USt.-ID wurde validiert.\",\r\n vatServiceDown:\r\n \"Der Service zur Validierung der USt.-ID ist derzeit nicht verfügbar. Bitte versuchen Sie es später noch einmal.\",\r\n vatServiceOverload:\r\n \"Der Service zur Validierung der USt.-ID ist derzeit überlastet. Bitte versuchen Sie es später noch einmal.\",\r\n companyIncomplete: \"Die Firmenangaben sind unvollständig.\",\r\n reverseCharge:\r\n \"Reverse Charge: Steuerschuld liegt beim Leistungsempfänger.\",\r\n\r\n product: \"Produkt\",\r\n cycle: \"Zyklus\",\r\n duration: \"Dauer\",\r\n price: \"Preis\",\r\n netTotal: \"Nettosumme\",\r\n vat: \"USt\",\r\n total: \"Gesamtsumme\",\r\n coupon: \"Coupon\",\r\n redeem: \"Einlösen\",\r\n enterCode: \"Coupon-Code\",\r\n redeemed: \"Eingelöst\",\r\n remove: \"Entfernen\",\r\n discountMonths:\r\n \"* Gutschein gilt für die ersten {d} Monate, anschließend gilt der Standardpreis des gewählten Plans.\",\r\n discountForever: \"* Gutschein gilt bis das Abonnement beendet wird.\",\r\n forever: \"für immer\",\r\n legalNotice:\r\n \"Indem Sie Ihr Abonnement bestätigen, gestatten Sie 111 Medien Service GmbH, zukünftige Zahlungen Ihrem Zahlungsinstrument gemäß den allgemeinen Geschäftsbedingungen zu belasten. Sie können Ihr Abonnement jederzeit kündigen.\",\r\n\r\n cancel: \"Abbrechen\",\r\n back: \"Zurück\",\r\n next: \"Fortfahren\",\r\n purchaseSubscription: \"Zahlungspflichtig Abonnieren\",\r\n\r\n pricing: {\r\n title: \"Wähle Deinen PREZP-Plan\",\r\n description:\r\n \"PREZP bietet eine breite Auswahl an verschiedenen Preisplänen, um Deinen Bedürfnissen perfekt gerecht zu werden. Für Einzelpersonen und auf Unternehmensebene.\",\r\n fetching: \"Preise abrufen...\",\r\n orContinueFree:\r\n \"Oder fahre mit der kostenlosen Version fort, um PREZP mit Einschränkungen zu erkunden.\",\r\n continueFree: \"Weiter mit PREZP Free\",\r\n compare: \"Preispläne vergleichen\",\r\n },\r\n\r\n cancelSubscription: \"Abonnement kündigen\",\r\n deleteSubscription: \"Abonnement löschen\",\r\n areYouSure: \"Bist Du sicher, dass Du Dein Abonnement beenden möchtest?\",\r\n canceled: \"Abonnement Gekündigt\",\r\n youCanceled:\r\n \"Du hast dein Abo gekündigt. Dir stehen weiterhin alle Vorteile deines übrigen Kontigents zur Verfügung, bis dein Abonemment endgültig gelöscht wird.\",\r\n toSubscribeAgain:\r\n \"Um PREZP erneut zu abonnieren musst Du bis zum Ende des aktuellen Zahlungszyklus warten.\",\r\n },\r\n\r\n checkout: {\r\n success: {\r\n statement: \"Danke\",\r\n message: \"Deine PREZP-Plan-Bestellung wurde erfolgreich abgeschlossen\",\r\n contact:\r\n \"Eine E-Mail mit den Details zu Deiner Bestellung \\n\" +\r\n \"wurde an die angegebene E-Mail-Adresse gesendet.\",\r\n action: \"Starten\",\r\n updating: \"Benutzerdaten werden aktualisiert...\",\r\n },\r\n error: {\r\n statement: \"Zahlungsfehler\",\r\n message:\r\n \"Es tut uns leid. Deine Zahlung konnte nicht verarbeitet werden. \\n\" +\r\n \"Bitte versuche es erneut.\",\r\n contact:\r\n \"Wenn das Problem weiterhin besteht, wende dich bitte an unser Support-Team.\",\r\n action: \"Zurück\",\r\n },\r\n pending: {\r\n statement: \"Zahlung ausstehend\",\r\n message:\r\n \"Deine Zahlung wird noch bearbeitet oder erfordert eine zusätzliche Bestätigung. \\n\" +\r\n \"Bitte überprüfe Dein E-Mail-Postfach für weitere Anweisungen.\",\r\n contact:\r\n \"Wenn die Zahlung nicht abgeschlossen werden kann, wende dich bitte an unser Support-Team.\",\r\n action: \"Zurück\",\r\n },\r\n },\r\n\r\n tier: {\r\n billedMonthly: \"Monatlich abgerechnet\",\r\n billedYearly: \"Jährlich abgerechnet\",\r\n billedCustom: \"Je nach Bedarf\",\r\n individual: \"Individuell\",\r\n savePercentYearly: \"Spare {percent}% mit jährlicher Abrechnung\",\r\n saveAmountYearly: \"Spare {currency} {amount} mit jährlicher Abrechnung\",\r\n subscribe: \"Abonnieren\",\r\n contactSales: \"Vertrieb kontaktieren\",\r\n\r\n badge: {\r\n explore: \"Um PREZP zu erkunden\", // free\r\n casual: \"Für lockeres Training\", // basic\r\n recommended: \"Empfohlen für die meisten Benutzer\", // standard / basic(mvp)\r\n business: \"Für Business-Training\", // premium\r\n },\r\n },\r\n\r\n features: {\r\n // single features - keep in sync with permission scope naming\r\n relaxed_live_transcription:\r\n \"Entsp. Live-Transkriptionen ({hours}h / Monat)\",\r\n fast_live_transcription: \"Schnelle Live-Transkriptionen ({hours}h / Monat)\",\r\n\r\n relaxed_analysis: \"{count} Entspannte, bewertete Analysen\",\r\n fast_analysis: \"{count} Schnelle, bewertete Analysen\",\r\n\r\n relaxed_ai_feedback: \"{count} Entspannte KI-Feedbacks\",\r\n fast_ai_feedback: \"{count} Schnelle KI-Feedbacks\",\r\n\r\n limited_public_group: \"Begrenzter Zugriff auf öffentliche Gruppen\",\r\n full_public_group: \"Zugriff auf öffentliche Gruppen\",\r\n b2b_group: \"Zugang zu B2B-Gruppen\",\r\n\r\n basic_tutorial: \"Grundlegende Tutorials\",\r\n advanced_tutorial: \"Erweiterte Tutorials\",\r\n expert_tutorial: \"Experten-Tutorials\",\r\n\r\n coach_review_booking: \"Human-Coach™-Review-Buchungen\",\r\n coach_1on1_booking: \"Human-Coach™-Einzelbuchungen\",\r\n\r\n seminar: \"Zugang zu Seminaren\",\r\n challenge: \"Zugang zu Challenges\",\r\n course: \"Zugang zu Kursen\",\r\n vr_mode: \"PREZP VR Zugang\",\r\n sso: \"Single Sign On\",\r\n custom_idp: \"Benutzerdefinierte IDP-Integration\",\r\n external_api: \"Externe API-Integration\",\r\n onboarding: \"Onboarding & Schulung\",\r\n tech_support: \"Dedizierter technischer Support\",\r\n dev_support: \"Dedizierter Entwicklersupport\",\r\n sla: \"SLA + mit 99 % Verfügbarkeit\",\r\n redundant_service: \"Redundante Dienste\",\r\n\r\n // feature combos - just used for compact lists\r\n everything_basic: \"Beinhaltet alles vom Basic Plan\",\r\n everything_premium: \"Beinhaltet alles vom Premium Plan\",\r\n\r\n unlimited_relaxed_hours_and_workers:\r\n \"Unbegrenzt entsp. Stunden & KI-Arbeiter\",\r\n unlimited_fast_hours_and_workers:\r\n \"Unbegrenzt schnelle Stunden & KI-Arbeiter\",\r\n\r\n basic_tutorial_and_challenge: \"Grundlegende Tutorials & Challenges\",\r\n advanced_tutorial_and_challenge: \"Erweiterte Tutorials & Challenges\",\r\n expert_tutorial_challenge_and_course:\r\n \"Experten-Tutorials, Challenges und Kurse\",\r\n\r\n seminar_and_public_group: \"Seminare & öffentliche Gruppen\",\r\n seminar_public_and_b2b_group: \"Seminare, öffentliche- & B2B-Gruppen\",\r\n\r\n sso_and_custom_idp: \"SSO & Eigene IDP-Integration\",\r\n dev_tech_support: \"Dedizierter Technischer Support\",\r\n\r\n sla_and_redundant_service: \"SLA + Redundante Dienste\",\r\n },\r\n\r\n company: {\r\n title: \"Unternehmen\",\r\n partof: \"Du bist schon einem Unternehmen beigetreten\",\r\n notpartof: \"Du bist keinem Unternehmen beigetreten\",\r\n create: \"Erstelle ein Unternehmen\",\r\n createbtn: \"Unternehmen erstellen\",\r\n invitations:\r\n \"Oder akzeptiere eine Einladung um einem bestehenden Unternehmen beizutreten\",\r\n noinv: \"Du hast keine Einladungen\",\r\n\r\n companies: \"Unternehmen\",\r\n getting: \"Unternehmen abrufen...\",\r\n notfound: \"Keine Unternehmen gefunden\",\r\n\r\n none: \"Du hast kein Unternehmen\",\r\n inactive: \"Dieses Unternehmen ist nicht aktiviert\",\r\n pdesc: \"Wähle einen Plan und kaufe ein Abonnement\",\r\n\r\n plans: \"Pläne\",\r\n changep: \"Plan ändern\",\r\n selectp: \"Neuen Plan auswählen\",\r\n same: \"Wähle einen anderen Plan\",\r\n\r\n emp: \"Mitarbeiter\",\r\n esingle: \"Mitarbeiter\",\r\n invite: \"Benutzer einladen\",\r\n adde: \"Mitarbeiter hinzufügen\",\r\n eemail: \"Benutzer Email\",\r\n makeman: \"Zum Manager machen?\",\r\n rem: \"Entfernen\",\r\n sure: \"Möchtest du diesen Mitarbeiter wirklich entfernen?\",\r\n crole: \"Rolle wechseln\",\r\n crolefor: \"Rolle wechseln für\",\r\n noemp: \"Noch keine Mitarbeiter im Unternehmens\",\r\n\r\n edit: \"Name des Unternehmens bearbeiten\",\r\n name: \"Name des Unternehmens\",\r\n },\r\n\r\n charts: {\r\n avghand: \"Durchschnittliche Handbewegung\",\r\n avghead: \"Durchschnittliche Kopfbewegung\",\r\n ppm: \"Pausen/Minute\",\r\n sent: \"Gefühl\",\r\n pitchot: \"Stimmton im Laufe der Zeit\",\r\n scoreot: \"Sessionergebnis im Laufe der Zeit\",\r\n avgvp: \"Durchschnittliche Stimmhöhe\",\r\n avgvol: \"Durchschnittliche Lautstärke\",\r\n avgwpm: \"Durchschnittliche Wörter/Minute\",\r\n sscore: \"Sessionergebnis\",\r\n points: \"{n} Punkte zeigen\",\r\n all: \"alle\",\r\n },\r\n\r\n sess: {\r\n noneselected: \"Keine Session gewählt\",\r\n shared: \"Mit {n} Personen geteilt\",\r\n sharedWithOne: \"Mit {n} Person geteilt\",\r\n sharedWith: \"Geteilt mit \",\r\n sharedWithNone: \"Mit niemandem geteilt\",\r\n noOneToShareWith:\r\n \"Du kannst Sessions nur mit Usern aus einer deiner Gruppen teilen.\",\r\n private: \"Privat\",\r\n duration: \"Dauer\",\r\n none: \"Keine Sessions gefunden\",\r\n noneseelcted: \"Keine Session ausgewählt\",\r\n edit: \"Session bearbeiten\",\r\n name: \"Name der Sessions\",\r\n vis: \"Sichtbarkeit\",\r\n updated: \"Session aktualisiert\",\r\n filter: \"Filtern von Sitzungen\",\r\n keywords: \"Schlüsselwörter\",\r\n\r\n sharing: \"Siehe geteilte Sessions an\",\r\n usersSharing: \"Benutzer, die Sessions mit dir teilen\",\r\n usersManaged: \"Benutzer, die Session mit dir Sessions teilen\",\r\n otherUsers: \"Andere Benutzer aus Gruppen\",\r\n changeuser: \"Benutzer wechseln\",\r\n nouser: \"Kein Benutzer ausgewählt\",\r\n sharedback: \"Zurück zu geteilten Sessions\",\r\n\r\n list: \"Liste\",\r\n progress: \"Fortschritte\",\r\n progresslimit: \"Wähle die Anzahl der anzuzeigenden Sessions\",\r\n\r\n filters: {\r\n date: {\r\n before: \"Vor dem Datum\",\r\n after: \"Nach dem Datum\",\r\n between: \"Zwischen zwei Daten\",\r\n },\r\n duration: {\r\n longer: \"Länger als (Minuten)\",\r\n shorter: \"Kürzer als (Minuten)\",\r\n between: \"Zeitspanne (Minuten)\",\r\n },\r\n name: {\r\n startsWith: \"Beginnt mit\",\r\n endsWith: \"Endet mit\",\r\n includes: \"Enthält\",\r\n exact: \"Genaue Übereinstimmung\",\r\n },\r\n score: {\r\n greater: \"Größer als\",\r\n less: \"Weniger als\",\r\n range: \"Punktebereich\",\r\n },\r\n pres: {\r\n title: \"Nach Präsentation filtern\",\r\n label: \"Präsentation auswählen\",\r\n },\r\n },\r\n\r\n hanging: {\r\n title: \"Andere Benutzer\",\r\n text:\r\n \"Du teilst diese Session immer noch mit einigen Benutzern, mit denen du keiner Gruppe mehr angehörst.\",\r\n removeOneDialogTitle:\r\n \"Bist du sicher, dass du diese Session nicht mehr mit {u} teilen möchtest?\",\r\n removeOneDialogText:\r\n \"Diese Aktion ist irreversibel. Du musst mit {u} in mindestens einer Gruppe sein, um später wieder ein Session mit ihnen teilen zu können.\",\r\n removeAllButton: \"Entferne alle diese Benutzer\",\r\n removeAllDialogTitle:\r\n \"Bist du sicher, dass du alle diese Benutzer entfernen möchtest?\",\r\n removeAllDialogText:\r\n \"Diese Aktion ist irreversibel. Du musst mit jedem dieser Benutzer in mindestens einer Gruppe sein, um später wieder eine Sitzung mit ihnen teilen zu können.\",\r\n snack: {\r\n removeAll: \"Erfolg. Benutzer entfernt\",\r\n removeSome:\r\n \"Nicht alle Benutzer wurden entfernt. Benutzer {emails} konnten nicht entfernt werden\",\r\n removeFail:\r\n \"Die Sitzung konnte nicht für einen oder mehrere Benutzer freigegeben werden\",\r\n },\r\n },\r\n\r\n clear: {\r\n title: \"Alle Benutzer entfernen\",\r\n text: `Du musst deine Aktion noch bestätigen, indem du auf \"Bestätigen\" klickst`,\r\n },\r\n },\r\n\r\n words: {\r\n word: \"Wort\",\r\n filler: \"Füllwort\",\r\n stop: \"Stoppwort\",\r\n normal: \"Standardwort\",\r\n },\r\n\r\n admin: {\r\n activeProduct: \"Aktives Produkt\",\r\n companies: \"Unternehmen\",\r\n coupons: \"Stripe Gutscheine\",\r\n createNewProduct: \"Neues Produkt anlegen\",\r\n createProduct: \"Produkt anlegen\",\r\n maximumAllowedEmployees: \"Maximale Mitarbeiteranzahl\",\r\n page: \"Admin Bereich\",\r\n productDescription: \"Produktbeschreibung\",\r\n productName: \"Produktname\",\r\n productPrice: \"Produktpreis (in Euro)\",\r\n products: \"Stripe Produkte\",\r\n recorder: \"Dev-Rekorder\",\r\n slides: \"Folien\",\r\n tuts: \"Tutorials\",\r\n transcription: \"Transkription\",\r\n uploadTooltip: \"Excelliste mit Benutzern hochladen\",\r\n users: \"Benutzer\",\r\n usersPageHeader: \"Benutzer\",\r\n verifyEmail: \"Verifiziere die E-Mail Adresse dieses Benutzers.\",\r\n },\r\n\r\n permissions: {\r\n editTitle: \"Berechtigungen verwalten\",\r\n editText: \"Hinzufügen, Entfernen oder Erweitern von Berechtigungen für\",\r\n removeTitle: \"Bist du sicher?\",\r\n removeText:\r\n \"Du kannst den gleichen Berechtigungstyp zu einem späteren Zeitpunkt hinzufügen.\",\r\n modifyTitle: \"Zähler aktualisieren\",\r\n add: \"Hinzufügen\",\r\n confirm: \"Bestätigen\",\r\n inherit: \"Geerbt von\",\r\n counter: \"Verbleibende Anzahl\",\r\n seconds: \"Verbleibende Sekunden\",\r\n\r\n seminar: \"Seminare\",\r\n upload_audio: \"Audio hochladen\",\r\n upload_video: \"Video hochladen\",\r\n session_training: \"Session Training\",\r\n can_share_with_all: \"Sessions mit allen Gruppenmitgliedern teilen\",\r\n teacher: \"Dozentenzugang\",\r\n student: \"Studentenzugang\",\r\n live_transcription_relaxed: \"Entspannte Live-Transkription\",\r\n live_transcription_fast: \"Schnelle Live-Transkription\",\r\n analysis_relaxed: \"Entspannte Analyse\",\r\n analysis_fast: \"Schnelle Analyse\",\r\n ai_feedback_relaxed: \"Entspanntes KI-Feedback\",\r\n ai_feedback_fast: \"Schnelles KI-Feedback\",\r\n public_group_limited: \"Eingeschränkte öffentliche Gruppe\",\r\n public_group_full: \"Vollständige öffentliche Gruppe\",\r\n b2b_group: \"B2B-Gruppe\",\r\n tutorial_basic: \"Grundlagen-Tutorial\",\r\n tutorial_advanced: \"Fortgeschrittenen-Tutorial\",\r\n tutorial_expert: \"Experten-Tutorial\",\r\n coach_booking_review: \"Coach Review Buchung\",\r\n coach_booking_1on1: \"Coach 1:1 Buchung\",\r\n challenge: \"Herausforderungen\",\r\n course: \"Kurse\",\r\n vr_mode: \"VR-Modus\",\r\n sso: \"Single Sign-On (SSO)\",\r\n custom_idp: \"Benutzerdefinierter Identitätsanbieter (IDP)\",\r\n external_api: \"Externe API\",\r\n onboarding: \"Onboarding\",\r\n support_tech: \"Technischer Support\",\r\n support_dev: \"Entwickler-Support\",\r\n sla: \"Service Level Agreement (SLA)\",\r\n redundant_service: \"Redundanter Service\",\r\n },\r\n\r\n roles: {\r\n editTitle: \"Rollen verwalten\",\r\n editText: \"Hinzufügen und Entfernen von Rollen für\",\r\n removeTitle: \"Bist du sicher?\",\r\n removeText:\r\n \"Du kannst die gleiche Rolle zu einem späteren Zeitpunkt hinzufügen.\",\r\n modifyTitle: \"Datum ändern\",\r\n add: \"Hinzufügen\",\r\n confirm: \"Bestätigen\",\r\n\r\n subscriberFree: \"Subscriber Free\",\r\n subscriberBasic: \"Subscriber Basic\",\r\n subscriberStandard: \"Subscriber Standard\",\r\n subscriberPremium: \"Subscriber Premium\",\r\n subscriberEnterprise: \"Subscriber Enterprise\",\r\n employee: \"Mitarbeiter\",\r\n manager: \"Manager\",\r\n owner: \"Besitzer\",\r\n admin: \"Admin\",\r\n user: \"Benutzer\",\r\n },\r\n\r\n feature_perms: {\r\n editTitle: \"Berechtigungen verwalten\",\r\n editText: \"Hinzufügen, Entfernen oder Erweitern von Berechtigungen für\",\r\n removeTitle: \"Bist du sicher?\",\r\n removeText:\r\n \"Du kannst den gleichen Berechtigungstyp zu einem späteren Zeitpunkt hinzufügen.\",\r\n modifyTitle: \"Datum ändern\",\r\n add: \"Hinzufügen\",\r\n confirm: \"Bestätigen\",\r\n analysis_relaxed_count: \"Entspannte Analyse Zähler\",\r\n analysis_fast_count: \"Schnelle Analyse Zähler\",\r\n ai_feedback_relaxed_count: \"Entspannte KI-Feedback Zähler\",\r\n ai_feedback_fast_count: \"Schnelle KI-Feedback Zähler\",\r\n live_transcription_relaxed_seconds:\r\n \"Entspannte Live-Transkription Sekunden\",\r\n live_transcription_fast_seconds: \"Schnelle Live-Transkription Sekunden\",\r\n },\r\n\r\n activeUser: {\r\n search: \"Benutzer suchen\",\r\n none: \"Keine Benutzer gefunden\",\r\n indef: \"Unbestimmt\",\r\n mins: \" Minuten\",\r\n hours: \" Stunde(n)\",\r\n days: \" Tag(e)\",\r\n months: \" Monat(e)\",\r\n both: \"Aktiv/Deaktiviert\",\r\n active: \"Aktiv\",\r\n inactive: \"Deaktiviert\",\r\n activate: \"Aktivieren\",\r\n deactivate: \"Deaktivieren\",\r\n change: \"Aktivstatus für folgenen Benutzer wechseln\",\r\n until: \"bis\",\r\n confirm: \"Bist du sicher, dass du diesen Benutzer deaktivieren möchtest?\",\r\n activateMsg: \"Bitte wähle aus, wie lange der Benutzer aktiv bleiben soll.\",\r\n },\r\n\r\n def_pres: {\r\n title: \"Standardfolien\",\r\n current: \"Derzeit hochgeladene Folien\",\r\n currentmsg:\r\n \"Dies sind die Folien, die jeder neue Benutzer erhält, wenn er sich für PREZP registriert\",\r\n none: \"Es sind keine Standardfolien hochgeladen\",\r\n upload: \"Neue Folien hochladen\",\r\n uploadBtn: \"Hochladen\",\r\n remove: \"Standardfolien entfernen\",\r\n removeBtn: \"Entfernen\",\r\n confirm: \"Bist du sicher, dass du diese Folien entfernen willst?\",\r\n no_slides: \"Diese Folien können nicht zu Bilder gewandelt werden\",\r\n },\r\n\r\n snack: {\r\n users: {\r\n rupdated: \"Benutzerrolle aktualisiert\",\r\n rem: \"Benutzer entfernt\",\r\n emails: \"Ein oder mehrere Emails sind ungültig\",\r\n alreadyin: \"Ein oder mehrere Benutzer sind schon in der Gruppe\",\r\n },\r\n comp: {\r\n created: \"Unternehmen erfolgreich erstellt\",\r\n invited: \"Benutzer erfolgreich eingeladen\",\r\n rupdated: \"Benutzerrolle aktualisiert\",\r\n upsuccess: \"Upgrade erfolgreich\",\r\n upfail: \"Das Upgrade war nicht erfolgreich\",\r\n rejected: \"Folgende Benutzer wurden nicht eingeladen: \",\r\n success: \"Die Einladung war erfolgreich\",\r\n createfail: \"Unternehmen konnte nicht erstellt werden\",\r\n empmax: \"Zahl der Mitarbeiter mehr als max. erlaubte\",\r\n conflict: \"Ein oder mehrere Nutzer sind bereits in einem Unternehmen\",\r\n },\r\n groups: {\r\n unadded: \"Diese Benutzer konnten nicht hinzugefügt werden: \",\r\n del: \"Gruppe erfolgreich gelöscht\",\r\n added: \"Gruppe erfolgreich hinzugefügt\",\r\n\r\n ingroup: \"Benutzer bereits in Gruppe\",\r\n allin: \"Alle Benutzer bereits in der Gruppe\",\r\n somein: \"Einige Benutzer gehören bereits zu dieser Gruppe:\",\r\n },\r\n news: {\r\n added: \"Artikel erfolgreich gelöscht\",\r\n },\r\n pres: {\r\n del: \"Präsentation erfolgreich gelöscht\",\r\n cannotDelete:\r\n \"Du kannst diese Präsentation nicht löschen, Du hast bereits eine Session zu Ihr aufgenommen.\",\r\n },\r\n sess: {\r\n delsuccess: \"Session erfolgreich gelöscht\",\r\n delfail: \"Session konnte nicht gelöscht werden\",\r\n metafail:\r\n \"Die Metaanalyse-Einstellungen konnten nicht aktualisiert werden\",\r\n benchfail: \"Benchmark-Session konnten nicht abgerufen werden\",\r\n basefail: \"Sessions konnten nicht hochgeladen werden\",\r\n fetchfail: \"Sessions für {e} konnten nicht abgerufen werden\",\r\n },\r\n vid: {\r\n editsuccess: \"Video erfolgreich bearbeitet\",\r\n editfail: \"Fehler beim Bearbeiten des Videos\",\r\n delsuccess: \"Video erfolgreich gelöscht\",\r\n delfail: \"Fehler beim Löschen des Videos\",\r\n },\r\n auth: {\r\n fail: \"Es ist ein Fehler aufgetreten, zurück zum Login\",\r\n confirmfail: \"Diese Email konnte nicht überprüft werden\",\r\n sent: \"Email gesendet\",\r\n sendfail: \"Email konnte nicht gesendet werden\",\r\n reset: \"Passwort erfolgreich zurückgesetzt\",\r\n resetfail: \"Passwort konnte nicht zurückgesetzt werden\",\r\n deviceConfirmFail: \"Das Gerät konnte nicht überprüft werden\",\r\n },\r\n stripe: {\r\n // Ok to use formal salutations for DE Stripe conventions\r\n elempty: \"Element kann nicht leer sein\",\r\n elinvalid: \"Ungültige Zahlungsinformationen\",\r\n elincomplete: \"Unvollständige Daten\",\r\n purchase: \"Erfolg\",\r\n pfail: \"Abonnement konnte nicht gekauft werden\",\r\n entercode: \"Bitte geben Sie einen Gutscheincode ein\",\r\n codeinvalid: \"Ungültiger Gutscheincode\",\r\n subscribing: \"Dein Abonnement wird eingerichtet...\",\r\n subGetError: \"Fehler beim Abrufen des Abonnements\",\r\n subCancelError: \"Fehler bei der Kündigung des Abonnements\",\r\n },\r\n meta: {\r\n attrs: \"Bitte wähle mindestens ein Attribut aus\",\r\n },\r\n },\r\n settings: {\r\n title: \"Benutzereinstellungen\",\r\n pfp: \"Profilbild\",\r\n dark: \"Dunklen Modus aktivieren\",\r\n alreadyup: \"Du hast bereits eine oder mehrere Basis Sessions hochgeladen.\",\r\n analyzed: \"Sessions wurden analysiert.\",\r\n notanalyzed: \"Sessions wurden noch nicht analysiert.\",\r\n upAt: \"Hochgeladen am\",\r\n avgVol: \"Durchschnittliches Volumen\",\r\n avgPitch: \"Durchschnittliche Tonhöhe\",\r\n actions: \"Aktionen\",\r\n items_per_page_text: \"Einträge pro Seite\",\r\n },\r\n baseline: {\r\n up: \"Basis Session hochladen\",\r\n base: \"Basissessions\",\r\n base1: \"Basissession (1)\",\r\n base2: \"Basissession (2)\",\r\n base3: \"Basissession (3)\",\r\n text:\r\n \"Die Basis Sessions werden genutzt um sie mit künftigen Aufnahmen zu vergleichen. Sie sollen dir eine Orientierung geben wie sich deine Stimme unter normalen Bedingungen verhält.\",\r\n lang: \"Sprache wählen\",\r\n },\r\n\r\n move: {\r\n title: \"Bewegungsanalyse\",\r\n none:\r\n \"Du hast kein VR-Training absolviert, deshalb wurden von PREZP keine Bewegungsdaten von dir analysiert\",\r\n head: {\r\n title: \"Kopfbewegung\",\r\n avg: \"Durchschnittliche Kopfbewegung\",\r\n tip: \"Zeigt die Kopfbewegung in der VR während der Präsentation an\",\r\n },\r\n hand: {\r\n title: \"Handbewegung\",\r\n avg: \"Durchschnittliche Handbewegung\",\r\n tip: \"Zeigt die Kopfbewegung in der VR während der Präsentation an\",\r\n },\r\n ratio: {\r\n title: \"Bewegungsverhältnis\",\r\n tip: \"Dies zeigt das Verhältnis zwischen Kopf- und Handbewegung\",\r\n },\r\n },\r\n\r\n number: {\r\n toosmall: \"Die Zahl ist zu klein (min.: {n})\",\r\n toobig: \"Die Zahl ist zu groß (max.: {n})\",\r\n },\r\n\r\n seminars: {\r\n dash: {\r\n title: \"Seminar Dashboard\",\r\n noSeminars: \"Du hast noch kein Seminar\",\r\n adminLink: \"Verwaltung\",\r\n progressLink: \"Fortschritt\",\r\n yourSubmissions: \"Deine Aufzeichnungen\",\r\n feedback: \"Feedback für mich\",\r\n submissions: \"Aufzeichnungen\",\r\n noSubmissions: \"Bisher gibt es keine Aufzeichnungen\",\r\n seeAllButton: \"Alle anzeigen\",\r\n participants: \"Teilnehmer\",\r\n\r\n edit: \"Bearbeiten\",\r\n view: \"Ansehen\",\r\n publish: \"Veröffentlichen\",\r\n form: {\r\n publish: \"Dieses Seminar veröffentlichen\",\r\n title: \"Titel\",\r\n description: \"Beschreibung\",\r\n lecturer: \"Dozent(-in)\", // dunno how to translate\r\n price: \"Preis\",\r\n success: \"Erfolgreich veröffentlichtes Seminar\",\r\n fail: \"Beim Veröffentlichen dieses Seminars ist ein Fehler aufgetreten\",\r\n },\r\n },\r\n admin: {\r\n title: \"Seminar Verwaltung\",\r\n addBtn: \"Seminar hinzufügen\",\r\n addTitle: \"Neues Seminar hinzufügen\",\r\n addText:\r\n \"Hiermit kann ein Seminar erstellt werden. Kurs-Elemente wie z.B. ein Lückentext, Video-Feedback-Übungen oder andere Kurs-Bestandteile können einfach und flexibel erstellt und hinzufügt werden. Veröffentliche danach das Seminar und lade deine Teilnehmer ganz bequem dazu ein.\",\r\n\r\n feedback: {\r\n title: \"Gib dem Benutzer Feedback\",\r\n requested: \"Angefordertes Feedback\",\r\n desc:\r\n \"Die folgenden Videoeinsendungen haben Feedback vom Seminarinhaber angefordert\",\r\n yourFeedback: \"Dein Feedback\",\r\n alreadyGiven: \"Du hast bereits Feedback zu diesem Video gegeben.\",\r\n },\r\n participants: {\r\n title: \"Seminar Teilnehmer\",\r\n removeAllUser: \"Alle Benutzer und Aufzeichnungen entfernen\",\r\n removeAll: \"Alle Aufzeichnungen entfernen\",\r\n filterUsers: \"Benutzer filtern\",\r\n refreshInv: \"Einladungen und Benutzer aktualisieren\",\r\n search: \"Suche\",\r\n areYouSureTitle: \"Bist du dir sicher\",\r\n areYouSureAllUserText:\r\n \"Bist du sicher, dass du alle Aufzeichnungen aller Benutzer löschen möchtest? Du musst das gesamte Seminar neu starten.\",\r\n areYouSureAllSubs:\r\n \"Möchtest du wirklich alle Aufzeichnungen dieses Benutzers entfernen\",\r\n forThisSeminar: \"für dieses Seminar?\",\r\n removeThisUser: \"Diesen Benutzer entfernen\",\r\n clearUserSubs: \"Eingaben dieses Benutzers löschen\",\r\n removeAllUsers: \"Alle Benutzer entfernen\",\r\n areYouSure: \"Bist du sicher?\",\r\n removeUsersAndSubs:\r\n \"Möchtest du wirklich alle Benutzer und ihre Aufzeichnungen entfernen? Dadurch wird das Seminar effektiv zurückgesetzt.\",\r\n detail: \"Aufzeichnungen von\",\r\n numSubmissions: \"Anzahl Aufzeichnungen\",\r\n noParticipants: \"Keine Teilnehmer\",\r\n pos: \"Position\",\r\n progress: \"Fortschritt\",\r\n name: \"Name\",\r\n fetchFail: \"Es konnten die Benutzer nicht abgerufen werden\",\r\n userNotFound: \"Benutzer nicht gefunden\",\r\n emptySub: \"Nichts zu sehen. Leere Einreichung.\",\r\n filter: {\r\n title: \"Benutzer in diesem Seminar filtern\",\r\n userCount: \"{n} Nutzer insgesamt\",\r\n progressLabel: \"Aktueller Fortschritt\",\r\n progressHint:\r\n \"Alle Benutzer, deren Fortschrittsprozentsatz höher oder gleich diesem Wert ist, werden eingeschlossen.\",\r\n blockLabel: \"Aktuellen Block\",\r\n blockHint:\r\n \"Alle Benutzer, die diesen Block überschritten haben, werden eingeschlossen\",\r\n elLabel: \"Aktuelles Element\",\r\n elHint:\r\n \"Alle Benutzer, die dieses Element überschritten haben, werden eingeschlossen\",\r\n },\r\n },\r\n invitations: {\r\n fetchFail: \"Gesendete Einladungen konnten nicht abgerufen werden\",\r\n revokeFail: \"Einladung konnte nicht widerrufen werden\",\r\n invalidEmail: \"Ungültige E-Mail erkannt\",\r\n },\r\n seminarList: {\r\n yourSemis: \"Deine Seminare\",\r\n participantOrOwnerOf:\r\n \"Du bist insgesamt Teilnehmer oder Inhaber von {n}\",\r\n },\r\n },\r\n\r\n edit: {\r\n actions: \"Abgaben\",\r\n invite: \"Teilnehmer einladen\",\r\n inviteEmails: \"E-Mails, die eingeladen werden\",\r\n editBtn: \"Seminar bearbeiten\",\r\n blocks: {\r\n title: \"Seminarblöcke\",\r\n addBtn: \"Block hinzufügen\",\r\n editBtn: \"Block bearbeiten\",\r\n blockTitle: \"Blocktitel\",\r\n blockDesc: \"Blockbeschreibung\",\r\n },\r\n elements: {\r\n title: \"Elemente in diesem Block\",\r\n addBtn: \"Element hinzufügen\",\r\n editBtn: \"Element bearbeiten\",\r\n elTitle: \"Elemententitel\",\r\n elDesc: \"Elementenbeschreibung\",\r\n uploadVid: \"Neues Video hochladen\",\r\n embedVid: \"Video einbetten\",\r\n mkvFilesNo: \"Achtung: MKV-Dateien funktionieren NICHT!\",\r\n file: \"Videodatei\",\r\n currentVideo: \"Aktuell hochgeladenes Video\",\r\n uploadingWillReplace:\r\n \"Das Hochladen eines neuen Videos ersetzt das vorhandene und das vorhandene wird gelöscht\",\r\n link: \"Link zum Video\",\r\n desc_text: \"Stelle Sachen hier rein...\",\r\n\r\n video_presentation:\r\n \"Benutzer nehmen ein Video auf, nichts zu spezifizieren\",\r\n give_feedback:\r\n \"Benutzer geben Feedback zu einem hochgeladenen Video, das hier nicht angegeben werden muss\",\r\n watch_feedback:\r\n \"Benutzer sehen sich ein für dich erstelltes Feedback-Video an, das hier nicht angegeben werden muss\",\r\n gap_text: {\r\n title: 'Gib Lücken an, indem Du \"__\" (doppelter Unterstrich) setzts',\r\n answers: \"Lücken füllen (Probenlösung)\",\r\n gapText: \"Lückentext\",\r\n },\r\n addRow: \"Zeile hinzufügen\",\r\n addCategory: \"Kategorie hinzufügen\",\r\n newCategory: \"Neue Kategorie\",\r\n categoryTitle: \"Kategorietitel\",\r\n deleteElement: {\r\n title: \"Element löschen\",\r\n detail: \"Bist du dir sicher, dass du dieses Element löschen willst?\",\r\n },\r\n rateable:\r\n \"Die hochgeladenen Videos werden geteilt und können bewertet werden\",\r\n embed_youtube:\r\n \"Wenn du Youtube Videos verlinkst stelle sicher, dass diese integriert werden können!\",\r\n required_numer_of_submissions:\r\n \"Benötigte Anzahl an Abgaben für dieses Element\",\r\n maximum_number_of_submissions:\r\n \"Maximale Anzahl an Abgaben für dieses Element\",\r\n number_range_1_100: \"Erlaubte Nummern zwischen 1-100\",\r\n number_range_0_10: \"Erlaubte Nummern zwischen 0-10\",\r\n max_condition:\r\n \"Max muss größer oder gleich der benötigten Anzahl an Abgaben sein\",\r\n required_number_of_shared_submissions:\r\n \"Benötigte Anzahl an GETEILTEN Abgaben für dieses Element\",\r\n shared_number_condition:\r\n \"Die Benötigte Anzahl an geteilten Abgaben muss kleiner oder gleich der Anzahl an benötigten Abgaben sein\",\r\n max_number_of_shared_submissions:\r\n \"Maximale Anzahl an GETEILTEN Abgaben für dieses Element\",\r\n timed_video_recording: \"Aufnahme mit Zeitbegrenzung\",\r\n timers: \"Timer\",\r\n exp_len: \"Erwartete Länge der Aufnahme (in Sekunden)\",\r\n max_len: \"Maximale Aufzeichnungsdauer (in Sekunden)\",\r\n range100: \"Zahlenbereich ist 0-100\",\r\n range10: \"Zahlenbereich ist 1-10\",\r\n max_shared_rule_1:\r\n \"Max. Anzahl der gemeinsam genutzten Aufzeichnungen muss größer oder gleich der erforderlichen Anzahl der gemeinsam genutzten Aufzeichnungen sein\",\r\n max_shared_rule_2:\r\n \"Max. Anzahl der gemeinsam genutzten Aufzeichnungen muss weniger als oder gleich der erforderlichen Anzahl der gemeinsam genutzten Aufzeichnungen sein\",\r\n max_shared_rule_3:\r\n \"Max. Num. Von den Aufzeichnungen müssen größer sein als die Anzahl der erforderlichen Anträge und im Bereich von 1-100\",\r\n max_shared_rule_4:\r\n \"Max. Num. Von gemeinsam genutzten Aufzeichnungen muss größer oder gleich einer gewünschten Anzahl der gemeinsam genutzten Aufzeichnungen und im Bereich von 1 bis 10 sein\",\r\n req_subs_rule_1:\r\n \"Die erforderliche Anzahl der Aufzeichnungen muss größer sein als die Anzahl der gemeinsam genutzten Aufzeichnungen und im Bereich 0-10\",\r\n req_shared_rule_1:\r\n \"Erforderliche Anzahl der gemeinsam genutzten Aufzeichnungen muss weniger als oder gleich der Anzahl der erforderlichen Aufzeichnungen und im Bereich 0-10 sein\",\r\n watch_video_rule:\r\n \"Dieser Elementtyp erfordert ein Video. Bitte verlinke ein YouTube-Video oder lade eine Datei hoch.\",\r\n },\r\n },\r\n\r\n home: {\r\n startTut: \"Tutorial starten\",\r\n loading: \"Wird geladen...\",\r\n noSemisFound: \"Keine Seminare gefunden\",\r\n yourSemis: \"Deine Seminare\",\r\n },\r\n\r\n name: \"Seminarname\",\r\n description: \"Seminarbeschreibung\",\r\n loading: \"Seminar laden...\",\r\n notFound: \"Seminar nicht gefunden\",\r\n noBlocks: \"Dieses Seminar hat keine Blöcke\",\r\n progress: \"Seminarfortschritt\",\r\n tasks: \"Aufgaben\",\r\n skipTask: \"Aufgabe überspringen\",\r\n prev: \"Zurück\",\r\n next: \"Weiter\",\r\n percentComplete: \"{percent}% abgeschlossen\",\r\n submittedOn: \"Eingereicht am\",\r\n yourSubmission: \"Deine Einreichung\",\r\n yourAnswer: \"Deine Antwort\",\r\n sampleSolution: \"Probenlösung\",\r\n\r\n submissions: {\r\n videoRecorder: {\r\n uploadDialogTitle: \"Lade deine Aufnahme hoch\",\r\n uploadDialogText: \"Lade deine Videoaufnahme hoch.\",\r\n askForFeedback: \"Nach Feedback fragen\",\r\n askForFeedbackInfo:\r\n \"Wenn du nach Feedback fragst kann der Seminarveranstalter dein Video sehen und dir Feedback darauf geben\",\r\n expectedTime: \"Erwartete Aufnahmezeit:\",\r\n maxAllowedTime: \"Maximale Aufnahmezeit:\",\r\n title: \"Videorecorder\",\r\n actions: \"Aktionen\",\r\n start: \"Aufnahme\",\r\n stop: \"Stop\",\r\n pause: \"Pause\",\r\n resume: \"Fortsetzen\",\r\n uploadFeedback: \"Absenden\",\r\n upload: \"Analysieren\",\r\n reset: \"Verwerfen\",\r\n flipVideo: \"Video spiegeln\",\r\n nameYourFile: \"Benennst du deine Datei\",\r\n save: \"Speichern\",\r\n uploadYourPres: \"Video hochladen\",\r\n privateVid: \"Privates Video\",\r\n sharedVid: \"Geteiltes Video\",\r\n wouldLikeFeedback:\r\n \"Ja, ich möchte Feedback vom Seminar Besitzer anfordern\",\r\n shared:\r\n \"Deine Aufnahme wird mit allen anderen Seminarteilnehmern geteilt. Bist du sicher, dass du das tun möchtest?\",\r\n notShared:\r\n \"Das folgende Video wird als Einreichung zum aktuellen Element dieses Seminars gespeichert\",\r\n },\r\n giveFeedbackInfo:\r\n \"Du musst einem anderen Benutzer Feedback geben. Wenn kein Video angezeigt wird, kannst du die Aufgabe überspringen\",\r\n },\r\n\r\n read_text: { title: \"Text lesen\" },\r\n watch_video: { title: \"Video ansehen\" },\r\n video_presentation: {\r\n title: \"Präsentation aufnehmen\",\r\n submissions: \"max. Aufzeichnung(en)\",\r\n reqSubmissions: \"benötigte Aufzeichnung(en)\",\r\n sharedSubmissions: \"max. geteilte Aufzeichnung(en)\",\r\n reqSharedSubmissions: \"benötigte geteilte Aufzeichnung(en)\",\r\n share: \"Aufzeichnung teilen\",\r\n unshare: \"Aufzeichnung nicht mehr teilen\",\r\n delete: \"Aufzeichnung löschen\",\r\n delConfirm: \"Bist du sicher, dass du die Aufzeichnung löschen willst?\",\r\n error:\r\n \"Du brauchst noch {submissions} Aufzeichnung(en) und {sharedSubmissions} geteilte Aufzeichnung(en)!\",\r\n skipped: \"Dies ist eine leere (übersprungene) Aufzeichnung.\",\r\n },\r\n give_feedback: {\r\n title: \"Feedback geben\",\r\n text: \"Nimm ein Video als Feedback zu diesem Video auf\",\r\n noRating: \"Dieses Video wird nicht bewertet\",\r\n nextTitle: \"Nimm ein Video als Feedback zu diesem Video auf\",\r\n yourSubmissions: \"Deine Aufzeichnung\",\r\n noVideo: \"Kein Video gefunden\",\r\n noVideoDetail:\r\n \"Wir konnten leider kein Video finden, das noch nicht von einem anderen Nutzer geprüft wurde.\",\r\n },\r\n watch_feedback: {\r\n no_feedback: \"Noch keine Feedbackvideos verfügbar!\",\r\n title: \"Feedback ansehen\",\r\n text:\r\n \"Sieh dir dieses Video an, das ein anderer Teilnehmer als Feedback zu deiner Präsentation gegeben hat\",\r\n },\r\n gap_text: {\r\n title: \"Lücken ausfüllen\",\r\n error: \"Bitte fülle vor dem Absenden alle Lücken aus\",\r\n },\r\n rephrase: {\r\n title: \"Umformulieren\",\r\n sentences: \"Sätze\",\r\n error: \"Bitte fülle alle Felder aus\",\r\n },\r\n categorize: {\r\n title: \"Sätze verlinken\",\r\n phrases: \"Sätze\",\r\n noMore: \"Keine Sätze mehr\",\r\n categories: \"Kategorien\",\r\n dnd: \"Hier ziehen und ablegen\",\r\n error: \"Bitte ordne alle Sätze in Kategorien ein\",\r\n correct: \"Richtige Kategorie\",\r\n },\r\n vr_training: {\r\n title: \"VR Training\",\r\n requiredScore: \"Erforderliche Punktzahl\",\r\n yourSubmissions: \"Deine Einreichungen\",\r\n score: \"Punktzahl\",\r\n refresh: \"Einreichungen neuladen\",\r\n },\r\n goal: {\r\n title: \"Ziel\",\r\n target: \"Erforderten Sessions\",\r\n progress: \"Valide Sessions\",\r\n start: \"Starte die Herausforderung!\",\r\n description:\r\n \"Du musst dieses Ziel dir zuweisen. Klicke den unteren Button und erfülle die Anzahl der erforderlichen Sessions mit den angegebenen Zielwerten.\",\r\n assign: \"Weise mir das Ziel zu!\",\r\n },\r\n\r\n nameRequired: \"Name erforderlich\",\r\n descRequired: \"Beschreibung erforderlich\",\r\n\r\n ratings: {\r\n amusing: \"Lustig\",\r\n creative: \"Kreativ\",\r\n professional: \"Professionell\",\r\n },\r\n\r\n videos: {\r\n title: \"Alle Aufzeichnungen\",\r\n noSubmissions: \"Bisher gibt es keine Aufzeichnungen\",\r\n\r\n sortBy: {\r\n title: \"Sortieren nach\",\r\n date: \"Datum\",\r\n },\r\n filter: {\r\n users: {\r\n title: \"Benutzer\",\r\n detail: \"Filtern nach Benutzer\",\r\n placeholder: \"Filtern nach Name...\",\r\n },\r\n elements: {\r\n title: \"Elemente\",\r\n detail: \"Filtern nach Element\",\r\n },\r\n },\r\n },\r\n vrScores: {\r\n title: \"VR Ergebnisse\",\r\n noVr: \"Es gibt keine VR Elemente in diesem Seminar\",\r\n },\r\n done: \"Fertig\",\r\n doneText:\r\n \"Du bist mit diesem Seminar fertig. Dein Fortschritt wurde gespeichert\",\r\n back: \"Zurück zum Dashboard\",\r\n finish: \"Beenden\",\r\n },\r\n\r\n homePage: {\r\n welcomeMessage: \"Willkommen bei PREZP\",\r\n noPermissions:\r\n \"Du hast keine Berechtigungen. Wenn Seminar-/Schulungsberechtigungen erteilt werden, kkannst du das Fenster neu laden und mit dem Durchsuchen beginnen\",\r\n seminarBtnText: \"PREZP Seminare\",\r\n sessionTrainingBtnText: \"PREZP Session Training\",\r\n noSemiPermission:\r\n \"Dieser Bereich ist deaktiviert, da du kein PREZP Seminar lizenziert hast. Wenn du mehr darüber erfahren möchtest, kontaktiere uns einfach über die Chat-Funktion.\",\r\n noSessPermission:\r\n \"Dieser Bereich ist deaktiviert, da du PREZP Session Training nicht lizenziert hast. Wenn du mehr darüber erfahren möchtest, kontaktiere uns einfach über die Chat-Funktion.\",\r\n },\r\n\r\n invitations: {\r\n title: \"Einladungen\",\r\n type: \"Einladungstyp\",\r\n all: \"Alles\",\r\n active: \"Aktiv\",\r\n inactive: \"Inaktiv\",\r\n sent: \"Gesendete Einladungen\",\r\n revoke: \"Einladung widerrufen\",\r\n accept: \"Einladung annehmen\",\r\n decline: \"Einladung ablehnen\",\r\n noInvitations: \"Du hast keine Einladungen\",\r\n },\r\n\r\n zoomControl: \"Zoom auf Folie\",\r\n\r\n notifications: {\r\n feedback_received: \"Feedback erhalten\",\r\n rate_video: \"Neues Video zum Bewerten hochgeladen\",\r\n rating_received: \"Neue Bewertung erhalten\",\r\n months: \"Monate\",\r\n weeks: \"Wochen\",\r\n days: \"Tage\",\r\n hours: \"Stunden\",\r\n minutes: \"Minuten\",\r\n fewSeconds: \"vor wenigen Sekunden\",\r\n },\r\n\r\n pfp: {\r\n preview: \"Dies ist eine Vorschau deines neuen Profilbilds\",\r\n uploadNew: \"Dieses Bild hochladen\",\r\n chooseNew: \"Neues Bild auswählen\",\r\n cancelChange: \"Änderung abbrechen\",\r\n removeImage: \"Aktuelles Bild entfernen\",\r\n recSquare: \"Wir empfehlen ein quadratisches Bild\",\r\n },\r\n\r\n api_errors: {\r\n image_upload_failed: \"Bild-Upload fehlgeschlagen\",\r\n user_not_found: \"Benutzer nicht gefunden\",\r\n owner_not_found: \"Besitzer nicht gefunden\",\r\n invalid_type: \"ungültiger Typ\",\r\n user_exists: \"Dieser Benutzer existiert schon\",\r\n no_user_with_this_email: \"Es gibt keinen Benutzer mit dieser E-Mail\",\r\n password_incorrect: \"Falsches Passwort\",\r\n email_not_confirmed:\r\n \"Bitte bestätige Deine E-Mail Adresse über den Link in Deiner Registrierungsemail. Dein Account ist noch nicht aktiviert.\",\r\n user_not_active: \"Benutzer ist nicht aktiv\",\r\n access_denied: \"Zugriff verweigert\",\r\n element_not_found: \"Element nicht gefunden\",\r\n block_not_found: \"Block nicht gefunden\",\r\n seminar_not_found: \"Seminar nicht gefunden\",\r\n user_not_authorized: \"Benutzer nicht autorisiert\",\r\n seminar_order_not_found: \"Seminar Ordnung nicht gefunden\",\r\n block_data_not_found: \"Blockdaten nicht gefunden\",\r\n element_data_not_found: \"Elementdaten nicht gefunden\",\r\n invitation_not_found: \"Einladung nicht gefunden\",\r\n invitation_deactivated: \"Keine aktive Einladung\",\r\n seminar_user_not_found: \"Seminarbenutzer nicht gefunden\",\r\n goal_not_found: \"Ziel nicht gefunden\",\r\n cannot_delete: \"Kann nicht löschen\",\r\n device_token_failed:\r\n \"Ein Fehler ist aufgetreten. Gerät konnte nicht authorisiert werden.\",\r\n },\r\n\r\n browser_warnings: {\r\n unsuppBrowser: \"Nicht unterstützter Browser\",\r\n unsuppBrowserTitle: \"Nicht unterstützter Browser erkannt\",\r\n unsuppBrowserText:\r\n \"Einige Funktionen, wie der Audio-/Videorecorder, funktionieren möglicherweise nicht richtig. Für eine optimale Erfahrung verwende bitte den Chrome-Browser.\",\r\n dontShow: \"Zeig mir das nicht noch einmal\",\r\n ok: \"Ok\",\r\n },\r\n\r\n tour: {\r\n box: {\r\n title: \"Fortschritt Einführungstour\",\r\n home: \"PREZP Seminars\",\r\n dash: \"PREZP Dashboard\",\r\n goals: \"Ziele\",\r\n recorder: \"PREZP Recorder\",\r\n sessions: \"Trainings-Einheiten\",\r\n },\r\n step: {\r\n skip: \"Überspringen\",\r\n exit: \"Ausgang\",\r\n next: \"Nächste\",\r\n finish: \"Beenden\",\r\n close: \"Abschließen\",\r\n of: \"von\",\r\n },\r\n welcome: {\r\n title: \"Willkommen bei PREZP\",\r\n body:\r\n \"Wenn du neu bei PREZP sind, haben wir ein Tutorial, um dir den Einstieg in die Plattform zu erleichtern. Es zeigt die wichtigsten Funktionen und deren Verwendung!\",\r\n btn1: \"Zeige mir das nicht mehr\",\r\n btn2: \"Mit dem Tutorial beginnen\",\r\n },\r\n finshed: {\r\n title: \"Fantastisch\",\r\n body:\r\n 'Du hast das gesamte Tutorial abgeschlossen. Wenn du ein Tutorial erneut besuchen möchtest, steht oben auf jeder Seite die Taste \"Tutorial starten\" zur Verfügung.',\r\n },\r\n home: {\r\n 0: {\r\n title: \"Willkommen bei den PREZP-Seminaren\",\r\n body:\r\n \"Hier findest du zwei Bereiche: 1. Eine Liste der Seminare, bei denen du entweder Teilnehmer oder Inhaber bist. 2. Eine Auflistung deiner Seminar-Einladungen. Schauen wir uns nun jeden Bereich einzeln an.\",\r\n },\r\n 1: {\r\n title: \"Liste der Seminare\",\r\n body:\r\n \"In diesem Bereich werden deine Seminare angezeigt. Wenn du auf das Seminar-Element klickst, wirst du zu diesem Seminar weitergeleitet. Probiere es doch gleich mal aus!\",\r\n },\r\n 2: {\r\n title: \"Liste der Einladungen\",\r\n body: \"Hier kannst du alle Seminar-Einladungen verwalten. \",\r\n },\r\n 3: {\r\n title: \"Next up\",\r\n body:\r\n 'Damit ist unser Rundgang durch die PREZP-Seminare beendet. Als Nächstes navigiere zum Bereich \"Dashboard\", wo wir den nächsten Schritt unserer Tour beginnen.',\r\n },\r\n },\r\n dash: {\r\n 0: {\r\n title: \"Willkommen auf deinem PREZP-Dashboard\",\r\n body:\r\n \"Hier findest du dein eigenes, personalisiertes Dashboard, mit allen Informationen rund um dein Training. Beginnen wir die Tour!\",\r\n },\r\n 1: {\r\n title: \"Präsentationen\",\r\n body:\r\n \"Hier kannst du deine Präsentationen hochladen. Verbessere deine Präsentationen in dem du dich selbst, mit dem PREZP Recorder, dem PREZP Video-Recorder oder PREZP VR aufnimmst. Wir werden die Funktionen später in der Tour noch besuchen. Hinweis: Bitte verwende derzeit PDF.\",\r\n },\r\n 2: {\r\n title: \"Eine Präsentation hochladen\",\r\n body: \"Klicke auf diese Schaltfläche und wähle eine Präsentation aus.\",\r\n },\r\n 3: {\r\n title: \"Liste der Präsentationen\",\r\n body:\r\n \"Hier findest du eine Liste aller hochgeladenen Präsentationen. Der Mikrofon-Button führt dich direkt zum PREZP Recorder. Außerdem kannst du deine Präsentationen im Vollbildmodus ansehen, löschen, herunterladen oder umbenennen.\",\r\n },\r\n 4: {\r\n title: \"Präsentationsfolien\",\r\n body:\r\n \"Verwende die Pfeile am unteren Rand, um zwischen den Präsentationsfolien zu wechseln.\",\r\n },\r\n 5: {\r\n title: \"Ziele\",\r\n body:\r\n \"Alle Ziele, die du erstellt hast oder die dir zugewiesen wurden, werden hier aufgelistet, wobei das zuletzt erstellte Ziel ganz oben steht. Du wirst später in der Tour mehr über den Einsatz von Zielen erfahren.\",\r\n },\r\n 6: {\r\n title: \"Gruppen\",\r\n body: \"Die Gruppen, denen du angehörst, werden hier angezeigt.\",\r\n },\r\n 7: {\r\n title: \"Videos\",\r\n body:\r\n \"Dieser Bereich zeigt dir alle hochgeladenen Videos aus deinen Gruppen. Verwende die Dropdown-Liste oben rechts, um Videos einer bestimmten Gruppe angezeigt zu bekommen.\",\r\n },\r\n 8: {\r\n title: \"Nachrichten\",\r\n body:\r\n \"Alle plattformbezogenen Nachrichten und Aktualisierungen werden hier in Kurzform aufgeführt. Wenn du oben rechts auf die Schaltfläche klickst, gelangst du auf die Nachrichtenseite, auf der du alle Nachrichten einsehen kannst.\",\r\n },\r\n 9: {\r\n title: \"Bravo!\",\r\n body:\r\n \"Jetzt weißt du alles, was es über die Dashboard-Seite zu wissen gibt.\",\r\n },\r\n },\r\n goals: {\r\n 0: {\r\n title: \"Ziele\",\r\n body:\r\n \"Auf dieser Seite findest du eine Auflistung deiner Ziele. Die Liste enthält selbst erstellte Ziele und zugewiesene Ziele. Beginnen wir mit einem selbst gesetzten Ziel.\",\r\n },\r\n 1: {\r\n title: \"Ein neues Ziel hinzufügen\",\r\n body: \"Klicke hier, um ein neues Ziel zu erstellen.\",\r\n },\r\n 2: {\r\n title: \"Sich ein Ziel setzen\",\r\n body:\r\n \"Ziele sind entscheidend für deinen Lernprozess. Anhand der Ziele, die du dir setzt, kannst du deinen Sprachstil verändern! Sprichst du derzeit zu schnell? Dann setze dir einfach eine niedrigere Sprechgeschwindigkeit als Ziel. Auf diese Weise bekommst du ein Gefühl dafür, wie schnell oder langsam du sprichst, was dazu beiträgt deine Zuhörer zu fesseln und sie aktiv zuhören zu lassen.\",\r\n },\r\n 3: {\r\n title: \"Trainingseinheiten\",\r\n body:\r\n \"Hier legst du die Anzahl der Trainings und somit Wiederholungen fest, die du absolvieren möchtest. Wusstest du, dass eine professionelle Sängerin, ein neues Lied bis zu 100 Mal einsingt?\",\r\n },\r\n 4: {\r\n title: \"Bedingungen\",\r\n body:\r\n \"Lege Bedingungen fest, die erfüllt sein müssen, damit die absolvierte Trainingseinheit deinen Zielen entspricht.\",\r\n },\r\n 5: {\r\n title: \"Benutzer\",\r\n body: \"Ordne dir oder anderen Gruppenmitgliedern Ziele zu.\",\r\n },\r\n 6: {\r\n title: \"Bestätigen\",\r\n body: \"Klicke hier, um das gesetzte Ziel zu bestätigen.\",\r\n },\r\n 7: {\r\n title: \"Erledigt\",\r\n body:\r\n \"Das soeben erstellte Ziel wird unter „erstellten Zielen“ oder „zugewiesenen Zielen“ aufgelistet.\",\r\n },\r\n },\r\n recorder: {\r\n 0: {\r\n title: \"PREZP Rekorder\",\r\n body:\r\n \"In diesem Teil erfährst du, wie du ein Audio oder Video aufnimmst und damit eine Trainingseinheit erstellst. Denk daran, dass du dir gerade ein Ziel gesetzt hast. Behalte die Bedingungen im Hinterkopf, wenn du deine Aufnahme erstellst.\",\r\n },\r\n 1: {\r\n title: \"Liste der Aufnahmen\",\r\n body: \"Das ist eine Auflistung all deiner Audio- und Videoaufnahmen.\",\r\n },\r\n 2: {\r\n title: \"Rekorder\",\r\n body:\r\n \"Drücke die rote Taste, um eine Aufnahme zu starten oder zu stoppen\",\r\n },\r\n 3: {\r\n title: \"Präsentation auswählen\",\r\n body: \"Wähle eine Präsentation aus.\",\r\n },\r\n 4: {\r\n title: \"Folien\",\r\n body:\r\n \"Wechsel von einer Präsentationsfolie zur nächsten. Jedes Mal, wenn du die Pfeiltaste drückst, wird ein Zeitstempel gesetzt, anhand dessen du später Feedback pro Folie erhalten kannst.\",\r\n },\r\n 5: {\r\n title: \"Sprache auswählen\",\r\n body: \"Wähle eine Sprache.\",\r\n },\r\n 6: {\r\n title: \"Geräteauswahl\",\r\n body: \"Wähle hier dein Eingabegerät aus.\",\r\n },\r\n 7: {\r\n title: \"Stummschalten/Stummschaltung aufheben\",\r\n body:\r\n \"Hier kannst du das Mikrofon stummschalten und die Stummschaltung aufheben.\",\r\n },\r\n 8: {\r\n title: \"Eingabelautstärke\",\r\n body:\r\n \"Wenn sich die Anzeige nicht bewegt, überprüfe, ob dein Mikrofon funktioniert, eingeschaltet und bei der Geräteauswahl ausgewählt ist.\",\r\n },\r\n 9: {\r\n title: \"Audio aufnehmen\",\r\n body: \"Drücke den Knopf für die Aufnahme.\",\r\n },\r\n 10: {\r\n title: \"Deine Aufnahme\",\r\n body: \"Klicke auf die erstellte Aufnahme.\",\r\n },\r\n 11: {\r\n title: \"Aufzeichnungsdetails\",\r\n body:\r\n \"Hier gibst du die verwendete Sprache der Aufzeichnung ein, derzeit Englisch und Deutsch. Du kannst deine Präsentation auch umbenennen und dann speichern\",\r\n },\r\n 12: {\r\n title: \"Video wechseln\",\r\n body: \"Hiermit wechselst du zur Videoaufnahme.\",\r\n },\r\n 13: {\r\n title: \"Videovorschau\",\r\n body: \"Bewerte deine Aufnahme in Echtzeit.\",\r\n },\r\n 14: {\r\n title: \"Aktionen\",\r\n body: \"Ein Video starten, anhalten, stoppen oder spiegeln.\",\r\n },\r\n 15: {\r\n title: \"Video aufnehmen\",\r\n body: \"Hier kannst du deine Videos aufnehmen.\",\r\n },\r\n 16: {\r\n title: \"Wähle eine Aufnahme\",\r\n body:\r\n \"Klicke auf eine deiner Aufnahmen und erstelle daraus eine Trainings-Session.\",\r\n },\r\n 17: {\r\n title: \"Erstelle eine Trainingseinheit\",\r\n body:\r\n 'Klicke auf die Schaltfläche \"Aufzeichnung speichern unter\" und wähle die Option \"Neue Session\" aus.',\r\n },\r\n 18: {\r\n title: \"Fantastisch\",\r\n body: \"Kommen wir zu den Sessions\",\r\n },\r\n },\r\n sessions: {\r\n 0: {\r\n title: \"Sessions\",\r\n body:\r\n 'Willkommen auf der Seite \"Sessions\". Hier werden deine Präsentationen analysiert.',\r\n },\r\n 1: {\r\n title: \"Liste der Sessions\",\r\n body: \"Das ist eine Auflistung deiner analysierten Sessions.\",\r\n },\r\n 2: {\r\n title: \"Session filtern\",\r\n body:\r\n \"Filter deine Session einfach nach Dauer, Datum, Name oder Präsentationen.\",\r\n },\r\n 3: {\r\n title: \"Sessions teilen\",\r\n body:\r\n \"Hier kannst du deine Präsentationen mit anderen Teilnehmern teilen und wichtiges Feedback erhalten!\",\r\n },\r\n 4: {\r\n title: \"Wähle deine Session\",\r\n body: \"Um fortzufahren, wähle eine vollständig analysierte Session.\",\r\n },\r\n 5: {\r\n title: \"Sessiondetails\",\r\n body: \"Hier bekommst du noch mal einen Session-Überblick.\",\r\n },\r\n 6: {\r\n title: \"Notensystem\",\r\n body:\r\n \"Hier zeigen wir dir die erreichten Noten! Somit erhältst du einen wichtigen Überblick, über deine persönliche Entwicklung. Details zu den Noten, findest du grafisch dargestellt, neben der Note selbst. \",\r\n },\r\n 7: {\r\n title: \"Folien\",\r\n body: \"Alle verwendeten Präsentationsfolien siehst du hier.\",\r\n },\r\n 8: {\r\n title: \"Sprechgeschwindigkeit\",\r\n body:\r\n \"Diese Karte zeigt dir, wie schnell du im Durchschnitt gesprochen hast. In Wörtern pro Minute.\",\r\n },\r\n 9: {\r\n title: \"Pausen\",\r\n body:\r\n \"Wir analysieren deine Pausen und zeigen dir, wie viele Pausen du während deiner Präsentation gemacht hast. Aktuell werden Pausen, ab einer Länge von über 1 Sekunde, als Pause gemessen.\",\r\n },\r\n 10: {\r\n title: \"Stimmlage\",\r\n body:\r\n \"Bekomme ein Gefühl für deine Stimmlage! Wenn du während einer Präsentation mit einer zu hohen Stimme sprichst, kann dies dazu führen, dass du als nervös und unsicher wahrgenommen wirst.\",\r\n },\r\n 11: {\r\n title: \"Sentimentsätze\",\r\n body:\r\n \"Hierbei handelt es sich um eine reine KI-Analyse. Die KI analysiert, ob ein Wort oder ein ganzer Satz eine positive, negative oder neutrale Stimmung vermittelt.\",\r\n },\r\n 12: {\r\n title: \"Wortwahl\",\r\n body:\r\n 'Verwendest du zu viele Füllwörter? Oder Weichmacher? In diesem Bereich wird deine Wortwahl analysiert. Einige Beispiele hierfür sind: \"Ähm, Hmm, Uhh, sehen Sie, ich meine,\" usw.',\r\n },\r\n 13: {\r\n title: \"Sentiment ratio\",\r\n body: \"Das ist Zusammenfassung der Sentimentsätze\",\r\n },\r\n 14: {\r\n title: \"Schlüsselwörter\",\r\n body:\r\n 'Hier siehst du, welche \"Schlüsselwörter\" die KI in deiner Präsentation erkannt und rausgefiltert hat.',\r\n },\r\n 15: {\r\n title: \"Bewegungsdaten\",\r\n body:\r\n \"Die Bewegungsanalysen deines PREZP VR-Trainings findest du hier.\",\r\n },\r\n 16: {\r\n title: \"Sitzungssteuerung\",\r\n body: \"Navigiere dich durch deine Aufzeichnung. \",\r\n },\r\n 17: {\r\n title: \"Auf Folie/Zeit zoomen\",\r\n body:\r\n \"Mit dieser Funktion kannst du die Analysen einer einzelnen Folie anzeigen lassen, wenn deine Präsentation mehrere Seiten umfasst.\",\r\n },\r\n 18: {\r\n title: \"Anzahl der Datenpunkte auswählen\",\r\n body:\r\n \"Mit dieser Schaltfläche kannst du die Anzahl der Datenpunkte einstellen. Die Standardeinstellung sind 50 Datenpunkte.\",\r\n },\r\n 19: {\r\n title: \"Benchmark-Sitzungen\",\r\n body:\r\n \"Stell dir eine Benchmark-Sitzung als ein Ziel vor. Wenn du eine bestimmten Stimmlage bevorzugst, dann lade einfach ein Audiobeispiel ins PREZP-Portal hoch. Deine Training-Sessions, werden mit deiner Benchmark-Session verglichen. Auf diese Weise arbeitest du immer auf dein Sprechziel hin!\",\r\n },\r\n 20: {\r\n title: \"Trainings-Fortschritt\",\r\n body:\r\n 'Wähle den Menüpunkt \"Session-Fortschritt\" aus, um in die Analyse deiner Gesamt-Trainings zu gelangen.',\r\n },\r\n 21: {\r\n title: \"Fortschrittsseite\",\r\n body:\r\n \"Auf der Fortschrittsseite findest du alle Fortschritte, die du in den einzelnen Schwerpunktbereichen, z. B. Tonhöhe, Lautstärke, Wörter pro Minute usw., gemacht hast.\",\r\n },\r\n 22: {\r\n title: \"Anzahl der zu vergleichenden Sessions\",\r\n body:\r\n \"Wähle hier die Anzahl der zu vergleichenden Trainings. Du kannst nach Inhalten, Daten, Dauer oder einem bestimmten Zeitraum filtern.\",\r\n },\r\n 23: {\r\n title: \"Erledigt\",\r\n body:\r\n \"Jetzt kennst du unser gesamtes Portal und die Analysemöglichkeiten. Es ist Zeit mit dem Training zu beginnen. Wenn du weitere Fragen hast, dann schreibe uns einfach eine Nachricht über unseren Support-Chat.\",\r\n },\r\n },\r\n },\r\n feature: {\r\n locked: \"Diese Funktion ist für Dich nicht freigeschaltet\",\r\n toUnlockIt: \"Wende Dich an Deinen Ansprechpartner, um sie zu aktivieren.\",\r\n toCloseThisWindow:\r\n \"Um dieses Fenster zu schließen, klicke einfach außerhalb des Dialogs.\",\r\n },\r\n maintenance: {\r\n label: \"Wartungsarbeiten\",\r\n message: \"Wir sind in Kürze wieder verfügbar\",\r\n },\r\n};\r\n\r\nexport default de;\r\n","import Vue from \"vue\";\r\nimport VueI18N from \"vue-i18n\";\r\nimport en from \"./en\";\r\nimport de from \"./de\";\r\n\r\nconst numberFormats = {\r\n de: {\r\n currency: {\r\n style: \"currency\",\r\n currency: \"EUR\",\r\n },\r\n },\r\n en: {\r\n currency: {\r\n style: \"currency\",\r\n currency: \"USD\",\r\n },\r\n // Note: We always use en for compact formatting, de-DE doesn't support short formats like 1K or 1M\r\n compact: {\r\n style: \"decimal\",\r\n notation: \"compact\",\r\n maximumFractionDigits: 0,\r\n compactDisplay: \"short\",\r\n roundingMode: \"floor\",\r\n },\r\n compactFraction1: {\r\n style: \"decimal\",\r\n notation: \"compact\",\r\n maximumFractionDigits: 1,\r\n compactDisplay: \"short\",\r\n roundingMode: \"floor\",\r\n },\r\n compactFraction2: {\r\n style: \"decimal\",\r\n notation: \"compact\",\r\n maximumFractionDigits: 2,\r\n compactDisplay: \"short\",\r\n roundingMode: \"floor\",\r\n },\r\n },\r\n};\r\n\r\nVue.use(VueI18N);\r\nconst i18n = new VueI18N({ locale: \"de\", messages: { en, de }, numberFormats });\r\n\r\nexport default i18n;\r\n","import Vue from \"vue\";\r\nimport VueRouter, { RouteConfig } from \"vue-router\";\r\n\r\nimport store from \"../store\";\r\nimport {\r\n authGuard,\r\n adminGuard,\r\n liveTranscriptionGuard,\r\n analysisGuard,\r\n // aiFeedbackGuard,\r\n seminarGuard,\r\n challengeGuard,\r\n publicGroupGuard,\r\n // b2bGroupGuard,\r\n} from \"./utils\";\r\nimport LocalStorage from \"@/core/utils/LocalStorage\";\r\n\r\nconst VRMode = LocalStorage.getVRMode();\r\n\r\nconst maintenanceMode = process.env.VUE_APP_MAINTENANCE_MODE_ENABLED || false;\r\n\r\nVue.use(VueRouter);\r\nconst routes: RouteConfig[] = [\r\n ...(maintenanceMode\r\n ? [\r\n {\r\n name: \"Maintenance\",\r\n path: \"**/*\",\r\n component: () => import(\"@/views/maintenance\"),\r\n },\r\n ]\r\n : []),\r\n {\r\n name: \"Home\",\r\n path: \"/\",\r\n //component: () => import(\"@/views/home\"),\r\n redirect: \"/dashboard\",\r\n },\r\n\r\n // Legal (Always Public)\r\n {\r\n name: \"Imprint\",\r\n path: \"/legal/imprint\",\r\n component: () => import(\"@/views/legal/Imprint.vue\"),\r\n },\r\n {\r\n name: \"Privacy Policy\",\r\n path: \"/legal/privacy\",\r\n component: () => import(\"@/views/legal/PrivacyPolicy.vue\"),\r\n },\r\n {\r\n name: \"Contact\",\r\n path: \"/legal/contact\",\r\n component: () => import(\"@/views/legal/Contact.vue\"),\r\n },\r\n\r\n // Legal fallthrough (Redirect to imprint)\r\n {\r\n name: \"\",\r\n path: \"/legal**\",\r\n component: () => import(\"@/views/legal\"),\r\n },\r\n\r\n // Auth\r\n {\r\n name: \"\",\r\n path: \"/auth\",\r\n component: () => import(\"@/views/auth\"),\r\n children: [\r\n {\r\n name: \"Login\",\r\n path: \"login\",\r\n component: () => import(\"@/views/auth/pages/Login.vue\"),\r\n },\r\n {\r\n name: \"Logout\",\r\n path: \"logout\",\r\n beforeEnter: (_, _1, next) => {\r\n store.dispatch(\"profile/logoutUser\").then(() => {\r\n next(\"/auth/login\");\r\n });\r\n },\r\n },\r\n {\r\n name: \"Register\",\r\n path: \"register\",\r\n component: () => import(\"@/views/auth/pages/Register.vue\"),\r\n },\r\n {\r\n name: \"Forgot Password\",\r\n path: \"forgotPassword\",\r\n component: () => import(\"@/views/auth/pages/ForgotPassword.vue\"),\r\n },\r\n {\r\n name: \"Reset Password\",\r\n path: \"password/reset\",\r\n component: () => import(\"@/views/auth/pages/ResetPassword.vue\"),\r\n },\r\n {\r\n name: \"Confirm Email\",\r\n path: \"email/confirm\",\r\n component: () => import(\"@/views/auth/pages/ConfirmEmail.vue\"),\r\n },\r\n {\r\n name: \"Inactive Profile\",\r\n path: \"inactive\",\r\n component: () => import(\"@/views/auth/pages/InactiveProfile.vue\"),\r\n },\r\n {\r\n name: \"New User\",\r\n path: \"new-user\",\r\n component: () => import(\"@/views/auth/pages/NewUser.vue\"),\r\n },\r\n {\r\n name: \"Onboarding\",\r\n path: \"onboarding\",\r\n component: () => import(\"@/views/auth/pages/Onboarding.vue\"),\r\n },\r\n {\r\n name: \"Register Device\",\r\n path: \"device/register\",\r\n component: () => import(\"@/views/auth/pages/RegisterDevice.vue\"),\r\n },\r\n {\r\n name: \"Activate Device\",\r\n path: \"device/activate\",\r\n component: () => import(\"@/views/auth/pages/ConfirmDevice.vue\"),\r\n },\r\n // Legal (In/Before Auth)\r\n {\r\n name: \"Login - Imprint\",\r\n path: \"imprint\",\r\n component: () => import(\"@/views/legal/Imprint.vue\"),\r\n },\r\n {\r\n name: \"Login - Privacy Policy\",\r\n path: \"privacy\",\r\n component: () => import(\"@/views/legal/PrivacyPolicy.vue\"),\r\n },\r\n {\r\n name: \"Login - Contact\",\r\n path: \"contact\",\r\n component: () => import(\"@/views/legal/Contact.vue\"),\r\n },\r\n ],\r\n },\r\n\r\n // Auth fallthrough (Redirect to login)\r\n {\r\n name: \"\",\r\n path: \"/auth**\",\r\n redirect: \"/auth/login\",\r\n },\r\n\r\n // Legal (In App)\r\n {\r\n name: \"Dashboard - Imprint\",\r\n path: \"/imprint\",\r\n component: () => import(\"@/views/legal/Imprint.vue\"),\r\n },\r\n {\r\n name: \"Dashboard - Privacy Policy\",\r\n path: \"/privacy\",\r\n component: () => import(\"@/views/legal/PrivacyPolicy.vue\"),\r\n },\r\n {\r\n name: \"Dashboard - Contact\",\r\n path: \"/contact\",\r\n component: () => import(\"@/views/legal/Contact.vue\"),\r\n },\r\n\r\n // Dash\r\n {\r\n name: \"Dashboard\",\r\n path: \"/dashboard\",\r\n component: () => import(\"@/views/dashboard\"),\r\n beforeEnter: authGuard,\r\n },\r\n\r\n // Admin\r\n {\r\n path: \"/admin\",\r\n component: () => import(\"@/views/admin\"),\r\n beforeEnter: adminGuard,\r\n children: [\r\n {\r\n path: \"\",\r\n redirect: { name: \"Website Users\" },\r\n },\r\n {\r\n name: \"Website Users\",\r\n path: \"users\",\r\n beforeEnter: adminGuard,\r\n component: () => import(\"@/views/admin/pages/Users.vue\"),\r\n },\r\n {\r\n name: \"How-To Videos\",\r\n path: \"videos\",\r\n beforeEnter: adminGuard,\r\n component: () => import(\"@/views/admin/pages/HowToVideos.vue\"),\r\n },\r\n {\r\n name: \"Slides\",\r\n path: \"slides\",\r\n beforeEnter: adminGuard,\r\n component: () => import(\"@/views/admin/pages/Slides.vue\"),\r\n },\r\n {\r\n name: \"stripeProducts\",\r\n path: \"products\",\r\n beforeEnter: adminGuard,\r\n component: () => import(\"@/views/admin/pages/StripeProducts.vue\"),\r\n },\r\n {\r\n name: \"stripeCoupons\",\r\n path: \"coupons\",\r\n beforeEnter: adminGuard,\r\n component: () => import(\"@/views/admin/pages/StripeCoupons.vue\"),\r\n },\r\n {\r\n name: \"companies\",\r\n path: \"companies\",\r\n beforeEnter: adminGuard,\r\n component: () => import(\"@/views/admin/pages/Companies.vue\"),\r\n },\r\n ],\r\n },\r\n\r\n // Sessions\r\n {\r\n name: \"Sessions (List)\",\r\n path: \"/sessions/list\",\r\n component: () => import(\"@/views/sessions/Sessions.vue\"),\r\n beforeEnter: analysisGuard,\r\n },\r\n {\r\n name: \"Submitted Sessions\",\r\n path: \"/sessions/submitted\",\r\n component: () => import(\"@/views/sessions/SubmittedSessions.vue\"),\r\n beforeEnter: analysisGuard,\r\n },\r\n {\r\n name: \"Sessions (Progress)\",\r\n path: \"/sessions/progress\",\r\n component: () => import(\"@/views/sessions/Sessions.vue\"),\r\n beforeEnter: analysisGuard,\r\n },\r\n {\r\n name: \"Shared Sessions\",\r\n path: \"/sessions/shared/:email?\",\r\n component: () => import(\"@/views/sessions/ManagedSessions.vue\"),\r\n beforeEnter: analysisGuard,\r\n },\r\n\r\n // Groups\r\n {\r\n name: \"Groups\",\r\n path: \"/groups\",\r\n component: () => import(\"@/views/groups/Groups.vue\"),\r\n beforeEnter: publicGroupGuard,\r\n },\r\n {\r\n name: \"Group Details\",\r\n path: \"/groups/:id\",\r\n component: () => import(\"@/views/groups/GroupDetails.vue\"),\r\n beforeEnter: publicGroupGuard,\r\n },\r\n\r\n // News\r\n // {\r\n // name: \"News\",\r\n // path: \"/news\",\r\n // component: () => import(\"@/views/news/News.vue\"),\r\n // beforeEnter: trainingGuard,\r\n // },\r\n // {\r\n // name: \"Article\",\r\n // path: \"/news/article/:id\",\r\n // component: () => import(\"@/views/news/ArticleDetails.vue\"),\r\n // beforeEnter: trainingGuard,\r\n // },\r\n\r\n // Goals\r\n {\r\n name: \"Goals\",\r\n path: \"/goals\",\r\n component: () => import(\"@/views/goals\"),\r\n beforeEnter: challengeGuard,\r\n },\r\n\r\n // Meetings\r\n // {\r\n // name: \"Meetings\",\r\n // path: \"/meetings\",\r\n // component: () => import(\"@/views/meetings\"),\r\n // beforeEnter: authGuard,\r\n // },\r\n\r\n // Seminars\r\n {\r\n path: \"/seminars\",\r\n component: () => import(\"@/views/seminars\"),\r\n children: [\r\n {\r\n path: \"\",\r\n name: \"Seminars - Home\",\r\n beforeEnter: seminarGuard,\r\n component: () => import(\"@/views/seminars/pages/Home.vue\"),\r\n },\r\n {\r\n path: \"dashboard/:id?\",\r\n name: \"Seminars - Dashboard\",\r\n beforeEnter: seminarGuard,\r\n component: () => import(\"@/views/seminars/pages/Dashboard.vue\"),\r\n },\r\n {\r\n path: \"details/:id?\",\r\n name: \"Seminars - Details\",\r\n beforeEnter: seminarGuard,\r\n component: () => import(\"@/views/seminars/pages/Details.vue\"),\r\n },\r\n {\r\n path: \"videos/:id?\",\r\n name: \"Seminars - Video\",\r\n beforeEnter: seminarGuard,\r\n component: () => import(\"@/views/seminars/pages/Videos.vue\"),\r\n },\r\n {\r\n path: \"edit/:id\",\r\n name: \"Seminars - Edit\",\r\n beforeEnter: seminarGuard,\r\n component: () => import(\"@/views/seminars/pages/Edit.vue\"),\r\n },\r\n {\r\n path: \"admin\",\r\n name: \"Seminars - Admin Dashboard\",\r\n beforeEnter: seminarGuard,\r\n component: () => import(\"@/views/seminars/pages/Admin.vue\"),\r\n },\r\n {\r\n path: \"submission/:id\",\r\n name: \"Seminars - Submission Details\",\r\n beforeEnter: seminarGuard,\r\n component: () => import(\"@/views/seminars/pages/SubmissionDetails.vue\"),\r\n },\r\n ],\r\n },\r\n\r\n // Subscription page\r\n {\r\n path: \"/subscription\",\r\n component: () => import(\"@/views/subscription\"),\r\n children: [\r\n {\r\n path: \"\",\r\n redirect: \"pricing\",\r\n },\r\n {\r\n path: \"pricing\",\r\n name: \"Subscription Pricing\",\r\n component: () =>\r\n import(\"@/views/subscription/pages/SubscriptionPricing.vue\"),\r\n },\r\n {\r\n path: \"purchase\",\r\n name: \"Subscription Purchase\",\r\n component: () =>\r\n import(\"@/views/subscription/pages/SubscriptionPurchase.vue\"),\r\n },\r\n {\r\n path: \"checkout\",\r\n name: \"Subscription Checkout\",\r\n component: () =>\r\n import(\"@/views/subscription/pages/SubscriptionCheckout.vue\"),\r\n },\r\n ],\r\n },\r\n\r\n // Company page\r\n {\r\n path: \"/company\",\r\n component: () => import(\"@/views/company\"),\r\n children: [\r\n {\r\n path: \"\",\r\n name: \"Company Home\",\r\n beforeEnter: authGuard,\r\n component: () => import(\"@/views/company/pages/CompanyHome.vue\"),\r\n },\r\n {\r\n path: \"create\",\r\n name: \"Create Company\",\r\n component: () => import(\"@/views/company/pages/CreateCompany.vue\"),\r\n },\r\n {\r\n path: \"dashboard\",\r\n name: \"Company Dashboard\",\r\n component: () => import(\"@/views/company/pages/CompanyDashboard.vue\"),\r\n },\r\n {\r\n path: \"purchase\",\r\n name: \"Company Purchase Page\",\r\n component: () => import(\"@/views/company/pages/CompanyPurchase.vue\"),\r\n },\r\n {\r\n path: \"pricing\",\r\n name: \"Company Pricing Page\",\r\n component: () => import(\"@/views/company/pages/PricingPage.vue\"),\r\n },\r\n ],\r\n },\r\n\r\n // Recorder\r\n // {\r\n // name: \"Recorder\",\r\n // path: \"/recorder\",\r\n // component: () => import(\"@/views/recorder\"),\r\n // beforeEnter: authGuard,\r\n // },\r\n\r\n // LiveRecorder\r\n {\r\n name: \"LiveRecorder\",\r\n path: \"/liverecorder\",\r\n component: () =>\r\n import(`@/views/${VRMode ? \"vrrecorder\" : \"liverecorder\"}`),\r\n beforeEnter: liveTranscriptionGuard,\r\n },\r\n\r\n // Settings\r\n {\r\n name: \"Settings\",\r\n path: \"/settings\",\r\n component: () => import(\"@/views/settings\"),\r\n beforeEnter: authGuard,\r\n },\r\n\r\n // Fallthrough\r\n {\r\n path: \"**\",\r\n redirect: \"/\",\r\n },\r\n];\r\n\r\nconst router = new VueRouter({\r\n mode: \"history\",\r\n base: process.env.BASE_URL,\r\n routes,\r\n});\r\n\r\nrouter.beforeEach((_, _1, next) => {\r\n global.window.scrollTo(0, 0);\r\n // Scroll overflow divs for legal pages\r\n if (!VRMode)\r\n if (document.querySelector(\".right-panel:has(> .legal-page)\"))\r\n (document.querySelector(\r\n \".right-panel:has(> .legal-page)\",\r\n ) as any).scrollTop = 0;\r\n next();\r\n});\r\n\r\nrouter.beforeEach((_, _1, next) => {\r\n store.commit(\"appLoading\");\r\n next();\r\n});\r\n\r\nrouter.afterEach(() => store.commit(\"appLoaded\"));\r\n\r\nexport default router;\r\n","// Compare as string with variations (\"true\", \"t\", \"yes\", \"y\", \"1\") and allow to return a default\r\nconst parseBoolean = (\r\n value: string | number | boolean | undefined,\r\n defaultValue?: boolean,\r\n) => {\r\n if (value !== undefined)\r\n return [\"true\", \"t\", \"yes\", \"y\", \"1\"].some(\r\n acceptedValue => acceptedValue === value.toString().toLowerCase(),\r\n );\r\n\r\n return defaultValue !== undefined && defaultValue;\r\n};\r\n\r\nexport { parseBoolean };\r\n","import { helpers } from \"vuelidate/lib/validators\";\r\nimport * as sdk from \"microsoft-cognitiveservices-speech-sdk\";\r\nimport { parseBoolean } from \"@/core/utils/parsers\";\r\n\r\n// Settings for app wide defaults and pre-parsing .env variables\r\nexport const isLocal = process.env.NODE_ENV === \"development\";\r\nexport const isDev = process.env.VUE_APP_ENV === \"dev\";\r\nexport const isBeta = process.env.VUE_APP_ENV === \"beta\";\r\nexport const isProd = process.env.VUE_APP_ENV === \"prod\";\r\nexport const apiBaseUrl =\r\n (isLocal\r\n ? process.env.VUE_APP_API_BASE_URL || \"https://localhost:5001\"\r\n : process.env.VUE_APP_API_BASE_URL) ?? \"\";\r\n\r\nexport const apiProxyBaseUrl =\r\n process.env.VUE_APP_API_PROXY_BASE_URL || \"https://dev.api.prezp.com/v1\";\r\n\r\n// Speech SDK settings\r\nexport const speechConfigSettings = {\r\n speechServiceEndpoint:\r\n process.env.VUE_APP_SPEECH_SERVICE_URL ||\r\n \"wss://dev.api.prezp.com/v1/speech-service\",\r\n initialSilenceTimeoutMs: \"60000\",\r\n enableAudioLogging: false,\r\n enableTelemetry: false,\r\n speechRecognitionLanguage: \"de-DE\",\r\n profanityOption: sdk.ProfanityOption.Raw, // raw = unfiltered\r\n requestWordLevelTimestamps: true, // Allows to request the offset and duration per word\r\n enableDictation: true,\r\n outputFormat: 1, // extended output (1) needed for nBest and confidence\r\n};\r\n\r\n// Hardcoded defaults\r\n// TODO: Define time limit settings for all recorders per category,\r\n// e.g. recordingSettings.user.maxLen, recordingSettings.feedback.maxLen, etc.\r\nexport const recordingSettings = {\r\n expectedLen: 15 * 60, // Recommended/expected recording time in seconds\r\n maxLen: 18 * 60, // Max allowed recording time in seconds (TED Talk)\r\n pauseLen: 1.5, // Time of silence that is counted as pause\r\n durationThreshold: 90, // Warn user if he tries to analyse session that is below this duration\r\n};\r\n\r\nexport const transcriptionSettings = {\r\n fillerWordsDe: [\r\n \"äh\",\r\n \"ähm\",\r\n \"hm\",\r\n \"mhm\",\r\n \"ja\",\r\n \"ok\",\r\n \"äh\",\r\n \"halt\",\r\n \"naja\",\r\n \"tja\",\r\n \"eben\",\r\n \"hm\",\r\n ],\r\n fillerWordsEn: [\r\n \"ah\",\r\n \"uhm\",\r\n \"uh\",\r\n \"hm\",\r\n \"um\",\r\n \"ehm\",\r\n \"like\",\r\n \"basically\",\r\n \"well\",\r\n \"actually\",\r\n \"uhh\",\r\n \"umm\",\r\n \"er\",\r\n \"hmm\",\r\n \"seriously\",\r\n \"literally\",\r\n \"totally\",\r\n \"obviously\",\r\n \"mean\",\r\n \"guess\",\r\n \"suppose\",\r\n \"something\",\r\n \"okay\",\r\n \"so\",\r\n \"right\",\r\n \"uh\",\r\n \"huh\",\r\n \"mhm\",\r\n ],\r\n};\r\n\r\n// Changing these values afterwards may lead to existing users unable to login with the new rules\r\nexport const passwordSettings = {\r\n passwordRules: helpers.regex(\r\n \"passwordRules\",\r\n /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*\\W).{12,32}$/,\r\n ),\r\n minLength: 12,\r\n maxLength: 32,\r\n};\r\n\r\nexport const chatSettings = {\r\n showSupportFABInsteadChat: parseBoolean(\r\n process.env.VUE_APP_USE_SUPPORT_FAB,\r\n false,\r\n ), // Show a support button & dialog instead of the chat\r\n chatReadyPollingInterval: 200, // Polling to check if the chat is displayed, in ms\r\n chatReadyRetries: 3, // Required to make sure the widgets inline style was really applied after init (to allow overriding the style)\r\n};\r\n\r\nexport const paymentSettings = {\r\n publishableKey:\r\n process.env.VUE_APP_STRIPE_PUBLISHABLE_KEY ||\r\n \"pk_test_51HEbvUJCzl1v8E2VPxrrkO9hqq1oev2bvT7EBi8iTzNgSHeSaDOJ9cgNHQoY7o3DOIJj4yJoSWzQc3OQJqRJwTnh00vop9yRpT\",\r\n testMode: process.env.VUE_APP_STRIPE_TEST_MODE || true,\r\n vatIncluded: false, // Defines if tax is included or excluded in the prices from Stripe (net or gross values)\r\n defaultVatRate: 19,\r\n};\r\n","export const defaultPfp = require(\"@/assets/prezp_avatar.jpg\");\r\n","import {\r\n User,\r\n Article,\r\n Goal,\r\n Company,\r\n Group,\r\n Presentation,\r\n Meeting,\r\n AssignedGoal,\r\n //Subscription,\r\n} from \"./\";\r\nimport { Seminar } from \"./interfaces\";\r\nimport { Session, MetaAnalysis, MetaSettings } from \"./sessions\";\r\nimport BaselineAnalysis from \"./sessions/BaselineAnalysis\";\r\n\r\nclass UserData {\r\n user: User;\r\n company?: Company;\r\n goals?: { assignedGoals: AssignedGoal[]; createdGoals: Goal[] } | null;\r\n presentations?: Presentation[];\r\n meetings?: Meeting[];\r\n articles?: Article[];\r\n groups?: Group[];\r\n sessions?: Session[];\r\n metaAnalysis?: MetaAnalysis[];\r\n metaSettings?: MetaSettings;\r\n seminars?: Seminar[];\r\n baseline?: BaselineAnalysis;\r\n active: boolean;\r\n lastCheckedNotifications?: Date;\r\n //subscription?: Subscription | null; // Add subscription field\r\n\r\n constructor(data: any) {\r\n const {\r\n user,\r\n company,\r\n goals,\r\n presentations,\r\n meetings,\r\n articles,\r\n groups,\r\n sessions,\r\n metaAnalysis,\r\n initialSession,\r\n active,\r\n seminars,\r\n lastCheckedNotifications,\r\n //subscription, // Add subscription to the constructor\r\n } = data;\r\n this.user = User.parse(user);\r\n if (company) this.company = new Company(company);\r\n this.active = active;\r\n this.seminars = seminars;\r\n //this.subscription = subscription || null; // Initialize subscription\r\n\r\n if (!active) return;\r\n\r\n if (goals) {\r\n const { assignedGoals, createdGoals } = goals;\r\n this.goals = {\r\n assignedGoals: (assignedGoals as any[]).map(ag =>\r\n AssignedGoal.parse(ag),\r\n ),\r\n createdGoals: (createdGoals as any[]).map(cg => Goal.parse(cg)),\r\n };\r\n } else this.goals = { assignedGoals: [], createdGoals: [] };\r\n\r\n if (presentations)\r\n this.presentations = (presentations as any[]).map(p =>\r\n Presentation.parse(p),\r\n );\r\n else this.presentations = [];\r\n\r\n if (meetings)\r\n this.meetings = (meetings as any[]).map(m => Meeting.parse(m));\r\n else this.meetings = [];\r\n\r\n if (articles)\r\n this.articles = (articles as any[]).map(a => Article.parseArticle(a));\r\n else this.articles = [];\r\n\r\n if (groups) this.groups = (groups as any[]).map(g => Group.parseGroup(g));\r\n else this.groups = [];\r\n\r\n if (sessions)\r\n this.sessions = (sessions as any[]).map(s =>\r\n Session.parseSingleSession(s),\r\n );\r\n else this.sessions = [];\r\n\r\n if (metaAnalysis && metaAnalysis.data)\r\n this.metaAnalysis = metaAnalysis.data.map(\r\n (d: any) => new MetaAnalysis(d),\r\n );\r\n if (metaAnalysis && metaAnalysis.settings)\r\n this.metaSettings = new MetaSettings(metaAnalysis.settings);\r\n\r\n this.baseline = new BaselineAnalysis(initialSession);\r\n\r\n this.lastCheckedNotifications = lastCheckedNotifications\r\n ? lastCheckedNotifications\r\n : new Date(\"2021-05-01T10:00:00\");\r\n }\r\n}\r\nexport default UserData;\r\n","import { ActionTree } from \"vuex\";\r\n\r\nimport router from \"@/core/router\";\r\nimport { RootState } from \"../root\";\r\nimport api from \"@/core/utils/api\";\r\nimport UserData from \"@/core/models/UserData\";\r\nimport Storage from \"@/core/utils/LocalStorage\";\r\nimport LocalStorage from \"@/core/utils/LocalStorage\";\r\n\r\nconst actions: ActionTree = {\r\n async loadEverything({ state, commit, dispatch }) {\r\n const token = Storage.getAccessToken();\r\n\r\n if (!token) {\r\n state.dataLoadSuccess = true;\r\n commit(\"loaded\");\r\n return;\r\n }\r\n\r\n state.dataLoading = true;\r\n try {\r\n const res = await api.get(\"/api/Users/Data\");\r\n const data = new UserData(res);\r\n dispatch(\"setEverything\", data);\r\n state.active = data.active;\r\n state.dataLoadSuccess = true;\r\n // if (!data.user.EmailVerified || !data.active)\r\n // router.replace(\"/auth/onboarding\");\r\n } catch (error) {\r\n Storage.clearStorage();\r\n router.replace(\"/auth/login\");\r\n }\r\n\r\n state.dataLoading = false;\r\n },\r\n\r\n clearEverything({ dispatch, state }) {\r\n state.dataLoading = true;\r\n dispatch(\"seminars/clear\");\r\n dispatch(\"managed/clear\");\r\n dispatch(\"company/clear\");\r\n dispatch(\"profile/clear\");\r\n dispatch(\"dashboard/clear\");\r\n dispatch(\"goals/clearGoals\");\r\n dispatch(\"groups/clearGroups\");\r\n dispatch(\"news/clearArticles\");\r\n dispatch(\"meetings/clearMeetings\");\r\n dispatch(\"sessions/clearSessions\");\r\n dispatch(\"presentations/clearPresentations\");\r\n LocalStorage.clearStorage();\r\n\r\n state.dataLoadSuccess = true;\r\n state.dataLoading = false;\r\n },\r\n\r\n // There is the function\r\n displaySnackbar({ commit }, message = \"\") {\r\n if (!message) return;\r\n commit(\"displaySnackbar\", message);\r\n },\r\n\r\n setEverything({ commit, dispatch }, data: UserData) {\r\n commit(\"profile/set\", data.user);\r\n dispatch(\"seminars/set\", data.seminars || []);\r\n\r\n if (data.company) commit(\"company/set\", data.company);\r\n if (!data.active) return;\r\n\r\n commit(\"profile/setBaseline\", data.baseline);\r\n if (!data.metaAnalysis || !data.metaSettings)\r\n commit(\"sessions/setMeta\", {\r\n data: data.metaAnalysis,\r\n settings: data.metaSettings,\r\n });\r\n commit(\"notifications/setLastChecked\", data.lastCheckedNotifications);\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { MutationTree } from \"vuex\";\r\n\r\nimport { RootState } from \"../root\";\r\n\r\nconst snackTimeout = 10 * 1000; // 10s\r\nconst mutations: MutationTree = {\r\n loading: state => (state.dataLoading = true),\r\n loaded: state => (state.dataLoading = false),\r\n appLoading: state => (state.appLoading = true),\r\n appLoaded: state => (state.appLoading = false),\r\n displaySnackbar(state, message = \"\") {\r\n if (!message) return;\r\n state.showSnackbar = true;\r\n state.snackbarText = message;\r\n setTimeout(() => {\r\n state.showSnackbar = false;\r\n }, snackTimeout);\r\n },\r\n};\r\n\r\nexport default mutations;\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { RootState } from \"../root\";\r\nimport i18n from \"@/core/plugins/i18n\";\r\nimport vuetify from \"@/core/plugins/vuetify\";\r\n\r\nconst getters: GetterTree = {\r\n lang: _ => i18n.locale,\r\n theme: _ => vuetify.framework.theme.currentTheme,\r\n isDarkMode: _ => vuetify.framework.theme.dark,\r\n dataLoading: state => state.dataLoading,\r\n dataLoadSuccess: state => state.dataLoadSuccess,\r\n appLoading: state => state.appLoading,\r\n active: state => state.active,\r\n showSnackbar: state => state.showSnackbar,\r\n snackbarText: state => state.snackbarText,\r\n};\r\n\r\nexport default getters;\r\n","export interface RootState {\r\n version: string;\r\n appLoading: boolean;\r\n\r\n // Active\r\n active: boolean;\r\n dataLoading: boolean;\r\n dataLoadSuccess: boolean;\r\n\r\n // Snakcbar\r\n showSnackbar: boolean;\r\n snackbarText: string;\r\n}\r\n\r\nconst state: RootState = {\r\n version: \"1.0.0\",\r\n appLoading: false,\r\n\r\n // Active\r\n active: false,\r\n dataLoading: true,\r\n dataLoadSuccess: true,\r\n\r\n // Snackbar\r\n showSnackbar: false,\r\n snackbarText: \"\",\r\n};\r\n\r\nimport actions from \"./actions\";\r\nimport mutations from \"./mutations\";\r\nimport getters from \"./getters\";\r\n\r\nexport { state, actions, mutations, getters };\r\n","import { GetterTree } from \"vuex\";\r\nimport { ProfileState } from \".\";\r\nimport { RootState } from \"../root\";\r\nimport { Role, Roles, RoleClaims } from \"@/core/models\";\r\nimport { defaultPfp } from \"@/core/utils/constants\";\r\n\r\nconst getters: GetterTree = {\r\n id: state => state.user?.ID.trim(),\r\n customerId: state =>\r\n (state.user && state.user.CustomerId && state.user?.CustomerId.trim()) ||\r\n \"\",\r\n paymentMethodId: state =>\r\n (state.user && state.user?.PaymentMethodId.trim()) || \"\",\r\n pfp: state => state.user?.Pfp || defaultPfp,\r\n isDefaultPfp: state => !state.user?.Pfp,\r\n showTutorial: state => state.user?.ShowTutorial,\r\n tutorialStep: state => state.user?.TutorialStep,\r\n isAuthenticated: state => state.isAuthenticated,\r\n hasSubscription: state => state.hasSubscription,\r\n ownsCompany: state => state.ownsCompany,\r\n getUserEmail: state => (state.user && state.user.Email.trim()) || \"\",\r\n getUserName: state => (state.user && state.user.Username.trim()) || \"\",\r\n getUserRole: state => {\r\n if (state.user && state.user.Roles) {\r\n console.log(\"getUserRole state\");\r\n console.log(\"User roles:\", state.user.Roles);\r\n return state.user.Roles;\r\n }\r\n console.log(\"Roles.User:\", Role.User);\r\n return [Role.User];\r\n },\r\n getUserHasPrivileges: state => {\r\n if (state.user && state.user.Roles)\r\n return state.user.Roles.some(role => role.name === \"admin\");\r\n\r\n return false;\r\n },\r\n userEmailVerified: state => (state.user && state.user.EmailVerified) || false,\r\n\r\n // Get roles from ASP.NET Role System\r\n getUserRoles: state => state.user?.Roles || [],\r\n\r\n hasPermission: state => (permission: RoleClaims) => {\r\n return state.permissions.some(x => {\r\n const [type] = x.type.split(\":\"); // Split string at \":\" and use first part\r\n return type === permission.type;\r\n });\r\n },\r\n hasRole: state => (role: Roles) => {\r\n return state.userRoles.some(r => r.name === role.name);\r\n },\r\n\r\n // Test for specific Roles\r\n isAdmin: state => state.user?.Roles.some(r => r.name === \"admin\"),\r\n isFreeUser: state =>\r\n state.user?.Roles.some(r => r.name === \"subscriber-free\"),\r\n isBasicUser: state =>\r\n state.user?.Roles.some(r => r.name === \"subscriber-basic\"),\r\n isStandardUser: state =>\r\n state.user?.Roles.some(r => r.name === \"subscriber-standard\"),\r\n isPremiumUser: state =>\r\n state.user?.Roles.some(r => r.name === \"subscriber-premium\"),\r\n isEnterpriseUser: state =>\r\n state.user?.Roles.some(r => r.name === \"subscriber-enterprise\"),\r\n\r\n isModerator: state => state.user?.Roles.some(r => r.name === \"moderator\"),\r\n isCoach: state => state.user?.Roles.some(r => r.name === \"coach\"),\r\n isTeacher: state => state.user?.Roles.some(r => r.name === \"teacher\"),\r\n isStudent: state => state.user?.Roles.some(r => r.name === \"student\"),\r\n\r\n // Non-User specific\r\n getAllUsers: state => {\r\n const admins = state.allUsers.filter(x =>\r\n x.Roles.some(r => r.name === Role.Admin),\r\n );\r\n const users = state.allUsers.filter(x =>\r\n x.Roles.some(r => r.name === Role.User),\r\n );\r\n return [...admins, ...users];\r\n },\r\n\r\n getAllUsersLoading: state => state.allUsersLoading,\r\n changeUserRoleLoading: state => state.changeUserRoleLoading,\r\n changedUserRoleEmail: state => state.changedUserRoleEmail,\r\n forgotPasswordLoading: state => state.forgotPasswordLoading,\r\n forgotEmailSent: state => state.forgotEmailSent,\r\n resetPasswordLoading: state => state.resetPasswordLoading,\r\n confirmEmailLoading: state => state.confirmEmailLoading,\r\n confirmEmailSent: state => state.confirmEmailSent,\r\n\r\n createCompanyLoading: state => state.createCompanyLoading,\r\n createCompanySuccess: state => state.createCompanySuccess,\r\n editCompanyLoading: state => state.editCompanyLoading,\r\n upgradeLoading: state => state.upgradeLoading,\r\n loading: state => state.loading,\r\n\r\n isCompany: state => state.user && !!state.user.CustomerId,\r\n permissions: state => (state.user && state.user.Permissions) || [],\r\n userClaims: state => (state.user && state.user.UserClaims) || [],\r\n\r\n baseline: state => state.baseline,\r\n\r\n subscriptionDetails: state => {\r\n if (state.user && state.user.subscription) return state.user.subscription;\r\n\r\n return {\r\n isActive: false,\r\n startDate: null,\r\n currentPeriodEnd: null,\r\n planId: \"\",\r\n created: null,\r\n subscriptionId: \"\",\r\n userId: \"\",\r\n paymentMethodId: \"\",\r\n priceId: \"\",\r\n validityDate: null,\r\n licenseCount: 0,\r\n billingCycleAnchor: null,\r\n cancelAt: null,\r\n cancelAtPeriodEnd: false,\r\n collectionMethod: \"\",\r\n currency: \"\",\r\n currentPeriodStart: null,\r\n customer: \"\",\r\n daysUntilDue: null,\r\n defaultPaymentMethodId: \"\",\r\n discountId: \"\",\r\n endedAt: null,\r\n latestInvoiceId: \"\",\r\n nextPendingInvoiceItemInvoice: \"\",\r\n pendingSetupIntentId: \"\",\r\n subStartDate: null,\r\n status: \"\",\r\n planAmount: 0,\r\n planCurrency: \"\",\r\n planInterval: \"\",\r\n planIntervalCount: 0,\r\n productName: \"\",\r\n paymentMethod: null,\r\n latestInvoice: null,\r\n };\r\n },\r\n};\r\n\r\nexport default getters;\r\n","import { ActionTree } from \"vuex\";\r\n\r\nimport router from \"@/core/router\";\r\nimport i18n from \"@/core/plugins/i18n\";\r\nimport api from \"@/core/utils/api\";\r\nimport LocalStorage from \"@/core/utils/LocalStorage\";\r\nimport UserData from \"@/core/models/UserData\";\r\nimport BaselineAnalysis from \"@/core/models/sessions/BaselineAnalysis\";\r\n\r\nimport { ProfileState } from \".\";\r\nimport { RootState } from \"../root\";\r\n\r\nconst actions: ActionTree = {\r\n async logoutUser({ state, dispatch }) {\r\n state.user = undefined;\r\n state.isAuthenticated = false;\r\n LocalStorage.clearStorage();\r\n dispatch(\"clearEverything\", null, { root: true });\r\n },\r\n clear: ({ state }) => (state.baseline = new BaselineAnalysis(null)),\r\n\r\n // login/register/load\r\n async loginUser({ state, rootState, commit, dispatch }, { email, password }) {\r\n console.log(\"profile/actions loginUser\");\r\n state.loading = true;\r\n try {\r\n const res = (await api.post(\"/api/Account/Login\", {\r\n email,\r\n password,\r\n from: \"web\",\r\n })) as any;\r\n const { userData: data, accessToken, refreshToken } = res as any;\r\n\r\n const userData = new UserData(data);\r\n LocalStorage.setAccessToken(accessToken);\r\n LocalStorage.setRefreshToken(refreshToken);\r\n\r\n state.isAuthenticated = true;\r\n dispatch(\"setEverything\", userData, { root: true });\r\n\r\n rootState.dataLoadSuccess = true;\r\n rootState.active = userData.active;\r\n const hasSubscription = userData.user.subscription?.isActive || false;\r\n commit(\"setHasSubscription\", hasSubscription);\r\n\r\n window.dispatchEvent(new Event(\"user-logged-in\"));\r\n\r\n // Don't redirect on DAF login\r\n const { deviceCode } = router.currentRoute.query;\r\n if (deviceCode) return;\r\n\r\n await router.replace(hasSubscription ? \"/\" : \"/subscription/pricing\");\r\n } catch (error) {\r\n const msg = i18n.t(`api_errors.${(error as any).description}`).toString();\r\n dispatch(\"displaySnackbar\", msg, { root: true });\r\n commit(\"userLoadError\");\r\n }\r\n\r\n state.loading = false;\r\n commit(\"loaded\", null, { root: true });\r\n },\r\n async registerUser({ state, /*rootState,*/ commit, dispatch }, data) {\r\n state.loading = true;\r\n try {\r\n const res = (await api.post(\"/api/Account/Register\", data)) as any;\r\n const { user, emailToken } = res;\r\n dispatch(\"sendConfirmEmail\", { email: user.email, token: emailToken });\r\n // If user should be signed in directly after signup (missing the complete user data from backend here)\r\n //const userData = new UserData({ user });\r\n //dispatch(\"setEverything\", userData, { root: true });\r\n //rootState.dataLoadSuccess = true;\r\n //rootState.active = userData.active;\r\n await router.replace(\"/auth/new-user\");\r\n } catch (error) {\r\n if ((error as any).description === \"user_exists\") {\r\n const msg = i18n.t(\"api_errors.user_exists\").toString();\r\n dispatch(\"displaySnackbar\", msg, { root: true });\r\n } else commit(\"userLoadError\");\r\n }\r\n state.loading = false;\r\n commit(\"loaded\", null, { root: true });\r\n },\r\n\r\n async loadUser({ state, commit, dispatch }) {\r\n state.loading = true;\r\n try {\r\n const res = (await api.get(\"/api/Users/GetByToken\")) as any;\r\n const {\r\n email,\r\n username,\r\n roles,\r\n emailVerified,\r\n permissions,\r\n subscription,\r\n customerId,\r\n paymentMethodId,\r\n } = res;\r\n LocalStorage.setUserRole(roles);\r\n\r\n const userData = new UserData({\r\n email,\r\n username,\r\n roles,\r\n emailVerified,\r\n permissions,\r\n subscription,\r\n customerId,\r\n paymentMethodId,\r\n });\r\n commit(\"set\", userData);\r\n\r\n const hasSubscription = userData.user.subscription?.isActive || false;\r\n commit(\"setHasSubscription\", hasSubscription);\r\n } catch (error) {\r\n console.error(\"Error while loading user:\", error);\r\n dispatch(\r\n \"displaySnackbar\",\r\n (error as any).message || \"Error while loading user\",\r\n { root: true },\r\n );\r\n commit(\"userLoadError\");\r\n } finally {\r\n state.loading = false;\r\n }\r\n },\r\n\r\n async updateTokens({ commit }, { accessToken, refreshToken }) {\r\n try {\r\n console.log(\"accessToken: \", accessToken);\r\n LocalStorage.setAccessToken(accessToken);\r\n LocalStorage.setRefreshToken(refreshToken);\r\n commit(\"updateTokens\", { accessToken, refreshToken });\r\n console.log(\"Tokens updated successfully\");\r\n } catch (error) {\r\n console.error(\"Error while updating tokens\", error);\r\n }\r\n },\r\n\r\n // subscriptions\r\n async getSubscriptionDetails(\r\n { state, commit, dispatch },\r\n subscriptionId: string,\r\n ) {\r\n state.loading = true;\r\n try {\r\n const subscription: any = await api.get(\r\n `/api/Subscriptions/${subscriptionId}`,\r\n );\r\n commit(\"setSubscriptionDetails\", subscription);\r\n\r\n const hasSubscription = subscription?.isActive || false;\r\n commit(\"setHasSubscription\", hasSubscription);\r\n } catch (error) {\r\n console.error(\"Error while getting subscription:\", error);\r\n dispatch(\r\n \"displaySnackbar\",\r\n (error as any).message || i18n.t(\"snack.stripe.subGetError\"),\r\n { root: true },\r\n );\r\n } finally {\r\n state.loading = false;\r\n }\r\n },\r\n\r\n async cancelSubscription(\r\n { state, commit, dispatch },\r\n subscriptionId: string,\r\n ) {\r\n state.loading = true;\r\n try {\r\n await api.patch(`/api/Subscriptions/${subscriptionId}`);\r\n const subscription: any = await api.get(\r\n `/api/Subscriptions/${subscriptionId}`,\r\n );\r\n commit(\"setSubscriptionDetails\", subscription);\r\n console.log(\"Canceled subscription\", subscriptionId);\r\n } catch (error) {\r\n console.error(\"Error while canceling subscription:\", error);\r\n dispatch(\r\n \"displaySnackbar\",\r\n (error as any).message || i18n.t(\"snack.stripe.subCancelError\"),\r\n { root: true },\r\n );\r\n } finally {\r\n state.loading = false;\r\n }\r\n },\r\n\r\n async deleteSubscription(\r\n { state, commit, dispatch },\r\n subscriptionId: string,\r\n ) {\r\n state.loading = true;\r\n try {\r\n await api.delete(`/api/Subscriptions/${subscriptionId}`);\r\n const subscription: any = await api.get(\r\n `/api/Subscriptions/${subscriptionId}`,\r\n );\r\n commit(\"setSubscriptionDetails\", subscription);\r\n console.log(\"Canceled subscription\", subscriptionId);\r\n } catch (error) {\r\n console.error(\"Error while deleting subscription:\", error);\r\n dispatch(\r\n \"displaySnackbar\",\r\n (error as any).message || i18n.t(\"snack.stripe.subCancelError\"),\r\n { root: true },\r\n );\r\n } finally {\r\n state.loading = false;\r\n }\r\n },\r\n\r\n async fetchUserRoles({ commit }) {\r\n try {\r\n const response = await api.get(\"/api/Users/GetAllRoles\");\r\n commit(\"setUserRoles\", response.data.roles);\r\n } catch (error) {\r\n console.error(\"Failed to fetch user roles:\", error);\r\n }\r\n },\r\n\r\n async fetchPermissions({ commit }) {\r\n try {\r\n const roleClaims: [] = await api.get(\"/api/Users/GetRolePermissions\");\r\n const userClaims: [] = await api.get(\"/api/Users/GetUserPermissions\");\r\n commit(\"setPermissions\", [...roleClaims, ...userClaims]);\r\n commit(\"setUserClaims\", userClaims);\r\n } catch (error) {\r\n console.error(\"Failed to fetch permissions:\", error);\r\n }\r\n },\r\n\r\n // sending emails\r\n async resetPassword({ state, dispatch }, data) {\r\n state.resetPasswordLoading = true;\r\n try {\r\n await api.post(\"/api/Account/MakePasswordResetResetPassword\", data);\r\n router.push(\"/auth/login\");\r\n } catch (error) {\r\n dispatch(\r\n \"displaySnackbar\",\r\n (error as any).description || \"Reset password fail\",\r\n { root: true },\r\n );\r\n console.log(error);\r\n }\r\n state.resetPasswordLoading = false;\r\n },\r\n async sendConfirmEmail({ state, dispatch }, payload) {\r\n const emailTimeout = 10 * 1000;\r\n state.confirmEmailLoading = true;\r\n try {\r\n await api.post(\"/api/Account/SendEmailVerification\", payload);\r\n state.confirmEmailSent = true;\r\n setTimeout(() => (state.confirmEmailSent = false), emailTimeout);\r\n } catch (error) {\r\n dispatch(\r\n \"displaySnackbar\",\r\n (error as any).description || \"Reset password fail\",\r\n { root: true },\r\n );\r\n state.confirmEmailSent = false;\r\n }\r\n state.confirmEmailLoading = false;\r\n },\r\n async confirmEmail({ state, dispatch }, data) {\r\n state.confirmEmailLoading = true;\r\n try {\r\n await api.post(\"/api/Account/ConfirmEmail\", data);\r\n } catch (error) {\r\n dispatch(\r\n \"displaySnackbar\",\r\n (error as any).description || \"Error when confirming email\",\r\n { root: true },\r\n );\r\n }\r\n state.confirmEmailLoading = false;\r\n },\r\n\r\n // pfp\r\n async uploadPfp({ state }, file: File) {\r\n try {\r\n const end = \"/api/Users/UploadProfilePicture\";\r\n const data = new FormData();\r\n data.append(\"image\", file);\r\n const uri = (await api.post(end, data, {\r\n headers: { \"Content-Type\": \"multipart/form-data\" },\r\n })) as string;\r\n if (!state.user) return;\r\n state.user.Pfp = uri;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n async removePfp({ state }) {\r\n try {\r\n const end = \"/api/Users/RemoveProfilePicture\";\r\n await api.delete(end);\r\n if (!state.user) return;\r\n state.user.Pfp = \"\";\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n\r\n // tutorial\r\n async advanceTutorial({ state }) {\r\n try {\r\n const end = \"/api/Users/Advance\";\r\n await api.patch(end);\r\n if (!state.user) return;\r\n state.user.TutorialStep = state.user.TutorialStep + 1;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n async completeTutorial({ state }) {\r\n try {\r\n const end = \"/api/Users/Complete\";\r\n await api.patch(end);\r\n if (!state.user) return;\r\n state.user.TutorialStep = 0;\r\n state.user.ShowTutorial = false;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n\r\n // add users from excel\r\n async addUsersFromExcel({ state }, file: File) {\r\n try {\r\n console.log(\"profile/actions=>addUsersFromExcel: \", file);\r\n const data = new FormData();\r\n data.append(\"excelFile\", file);\r\n await api.post(\"/api/Users/AddFromExcel\", data, {\r\n headers: { \"Content-Type\": \"multipart/form-data\" },\r\n });\r\n if (!state.user) return;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n\r\n // login from pre-activated deviceCode & clientId\r\n async loginByDeviceHandshake(\r\n { state, rootState, commit, dispatch },\r\n { deviceCode, clientId },\r\n ) {\r\n state.loading = true;\r\n try {\r\n const res = (await api.post(\r\n \"/api/Account/RequestDeviceToken\",\r\n {\r\n deviceCode,\r\n },\r\n {\r\n headers: {\r\n clientId: clientId,\r\n },\r\n },\r\n )) as any;\r\n const { userData: data, accessToken, refreshToken } = res as any;\r\n\r\n const userData = new UserData(data);\r\n LocalStorage.setAccessToken(accessToken);\r\n LocalStorage.setRefreshToken(refreshToken);\r\n\r\n state.isAuthenticated = true;\r\n dispatch(\"setEverything\", userData, { root: true });\r\n router.replace(\"/\");\r\n rootState.dataLoadSuccess = true;\r\n rootState.active = userData.active;\r\n\r\n window.dispatchEvent(new Event(\"user-logged-in\"));\r\n } catch (error) {\r\n console.error(error);\r\n if (error === \"Failed to generate device token.\")\r\n // eslint-disable-next-line no-ex-assign\r\n error = { description: \"device_token_failed\" };\r\n const msg = i18n.t(`api_errors.${(error as any).description}`).toString();\r\n dispatch(\"displaySnackbar\", msg, { root: true });\r\n commit(\"userLoadError\");\r\n }\r\n\r\n state.loading = false;\r\n commit(\"loaded\", null, { root: true });\r\n },\r\n\r\n // Company\r\n async createCompany({ state }, company) {\r\n console.log(\"Create company action\", company);\r\n state.createCompanySuccess = true;\r\n },\r\n async upgrade({ commit, state }, payload) {\r\n state.upgradeLoading = true;\r\n try {\r\n await api.post(\"Company/Upgrade\", payload);\r\n const msg = i18n.t(\"snack.comp.upsuccess\").toString();\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n } catch (errors) {\r\n const msg = i18n.t(\"snack.comp.upfail\").toString();\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n }\r\n state.upgradeLoading = false;\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { MutationTree } from \"vuex\";\r\n\r\nimport { ProfileState } from \".\";\r\nimport router from \"@/core/router\";\r\nimport {\r\n Subscription,\r\n User,\r\n Roles,\r\n RoleClaims,\r\n UserClaims,\r\n} from \"@/core/models\";\r\nimport Storage from \"@/core/utils/LocalStorage\";\r\nimport BaselineAnalysis from \"@/core/models/sessions/BaselineAnalysis\";\r\n\r\nconst mutations: MutationTree = {\r\n // Set\r\n set(state, user: User) {\r\n const { Roles } = user;\r\n state.user = user;\r\n Storage.setUserRole(Roles);\r\n state.loading = false;\r\n state.isAuthenticated = true;\r\n state.hasSubscription = user.subscription?.isActive || false;\r\n state.ownsCompany = user.ownsCompany;\r\n },\r\n setBaseline(state, baseline: BaselineAnalysis) {\r\n state.baseline = JSON.parse(JSON.stringify(baseline));\r\n },\r\n\r\n userLoadError(state) {\r\n state.isAuthenticated = false;\r\n state.user = undefined;\r\n Storage.clearStorage();\r\n },\r\n\r\n updateTokens(state, { accessToken, refreshToken }) {\r\n state.accessToken = accessToken;\r\n state.refreshToken = refreshToken;\r\n },\r\n\r\n // Forgot password\r\n forgotPasswordLoading(state, value: boolean) {\r\n state.forgotPasswordLoading = value;\r\n },\r\n forgotEmailSent(state) {\r\n state.forgotEmailSent = true;\r\n setTimeout(() => (state.forgotEmailSent = false), 10000);\r\n },\r\n forgotPasswordSuccess() {},\r\n forgotPasswordError() {},\r\n\r\n // Reset password\r\n resetPasswordLoading(state, value: any) {\r\n state.resetPasswordLoading = value;\r\n },\r\n resetPasswordSuccess() {\r\n router.replace(\"/auth/login\");\r\n },\r\n resetPasswordError() {\r\n router.replace(\"/auth/forgotPassword\");\r\n },\r\n\r\n // Confirm email\r\n confirmEmailLoading(state, value) {\r\n state.confirmEmailLoading = value;\r\n },\r\n\r\n // Company\r\n createCompanyLoading(state) {\r\n state.createCompanyLoading = true;\r\n },\r\n createCompany(state) {\r\n state.createCompanySuccess = true;\r\n },\r\n createCompanyLoaded(state) {\r\n state.createCompanyLoading = false;\r\n },\r\n\r\n upgradeLoading(state) {\r\n state.upgradeLoading = true;\r\n },\r\n upgradeSuccess(_, company) {\r\n console.log(company);\r\n },\r\n upgradeLoaded(state) {\r\n state.upgradeLoading = true;\r\n },\r\n setHasSubscription(state, hasSubscription: boolean) {\r\n state.hasSubscription = hasSubscription;\r\n },\r\n setUserRoles(state, roles: Roles[]) {\r\n state.userRoles = roles;\r\n },\r\n setPermissions(state, permissions: RoleClaims[]) {\r\n state.permissions = permissions;\r\n },\r\n setUserClaims(state, userClaims: UserClaims[]) {\r\n if (state.user) state.user.UserClaims = userClaims;\r\n },\r\n setSubscriptionDetails(state, subscriptionDetails: Subscription) {\r\n if (state.user) state.user.subscription = subscriptionDetails;\r\n },\r\n};\r\n\r\nexport default mutations;\r\n","import { Module } from \"vuex\";\r\n\r\nimport getters from \"./getters\";\r\nimport actions from \"./actions\";\r\nimport mutations from \"./mutations\";\r\nimport { RootState } from \"../root\";\r\nimport {\r\n User,\r\n Subscription,\r\n Roles,\r\n UserClaims,\r\n RoleClaims,\r\n} from \"@/core/models\";\r\nimport BaselineAnalysis from \"@/core/models/sessions/BaselineAnalysis\";\r\n\r\nexport interface ProfileState {\r\n isAuthenticated: boolean;\r\n hasSubscription: boolean;\r\n ownsCompany: boolean;\r\n subscriptionDetails: Subscription | null;\r\n user?: User;\r\n userRoles: Roles[];\r\n permissions: RoleClaims[];\r\n userClaims: UserClaims[];\r\n loading: boolean;\r\n allUsers: User[];\r\n allUsersLoading: boolean;\r\n allUsersRetrieved: boolean;\r\n changeUserRoleLoading: boolean;\r\n changedUserRoleEmail: string;\r\n\r\n forgotPasswordLoading: boolean;\r\n forgotEmailSent: boolean;\r\n resetPasswordLoading: boolean;\r\n confirmEmailSent: boolean;\r\n confirmEmailLoading: boolean;\r\n\r\n createCompanyLoading: boolean;\r\n createCompanySuccess: boolean;\r\n editCompanyLoading: boolean;\r\n upgradeLoading: boolean;\r\n\r\n baseline: BaselineAnalysis;\r\n\r\n accessToken?: string;\r\n refreshToken?: string;\r\n}\r\n\r\nexport const state: ProfileState = {\r\n user: undefined,\r\n userRoles: [],\r\n permissions: [],\r\n userClaims: [],\r\n loading: false,\r\n isAuthenticated: false,\r\n hasSubscription: false,\r\n ownsCompany: false,\r\n subscriptionDetails: null,\r\n\r\n allUsers: [],\r\n allUsersLoading: false,\r\n allUsersRetrieved: false,\r\n changeUserRoleLoading: false,\r\n changedUserRoleEmail: \"\",\r\n\r\n forgotPasswordLoading: false,\r\n forgotEmailSent: false,\r\n resetPasswordLoading: false,\r\n confirmEmailSent: false,\r\n confirmEmailLoading: false,\r\n\r\n createCompanyLoading: false,\r\n createCompanySuccess: false,\r\n editCompanyLoading: false,\r\n upgradeLoading: false,\r\n\r\n baseline: new BaselineAnalysis(null),\r\n\r\n accessToken: undefined,\r\n refreshToken: undefined,\r\n};\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const profile: Module = {\r\n namespaced,\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n};\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { SessionsState } from \".\";\r\nimport { RootState } from \"../root\";\r\n\r\nconst getters: GetterTree = {\r\n loading: state => state.loading,\r\n retrieved: state => state.retrieved,\r\n getSessions: state =>\r\n state.sessions.sort(\r\n (a, b) => +new Date(b.CreatedAt) - +new Date(a.CreatedAt),\r\n ),\r\n getSharedSessions: state =>\r\n state.sharedSessions.sort(\r\n (a, b) => +new Date(b.createdAt) - +new Date(a.createdAt),\r\n ),\r\n sessionsCount: state => state.sessions.length,\r\n\r\n progress: state => state.progress,\r\n progressLoading: state => state.progressLoading,\r\n progressRetrieved: state => state.progressRetrieved,\r\n\r\n removingSession: state => state.removingSession,\r\n uploadingSession: state => state.uploadingSession,\r\n gettingSingleSession: state => state.gettingSingleSession,\r\n retrievedSessionId: state => state.retrievedSessionId,\r\n\r\n aiFeedbackLoading: state => state.aiFeedbackLoading,\r\n aiFeedbackSessionId: state => state.aiFeedbackSessionId,\r\n aiFeedbackMessage: state => state.aiFeedbackMessage,\r\n\r\n benchmark: state => state.benchmark,\r\n benchmarks: state => state.benchmarks,\r\n benchmarkUser: state => state.benchmarkUser,\r\n baselineLoading: state => state.baselineLoading,\r\n benchmarksRetrieved: state => state.benchmarksRetrieved,\r\n benchmarksLoading: state => state.benchmarksLoading,\r\n\r\n meta: state => state.metaAnalysis,\r\n metaSettings: state => state.metaSettings,\r\n metaLoading: state => state.metaLoading,\r\n};\r\n\r\nexport default getters;\r\n","import axios, { AxiosError, AxiosRequestConfig } from \"axios\";\r\n\r\nimport store from \"@/core/store\";\r\nimport router from \"@/core/router\";\r\nimport i18n from \"@/core/plugins/i18n\";\r\nimport Storage from \"@/core/utils/LocalStorage\";\r\n\r\nimport { apiProxyBaseUrl } from \"@/settings\";\r\n\r\nconst apiProxy = axios.create({\r\n baseURL: apiProxyBaseUrl,\r\n headers: { accept: \"application/json\" },\r\n});\r\n\r\napiProxy.interceptors.request.use(config => {\r\n config.headers[\"preferred-lang\"] = i18n.locale;\r\n const token = Storage.getAccessToken() || \"\";\r\n config.headers.Authorization = `Bearer ${token}`;\r\n return config;\r\n});\r\n\r\nlet refreshingRequest: any = null;\r\nlet requestsToRetry: AxiosRequestConfig[] = [];\r\nconst handleUnuth = async (err: AxiosError) => {\r\n // token expired\r\n if (err.response?.headers[\"token-expired\"] === \"true\")\r\n try {\r\n // already outgoing request to refresh\r\n if (refreshingRequest) {\r\n requestsToRetry.push(err.config);\r\n return handleError(err);\r\n }\r\n\r\n // make refresh request\r\n refreshingRequest = apiProxy.post(\r\n \"/api/Account/RefreshJwt\",\r\n {\r\n token: Storage.getAccessToken() || \"\",\r\n refreshToken: Storage.getRefreshToken() || \"\",\r\n },\r\n { skipRefresh: true } as AxiosRequestConfig,\r\n );\r\n\r\n // await refresh, get tokens, set tokens\r\n const { accessToken, refreshToken } = await refreshingRequest;\r\n refreshingRequest = null;\r\n Storage.setAccessToken(accessToken);\r\n Storage.setRefreshToken(refreshToken);\r\n err.config.headers[\"Authorization\"] = `Bearer ${accessToken}`;\r\n\r\n // retry other requests that might have attempted to refresh\r\n try {\r\n Promise.all([requestsToRetry.map(x => apiProxy(x))]);\r\n } catch {\r\n // have to be manually attempted again\r\n console.log(\"Could not refresh all previous requests\");\r\n } finally {\r\n requestsToRetry = [];\r\n }\r\n\r\n // retry first request\r\n try {\r\n return await apiProxy(err.config);\r\n } catch (error) {\r\n return handleError(error as any);\r\n }\r\n } catch (error) {\r\n if (router.currentRoute.path != \"/auth/login\")\r\n router.replace(\"/auth/login\");\r\n store.dispatch(\"profile/logoutUser\");\r\n return Promise.reject();\r\n }\r\n\r\n // other error\r\n // logout, then to login page\r\n if (router.currentRoute.path != \"/auth/login\") router.replace(\"/auth/login\");\r\n store.dispatch(\"profile/logoutUser\");\r\n return handleError(err);\r\n};\r\n\r\n// default handling of error\r\nconst handleError = (err: AxiosError) => {\r\n const data = err.response?.data;\r\n // temp. solution for translated backend errors\r\n console.log(data);\r\n\r\n let msg = i18n.t(\"global.err\").toString();\r\n\r\n if (data.description == \"Incorrect password\")\r\n msg = i18n.t(\"loginSection.wrongPasswordError\").toString();\r\n else if (data.code === \"EMAIL_NOT_VERIFIED\")\r\n msg = i18n.t(\"loginSection.unconfirmedEmail\").toString();\r\n else if (err.response?.status == 401)\r\n msg = i18n.t(\"loginSection.unauthorizedError\").toString();\r\n\r\n store.commit(\"displaySnackbar\", msg, { root: true });\r\n\r\n if (typeof data === typeof Array) return Promise.reject(data[0]);\r\n return Promise.reject(data);\r\n};\r\n\r\n// default interceptors\r\napiProxy.interceptors.response.use(\r\n res => {\r\n console.log(`${res.config.url} (${res.status})`, res.data);\r\n return Promise.resolve(res.data);\r\n },\r\n async (err: AxiosError) => {\r\n if (!err.response) return Promise.reject();\r\n\r\n const unauth = err.response.status === 401;\r\n const tokenExpired = err.response?.headers[\"token-expired\"] === \"true\";\r\n const shouldRefresh = !(err.config as any).skipRefresh;\r\n if ((unauth || tokenExpired) && shouldRefresh)\r\n return await handleUnuth(err);\r\n return handleError(err);\r\n },\r\n);\r\n\r\nexport default apiProxy;\r\n","import { ActionTree } from \"vuex\";\r\n\r\nimport { SessionsState } from \".\";\r\nimport api from \"@/core/utils/api\";\r\nimport apiProxy from \"@/core/utils/api-proxy\";\r\nimport { RootState } from \"../root\";\r\nimport i18n from \"@/core/plugins/i18n\";\r\nimport { RemoveFromShared, SessionsProgress, User } from \"@/core/models\";\r\nimport { MetaAnalysis, Session } from \"@/core/models/sessions\";\r\n\r\nconst actions: ActionTree = {\r\n clearSessions({ state }): void {\r\n state.sessions = [];\r\n state.retrieved = false;\r\n },\r\n\r\n async getProgress({ state }) {\r\n state.progressLoading = true;\r\n try {\r\n const end = \"/api/Sessions/Progress\";\r\n state.progress = (await api.get(end)) as SessionsProgress;\r\n state.progressRetrieved = true;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.progressLoading = false;\r\n },\r\n\r\n async getSlimSessions({ state }) {\r\n state.loading = true;\r\n try {\r\n const end = \"/api/Sessions/Slim\";\r\n const res = (await api.get(end)) as any[];\r\n const existing = state.sessions.map(s => s.ID);\r\n const newSessions = res\r\n .map(x => Session.parseSlim(x))\r\n .filter(x => !existing.includes(x.ID));\r\n state.sessions = [...state.sessions, ...newSessions];\r\n state.retrieved = true;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.loading = false;\r\n },\r\n\r\n async clearSlimSessions({ state }) {\r\n state.sessions = [];\r\n state.retrieved = false;\r\n },\r\n\r\n async getIncompleteSessions({ state }) {\r\n try {\r\n const ids = state.sessions.filter(x => !x.Completed).map(x => x.ID);\r\n if (!ids.length) return;\r\n\r\n const end = `/api/Sessions/Incomplete?ids=${ids.join(\"-\")}`;\r\n const res = (await api.get(end)) as any[];\r\n const fetched = Session.parseSessions(res);\r\n const oldSessions = state.sessions\r\n .slice(0)\r\n .filter(x => !ids.includes(x.ID));\r\n state.sessions = [...oldSessions, ...fetched];\r\n console.log(\"[actions] Fetched incomplete sessions\");\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n\r\n async uploadSession({ state }, data: FormData) {\r\n state.uploadingSession = true;\r\n\r\n try {\r\n const res = await api.post(\"/api/Sessions/CreateSession\", data, {\r\n headers: { ContentType: \"multipart/form-data\" },\r\n });\r\n const s = Session.parseSingleSession(res);\r\n const newSessions = [s, ...state.sessions];\r\n state.sessions = [];\r\n state.sessions = newSessions;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n state.uploadingSession = false;\r\n },\r\n\r\n async getSessions({ commit, state }) {\r\n state.metaLoading = true;\r\n state.loading = true;\r\n state.retrieved = false;\r\n\r\n try {\r\n const res = await api.get(\"/api/Sessions/ForWeb\");\r\n state.retrieved = true;\r\n commit(\"getSessionsSuccess\", res);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n state.loading = false;\r\n state.metaLoading = false;\r\n },\r\n\r\n async loadSharedSessions({ commit, state }) {\r\n state.loading = true;\r\n state.retrieved = false;\r\n\r\n try {\r\n const res = await api.get(\"/api/sessions/shared\");\r\n state.retrieved = true;\r\n commit(\"getSharedSessionsSuccess\", res);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n state.loading = false;\r\n },\r\n\r\n async getSingleSession({ state }, id: number) {\r\n let idx = state.sessions.findIndex(s => s.ID === id);\r\n\r\n state.gettingSingleSession = true;\r\n state.retrievedSessionId = id;\r\n try {\r\n if (idx !== -1) {\r\n state.sessions[idx].Loading = true;\r\n console.log(\"Set state loading for \", state.sessions[idx].ID);\r\n }\r\n const res = await api.get(`/api/Sessions/${id}`);\r\n const session = Session.parseSingleSession(res);\r\n session.Loaded = true;\r\n session.Loading = false;\r\n const copy = state.sessions.slice(0);\r\n idx = state.sessions.findIndex(s => s.ID === id);\r\n if (idx !== -1) copy[idx] = JSON.parse(JSON.stringify(session));\r\n else copy.push(session);\r\n\r\n state.sessions = copy;\r\n } catch (error) {\r\n console.log(error);\r\n state.sessions.findIndex(s => s.ID === id);\r\n if (idx !== -1) state.sessions[idx].Loading = false;\r\n }\r\n\r\n state.gettingSingleSession = false;\r\n state.retrievedSessionId = 0;\r\n },\r\n\r\n async getSingleSharedSession({ state }, id: number) {\r\n let idx = state.sessions.findIndex(s => s.ID === id);\r\n\r\n state.gettingSingleSession = true;\r\n state.retrievedSessionId = id;\r\n try {\r\n if (idx !== -1) {\r\n state.sessions[idx].Loading = true;\r\n console.log(\"Set state loading for \", state.sessions[idx].ID);\r\n }\r\n const res = await api.get(`/api/Sessions/shared/${id}`);\r\n const session = Session.parseSingleSession(res);\r\n session.Loaded = true;\r\n session.Loading = false;\r\n const copy = state.sessions.slice(0);\r\n idx = state.sessions.findIndex(s => s.ID === id);\r\n\r\n if (idx !== -1) copy[idx] = JSON.parse(JSON.stringify(session));\r\n else copy.push(session);\r\n\r\n state.sessions = copy;\r\n } catch (error) {\r\n console.log(error);\r\n state.sessions.findIndex(s => s.ID === id);\r\n if (idx !== -1) state.sessions[idx].Loading = false;\r\n }\r\n\r\n state.gettingSingleSession = false;\r\n state.retrievedSessionId = 0;\r\n },\r\n\r\n async deleteSession({ commit, state }, id: number) {\r\n state.removingSession = true;\r\n state.removedSessionId = id;\r\n\r\n try {\r\n await api.delete(`/api/Sessions/${id}`);\r\n commit(\"deleteSessionSuccess\", id);\r\n const msg = i18n.t(\"snack.sess.delsuccess\").toString();\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n } catch (error) {\r\n console.log(error);\r\n const msg = i18n.t(\"snack.sess.delfail\").toString();\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n }\r\n\r\n state.removingSession = false;\r\n state.removedSessionId = 0;\r\n },\r\n\r\n async updateSettings({ commit, state }, payload: any) {\r\n state.metaLoading = true;\r\n try {\r\n const endpoint = \"/api/Sessions/SaveSettings\";\r\n const { data } = (await api.post(endpoint, payload)) as { data: any[] };\r\n\r\n const { attributes, value } = payload;\r\n state.metaSettings = { Attributes: attributes, NumOfSessions: value };\r\n state.metaAnalysis = data.map(m => new MetaAnalysis(m));\r\n } catch (errors) {\r\n const msg = i18n.t(\"snack.sess.metafail\").toString();\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n }\r\n state.metaLoading = false;\r\n },\r\n\r\n async getBenchmarks({ commit, state }) {\r\n state.benchmarksLoading = true;\r\n state.benchmarksRetrieved = false;\r\n try {\r\n const end = \"/api/Sessions/GetBaselineSessions\";\r\n const { user, sessions } = (await api.get(end)) as any;\r\n state.benchmarkUser = User.parse(user);\r\n state.benchmarks = Session.parseSessions(sessions);\r\n state.benchmarksRetrieved = true;\r\n } catch (errors) {\r\n const msg = i18n.t(\"snack.sess.benchfail\").toString();\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n }\r\n state.benchmarksLoading = false;\r\n },\r\n\r\n async uploadBaseline({ commit, state }, payload) {\r\n state.baselineLoading = true;\r\n try {\r\n const endpoint = \"api/Sessions/Initial\";\r\n await api.post(endpoint, payload, {\r\n headers: { \"Content-Type\": \"multipart/form-data\" },\r\n });\r\n } catch (error: any) {\r\n const message = i18n.t(\"snack.sess.basefail\").toString();\r\n commit(\"displaySnackbar\", error.description || message, { root: true });\r\n }\r\n state.baselineLoading = false;\r\n },\r\n\r\n setBenchmark({ state }, payload) {\r\n console.log(payload);\r\n state.benchmark = payload;\r\n },\r\n clearBenchmark({ state }) {\r\n state.benchmark = null;\r\n },\r\n\r\n addSession({ state }, data: any) {\r\n try {\r\n const session = Session.parseSingleSession(data);\r\n state.sessions = [...state.sessions, session];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n\r\n update({ state }, data: any) {\r\n const { id, name, sharedWith } = data;\r\n const idx = state.sessions.findIndex(x => x.ID === id);\r\n if (idx === -1) return;\r\n const copy = state.sessions.slice(0);\r\n copy[idx].Name = name;\r\n copy[idx].SharedWith = sharedWith;\r\n state.sessions = copy;\r\n },\r\n\r\n updateShared({ state }, data: any) {\r\n console.log(\"updateShared\", data);\r\n const { sessionId, hasFeedback } = data;\r\n const idx = state.sharedSessions.findIndex(x => x.sessionId === sessionId);\r\n console.log(\"updateShared\", idx);\r\n if (idx === -1) return;\r\n const copy = state.sharedSessions.slice(0);\r\n copy[idx].hasFeedback = hasFeedback;\r\n this.commit(\"setShared\", copy);\r\n },\r\n\r\n async removeFromShared({ state, commit }, data: RemoveFromShared) {\r\n let msg = \"\";\r\n try {\r\n const endpoint = \"/api/Sessions/RemoveFromShared\";\r\n const allRemoved = (await api.put(endpoint, data)) as string[];\r\n const idx = state.sessions.findIndex(x => x.ID === data.id);\r\n if (idx === -1) return;\r\n const newSharedWith = state.sessions[idx].SharedWith.filter(x =>\r\n allRemoved.includes(x),\r\n );\r\n state.sessions[idx].SharedWith = newSharedWith;\r\n msg = i18n.t(\"sess.hanging.snack.removeAll\").toString();\r\n if (data.sharedWith.length !== allRemoved.length)\r\n msg = i18n\r\n .t(\"sess.hanging.snack.removeSome\", { emails: allRemoved.join(\",\") })\r\n .toString();\r\n } catch (error) {\r\n console.log(error);\r\n msg = i18n.t(\"sess.hanging.snack.removeFail\").toString();\r\n }\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n },\r\n\r\n async getAIFeedbackForSingleSession({ state }, id: number) {\r\n state.aiFeedbackLoading = true;\r\n state.aiFeedbackSessionId = id;\r\n\r\n try {\r\n const res = await apiProxy.get(`/open-ai/sessions/${id}/feedback`);\r\n state.aiFeedbackMessage = (res as unknown) as string;\r\n console.log(res);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n state.aiFeedbackLoading = false;\r\n state.aiFeedbackSessionId = 0;\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { MutationTree } from \"vuex\";\r\n\r\nimport { SessionsState } from \".\";\r\nimport {\r\n Session,\r\n MetaAnalysis,\r\n MetaSettings,\r\n SharedSession,\r\n} from \"@/core/models/sessions\";\r\n\r\nconst mutations: MutationTree = {\r\n set(state, payload) {\r\n state.sessions = payload;\r\n },\r\n setShared(state, payload) {\r\n state.sharedSessions = payload;\r\n },\r\n setMeta(state, meta) {\r\n if (!meta) return;\r\n const { settings, data } = meta;\r\n state.metaSettings = settings;\r\n state.metaAnalysis = data;\r\n },\r\n\r\n // Mutations to get sessions\r\n getSessionsSuccess(state: SessionsState, response: any): void {\r\n const { sessions, metaAnalysisDTO } = response;\r\n state.sessions = Session.parseSessions(sessions);\r\n\r\n try {\r\n const { data, settings } = metaAnalysisDTO;\r\n if (data) {\r\n state.metaAnalysis = (data as object[]).map(d => new MetaAnalysis(d));\r\n state.metaSettings = new MetaSettings(settings);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n\r\n // Mutations to get shared sessions\r\n getSharedSessionsSuccess(state: SessionsState, response: any): void {\r\n state.sharedSessions = SharedSession.parseSessions(response);\r\n },\r\n\r\n deleteSessionSuccess(state: SessionsState, id: number): void {\r\n const index = state.sessions.findIndex(s => s.ID === id);\r\n if (index != -1) {\r\n const copy = state.sessions.slice(0);\r\n copy.splice(index, 1);\r\n state.sessions = copy;\r\n }\r\n },\r\n};\r\n\r\nexport default mutations;\r\n","import { Module } from \"vuex\";\r\n\r\nimport getters from \"./getters\";\r\nimport actions from \"./actions\";\r\nimport mutations from \"./mutations\";\r\nimport { RootState } from \"../root\";\r\nimport { SessionsProgress, User } from \"@/core/models\";\r\nimport { MetaSettings, Session, MetaAnalysis } from \"@/core/models/sessions\";\r\nimport { SharedSession } from \"@/core/models/sessions\";\r\n\r\nexport interface SessionsState {\r\n // sessions\r\n loading: boolean;\r\n retrieved: boolean;\r\n sessions: Session[];\r\n sharedSessions: SharedSession[];\r\n\r\n // progress\r\n progress: SessionsProgress;\r\n progressLoading: boolean;\r\n progressRetrieved: boolean;\r\n\r\n // Helpers\r\n removingSession: boolean;\r\n removedSessionId: number;\r\n gettingSingleSession: boolean;\r\n retrievedSessionId: number;\r\n uploadingSession: boolean;\r\n\r\n // AI Helpers\r\n aiFeedbackLoading: boolean;\r\n aiFeedbackSessionId: number;\r\n aiFeedbackMessage: string;\r\n\r\n // Meta\r\n metaAnalysis: MetaAnalysis[];\r\n metaSettings: MetaSettings;\r\n metaLoading: boolean;\r\n\r\n // Benchmark Sessions\r\n benchmarkUser: User;\r\n benchmarks: Session[];\r\n benchmarksRetrieved: boolean;\r\n benchmarksLoading: boolean;\r\n benchmark: Session | null;\r\n\r\n // Baseline session\r\n baselineLoading: boolean;\r\n}\r\n\r\nexport const state: SessionsState = {\r\n sessions: [],\r\n sharedSessions: [],\r\n loading: false,\r\n retrieved: false,\r\n\r\n progressLoading: false,\r\n progressRetrieved: false,\r\n progress: {} as SessionsProgress,\r\n\r\n // loaders\r\n uploadingSession: false,\r\n gettingSingleSession: false,\r\n retrievedSessionId: 0,\r\n removingSession: false,\r\n removedSessionId: 0,\r\n\r\n // AI Helpers\r\n aiFeedbackLoading: false,\r\n aiFeedbackSessionId: 0,\r\n aiFeedbackMessage: \"\",\r\n\r\n // meta\r\n metaAnalysis: [],\r\n metaSettings: {} as MetaSettings,\r\n metaLoading: false,\r\n\r\n // benchmarks\r\n benchmarkUser: {} as User,\r\n benchmarks: [],\r\n benchmarksRetrieved: false,\r\n benchmarksLoading: false,\r\n benchmark: null,\r\n\r\n // baseline\r\n baselineLoading: false,\r\n};\r\n\r\nconst namespaced = true;\r\nexport const sessions: Module = {\r\n namespaced,\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n};\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { RootState } from \"../root\";\r\nimport { PresentationsState } from \".\";\r\n\r\nconst getters: GetterTree = {\r\n loading: state => state.loading,\r\n retrieved: state => state.retrieved,\r\n getPresentations: state => state.presentations,\r\n getUploadLoading: state => state.uploadLoading,\r\n getDeleteLoading: state => state.deleteLoading,\r\n getDeletedPresentationID: state => state.deletedPresentationID,\r\n};\r\n\r\nexport default getters;\r\n","import { ActionTree } from \"vuex\";\r\n\r\nimport api from \"@/core/utils/api\";\r\nimport { RootState } from \"../root\";\r\nimport i18n from \"@/core/plugins/i18n\";\r\nimport { PresentationsState } from \".\";\r\nimport { Presentation } from \"@/core/models\";\r\n\r\nconst actions: ActionTree = {\r\n clearPresentations({ state }) {\r\n state.presentations = [];\r\n state.retrieved = false;\r\n },\r\n\r\n async getOne({ state }, id: number) {\r\n let pres = state.presentations.find(x => x.ID === id);\r\n if (!pres)\r\n try {\r\n const res = (await api.get(`/api/Presentations/${id}`)) as any;\r\n if (!res) return null;\r\n pres = Presentation.parse(res);\r\n state.presentations = [...state.presentations, pres];\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n\r\n return pres;\r\n },\r\n\r\n async getPresentations({ state }) {\r\n state.loading = true;\r\n state.retrieved = false;\r\n try {\r\n const res = (await api.get(\r\n \"/api/Presentations/GetPresentations\",\r\n )) as any[];\r\n const presentations = res.map(x => Presentation.parse(x));\r\n state.presentations = presentations;\r\n state.retrieved = true;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.loading = false;\r\n },\r\n async uploadPresentation({ state }, file: any) {\r\n state.uploadLoading = true;\r\n const formData = new FormData();\r\n formData.append(\"file\", file);\r\n try {\r\n const res = await api.post(\r\n \"/api/Presentations/AddPresentation\",\r\n formData,\r\n { headers: { ContentType: \"multipart/form-data\" } },\r\n );\r\n state.presentations.push(Presentation.parse(res));\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.uploadLoading = false;\r\n },\r\n\r\n async deletePresentation({ dispatch, state }, id: number) {\r\n state.deleteLoading = true;\r\n state.deletedPresentationID = id;\r\n try {\r\n const endpoint = `/api/Presentations/DeletePresentation?id=${id}`;\r\n await api.delete(endpoint);\r\n\r\n const idx = state.presentations.findIndex(x => x.ID === id);\r\n if (idx !== -1) state.presentations.splice(idx, 1);\r\n\r\n const msg = i18n.t(\"snack.pres.del\").toString();\r\n dispatch(\"displaySnackbar\", msg, { root: true });\r\n } catch (error: any) {\r\n if (error.status === 409) {\r\n const errorMsg = i18n.t(\"snack.pres.cannotDelete\");\r\n dispatch(\"displaySnackbar\", errorMsg, { root: true });\r\n }\r\n }\r\n state.deleteLoading = false;\r\n state.deletedPresentationID = 0;\r\n },\r\n\r\n async edit({ state }, data: any) {\r\n try {\r\n const end = \"/api/Presentations\";\r\n await api.patch(end, data);\r\n const { id, name } = data;\r\n const pres = state.presentations.find(p => p.ID === id);\r\n const presIdx = state.presentations.findIndex(p => p.ID === id);\r\n if (!pres) return;\r\n pres.Name = name;\r\n state.presentations[presIdx] = pres;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { MutationTree } from \"vuex\";\r\n\r\nimport { PresentationsState } from \".\";\r\nimport { Presentation } from \"@/core/models\";\r\n\r\nconst mutations: MutationTree = {\r\n set(state, payload: Presentation[]) {\r\n state.presentations = payload.map(x => Presentation.parse(x));\r\n state.retrieved = true;\r\n },\r\n};\r\n\r\nexport default mutations;\r\n","import { Module } from \"vuex\";\r\n\r\nimport getters from \"./getters\";\r\nimport actions from \"./actions\";\r\nimport mutations from \"./mutations\";\r\nimport { RootState } from \"../root\";\r\nimport { Presentation } from \"@/core/models\";\r\n\r\nexport interface PresentationsState {\r\n loading: boolean;\r\n retrieved: boolean;\r\n uploadLoading: boolean;\r\n deleteLoading: boolean;\r\n presentations: Presentation[];\r\n deletedPresentationID: number;\r\n}\r\n\r\nexport const state: PresentationsState = {\r\n loading: false,\r\n retrieved: false,\r\n presentations: [],\r\n uploadLoading: false,\r\n deleteLoading: false,\r\n deletedPresentationID: 0,\r\n};\r\n\r\nexport const presentations: Module = {\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n namespaced: true,\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { GroupsState } from \".\";\r\nimport { RootState } from \"../root\";\r\n\r\nexport interface GroupName {\r\n id: number;\r\n name: string;\r\n}\r\nexport interface PinnedVideo {\r\n id: number;\r\n video: number;\r\n}\r\n\r\nconst getters: GetterTree = {\r\n loadingGroups: state => state.loadingGroups,\r\n retrievedGroups: state => state.retrievedGroups,\r\n getGroups: state => {\r\n return state.groups.sort((a, b) => +b.CreatedAt - +a.CreatedAt);\r\n },\r\n\r\n loadingPublicGroups: state => state.loadingPublicGroups,\r\n retrievedPublicGroups: state => state.retrievedPublicGroups,\r\n getPublicGroups: state =>\r\n state.publicGroups.sort((a, b) => +b.CreatedAt - +a.CreatedAt),\r\n\r\n loadingCompanyGroups: state => state.loadingCompanyGroups,\r\n retrievedCompanyGroups: state => state.retrievedCompanyGroups,\r\n getCompanyGroups: state =>\r\n state.companyGroups.sort((a, b) => +b.CreatedAt - +a.CreatedAt),\r\n\r\n getNames: state =>\r\n [\r\n { id: 0, name: \"\" },\r\n ...state.groups.map(g => ({ id: g.ID, name: g.Name })),\r\n ] as GroupName[],\r\n\r\n pinnedVideos: state =>\r\n state.groups.map(g => ({\r\n id: g.ID,\r\n video: g.PinnedVideoID,\r\n })) as PinnedVideo[],\r\n\r\n canManage: state => state.groups.some(g => g.IsManager || g.IsOwner),\r\n addGroupLoading: state => state.addGroupLoading,\r\n removeGroupLoading: state => state.removeGroupLoading,\r\n removedGroupID: state => state.removedGroupID,\r\n renameGroupLoading: state => state.renameGroupLoading,\r\n};\r\n\r\nexport default getters;\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { RootState } from \"../../root\";\r\nimport { GroupsState } from \"../../groups\";\r\n\r\nconst getters: GetterTree = {\r\n getPosts: state =>\r\n state.groups\r\n .flatMap(g => g.Posts)\r\n .sort((a, b) => +b.CreatedAt - +a.CreatedAt),\r\n\r\n // Group Posts\r\n addPostLoading: state => state.addPostLoading,\r\n editPostLoading: state => state.editPostLoading,\r\n editedPostID: state => state.editedPostID,\r\n deletePostLoading: state => state.deletePostLoading,\r\n deletedPostID: state => state.deletedPostID,\r\n};\r\n\r\nexport default getters;\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { RootState } from \"@/core/store/root\";\r\nimport { GroupsState } from \"@/core/store/groups\";\r\n\r\nconst getters: GetterTree = {\r\n getVideos: state =>\r\n state.groups\r\n .flatMap(g => g.Videos)\r\n .sort((a, b) => +b.UploadedAt - +a.UploadedAt),\r\n\r\n // Group Videos\r\n addVideoLoading: state => state.addVideoLoading,\r\n editVideoLoading: state => state.editVideoLoading,\r\n editedVideoID: state => state.editedVideoID,\r\n deleteVideoLoading: state => state.deleteVideoLoading,\r\n deletedVideoID: state => state.deletedVideoID,\r\n};\r\n\r\nexport default getters;\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { RootState } from \"../../root\";\r\nimport { GroupsState } from \"../../groups\";\r\n\r\nconst getters: GetterTree = {\r\n addUsersLoading: state => state.addUsersLoading,\r\n changeUserRoleLoading: state => state.changeUserRoleLoading,\r\n editedUserEmail: state => state.editedUserEmail,\r\n removeUserLoading: state => state.removeUserLoading,\r\n removedUserEmail: state => state.removedUserEmail,\r\n usersManaged: (state, _, _1, rootGetters) => {\r\n const currentUserEmail = rootGetters[\"profile/getUserEmail\"];\r\n const usersManaged = state.groups\r\n .filter(g => g.IsManager)\r\n .flatMap(g => g.Users)\r\n .map(g => g.Email)\r\n .filter(u => u !== currentUserEmail);\r\n return [...new Set(usersManaged)];\r\n },\r\n};\r\n\r\nexport default getters;\r\n","import { ActionTree } from \"vuex\";\r\n\r\nimport { GroupsState } from \".\";\r\nimport api from \"@/core/utils/api\";\r\nimport { RootState } from \"../root\";\r\nimport { Group } from \"@/core/models\";\r\nimport i18n from \"@/core/plugins/i18n\";\r\n\r\nconst actions: ActionTree = {\r\n clearGroups({ state }) {\r\n state.groups = [];\r\n state.retrievedGroups = false;\r\n },\r\n\r\n addGroupToList: ({ state }, group) => state.groups.push(group),\r\n\r\n async getGroups({ state }) {\r\n state.loadingGroups = true;\r\n state.retrievedGroups = false;\r\n try {\r\n const res = (await api.get(\"/api/Groups/\")) as any[];\r\n console.log(\"API response:\", res);\r\n state.groups = res.map(g => Group.parseGroup(g));\r\n state.retrievedGroups = true;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.loadingGroups = false;\r\n },\r\n\r\n async getPublicGroups({ state }) {\r\n state.loadingPublicGroups = true;\r\n state.retrievedPublicGroups = false;\r\n try {\r\n const res = (await api.get(\"/api/Groups/Public\")) as any[];\r\n state.publicGroups = res.map(g => Group.parseGroup(g));\r\n state.retrievedPublicGroups = true;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.loadingPublicGroups = false;\r\n },\r\n\r\n async getCompanyGroups({ state }) {\r\n state.loadingCompanyGroups = true;\r\n state.retrievedCompanyGroups = false;\r\n try {\r\n const res = (await api.get(\"/api/Groups/Company\")) as any[];\r\n console.log(\"res: \", res);\r\n state.companyGroups = res.map(g => Group.parseGroup(g));\r\n state.retrievedCompanyGroups = true;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.loadingCompanyGroups = false;\r\n },\r\n\r\n async addGroup({ commit, state }, data: object) {\r\n state.addGroupLoading = true;\r\n try {\r\n const res = await api.post(\"/api/Groups/AddGroup\", data);\r\n state.groups.push(Group.parseGroup(res));\r\n const msg = i18n.t(\"snack.groups.added\").toString();\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.addGroupLoading = false;\r\n },\r\n\r\n async renameGroup({ state }, data: any) {\r\n state.renameGroupLoading = true;\r\n try {\r\n await api.put(\"/api/Groups/RenameGroup\", data);\r\n const { groupId, newName } = data;\r\n const idx = state.groups.findIndex(x => x.ID === groupId);\r\n if (idx !== -1) state.groups[idx].Name = newName;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.renameGroupLoading = false;\r\n },\r\n\r\n async removeGroup({ commit, state }, groupId: number) {\r\n state.removeGroupLoading = true;\r\n state.removedGroupID = groupId;\r\n try {\r\n const endpoint = `/api/Groups/RemoveGroup?groupId=${groupId}`;\r\n await api.delete(endpoint);\r\n const idx = state.groups.findIndex(g => g.ID == groupId);\r\n if (idx !== -1) state.groups.splice(idx, 1);\r\n const msg = i18n.t(\"snack.groups.del\").toString();\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.removeGroupLoading = false;\r\n state.removedGroupID = 0;\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { ActionTree } from \"vuex\";\r\n\r\nimport { GroupsState } from \"../\";\r\nimport api from \"@/core/utils/api\";\r\nimport { RootState } from \"../../root\";\r\nimport { GroupPost } from \"@/core/models\";\r\n\r\nconst actions: ActionTree = {\r\n async addPost({ state }, data: FormData) {\r\n state.addPostLoading = true;\r\n try {\r\n const res = await api.post(\"/api/Groups/AddPost\", data, {\r\n headers: { ContentType: \"multipart/form-data\" },\r\n });\r\n\r\n const groupId = Number(data.get(\"groupId\"));\r\n const isPinned = data.get(\"isPinned\");\r\n const post = GroupPost.parseGroupPost(res);\r\n const idx = state.groups.findIndex(g => g.ID == groupId);\r\n if (idx === -1) return;\r\n\r\n const copy = state.groups.slice(0);\r\n if (isPinned === \"true\") copy[idx].PinnedPostID = post.ID;\r\n copy[idx].Posts.push(post);\r\n state.groups = copy;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.addPostLoading = false;\r\n },\r\n\r\n async editPost({ state }, data: any) {\r\n state.editPostLoading = true;\r\n state.editedPostID = data.postId;\r\n try {\r\n await api.put(\"/api/Groups/EditPost\", data);\r\n\r\n const postId = data.postId;\r\n const idx = state.groups.findIndex(g => g.ID == data.groupId);\r\n if (idx === -1) return;\r\n\r\n const copy = state.groups.slice(0);\r\n const post = copy[idx].Posts.find(p => p.ID == postId)!;\r\n post.Title = data.newTitle;\r\n post.Body = data.newBody;\r\n\r\n if (data.isPinned) copy[idx].PinnedPostID = postId;\r\n else if (!data.isPinned && copy[idx].PinnedPostID == postId)\r\n copy[idx].PinnedPostID = 0;\r\n state.groups = copy;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.editPostLoading = false;\r\n },\r\n\r\n // Delete a post\r\n async deletePost({ state }, data: any) {\r\n state.deletePostLoading = true;\r\n state.deletedPostID = data.postId;\r\n try {\r\n const endpoint = `/api/Groups/DeletePost?groupId=${data.groupId}&postId=${data.postId}`;\r\n await api.delete(endpoint);\r\n\r\n const idx = state.groups.findIndex(g => g.ID == data.groupId);\r\n if (idx === -1) return;\r\n\r\n const copy = state.groups.slice(0);\r\n const postToDelete = copy[idx].Posts.find(p => p.ID == data.postId)!;\r\n copy[idx].Posts.splice(copy[idx].Posts.indexOf(postToDelete), 1);\r\n state.groups = copy;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.deletePostLoading = false;\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { ActionTree } from \"vuex\";\r\n\r\nimport api from \"@/core/utils/api\";\r\nimport { RootState } from \"@/core/store/root\";\r\nimport { GroupsState } from \"@/core/store/groups\";\r\nimport { GroupVideo } from \"@/core/models\";\r\n\r\nconst actions: ActionTree = {\r\n async addVideoFromLink({ state }, data: any) {\r\n state.addVideoLoading = true;\r\n try {\r\n const res = await api.post(\"/api/Groups/AddVideoFromURI\", data);\r\n const video = GroupVideo.parseGroupVideo(res);\r\n const idx = state.groups.findIndex(g => g.ID == data.groupId);\r\n if (idx === -1) return;\r\n const copy = state.groups.slice(0);\r\n if (data.isPinned) copy[idx].PinnedVideoID = video.ID;\r\n copy[idx].Videos.push(video);\r\n state.groups = copy;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.addVideoLoading = false;\r\n },\r\n\r\n async addVideoFromFile({ state }, data: FormData) {\r\n state.addVideoLoading = true;\r\n try {\r\n const res = await api.post(\"/api/Groups/AddVideoFromFile\", data, {\r\n headers: { ContentType: \"multipart/form-data\" },\r\n });\r\n const video = GroupVideo.parseGroupVideo(res);\r\n const gid = Number(data.get(\"groupId\"));\r\n if (!gid) throw new Error(\"invalid group id\");\r\n const idx = state.groups.findIndex(g => g.ID == gid);\r\n if (idx === -1) throw new Error(\"invalid video id\");\r\n const copy = state.groups.slice(0);\r\n if (data.get(\"isPinned\") === \"true\") copy[idx].PinnedVideoID = video.ID;\r\n copy[idx].Videos.push(video);\r\n state.groups = copy;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.addVideoLoading = false;\r\n },\r\n\r\n async editVideo({ state }, data: any) {\r\n state.editVideoLoading = true;\r\n state.editedVideoID = data.videoId;\r\n try {\r\n await api.put(\"/api/Groups/EditVideo\", data);\r\n const gidx = state.groups.findIndex(g => g.ID == data.groupId);\r\n if (gidx === -1) return;\r\n const copy = state.groups.slice(0);\r\n const vidx = copy[gidx].Videos.findIndex(g => g.ID == data.videoId);\r\n if (vidx === -1) return;\r\n\r\n copy[gidx].Videos[vidx].Title = data.newTitle;\r\n copy[gidx].Videos[vidx].Description = data.newDescription;\r\n if (data.isPinned) copy[gidx].PinnedVideoID = copy[gidx].Videos[vidx].ID;\r\n else if (\r\n !data.isPinned &&\r\n copy[gidx].PinnedVideoID == copy[gidx].Videos[vidx].ID\r\n )\r\n copy[gidx].PinnedVideoID = 0;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.editVideoLoading = false;\r\n },\r\n\r\n async deleteVideo({ state }, data: any) {\r\n state.deleteVideoLoading = true;\r\n state.deletedVideoID = data.videoId;\r\n try {\r\n const endpoint = `/api/Groups/DeleteVideo?groupId=${data.groupId}&videoId=${data.videoId}`;\r\n await api.delete(endpoint);\r\n const gidx = state.groups.findIndex(g => g.ID == data.groupId);\r\n if (gidx === -1) return;\r\n const copy = state.groups.slice(0);\r\n const vidx = copy[gidx].Videos.findIndex(v => v.ID == data.videoId);\r\n if (vidx === -1) return;\r\n copy[gidx].Videos.splice(vidx, 1);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.deleteVideoLoading = false;\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { ActionTree } from \"vuex\";\r\n\r\nimport { GroupsState } from \"../\";\r\nimport router from \"@/core/router\";\r\nimport api from \"@/core/utils/api\";\r\nimport { RootState } from \"../../root\";\r\nimport i18n from \"@/core/plugins/i18n\";\r\nimport { SentInvitation } from \"@/core/models\";\r\n\r\nexport type InviteUsersData = { groupId: number; emails: string[] };\r\nexport type UploadUsersData = { groupId: number; file: File };\r\n\r\nconst actions: ActionTree = {\r\n // add users from excel\r\n async uploadExcel({ state }, data: UploadUsersData) {\r\n console.log(\"groups/users/actions=>uploadExcel\");\r\n state.addUsersLoading = true;\r\n let inv: SentInvitation[] = [];\r\n try {\r\n console.log(\"groups/users/actions=>uploadExcel: \", data.file);\r\n const formData = new FormData();\r\n formData.append(\"file\", data.file);\r\n formData.append(\"groupId\", data.groupId.toString());\r\n inv = (await api.post(\"/api/Groups/AddFromExcel\", formData, {\r\n headers: { \"Content-Type\": \"multipart/form-data\" },\r\n })) as SentInvitation[];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.addUsersLoading = false;\r\n return inv;\r\n },\r\n\r\n async inviteUsers({ state, commit }, data: InviteUsersData) {\r\n console.log(\"groups/users/inviteUsers\");\r\n state.addUsersLoading = true;\r\n let inv: SentInvitation[] = [];\r\n try {\r\n const end = \"/api/Groups/InviteUsers\";\r\n inv = (await api.post(end, data)) as SentInvitation[];\r\n const emails = data.emails as string[];\r\n if (inv.length != emails.length) {\r\n const str = emails\r\n .filter(x => !inv.some(y => y.user.includes(x)))\r\n .join(\", \");\r\n const msg = i18n.t(\"snack.groups.unadded\").toString();\r\n commit(\"displaySnackbar\", msg + str, { root: true });\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.addUsersLoading = false;\r\n return inv;\r\n },\r\n\r\n async changeUserRole({ state }, data: any) {\r\n const { groupId, isManager, userEmail, isCurrentUser } = data;\r\n\r\n state.changeUserRoleLoading = true;\r\n state.editedUserEmail = userEmail;\r\n try {\r\n await api.put(\"/api/Groups/ChangeUserRole\", data); //TODO change to new role system\r\n const group = state.groups.find(g => g.ID == groupId);\r\n if (!group) return;\r\n if (isCurrentUser) group.IsManager = isManager;\r\n const user = group.Users.find(u => u.Email == userEmail);\r\n if (user) user.IsManager = isManager;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.changeUserRoleLoading = false;\r\n state.editedUserEmail = data.userEmail;\r\n },\r\n\r\n async removeUser({ state }, data: any) {\r\n const { userEmail, groupId, isCurrentUser } = data;\r\n state.removeUserLoading = true;\r\n state.removedUserEmail = userEmail;\r\n try {\r\n const endpoint = `/api/Groups/RemoveUser?groupId=${data.groupId}&userEmail=${data.userEmail}`;\r\n await api.delete(endpoint);\r\n const gidx = state.groups.findIndex(g => g.ID == groupId);\r\n if (gidx === -1) return;\r\n const group = state.groups[gidx];\r\n const uidx = group.Users.findIndex(u => u.Email == userEmail);\r\n if (uidx === -1) return;\r\n group.Users.splice(uidx, 1);\r\n\r\n // if same as user, remove group\r\n if (isCurrentUser) {\r\n state.groups.splice(gidx, 1);\r\n router.push(\"/groups\");\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.removeUserLoading = false;\r\n state.removedUserEmail = \"\";\r\n },\r\n\r\n async leaveGroup({ state }, id: number) {\r\n const end = `/api/Groups/Leave/${id}`;\r\n await api.delete(end);\r\n // add group to public groups, if necessary\r\n const group = state.groups.find(x => x.ID == id);\r\n if (group && group.IsPublic) state.publicGroups.push(group);\r\n const idx = state.groups.findIndex(x => x.ID == id);\r\n state.groups.splice(idx, 1);\r\n },\r\n\r\n async joinGroup({ state }, id: number) {\r\n const end = `/api/Groups/Join/${id}`;\r\n await api.patch(end);\r\n // add group to my groups\r\n const group = state.publicGroups.find(x => x.ID == id);\r\n if (group) state.groups.push(group);\r\n // remove group from public groups\r\n const idx = state.publicGroups.findIndex(x => x.ID == id);\r\n if (idx !== -1) state.publicGroups.splice(idx, 1);\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { MutationTree } from \"vuex\";\r\n\r\nimport { GroupsState } from \".\";\r\n\r\nconst mutations: MutationTree = {\r\n set(state, payload) {\r\n if (state.retrievedGroups) return;\r\n state.groups = payload;\r\n state.retrievedGroups = true;\r\n },\r\n};\r\n\r\nexport default mutations;\r\n","import { Module } from \"vuex\";\r\n\r\nimport { RootState } from \"../root\";\r\nimport { Group } from \"@/core/models\";\r\n\r\n// getters\r\nimport getters from \"./getters\";\r\nimport postGetters from \"./posts/getters\";\r\nimport videoGetters from \"./videos/getters\";\r\nimport userGetters from \"./users/getters\";\r\n\r\n// actions\r\nimport actions from \"./actions\";\r\nimport postActions from \"./posts/actions\";\r\nimport videoActions from \"./videos/actions\";\r\nimport userActions from \"./users/actions\";\r\n\r\n// mutations\r\nimport mutations from \"./mutations\";\r\n\r\nexport interface GroupsState {\r\n groups: Group[];\r\n publicGroups: Group[];\r\n companyGroups: Group[];\r\n loadingGroups: boolean;\r\n loadingPublicGroups: boolean;\r\n loadingCompanyGroups: boolean;\r\n retrievedGroups: boolean;\r\n retrievedPublicGroups: boolean;\r\n retrievedCompanyGroups: boolean;\r\n\r\n // Helper loadings\r\n addUsersLoading: boolean;\r\n changeUserRoleLoading: boolean;\r\n removeUserLoading: boolean;\r\n addGroupLoading: boolean;\r\n removeGroupLoading: boolean;\r\n renameGroupLoading: boolean;\r\n addVideoLoading: boolean;\r\n editVideoLoading: boolean;\r\n deleteVideoLoading: boolean;\r\n addPostLoading: boolean;\r\n editPostLoading: boolean;\r\n deletePostLoading: boolean;\r\n\r\n // Loading Helpers\r\n editedUserEmail: string;\r\n removedUserEmail: string;\r\n removedGroupID: number;\r\n editedVideoID: number;\r\n deletedVideoID: number;\r\n editedPostID: number;\r\n deletedPostID: number;\r\n}\r\n\r\nexport const state: GroupsState = {\r\n companyGroups: [],\r\n publicGroups: [],\r\n groups: [],\r\n loadingGroups: false,\r\n loadingPublicGroups: false,\r\n loadingCompanyGroups: false,\r\n retrievedGroups: false,\r\n retrievedPublicGroups: false,\r\n retrievedCompanyGroups: false,\r\n\r\n // Loadings\r\n addUsersLoading: false,\r\n changeUserRoleLoading: false,\r\n removeUserLoading: false,\r\n addGroupLoading: false,\r\n removeGroupLoading: false,\r\n renameGroupLoading: false,\r\n addVideoLoading: false,\r\n editVideoLoading: false,\r\n deleteVideoLoading: false,\r\n addPostLoading: false,\r\n editPostLoading: false,\r\n deletePostLoading: false,\r\n\r\n // Loading Helpers\r\n editedUserEmail: \"\",\r\n removedUserEmail: \"\",\r\n removedGroupID: 0,\r\n editedVideoID: 0,\r\n deletedVideoID: 0,\r\n editedPostID: 0,\r\n deletedPostID: 0,\r\n};\r\n\r\nexport const groups: Module = {\r\n state,\r\n namespaced: true,\r\n mutations: { ...mutations },\r\n getters: { ...getters, ...postGetters, ...videoGetters, ...userGetters },\r\n actions: { ...actions, ...postActions, ...videoActions, ...userActions },\r\n};\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { NewsState } from \".\";\r\nimport { RootState } from \"../root\";\r\n\r\nconst getters: GetterTree = {\r\n loading: state => state.loading,\r\n retrieved: state => state.retrieved,\r\n getArticles: state =>\r\n state.articles.sort((a, b) => +b.PostedAt - +a.PostedAt),\r\n getLatestArticles: (_, getters) => getters.getArticles.slice(0, 4),\r\n\r\n // Helpers\r\n addArticleLoading: state => state.addArticleLoading,\r\n editArticleLoading: state => state.editArticleLoading,\r\n editedArticleID: state => state.editedArticleID,\r\n deleteArticleLoading: state => state.deleteArticleLoading,\r\n deletedArticleID: state => state.deletedArticleID,\r\n};\r\n\r\nexport default getters;\r\n","import { ActionTree } from \"vuex\";\r\n\r\nimport { NewsState } from \".\";\r\nimport api from \"@/core/utils/api\";\r\nimport { RootState } from \"../root\";\r\nimport i18n from \"@/core/plugins/i18n\";\r\nimport { Article } from \"@/core/models\";\r\n\r\nconst actions: ActionTree = {\r\n clearArticles({ state }) {\r\n state.articles = [];\r\n state.retrieved = false;\r\n },\r\n\r\n async getArticles({ state }) {\r\n state.retrieved = false;\r\n state.loading = true;\r\n try {\r\n const res = (await api.get(\"/api/News/\")) as any[];\r\n state.articles = res.map(x => Article.parseArticle(x));\r\n state.retrieved = true;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.loading = false;\r\n },\r\n\r\n async addArticle({ state }, data: FormData) {\r\n state.addArticleLoading = true;\r\n try {\r\n const res = await api.post(\"/api/News/AddArticle\", data, {\r\n headers: { ContentType: \"multipart/form-data\" },\r\n });\r\n const article = Article.parseArticle(res);\r\n state.articles.push(article);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.addArticleLoading = false;\r\n },\r\n\r\n async editArticle({ state }, data: any) {\r\n const { articleId, newTitle, newBody } = data;\r\n state.editArticleLoading = true;\r\n state.editedArticleID = articleId;\r\n try {\r\n await api.put(\"/api/News/EditArticle\", data);\r\n const idx = state.articles.findIndex(x => x.ID === articleId);\r\n if (idx === -1) return;\r\n state.articles[idx].Title = newTitle;\r\n state.articles[idx].Body = newBody;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.editArticleLoading = false;\r\n },\r\n\r\n async deleteArticle({ commit, state }, id: number) {\r\n state.deleteArticleLoading = true;\r\n state.deletedArticleID = id;\r\n try {\r\n await api.delete(`/api/News/DeleteArticle?id=${id}`);\r\n const idx = state.articles.findIndex(x => x.ID === id);\r\n if (idx === -1) return;\r\n state.articles.splice(idx, 1);\r\n const msg = i18n.t(\"snack.news.added\").toString();\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.deleteArticleLoading = false;\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { MutationTree } from \"vuex\";\r\n\r\nimport { NewsState } from \".\";\r\nimport { Article } from \"@/core/models\";\r\n\r\nconst mutations: MutationTree = {\r\n set(state, payload: any[]) {\r\n if (state.retrieved) return;\r\n state.retrieved = true;\r\n state.articles = payload;\r\n },\r\n\r\n // Mutations for getting articles\r\n getNewsSucess: (state, res: any) =>\r\n (state.articles = (res as any[]).map(a => Article.parseArticle(a))),\r\n getNewsError(state, err: any) {\r\n state.articles = [];\r\n console.log(err);\r\n },\r\n\r\n // Clearing articles\r\n clearArticles: state => (state.articles = []),\r\n\r\n // Mutations for uploading a articles\r\n addingArticle: (state, value: boolean) => (state.addArticleLoading = value),\r\n addArticleError: (_, err: any) => console.log(err),\r\n addArticleSuccess(state, res: any) {\r\n const article = Article.parseArticle(res);\r\n state.articles.push(article);\r\n },\r\n\r\n // Mutations for editing articles\r\n editingArticle(state, payload: any): void {\r\n state.editArticleLoading = payload.value;\r\n state.editedArticleID = payload.articleId;\r\n },\r\n editArticleSuccess(state, data: any): void {\r\n const newTitle = data.newTitle;\r\n const newBody = data.newBody;\r\n const article = state.articles.find(a => a.ID == data.articleId)!;\r\n article.Title = newTitle;\r\n article.Body = newBody;\r\n },\r\n editArticleError: (_, err: any) => console.log(err),\r\n\r\n // Mutations for deleting articles\r\n deletingArticle(state, payload: any): void {\r\n state.deleteArticleLoading = payload.value;\r\n state.deletedArticleID = payload.articleId;\r\n },\r\n deleteArticleSuccess(state, id: number): void {\r\n const articleToDelete = state.articles.find(a => a.ID == id)!;\r\n state.articles.splice(state.articles.indexOf(articleToDelete), 1);\r\n },\r\n deleteArticleError: (_, err: any) => console.log(err),\r\n};\r\n\r\nexport default mutations;\r\n","import { Module } from \"vuex\";\r\n\r\nimport getters from \"./getters\";\r\nimport actions from \"./actions\";\r\nimport { RootState } from \"../root\";\r\nimport mutations from \"./mutations\";\r\nimport { Article } from \"@/core/models\";\r\n\r\nexport interface NewsState {\r\n loading: boolean;\r\n retrieved: boolean;\r\n articles: Article[];\r\n\r\n // Helpers\r\n addArticleLoading: boolean;\r\n editArticleLoading: boolean;\r\n editedArticleID: number;\r\n deleteArticleLoading: boolean;\r\n deletedArticleID: number;\r\n}\r\n\r\nexport const state: NewsState = {\r\n articles: [],\r\n loading: false,\r\n retrieved: false,\r\n\r\n // Helpers\r\n addArticleLoading: false,\r\n editArticleLoading: false,\r\n editedArticleID: 0,\r\n deleteArticleLoading: false,\r\n deletedArticleID: 0,\r\n};\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const news: Module = {\r\n namespaced,\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n};\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { GoalsState } from \".\";\r\nimport { RootState } from \"../root\";\r\n\r\nconst getters: GetterTree = {\r\n loading: state => state.loading,\r\n retrieved: state => state.retrieved,\r\n getAssignedGoals: state =>\r\n state.assignedGoals.sort((a, b) => +b.CreatedAt - +a.CreatedAt),\r\n getCreatedGoals: state =>\r\n state.createdGoals.sort((a, b) => +b.CreatedAt - +a.CreatedAt),\r\n\r\n addGoalLoading: state => state.addGoalLoading,\r\n editedGoalID: state => state.editedGoalId,\r\n editGoalLoading: state => state.editGoalLoading,\r\n removedGoalID: state => state.removedGoalId,\r\n removeGoalLoading: state => state.removeGoalLoading,\r\n};\r\n\r\nexport default getters;\r\n","import { ActionTree } from \"vuex\";\r\n\r\nimport { GoalsState } from \".\";\r\nimport api from \"@/core/utils/api\";\r\nimport { RootState } from \"../root\";\r\nimport { AssignedGoal, Goal } from \"@/core/models\";\r\n\r\nconst actions: ActionTree = {\r\n clearGoals({ state }) {\r\n state.assignedGoals = [];\r\n state.createdGoals = [];\r\n state.retrieved = false;\r\n },\r\n\r\n async getGoals({ state }) {\r\n state.loading = true;\r\n state.retrieved = false;\r\n\r\n try {\r\n const { createdGoals, assignedGoals } = (await api.get(\r\n \"/api/Goals/\",\r\n )) as any;\r\n state.createdGoals = (createdGoals as any[]).map(g => Goal.parse(g));\r\n state.assignedGoals = (assignedGoals as any[]).map(g =>\r\n AssignedGoal.parse(g),\r\n );\r\n state.retrieved = true;\r\n window.dispatchEvent(new CustomEvent(\"got-goals\"));\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n state.loading = false;\r\n },\r\n\r\n async addGoal({ state, rootGetters }, data) {\r\n state.addGoalLoading = true;\r\n try {\r\n const res = await api.post(\"/api/Goals/CreateGoal\", data);\r\n const currentEmail = rootGetters[\"profile/getUserEmail\"];\r\n const goal = Goal.parse(res);\r\n if (goal.AssingedUsers.some(u => u.Email === currentEmail)) {\r\n const assignedGoal = new AssignedGoal(\r\n goal.ID,\r\n goal.Target,\r\n goal.Creator,\r\n goal.CreatedAt,\r\n goal.Conditions,\r\n );\r\n state.assignedGoals.push(assignedGoal);\r\n }\r\n state.createdGoals.push(goal);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.addGoalLoading = false;\r\n },\r\n\r\n async removeGoal({ commit, state, rootGetters }, goalId) {\r\n state.removeGoalLoading = true;\r\n state.removedGoalId = goalId;\r\n try {\r\n await api.delete(`/api/Goals/RemoveGoal?goalId=${goalId}`);\r\n const currentEmail = rootGetters[\"profile/getUserEmail\"];\r\n const cidx = state.createdGoals.findIndex(x => x.ID === goalId);\r\n if (cidx === -1) return;\r\n const currentAssigned = state.createdGoals[cidx].AssingedUsers.some(\r\n u => u.Email === currentEmail,\r\n );\r\n if (currentAssigned) {\r\n const idx = state.assignedGoals.findIndex(x => x.GoalId === goalId);\r\n if (idx !== -1) state.assignedGoals.splice(idx, 1);\r\n }\r\n state.createdGoals.splice(cidx, 1);\r\n commit(\"removeGoal\", goalId);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.removeGoalLoading = false;\r\n },\r\n\r\n async assignToGoal({ state }, goalId: number) {\r\n const res = (await api.patch(`/api/Goals/AddUser/${goalId}`)) as any;\r\n const goal = AssignedGoal.parse(res);\r\n state.assignedGoals = [...state.assignedGoals, goal];\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { MutationTree } from \"vuex\";\r\n\r\nimport { GoalsState } from \".\";\r\n\r\nconst mutations: MutationTree = {\r\n set(state, payload) {\r\n if (!payload) {\r\n state.createdGoals = [];\r\n state.assignedGoals = [];\r\n state.retrieved = false;\r\n return;\r\n }\r\n state.retrieved = true;\r\n const { assignedGoals, createdGoals } = payload;\r\n state.assignedGoals = assignedGoals;\r\n state.createdGoals = createdGoals;\r\n },\r\n\r\n removeGoal(state, goalId) {\r\n const cidx = state.createdGoals.findIndex(goal => goal.ID === goalId);\r\n if (cidx !== -1) state.createdGoals.splice(cidx, 1);\r\n\r\n const aidx = state.assignedGoals.findIndex(goal => goal.GoalId === goalId);\r\n if (aidx !== -1) state.assignedGoals.splice(aidx, 1);\r\n },\r\n};\r\n\r\nexport default mutations;\r\n","import { Module } from \"vuex\";\r\n\r\nimport getters from \"./getters\";\r\nimport actions from \"./actions\";\r\nimport mutations from \"./mutations\";\r\nimport { RootState } from \"../root\";\r\nimport { Goal, AssignedGoal } from \"@/core/models\";\r\n\r\nexport interface GoalsState {\r\n loading: boolean;\r\n retrieved: boolean;\r\n assignedGoals: AssignedGoal[];\r\n createdGoals: Goal[];\r\n addGoalLoading: boolean;\r\n editGoalLoading: boolean;\r\n editedGoalId: number;\r\n removeGoalLoading: boolean;\r\n removedGoalId: number;\r\n}\r\n\r\nexport const state: GoalsState = {\r\n loading: false,\r\n retrieved: false,\r\n assignedGoals: [],\r\n createdGoals: [],\r\n addGoalLoading: false,\r\n editGoalLoading: false,\r\n editedGoalId: 0,\r\n removeGoalLoading: false,\r\n removedGoalId: 0,\r\n};\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const goals: Module = {\r\n namespaced,\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n};\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { MeetingsState } from \".\";\r\nimport { RootState } from \"../root\";\r\n\r\nconst getters: GetterTree = {\r\n getMeetings: state =>\r\n state.meetings.sort((a, b) => +b.CreatedAt - +a.CreatedAt),\r\n addMeetingLoading: state => state.addMeetingLoading,\r\n editedMeetingID: state => state.editedMeetingId,\r\n editMeetingLoading: state => state.editingMeeting,\r\n removedMeetingID: state => state.removedMeetingId,\r\n removeMeetingLoading: state => state.removeMeetingLoading,\r\n};\r\n\r\nexport default getters;\r\n","import { ActionTree } from \"vuex\";\r\n\r\nimport { MeetingsState } from \".\";\r\nimport api from \"@/core/utils/api\";\r\nimport { RootState } from \"../root\";\r\nimport { Meeting } from \"@/core/models\";\r\n\r\nconst actions: ActionTree = {\r\n clearMeetings({ state }) {\r\n state.meetings = [];\r\n state.loading = false;\r\n state.retrieved = false;\r\n },\r\n\r\n async getMeetings({ state }) {\r\n state.loading = true;\r\n try {\r\n const res = (await api.get(\"/api/Meetings/\")) as any[];\r\n state.retrieved = true;\r\n state.meetings = res.map(g => Meeting.parse(g));\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.loading = false;\r\n },\r\n\r\n async addMeeting({ state }, data: any) {\r\n state.addMeetingLoading = true;\r\n try {\r\n const res = await api.post(\"/api/Meetings/CreateMeeting\", data);\r\n state.meetings.push(Meeting.parse(res));\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.addMeetingLoading = false;\r\n },\r\n\r\n async editMeeting({ state }, data: any) {\r\n state.editingMeeting = true;\r\n state.editedMeetingId = data.meetingId;\r\n try {\r\n const res = await api.put(\"/api/Meetings/EditMeeting\", data);\r\n state.meetings.push(Meeting.parse(res));\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.editingMeeting = false;\r\n },\r\n\r\n async removeMeeting({ state }, meetingId: any) {\r\n state.removeMeetingLoading = true;\r\n state.removedMeetingId = meetingId;\r\n try {\r\n await api.delete(`/api/Meetings/DeleteMeeting?meetingId=${meetingId}`);\r\n const idx = state.meetings.findIndex(x => x.ID === meetingId);\r\n if (idx === -1) return;\r\n state.meetings.splice(idx, 1);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.removeMeetingLoading = false;\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { Module } from \"vuex\";\r\n\r\nimport getters from \"./getters\";\r\nimport actions from \"./actions\";\r\nimport { RootState } from \"../root\";\r\nimport { Meeting } from \"@/core/models\";\r\n\r\nexport interface MeetingsState {\r\n loading: boolean;\r\n retrieved: boolean;\r\n meetings: Meeting[];\r\n addMeetingLoading: boolean;\r\n editingMeeting: boolean;\r\n editedMeetingId: number;\r\n removeMeetingLoading: boolean;\r\n removedMeetingId: number;\r\n}\r\n\r\nexport const state: MeetingsState = {\r\n loading: false,\r\n retrieved: false,\r\n meetings: [],\r\n addMeetingLoading: false,\r\n editingMeeting: false,\r\n editedMeetingId: 0,\r\n removeMeetingLoading: false,\r\n removedMeetingId: 0,\r\n};\r\n\r\nconst namespaced: boolean = true;\r\nexport const meetings: Module = {\r\n namespaced,\r\n state,\r\n getters,\r\n actions,\r\n};\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { CompanyState } from \".\";\r\nimport store from \"..\";\r\nimport { RootState } from \"../root\";\r\n\r\nconst getters: GetterTree = {\r\n id: state => state.company?.ID || 0,\r\n company: state => state.company,\r\n hasCompany: state => !!state.company,\r\n isActive: state => state.company && state.company.IsActive,\r\n employees: state => state.company?.Employees || [],\r\n isOwner: state => {\r\n const myEmail = store.getters[\"profile/getUserEmail\"];\r\n return state.company?.Owner?.Email === myEmail;\r\n },\r\n\r\n editing: state => state.editing,\r\n creating: state => state.creating,\r\n upgrading: state => state.upgrading,\r\n adding: state => state.adding,\r\n error: state => state.error,\r\n getting: state => state.getting,\r\n};\r\n\r\nexport default getters;\r\n","import { ActionTree } from \"vuex\";\r\n\r\nimport { CompanyState } from \".\";\r\nimport router from \"@/core/router\";\r\nimport api from \"@/core/utils/api\";\r\nimport { RootState } from \"../root\";\r\nimport i18n from \"@/core/plugins/i18n\";\r\nimport { Company } from \"@/core/models\";\r\n\r\nconst actions: ActionTree = {\r\n clear({ state }): void {\r\n state.company = null;\r\n },\r\n\r\n async get({ state, commit }) {\r\n state.getting = true;\r\n try {\r\n const endpoint = \"/api/Company/GetCompanyOfUser\";\r\n const res = await api.get(endpoint);\r\n if (res) {\r\n const company = new Company(res);\r\n state.company = company;\r\n if (!company.IsActive) router.push(\"/company\");\r\n } else router.push(\"/company\");\r\n } catch (error) {\r\n state.error = error;\r\n console.log(error);\r\n commit(\"displaySnackbar\", \"Could not get company\", { root: true });\r\n }\r\n state.getting = false;\r\n },\r\n\r\n async create({ state, commit }, payload) {\r\n state.creating = true;\r\n try {\r\n const endpoint = \"/api/Company/CreateCompany\";\r\n const res = await api.post(endpoint, payload);\r\n state.company = new Company(res);\r\n const message = i18n.t(\"snack.comp.created\").toString();\r\n commit(\"displaySnackbar\", message, { root: true });\r\n router.push(\"/company/dashboard\");\r\n } catch (error) {\r\n state.error = error;\r\n commit(\"displaySnackbar\", \"Could not create company\", { root: true });\r\n }\r\n state.creating = false;\r\n },\r\n\r\n async editName({ state, commit }, payload) {\r\n state.editing = true;\r\n try {\r\n const end = \"/api/Company/EditCompanyName\";\r\n await api.put(end, payload);\r\n } catch (error) {\r\n state.error = error;\r\n commit(\"displaySnackbar\", \"Edit name failed\", { root: true });\r\n }\r\n state.editing = false;\r\n },\r\n\r\n async inviteUsers({ state, commit }, payload) {\r\n state.adding = true;\r\n try {\r\n const end = \"/api/Company/InviteUsers\";\r\n const rejected = (await api.post(end, payload)) as string[];\r\n let msg = i18n.t(\"snack.comp.invited\").toString();\r\n if (rejected && rejected.length > 0)\r\n msg = i18n.t(\"snack.comp.rejected\") + rejected.join(\", \");\r\n else if (rejected && rejected.length == 0)\r\n msg = i18n.t(\"snack.comp.success\").toString();\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n } catch (error) {\r\n state.error = error;\r\n //const errorData = await error;\r\n console.log(error);\r\n if (\r\n error.code &&\r\n error.code == \"InvalidOperationException\" &&\r\n error.description &&\r\n error.description.includes(\"This user is already in/owns a company\")\r\n ) {\r\n const msg = i18n.t(\"snack.comp.conflict\").toString();\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n } else commit(\"displaySnackbar\", \"Invite users failed\", { root: true });\r\n }\r\n state.adding = false;\r\n },\r\n\r\n async upgrade({ state, commit }, payload) {\r\n state.upgrading = true;\r\n try {\r\n const end = \"/api/Company/UpgradePlan\";\r\n await api.post(end, payload);\r\n } catch (error) {\r\n state.error = error;\r\n commit(\"displaySnackbar\", \"Upgrade failed\", { root: true });\r\n }\r\n state.upgrading = false;\r\n },\r\n\r\n async updateRole({ state, commit }, payload) {\r\n const { userEmail, isManager } = payload;\r\n if (!state.company) return;\r\n const idx = state.company.Employees.findIndex(e => e.Email === userEmail);\r\n if (idx !== -1) state.company.Employees[idx].IsManager = isManager;\r\n\r\n const msg = i18n.t(\"snack.users.rupdated\").toString();\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n },\r\n\r\n async removeUser({ state, commit }, email: string) {\r\n if (!state.company) return;\r\n const idx = state.company.Employees.findIndex(e => e.Email === email);\r\n if (idx !== -1) state.company.Employees.splice(idx, 1);\r\n\r\n const msg = i18n.t(\"snack.users.rem\").toString();\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n },\r\n\r\n set({ state, rootState }, company: Company | null) {\r\n if (!company) {\r\n console.log(\"No company was provided in the company setter\");\r\n return;\r\n }\r\n state.company = company;\r\n rootState.active = true;\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { MutationTree } from \"vuex\";\r\nimport { CompanyState } from \".\";\r\n\r\nconst mutations: MutationTree = {\r\n set(state, company) {\r\n state.company = company;\r\n state.getting = false;\r\n },\r\n};\r\nexport default mutations;\r\n","import { Module } from \"vuex\";\r\n\r\nimport getters from \"./getters\";\r\nimport actions from \"./actions\";\r\nimport mutations from \"./mutations\";\r\nimport { RootState } from \"../root\";\r\nimport { Company } from \"@/core/models\";\r\n\r\nexport interface CompanyState {\r\n company: Company | null;\r\n error: object | null;\r\n getting: boolean;\r\n creating: boolean;\r\n editing: boolean;\r\n upgrading: boolean;\r\n adding: boolean;\r\n retrieved: boolean;\r\n}\r\n\r\nexport const state: CompanyState = {\r\n company: null,\r\n error: null,\r\n adding: false,\r\n editing: false,\r\n creating: false,\r\n upgrading: false,\r\n getting: false,\r\n retrieved: false,\r\n};\r\n\r\nexport const company: Module = {\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n namespaced: true,\r\n};\r\n","import { ActionTree } from \"vuex\";\r\nimport { RootState } from \"../root\";\r\nimport { AudioState } from \"./index\";\r\n\r\nconst actions: ActionTree = {\r\n updateTime({ state }, time) {\r\n state.currentTime = time;\r\n },\r\n setProgress({ state }, progress) {\r\n state.progress = progress;\r\n },\r\n setTotalTime({ state }, time) {\r\n state.totalTime = time;\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { GetterTree } from \"vuex\";\r\nimport { AudioState } from \"./\";\r\nimport { RootState } from \"../root\";\r\n\r\nconst getters: GetterTree = {\r\n total: state => state.totalTime,\r\n time: state => state.currentTime,\r\n progress: state => state.progress,\r\n computedProgress: state => state.currentTime / state.totalTime,\r\n timeFormatted: state => {\r\n const seconds = Math.floor(state.currentTime) % 60;\r\n const mins = Math.floor(state.currentTime / 60) % 60;\r\n const hours = Math.floor(state.currentTime / 60 / 60) % 60;\r\n\r\n const ss = seconds.toString().padStart(2, \"0\");\r\n const ms = mins.toString().padStart(2, \"0\");\r\n const hs = hours.toString().padStart(2, \"0\");\r\n if (hours > 0) return `${hs}:${ms}:${ss} min`;\r\n else return `${ms}:${ss} min`;\r\n },\r\n};\r\n\r\nexport default getters;\r\n","import { Module } from \"vuex\";\r\n\r\nimport actions from \"./actions\";\r\nimport getters from \"./getters\";\r\nimport { RootState } from \"../root\";\r\n\r\nexport interface AudioState {\r\n currentTime: number;\r\n progress: number;\r\n totalTime: number;\r\n}\r\n\r\nexport const state: AudioState = {\r\n currentTime: 0,\r\n progress: 0,\r\n totalTime: 1,\r\n};\r\n\r\nexport const audio: Module = {\r\n state,\r\n actions,\r\n getters,\r\n namespaced: true,\r\n};\r\n","import { ActionTree } from \"vuex\";\r\n\r\nimport api from \"@/core/utils/api\";\r\nimport { RootState } from \"../root\";\r\nimport { Product } from \"@/core/models\";\r\nimport { ProductsState } from \"./index\";\r\n\r\nconst actions: ActionTree = {\r\n async get({ state, commit }) {\r\n state.getting = true;\r\n state.retrieved = false;\r\n try {\r\n const end = \"/api/Products/GetProducts\";\r\n const products = (await api.get(end)) as any[];\r\n state.products = products.map(p => new Product(p));\r\n state.retrieved = true;\r\n } catch (error) {\r\n //todo: translate\r\n const fallback = \"Could not get products\";\r\n const msg = error.message || fallback;\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n console.log(error);\r\n }\r\n state.getting = false;\r\n },\r\n\r\n async create({ state, commit }, payload) {\r\n state.loading = true;\r\n try {\r\n const end = \"/api/Products/CreateProduct\";\r\n const created = await api.post(end, payload);\r\n state.products.push(new Product(created));\r\n //todo: translate\r\n const msg = \"Successfully created product\";\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n } catch (error) {\r\n console.log(error);\r\n //todo: translate\r\n const fallback = \"Could not update product\";\r\n const msg = error.message || fallback;\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n }\r\n state.loading = false;\r\n },\r\n\r\n async update({ state, commit }, payload) {\r\n state.loading = true;\r\n try {\r\n const end = \"/api/Products/UpdateProduct\";\r\n await api.patch(end, payload);\r\n const idx = state.products.findIndex(x => x.id === payload.id);\r\n state.products[idx].metadata = payload.metadata;\r\n //todo: translate\r\n const msg = \"Successfully updated price\";\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n } catch (error) {\r\n console.log(error);\r\n //todo: translate\r\n const fallback = \"Could not update product\";\r\n const msg = error.message || fallback;\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n }\r\n state.loading = false;\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { ProductsState } from \".\";\r\nimport { RootState } from \"../root\";\r\n\r\nconst getters: GetterTree = {\r\n products: state => state.products,\r\n getting: state => state.getting,\r\n retrieved: state => state.retrieved,\r\n loading: state => state.loading,\r\n};\r\n\r\nexport default getters;\r\n","import { MutationTree } from \"vuex\";\r\nimport { ProductsState } from \"./index\";\r\nimport { Product } from \"@/core/models\";\r\n\r\nconst mutations: MutationTree = {\r\n setProducts(state, products: Product[]) {\r\n state.products = products;\r\n state.retrieved = true;\r\n },\r\n};\r\n\r\nexport default mutations;\r\n","import { Module } from \"vuex\";\r\n\r\nimport actions from \"./actions\";\r\nimport getters from \"./getters\";\r\nimport mutations from \"./mutations\";\r\nimport { RootState } from \"../root\";\r\nimport { Product } from \"@/core/models\";\r\n\r\nexport interface ProductsState {\r\n retrieved: boolean;\r\n getting: boolean;\r\n loading: boolean;\r\n products: Product[];\r\n}\r\n\r\nexport const state: ProductsState = {\r\n retrieved: false,\r\n getting: false,\r\n loading: false,\r\n products: [],\r\n};\r\n\r\nexport const products: Module = {\r\n namespaced: true,\r\n state,\r\n actions,\r\n getters,\r\n mutations,\r\n};\r\n","import { ActionTree } from \"vuex\";\r\nimport { RootState } from \"../root\";\r\nimport { AiFeedback, Interval } from \"@/core/models\";\r\nimport { CurrentSessionState } from \"./index\";\r\nimport { Session } from \"@/core/models/sessions\";\r\n\r\nconst actions: ActionTree = {\r\n setSession({ state }, session: Session | null) {\r\n if (session === null) state.session = null;\r\n else state.session = JSON.parse(JSON.stringify(session));\r\n },\r\n setLimit({ state }, limit: number) {\r\n state.limit = limit;\r\n },\r\n setZoom({ state }, val: boolean) {\r\n state.zoom = val;\r\n },\r\n setZoomInterval({ state }, interval: Interval) {\r\n state.interval = interval;\r\n },\r\n updateFeedback({ state }, data: any) {\r\n console.log(\"updateFeedback\", data);\r\n if (data.id && state.session && state.session.ID == data.id) {\r\n console.log(\"updating feedback\");\r\n state.session.VideoFeedback = data.videoFeedback;\r\n }\r\n },\r\n updateAiFeedback({ state }, data: AiFeedback) {\r\n console.log(\"updateAiFeedback\", data);\r\n if (state.session) {\r\n console.log(\"updating AI feedback\");\r\n state.session.AiFeedback = data;\r\n }\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import store from \"..\";\r\nimport { GetterTree } from \"vuex\";\r\nimport { RootState } from \"../root\";\r\nimport { CurrentSessionState } from \".\";\r\nimport { Session } from \"@/core/models\";\r\n\r\nconst rounder = (value: number) => Math.round(value * 100) / 100;\r\nconst getters: GetterTree = {\r\n limit: state => state.limit,\r\n loading: state => state.session?.Loading,\r\n completed: state => state.session?.Completed,\r\n\r\n // Zoom\r\n zoom: state => state.zoom,\r\n interval: state => state.interval,\r\n canZoom: state =>\r\n state.session?.Slides.length !== 0 &&\r\n state.session?.Slides.some(slide => slide.image),\r\n canLiveZoom: state => state.session && state.session?.SessionLength > 60,\r\n\r\n // General\r\n id: state => state.session?.ID,\r\n session: state => state.session,\r\n name: state => state.session?.Name,\r\n score: state => state.session?.SessionScore,\r\n textCompleted: state =>\r\n state.session && state.session.TextAnalysis.Text.length > 0,\r\n audioCompleted: state => state.session?.AudioAnalysis.IsCompleted,\r\n length: state => state.session?.SessionLength,\r\n sharedWith: state => state.session?.SharedWith,\r\n has: state =>\r\n state.session !== null &&\r\n state.session !== undefined &&\r\n state.session !== Session.Empty(),\r\n feedback: state => state.session?.VideoFeedback,\r\n\r\n // Audio file\r\n url: state => state.session?.AudioFile?.URI,\r\n videoUrl: state => state.session?.VideoFromRecording?.URI,\r\n\r\n // Text analysis\r\n wpm: state => rounder(state.session?.TextAnalysis.WordsPerMinute || 0),\r\n keywords: state => state.session?.TextAnalysis.Keywords,\r\n text: state => state.session?.TextAnalysis.Text,\r\n sentences: state => state.session?.TextAnalysis.Sentences,\r\n hasSentence: state =>\r\n state.session && state.session.TextAnalysis.Sentences.length > 0,\r\n positive: state => rounder(state.session?.TextAnalysis.PositiveScore || 0),\r\n negative: state => rounder(state.session?.TextAnalysis.NegativeScore || 0),\r\n neutral: state => rounder(state.session?.TextAnalysis.NeutralScore || 0),\r\n lookupWords: state => state.session?.TextAnalysis.LookupWords,\r\n words: state => state.session?.TextAnalysis.Words || [],\r\n\r\n // Movement analysis\r\n movement: state => state.session?.MovementAnalysis,\r\n handAvg: state => state.session?.MovementAnalysis.AverageHandMovement,\r\n headAvg: state => state.session?.MovementAnalysis.AverageHeadMovement,\r\n handMovement: state => state.session?.MovementAnalysis.HandMovement,\r\n headMovement: state => state.session?.MovementAnalysis.HeadMovement,\r\n\r\n // Audio analysis\r\n pitch: state => state.session?.AudioAnalysis.Pitch,\r\n pitchAvg: state => rounder(state.session?.AudioAnalysis.AveragePitch || 0),\r\n volume: state => state.session?.AudioAnalysis.Volume,\r\n volumeAvg: state =>\r\n rounder((state.session?.AudioAnalysis.AverageVolume || 0) * 100),\r\n pauses: state => state.session?.AudioAnalysis.Pauses,\r\n pausesAvg: state => rounder(state.session?.AudioAnalysis.AveragePauses || 0),\r\n pausesTotal: state =>\r\n rounder(state.session?.AudioAnalysis.TotalPauseTime || 0),\r\n pausesPerMinute: state =>\r\n rounder(state.session?.AudioAnalysis.PausesPerMinute || 0),\r\n calcLength: state => state.session?.AudioAnalysis.CalculationLength,\r\n scores: state => state.session?.SessionScores,\r\n\r\n // Slides\r\n timestamps: state => state.session?.Timestamps,\r\n averages: state => state.session?.AudioAnalysis.TimedAverages,\r\n slides: state => {\r\n if (state.session?.Slides && state.session?.Slides.length > 0) {\r\n const first = state.session?.Slides[0];\r\n if (first.offset != 0) {\r\n const slide = { ...first };\r\n slide.offset = 0;\r\n slide.duration = first.offset;\r\n state.session?.Slides.unshift(slide);\r\n }\r\n }\r\n return state.session?.Slides.filter(x => x.duration !== 0);\r\n },\r\n\r\n // Current slide\r\n currentSlide: state => {\r\n const slides = state.session?.Slides;\r\n if (!slides || slides.length == 0) return undefined;\r\n\r\n const time = store.getters[\"audio/time\"] * 1000;\r\n const total = store.getters[\"audio/total\"] * 1000;\r\n if (slides.length === 0) return undefined;\r\n\r\n if (time === 0) return { ...slides[0], index: 1 };\r\n if (time >= total)\r\n return { ...slides[slides.length - 1], index: slides.length };\r\n\r\n let index = slides.findIndex(\r\n x => x.offset <= time && time <= x.offset + x.duration,\r\n );\r\n if (index === -1) index = slides.findIndex(x => x.offset >= time);\r\n if (index === -1) index = slides.length - 1;\r\n return { ...slides[index], index: index + 1 };\r\n },\r\n\r\n // AI Feedback\r\n aiFeedback: state => state.session?.AiFeedback,\r\n};\r\n\r\nexport default getters;\r\n","import { Module } from \"vuex\";\r\n\r\nimport actions from \"./actions\";\r\nimport getters from \"./getters\";\r\nimport { RootState } from \"../root\";\r\nimport { Interval } from \"@/core/models\";\r\nimport { Session } from \"@/core/models/sessions\";\r\n\r\nexport interface CurrentSessionState {\r\n limit: number;\r\n zoom: boolean;\r\n interval: Interval;\r\n session: Session | null;\r\n}\r\n\r\nexport const state: CurrentSessionState = {\r\n session: null,\r\n limit: 50,\r\n zoom: false,\r\n interval: { start: 0, end: 0 },\r\n};\r\n\r\nexport const currentSession: Module = {\r\n namespaced: true,\r\n state,\r\n actions,\r\n getters,\r\n};\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { RootState } from \"../root\";\r\nimport { ManagedSessionsState, SharingUser } from \".\";\r\n\r\nconst getters: GetterTree = {\r\n retrieved: state => state.retrieved,\r\n usersLoading: state => state.usersLoading,\r\n sessionsLoading: state => state.sessionsLoading,\r\n\r\n active: state => state.active,\r\n selected: state => state.selected,\r\n shared: state => state.sharedSessions,\r\n sharingUsers: state => state.sharingUsers,\r\n\r\n sessions: state =>\r\n state.sharedSessions.find(x => x.user.email === state.selected)?.sessions ||\r\n [],\r\n users: state => state.sharedSessions.map(x => x.user) as SharingUser[],\r\n selectedUser: state =>\r\n state.sharedSessions.map(x => x.user).find(x => x.email == state.selected),\r\n};\r\n\r\nexport default getters;\r\n","import { ActionTree } from \"vuex\";\r\n\r\nimport api from \"@/core/utils/api\";\r\nimport { RootState } from \"../root\";\r\nimport { ManagedSessionsState, SharingUser } from \".\";\r\nimport { Session, SharedSessions } from \"@/core/models\";\r\n\r\nconst actions: ActionTree = {\r\n clear({ state }) {\r\n state.retrieved = false;\r\n state.sharingUsers = [];\r\n state.active = false;\r\n state.selected = null;\r\n state.sharedSessions = [];\r\n },\r\n\r\n async setUser({ state }, e: string) {\r\n const user = state.sharedSessions.map(x => x.user).find(x => x.email == e);\r\n if (!user) {\r\n state.sessionsLoading = true;\r\n try {\r\n const end = `/api/Sessions/GetSharedSessions/${e}`;\r\n const res = (await api.get(end)) as SharedSessions;\r\n res.sessions = res.sessions.map(x => Session.parseSingleSession(x));\r\n state.sharedSessions.push(res);\r\n state.active = true;\r\n state.selected = res.user.email;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.sessionsLoading = false;\r\n } else state.selected = user.email;\r\n },\r\n\r\n async getUsers({ state }) {\r\n state.usersLoading = true;\r\n try {\r\n const end = \"/api/Sessions/GetUsersSharingSessions\";\r\n const arr = (await api.get(end)) as SharingUser[];\r\n state.sharingUsers = [...new Set(arr)];\r\n state.retrieved = true;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.usersLoading = false;\r\n },\r\n\r\n async getShared({ state }, emails: string[]) {\r\n state.sessionsLoading = true;\r\n try {\r\n const end = \"/api/Sessions/GetSharedSessions\";\r\n const data = { emails };\r\n const res = (await api.post(end, data)) as SharedSessions[];\r\n state.sharedSessions = res.map(x => {\r\n x.sessions = Session.parseSessions(x.sessions);\r\n return x;\r\n });\r\n state.active = true;\r\n state.selected = state.sharedSessions[0].user.email;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.sessionsLoading = false;\r\n },\r\n\r\n async getUserShared({ state }, email: string) {\r\n if (state.sharedSessions.some(x => x.user.email === email)) {\r\n console.log(\"User sessions already retrieved\");\r\n return;\r\n }\r\n\r\n state.sessionsLoading = true;\r\n try {\r\n const end = `/api/Sessions/GetSharedSessions/${email}`;\r\n const res = (await api.get(end)) as SharedSessions;\r\n res.sessions = Session.parseSessions(res.sessions);\r\n state.sharedSessions.push(res);\r\n state.active = true;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.sessionsLoading = false;\r\n },\r\n\r\n async getSingleShared(\r\n { state, dispatch },\r\n { email, id }: { email: string; id: number },\r\n ) {\r\n const user = state.sharedSessions.find(x => x.user.email === email);\r\n if (!user) {\r\n dispatch(\"getUserShared\", email);\r\n return;\r\n }\r\n\r\n if (user.sessions.some(x => x.ID === id)) {\r\n console.log(\"Session already retrieved\");\r\n return;\r\n }\r\n\r\n state.sessionsLoading = true;\r\n try {\r\n const end = `/api/Sessions/GetSharedSessions/${email}/${id}`;\r\n const res = (await api.get(end)) as any;\r\n const session = Session.parseSingleSession(res);\r\n user.sessions.push(session);\r\n state.active = true;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.sessionsLoading = false;\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { Module } from \"vuex\";\r\n\r\nimport getters from \"./getters\";\r\nimport actions from \"./actions\";\r\nimport { RootState } from \"../root\";\r\nimport { SharedSessions } from \"@/core/models\";\r\n\r\nexport interface SharingUser {\r\n username: string;\r\n email: string;\r\n}\r\n\r\nexport interface ManagedSessionsState {\r\n active: boolean;\r\n retrieved: boolean;\r\n usersLoading: boolean;\r\n selected: string | null;\r\n sessionsLoading: boolean;\r\n sharingUsers: SharingUser[];\r\n sharedSessions: SharedSessions[];\r\n}\r\n\r\nexport const state: ManagedSessionsState = {\r\n retrieved: false,\r\n usersLoading: false,\r\n sessionsLoading: false,\r\n\r\n sharingUsers: [],\r\n active: false,\r\n selected: null,\r\n sharedSessions: [],\r\n};\r\n\r\nexport const managed: Module = {\r\n state,\r\n getters,\r\n actions,\r\n namespaced: true,\r\n};\r\n","import { ActionTree } from \"vuex\";\r\n\r\nimport api from \"@/core/utils/api\";\r\nimport { RootState } from \"../root\";\r\nimport { DashboardData, DashboardState } from \".\";\r\nimport { Article, AssignedGoal, Goal, Group } from \"@/core/models\";\r\n\r\nexport default {\r\n clear({ state }) {\r\n state.retrieved = false;\r\n },\r\n async getData({ state, commit }) {\r\n state.loading = true;\r\n try {\r\n const end = \"/api/Users/Dashboard\";\r\n const data = (await api.get(end)) as DashboardData;\r\n if (data.goals.assignedGoals)\r\n data.goals.assignedGoals = data.goals.assignedGoals.map(x =>\r\n AssignedGoal.parse(x),\r\n );\r\n if (data.goals.createdGoals)\r\n data.goals.createdGoals = data.goals.createdGoals.map(x =>\r\n Goal.parse(x),\r\n );\r\n data.groups = data.groups.map(x => Group.parseGroup(x));\r\n data.articles = data.articles.map(x => Article.parseArticle(x));\r\n state.retrieved = true;\r\n\r\n commit(\"goals/set\", data.goals, { root: true });\r\n commit(\"news/set\", data.articles, { root: true });\r\n commit(\"groups/set\", data.groups, { root: true });\r\n commit(\"presentations/set\", data.presentations, { root: true });\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.loading = false;\r\n },\r\n} as ActionTree;\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { DashboardState } from \".\";\r\nimport { RootState } from \"../root\";\r\n\r\nexport default {\r\n loading: state => state.loading,\r\n retrieved: state => state.retrieved,\r\n} as GetterTree;\r\n","import { Module } from \"vuex\";\r\n\r\nimport actions from \"./actions\";\r\nimport getters from \"./getters\";\r\nimport { RootState } from \"../root\";\r\nimport {\r\n Goal,\r\n Group,\r\n Article,\r\n Presentation,\r\n AssignedGoal,\r\n} from \"@/core/models\";\r\n\r\nexport interface DashboardData {\r\n groups: Group[];\r\n articles: Article[];\r\n presentations: Presentation[];\r\n goals: { assignedGoals: AssignedGoal[]; createdGoals: Goal[] };\r\n}\r\n\r\nexport interface DashboardState {\r\n retrieved: boolean;\r\n loading: boolean;\r\n}\r\nexport const state: DashboardState = {\r\n retrieved: false,\r\n loading: false,\r\n};\r\n\r\nexport const dashboard: Module = {\r\n namespaced: true,\r\n state,\r\n actions,\r\n getters,\r\n};\r\n","import { ActionTree } from \"vuex\";\r\n\r\nimport api from \"@/core/utils/api\";\r\nimport { Invitation, InvitationData } from \"@/core/models\";\r\nimport { RootState } from \"../root\";\r\nimport { InvitationsState } from \"./index\";\r\n\r\nexport const actions: ActionTree = {\r\n async get({ state, commit }) {\r\n state.loading = true;\r\n try {\r\n state.invitations = await api.get(\"/api/Invitations\");\r\n state.retrieved = true;\r\n } catch (error) {\r\n const msg = \"Could not fetch invitations\";\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n console.log(error);\r\n }\r\n state.loading = false;\r\n },\r\n\r\n async send({ state, commit }, data: InvitationData) {\r\n state.sending = true;\r\n let invs: any[] = [];\r\n try {\r\n invs = (await api.post(\"/api/Invitations\", data)) as any[];\r\n const emails = data.userEmails.join(\", \");\r\n const msg = `Invitation successfully sent to ${emails}.`;\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n } catch (error) {\r\n console.log(error);\r\n const msg = \"Could not send out invitations\";\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n }\r\n state.sending = false;\r\n return invs;\r\n },\r\n\r\n async accept({ commit }, inv: Invitation) {\r\n try {\r\n const end = `/api/Invitations/Accept/${inv.id}`;\r\n const { seminar } = (await api.patch(end)) as any;\r\n console.log(\"[accept invitation] Seminar\", seminar);\r\n location.reload();\r\n } catch (error) {\r\n console.error(error);\r\n const msg = \"Could not accept invitation\";\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n }\r\n },\r\n\r\n async decline({ state, commit }, inv: Invitation) {\r\n try {\r\n const end = `/api/Invitations/ToggleActivation/${inv.id}`;\r\n await api.patch(end);\r\n\r\n // update active status\r\n const idx = state.invitations.findIndex(x => x.id === inv.id);\r\n if (idx !== -1) {\r\n const arr = JSON.parse(\r\n JSON.stringify(state.invitations),\r\n ) as Invitation[];\r\n arr[idx].active = false;\r\n state.invitations = arr;\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n const msg = \"Could not accept invitation\";\r\n commit(\"displaySnackbar\", msg, { root: true });\r\n }\r\n },\r\n};\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { RootState } from \"../root\";\r\nimport { InvitationsState } from \".\";\r\n\r\nexport const getters: GetterTree = {\r\n retrieved: state => state.retrieved,\r\n loading: state => state.loading,\r\n sending: state => state.sending,\r\n invitations: state => state.invitations,\r\n};\r\n","import { Module } from \"vuex\";\r\n\r\nimport { actions } from \"./actions\";\r\nimport { getters } from \"./getters\";\r\nimport { RootState } from \"../root\";\r\nimport { Invitation } from \"@/core/models\";\r\n\r\nexport interface InvitationsState {\r\n retrieved: boolean;\r\n loading: boolean;\r\n sending: boolean;\r\n invitations: Invitation[];\r\n}\r\n\r\nexport const state: InvitationsState = {\r\n retrieved: false,\r\n loading: false,\r\n sending: false,\r\n invitations: [],\r\n};\r\n\r\nexport const invitations: Module = {\r\n namespaced: true,\r\n state,\r\n actions,\r\n getters,\r\n};\r\n","import { ActionTree, Dispatch } from \"vuex\";\r\n\r\nimport api from \"@/core/utils/api\";\r\nimport {\r\n AddElementAction,\r\n CreateSeminarRequest,\r\n EditSeminarRequest,\r\n GetSubsRequest,\r\n RateVideoAction,\r\n RemoveElementRequest,\r\n SemIdUId,\r\n} from \"@/core/models/requests\";\r\nimport {\r\n Seminar,\r\n SeminarBlock,\r\n SeminarElement,\r\n Submission,\r\n Rating,\r\n SeminarOrder,\r\n} from \"@/core/models\";\r\nimport {\r\n blocksInOrder,\r\n elementStatus,\r\n requestFromElement,\r\n typeToEndpoint,\r\n} from \"@/core/utils/seminars\";\r\n\r\nimport { SeminarsState } from \".\";\r\nimport { RootState } from \"../root\";\r\n\r\nconst emptySubmissionElements = new Map([\r\n [\"read_text\", \"/api/Submissions/ReadText\"],\r\n [\"watch_video\", \"/api/Submissions/WatchVideo\"],\r\n]);\r\n\r\nconst updateArray = (state: SeminarsState) => {\r\n const idx = state.seminars.findIndex(x => x.id === state.selected?.id) || -1;\r\n if (idx === -1) return;\r\n state.seminars[idx] = JSON.parse(JSON.stringify(state.selected));\r\n};\r\n\r\nconst refetchSeminar = (state: SeminarsState, dispatch: Dispatch) => {\r\n const seminarId = state.selected?.id;\r\n const selectedIdx = state.seminars.findIndex(x => x.id === seminarId);\r\n state.selected = undefined;\r\n if (selectedIdx !== -1) state.seminars.splice(selectedIdx, 1);\r\n dispatch(\"get\", { id: seminarId, refresh: true });\r\n};\r\n\r\nexport const actions: ActionTree = {\r\n clear({ state }) {\r\n state.adding = false;\r\n state.loading = false;\r\n state.retrieved = false;\r\n state.updating = false;\r\n state.selected = undefined;\r\n state.seminars = [];\r\n },\r\n\r\n set({ state }, seminars: Seminar[]) {\r\n state.seminars = seminars;\r\n if (seminars.length > 0) state.selected = seminars[0];\r\n state.adding = false;\r\n state.loading = false;\r\n state.retrieved = false;\r\n state.updating = false;\r\n },\r\n\r\n setindices({ state }, indices: [number, number]) {\r\n state.blockIndex = indices[0];\r\n state.elementIndex = indices[1];\r\n },\r\n\r\n next({ state, getters }) {\r\n const el = getters[\"element\"];\r\n if (!state.selected || !el) return;\r\n\r\n const index = state.blockIndex;\r\n const elIndex = state.elementIndex;\r\n\r\n const blocks = blocksInOrder(state.selected, state.selected.order);\r\n const prevBlock = index - 1 < 0 ? null : blocks[index - 1];\r\n const lastElOfPrevBlock =\r\n prevBlock?.elements[prevBlock.elements.length - 1];\r\n const prevEl =\r\n elIndex === 0 ? lastElOfPrevBlock : blocks[index].elements[elIndex - 1];\r\n\r\n if (!prevEl || elementStatus(prevEl, state.selected) !== \"active\") {\r\n const lastElIdxOfBlockIdx = blocks[state.blockIndex].elements.length - 1;\r\n const lastBlockIdx = blocks.length - 1;\r\n if (state.elementIndex === lastElIdxOfBlockIdx) {\r\n if (state.blockIndex === lastBlockIdx) return;\r\n state.blockIndex++;\r\n state.elementIndex = 0;\r\n } else state.elementIndex++;\r\n }\r\n },\r\n\r\n prev({ state }) {\r\n if (!state.selected) return;\r\n if (state.elementIndex === 0) {\r\n if (state.blockIndex === 0) return;\r\n const blocks = blocksInOrder(state.selected, state.selected.order);\r\n state.blockIndex--;\r\n state.elementIndex = blocks[state.blockIndex].elements.length - 1;\r\n } else state.elementIndex--;\r\n },\r\n\r\n // get one/all\r\n async getAll({ state }) {\r\n state.loading = true;\r\n try {\r\n const seminars = (await api.get(\"/api/Seminar\")) as Seminar[];\r\n state.seminars = seminars.map(x => {\r\n x.retrieved = false;\r\n return x;\r\n });\r\n state.retrieved = true;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.loading = false;\r\n },\r\n\r\n async get(\r\n { state, getters, dispatch },\r\n { id, refresh }: { id: number; refresh?: boolean },\r\n ) {\r\n const existing = state.seminars.find(x => x.id === id);\r\n if (!refresh && existing && existing.retrieved) {\r\n state.selected = existing;\r\n return;\r\n }\r\n\r\n state.loading = !refresh;\r\n try {\r\n if (!id && !state.seminars.length) await dispatch(\"getAll\");\r\n const seminarId = id || state.seminars[0].id;\r\n const seminar = (await api.get(`/api/Seminar/${seminarId}`)) as Seminar;\r\n seminar.retrieved = true;\r\n if (seminar.order)\r\n seminar.initialOrder = JSON.parse(JSON.stringify(seminar.order));\r\n const newArr = state.seminars.slice(0);\r\n\r\n // check submissions\r\n // const blocks = seminar.blocks.map(b => {\r\n // const elements = b.elements.map(e => {\r\n // // subs for this el\r\n // const all = seminar.submissions?.filter(x => x.elementId === e?.id);\r\n // const subs = all?.filter(x => !x.skipped);\r\n // const skippedSubs = all?.filter(x => x.skipped);\r\n\r\n // // element has been skipped\r\n // if (all?.length === 1 && all[0].skipped)\r\n // return { ...e, skipped: true };\r\n\r\n // // check video_presentation differently\r\n // let completed = false;\r\n // if (e?.type === \"video_presentation\") {\r\n // const numReq = e.requiredSubmissions || 1;\r\n // const numReqShared = e.requiredNumShared || 0;\r\n // const sharedSubs = subs?.filter(x => x.isShared).length || 0;\r\n // completed =\r\n // (subs?.length || 0) >= numReq && sharedSubs >= numReqShared;\r\n\r\n // // if not completed - might be skipped\r\n // if (!completed) {\r\n // const isSkipped = (skippedSubs?.length || 0) > 0;\r\n // if (isSkipped) return { ...e, skipped: true };\r\n // }\r\n // } else completed = (subs?.length || 0) > 0;\r\n\r\n // console.debug(\r\n // \"[get one] Element\",\r\n // e.title,\r\n // \"Subs\",\r\n // all,\r\n // \"Completed\",\r\n // completed,\r\n // );\r\n\r\n // return { ...e, completed };\r\n // });\r\n // return { ...b, elements };\r\n // });\r\n\r\n const newSeminar = JSON.parse(JSON.stringify(seminar));\r\n // newSeminar.blocks = blocks;\r\n let idx = newArr.findIndex(x => x.id === id);\r\n if (idx === -1) {\r\n newArr.push(seminar);\r\n idx = newArr.length;\r\n } else newArr[idx] = newSeminar;\r\n state.selected = newSeminar;\r\n state.seminars = JSON.parse(JSON.stringify(newArr));\r\n\r\n const upTo = getters[\"selectableUpTo\"] as [number, number];\r\n state.blockIndex = upTo[0];\r\n state.elementIndex = upTo[1];\r\n } catch (error) {\r\n console.log(error);\r\n state.selected = undefined;\r\n }\r\n state.loading = false;\r\n },\r\n\r\n // CRUD\r\n // todo seminar not right\r\n async create({ state }, d: CreateSeminarRequest) {\r\n state.loading = true;\r\n try {\r\n const data = new FormData();\r\n data.append(\"name\", d.name);\r\n data.append(\"description\", d.description);\r\n if (d.logo) data.append(\"logo\", d.logo);\r\n const seminar = (await api.post(\"/api/Seminar\", data, {\r\n headers: { ContentType: \"multipart/form-data\" },\r\n })) as Seminar;\r\n state.seminars = [...state.seminars, seminar];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.loading = false;\r\n },\r\n\r\n async edit({ state }, d: EditSeminarRequest) {\r\n state.loading = true;\r\n console.debug(d);\r\n try {\r\n const data = new FormData();\r\n data.append(\"seminarId\", JSON.stringify(d.seminarId));\r\n data.append(\"name\", d.name);\r\n data.append(\"description\", d.description);\r\n if (d.logo) data.append(\"logo\", d.logo);\r\n const image = (await api.patch(\"/api/Seminar/Edit\", data, {\r\n headers: { ContentType: \"multipart/form-data\" },\r\n })) as string;\r\n\r\n if (!state.selected) return;\r\n state.selected.id = d.seminarId;\r\n state.selected.name = d.name;\r\n state.selected.description = d.description;\r\n state.selected.logo = image;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.loading = false;\r\n },\r\n\r\n async removeLogo({ state }, id: number) {\r\n state.loading = true;\r\n try {\r\n await api.delete(`/api/Seminar/RemoveLogo/${id}`);\r\n if (!state.selected) return;\r\n state.selected.logo = \"\";\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.loading = false;\r\n },\r\n\r\n async remove({ state }, id: number) {\r\n state.loading = true;\r\n try {\r\n await api.delete(`/api/Seminar/${id}`);\r\n state.selected = undefined;\r\n state.seminars = state.seminars.filter(x => x.id !== id);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.loading = false;\r\n },\r\n\r\n // Add/edit block\r\n async addBlock({ state }, block: SeminarBlock) {\r\n state.adding = true;\r\n try {\r\n // create block\r\n const data = {\r\n title: block.title,\r\n description: block.description,\r\n seminarId: block.seminarId,\r\n };\r\n const id = (await api.post(\"/api/Seminar/CreateBlock\", data)) as number;\r\n block.id = id;\r\n\r\n // make new seminar\r\n if (!state.selected) return;\r\n const newSeminar = JSON.parse(JSON.stringify(state.selected)) as Seminar;\r\n if (!newSeminar.blocks) state.selected.blocks = [];\r\n newSeminar.blocks.push(block);\r\n\r\n // update order\r\n const newOrder = JSON.parse(\r\n JSON.stringify(newSeminar.order),\r\n ) as SeminarOrder;\r\n newOrder.blocks.push({ blockId: id, blockIndex: newOrder.blocks.length });\r\n\r\n // update seminar\r\n newSeminar.order = newOrder;\r\n newSeminar.initialOrder = JSON.parse(JSON.stringify(newOrder));\r\n const idx = state.seminars.findIndex(x => x.id === block.seminarId);\r\n if (idx === -1) return window.location.reload(); // todo controversial?\r\n state.seminars[idx] = newSeminar;\r\n state.selected = newSeminar;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.adding = false;\r\n },\r\n\r\n async editBlock({ state }, block: SeminarBlock) {\r\n state.updating = true;\r\n try {\r\n const data = { ...block, elements: null };\r\n await api.patch(\"/api/Seminar/Block\", data);\r\n if (!state.selected) throw new Error(\"No current seminar\");\r\n const newSelected = JSON.parse(JSON.stringify(state.selected)) as Seminar;\r\n const idx = newSelected.blocks.findIndex(x => x.id === block.id);\r\n if (idx !== -1) {\r\n newSelected.blocks[idx].title = block.title;\r\n newSelected.blocks[idx].description = block.description;\r\n state.selected = newSelected;\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.updating = false;\r\n },\r\n\r\n async removeBlock({ state, dispatch }, id: number) {\r\n state.updating = true;\r\n try {\r\n await api.delete(`/api/Seminar/DeleteBlock/${id}`);\r\n // if (!state.selected) throw new Error(\"Seminar not found\");\r\n\r\n // // set stuff\r\n // const newSelected = { ...state.selected };\r\n // const newBlocks = state.selected.blocks.slice(0) || [];\r\n // const elIds = newBlocks.flatMap(x => x.elements.map(x => x.id));\r\n // const newSubs = state.selected.submissions?.slice(0) || [];\r\n // newSelected.blocks = newBlocks.filter(x => x.id !== id);\r\n // newSelected.submissions = newSubs.filter(\r\n // x => !elIds.includes(x.elementId),\r\n // );\r\n\r\n // state.selected = JSON.parse(JSON.stringify(newSelected);\r\n // updateArray(state);\r\n refetchSeminar(state, dispatch);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.updating = false;\r\n },\r\n\r\n // add/edit element\r\n async addElement({ state }, { element, file }: AddElementAction) {\r\n state.adding = true;\r\n try {\r\n // send request\r\n const request = requestFromElement(element);\r\n const endpoint = typeToEndpoint(element.type);\r\n if (!request) return;\r\n\r\n // send request\r\n let res: any;\r\n if (request.type === \"watch_video\") {\r\n if (file) request.data.append(\"videoFile\", file);\r\n else request.data.append(\"videoURI\", (element as any).videoURI);\r\n res = (await api.post(endpoint, request.data, {\r\n headers: { ContentType: \"multipart/form-data\" },\r\n })) as any;\r\n } else res = (await api.post(endpoint, request.data)) as any;\r\n\r\n // setup new element to add\r\n element.id = res.id;\r\n\r\n // add video uri if type is watch_video\r\n if (element.type === \"watch_video\") element.videoURI = res.uri;\r\n // add goal id if element is goal\r\n if (element.type === \"goal\") element.goalId = res.goalId;\r\n\r\n // find seminar/block\r\n const newArr = state.seminars.slice(0);\r\n const sIdx = newArr.findIndex(x => x.id === element.seminarId);\r\n if (sIdx === -1) return;\r\n const bIdx = newArr[sIdx].blocks.findIndex(x => x.id === element.blockId);\r\n if (bIdx === -1) return;\r\n\r\n // Add element\r\n newArr[sIdx].blocks[bIdx].elements.push(element);\r\n const els = newArr[sIdx].elements || [];\r\n newArr[sIdx].elements = [...els, element];\r\n\r\n // update order\r\n const newOrder = JSON.parse(\r\n JSON.stringify(newArr[sIdx].order),\r\n ) as SeminarOrder;\r\n const newIndex = newOrder.elements.filter(\r\n x => x.blockId === element.blockId,\r\n ).length;\r\n newOrder.elements.push({\r\n blockId: element.blockId,\r\n elementId: element.id,\r\n elementIndex: newIndex,\r\n });\r\n newArr[sIdx].order = newOrder;\r\n newArr[sIdx].initialOrder = JSON.parse(JSON.stringify(newOrder));\r\n\r\n // update seminars\r\n state.seminars = JSON.parse(JSON.stringify(newArr)) as Seminar[];\r\n state.selected = JSON.parse(JSON.stringify(newArr[sIdx]));\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.adding = false;\r\n },\r\n\r\n async editElement({ state }, { element, file }: AddElementAction) {\r\n state.updating = true;\r\n try {\r\n const endpoint = typeToEndpoint(element.type);\r\n const request = requestFromElement(element);\r\n if (!request) throw new Error(\"Element type not found\");\r\n\r\n if (request.type === \"watch_video\") {\r\n const vidUri = (element as any).videoURI as string | undefined;\r\n request.data.append(\"elementId\", element.id.toString());\r\n if (file) request.data.append(\"videoFile\", file);\r\n else if (vidUri) request.data.append(\"videoURI\", vidUri);\r\n const { uri } = (await api.post(endpoint, request.data, {\r\n headers: { ContentType: \"multipart/form-data\" },\r\n })) as any;\r\n if (uri) (element as any).videoURI = uri;\r\n } else {\r\n const { uri } = (await api.post(endpoint, {\r\n ...request.data,\r\n elementId: element.id,\r\n })) as any;\r\n if (uri) (element as any).videoURI = uri;\r\n }\r\n\r\n if (!state.selected) return;\r\n const newSelected = JSON.parse(JSON.stringify(state.selected)) as Seminar;\r\n\r\n // update blocks\r\n const blockIdx = newSelected.blocks.findIndex(\r\n x => x.id === element.blockId,\r\n );\r\n if (blockIdx !== -1) {\r\n const idx = newSelected.blocks[blockIdx].elements.findIndex(\r\n x => x.id === element.id,\r\n );\r\n newSelected.blocks[blockIdx].elements[idx] = element;\r\n }\r\n\r\n // update elements\r\n if (newSelected.elements) {\r\n const elIdx =\r\n newSelected.elements?.findIndex(x => x.id === element.id) || -1;\r\n if (elIdx !== -1) newSelected.elements[elIdx] = element;\r\n }\r\n\r\n // update selected\r\n state.selected = newSelected;\r\n\r\n // update array\r\n updateArray(state);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.updating = false;\r\n },\r\n\r\n // blockId\r\n async removeElement({ state, dispatch }, { id }: RemoveElementRequest) {\r\n // start\r\n state.updating = true;\r\n try {\r\n // make api call\r\n await api.delete(`/api/Elements/${id}`);\r\n // if (!state.selected) throw new Error(\"Seminar not found\");\r\n\r\n // const newSelected = JSON.parse(JSON.stringify(state.selected)) as Seminar;\r\n\r\n // // remove subs\r\n // const newSubs = JSON.parse(\r\n // JSON.stringify(newSelected.submissions || []),\r\n // ) as Submission[];\r\n // newSelected.submissions = newSubs.filter(x => x.elementId !== id);\r\n\r\n // // remove element from els array\r\n // const newElements = newSelected.elements?.slice(0) || [];\r\n // newSelected.elements = newElements.filter(x => x.id !== id);\r\n\r\n // // remove element from block\r\n // const idx = newSelected.blocks.findIndex(x => x.id === blockId);\r\n // if (idx !== -1) {\r\n // const els = JSON.parse(\r\n // JSON.stringify(newSelected.blocks[idx].elements),\r\n // ) as SeminarElement[];\r\n // newSelected.blocks[idx].elements = els.filter(x => x.id !== id);\r\n // }\r\n\r\n // // update order\r\n // if (newSelected.order?.elements) {\r\n // newSelected.order.elements = newSelected.order.elements.filter(\r\n // x => x.elementId !== id,\r\n // );\r\n // newSelected.initialOrder = JSON.parse(\r\n // JSON.stringify(newSelected.order),\r\n // );\r\n // }\r\n\r\n // // update seminar\r\n // state.selected = newSelected;\r\n // updateArray(state);\r\n\r\n refetchSeminar(state, dispatch);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.updating = false;\r\n },\r\n\r\n async submitEmpty({ state }, el?: SeminarElement) {\r\n // element already skipped/completed\r\n if (!el || elementStatus(el) !== \"active\") return;\r\n\r\n try {\r\n const sub = (await api.post(\r\n emptySubmissionElements.get(el.type) as string,\r\n { elementId: el.id, seminarId: el.seminarId },\r\n )) as Submission;\r\n\r\n if (!state.selected || !sub) return;\r\n const newSeminar = JSON.parse(JSON.stringify(state.selected)) as Seminar;\r\n const oldSubs = newSeminar.submissions || [];\r\n newSeminar.submissions = [...oldSubs, sub];\r\n state.selected = newSeminar;\r\n updateArray(state);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n },\r\n\r\n async skip({ state }, el?: SeminarElement) {\r\n // element already skipped/completed\r\n if (!el || elementStatus(el) !== \"active\") return;\r\n\r\n try {\r\n const sub = (await api.get(`/api/Submissions/SkipElement/${el.id}`)) as\r\n | Submission\r\n | undefined;\r\n\r\n if (!state.selected || !sub) return;\r\n const newSeminar = JSON.parse(JSON.stringify(state.selected)) as Seminar;\r\n const oldSubs = newSeminar.submissions || [];\r\n newSeminar.submissions = [...oldSubs, sub];\r\n state.selected = newSeminar;\r\n updateArray(state);\r\n } catch (error) {\r\n throw new Error(\"Could not skip\");\r\n }\r\n\r\n // update array\r\n },\r\n\r\n addSubmission({ state }, submission: Submission) {\r\n if (!state.selected) return;\r\n const seminar = JSON.parse(JSON.stringify(state.selected));\r\n seminar.submissions = [...(seminar.submissions || []), submission];\r\n state.selected = seminar;\r\n },\r\n\r\n async getFeedbackVideos({ state, dispatch }, id: number) {\r\n state.gettingFeedback = true;\r\n try {\r\n const end = `/api/Submissions/FeedbackForUser/${id}`;\r\n const res = (await api.get(end)) as Submission[];\r\n const map = new Map(state.feedbackVideos.entries());\r\n map.set(id, res);\r\n state.feedbackVideos = new Map(map);\r\n } catch (error) {\r\n console.log(error);\r\n dispatch(\"displaySnackbar\", error, { root: true });\r\n }\r\n state.gettingFeedback = false;\r\n },\r\n\r\n async toggleShared({ state, dispatch }, id: number) {\r\n try {\r\n await api.patch(`/api/Submissions/ToggleShared/${id}`);\r\n const newSelected = JSON.parse(JSON.stringify(state.selected)) as Seminar;\r\n if (\r\n !state.seminars.length ||\r\n !newSelected ||\r\n !newSelected.submissions?.length ||\r\n !newSelected.elements?.length ||\r\n !newSelected.blocks?.length\r\n )\r\n return;\r\n\r\n // find current sub\r\n const sub = newSelected.submissions?.find(x => x.id === id);\r\n if (!sub) return;\r\n\r\n // update selected\r\n newSelected.submissions = [\r\n ...newSelected.submissions.filter(x => x.id !== id),\r\n { ...sub, isShared: !sub.isShared },\r\n ];\r\n\r\n // video got shared/unshared - check if el becomes complete/incomplete\r\n const elIdx = newSelected.elements?.findIndex(\r\n x => x.id === sub.elementId,\r\n );\r\n if (elIdx !== -1) {\r\n const el = newSelected.elements[elIdx];\r\n if (el.type === \"video_presentation\") {\r\n const numShared = newSelected.submissions.filter(\r\n x => x.elementId === el.id && !x.skipped && x.isShared,\r\n ).length;\r\n const reqShared = el.requiredNumShared || 0;\r\n\r\n // update el on its own\r\n newSelected.elements[elIdx].completed = numShared >= reqShared;\r\n\r\n // update el in block\r\n const blockIdx = newSelected.blocks.findIndex(\r\n x => x.id === el.blockId,\r\n );\r\n if (blockIdx !== -1) {\r\n const elInBlockIdx = newSelected.blocks[\r\n blockIdx\r\n ].elements.findIndex(x => x.id === el.id);\r\n if (elInBlockIdx !== -1)\r\n newSelected.blocks[blockIdx].elements[elInBlockIdx].completed =\r\n numShared >= reqShared;\r\n }\r\n }\r\n }\r\n\r\n // update state\r\n state.selected = JSON.parse(JSON.stringify(newSelected));\r\n updateArray(state);\r\n } catch (err) {\r\n dispatch(\"displaySnackbar\", err, { root: true });\r\n }\r\n },\r\n\r\n async rateFeedbackVideo(\r\n { state, rootGetters },\r\n { submissionId, type, seminarId }: any,\r\n ) {\r\n const rating = (await api.post(\"/api/Submissions/Rate\", {\r\n submissionId,\r\n type,\r\n })) as Rating | null;\r\n\r\n const vids = state.feedbackVideos.get(seminarId);\r\n if (!vids) return;\r\n\r\n const vidIndex = vids.findIndex(x => x.id === submissionId);\r\n const video = JSON.parse(JSON.stringify(vids[vidIndex])) as Submission;\r\n if (!video) return;\r\n if (video.type !== \"video_presentation\" && video.type !== \"give_feedback\")\r\n return;\r\n\r\n const userId = rootGetters[\"profile/id\"] as string;\r\n const ratings = video.videoRatings || [];\r\n\r\n if (!rating) {\r\n const rIdx = ratings.findIndex(\r\n x => x.type === type && x.rater === userId,\r\n );\r\n if (rIdx !== -1) ratings.splice(rIdx, 1);\r\n video.videoRatings = ratings;\r\n } else video.videoRatings = [...ratings, rating];\r\n\r\n vids[vidIndex] = video;\r\n const map = new Map(state.feedbackVideos.entries());\r\n map.set(seminarId, vids);\r\n state.feedbackVideos = map;\r\n },\r\n\r\n async rateVideo(\r\n { state, rootGetters, dispatch },\r\n { submissionId, type }: RateVideoAction,\r\n ) {\r\n try {\r\n const rating = (await api.post(\"/api/Submissions/Rate\", {\r\n submissionId,\r\n type,\r\n })) as Rating | null;\r\n\r\n if (!state.selected) return;\r\n const newSelected = JSON.parse(JSON.stringify(state.selected)) as Seminar;\r\n\r\n if (!newSelected.submissions?.length || !state.seminars.length) return;\r\n\r\n const subIdx =\r\n newSelected.submissions?.findIndex(x => x.id === submissionId) || -1;\r\n if (subIdx === -1) return;\r\n\r\n const ratings = ((newSelected.submissions[subIdx] as any).videoRatings ||\r\n []) as Rating[];\r\n const userId = rootGetters[\"profile/id\"] as string;\r\n\r\n if (!rating) {\r\n const rIdx = ratings.findIndex(\r\n x => x.type === type && x.rater === userId,\r\n );\r\n if (rIdx !== -1) ratings.splice(rIdx, 1);\r\n (newSelected.submissions[subIdx] as any).videoRatings = ratings;\r\n } else\r\n (newSelected.submissions[subIdx] as any).videoRatings = [\r\n ...ratings,\r\n rating,\r\n ];\r\n\r\n // update current\r\n state.selected = newSelected;\r\n\r\n // update array\r\n updateArray(state);\r\n } catch (error) {\r\n dispatch(\"displaySnackbar\", error, { root: true });\r\n }\r\n },\r\n\r\n async removeSubmission({ state }, id: number) {\r\n try {\r\n await api.delete(`/api/Submissions/${id}`);\r\n const newSelected = JSON.parse(JSON.stringify(state.selected)) as Seminar;\r\n\r\n const newSubs = newSelected.submissions?.filter(x => x.id !== id) || [];\r\n newSelected.submissions = newSubs;\r\n\r\n // update state\r\n state.selected = JSON.parse(JSON.stringify(newSelected));\r\n updateArray(state);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n\r\n async getSubmissions(\r\n { state, dispatch },\r\n { seminarId, elementId }: GetSubsRequest,\r\n ) {\r\n try {\r\n const end = `/api/Seminar/Submissions/${seminarId}/${elementId}`;\r\n const subs = (await api.get(end)) as Submission[];\r\n\r\n const updated = JSON.parse(JSON.stringify(state.selected)) as Seminar;\r\n if (!updated) return;\r\n const oldSubs = updated.submissions || [];\r\n updated.submissions = [\r\n ...oldSubs.filter(x => x.elementId !== elementId),\r\n ...subs,\r\n ];\r\n\r\n if (updated.elements?.length) {\r\n const idx = updated.elements.findIndex(x => x.id === elementId);\r\n if (idx !== undefined && idx !== -1)\r\n updated.elements[idx].submissions = subs;\r\n }\r\n\r\n // todo check if element is complete\r\n\r\n // update\r\n state.selected = JSON.parse(JSON.stringify(updated));\r\n updateArray(state);\r\n } catch (error) {\r\n console.log(error);\r\n dispatch(\"displaySnackbar\", error, { root: true });\r\n }\r\n },\r\n\r\n async reorder({ state, dispatch }, order: SeminarOrder) {\r\n try {\r\n // get seminar + make copy\r\n const idx = state.seminars.findIndex(x => x.id === order.seminarId);\r\n if (idx === -1) return;\r\n const seminar = JSON.parse(JSON.stringify(state.seminars[idx]));\r\n\r\n // bring blocks in order\r\n const blocks = blocksInOrder(seminar, order);\r\n seminar.blocks = blocks;\r\n seminar.order = JSON.parse(JSON.stringify(order));\r\n seminar.orderChanged = true;\r\n\r\n // update seminar\r\n state.seminars[idx] = seminar;\r\n if (state.selected?.id === order.seminarId) state.selected = seminar;\r\n } catch (error) {\r\n console.log(error);\r\n dispatch(\"displaySnackbar\", error, { root: true });\r\n }\r\n },\r\n\r\n revertOrder({ state }) {\r\n const idx = state.seminars.findIndex(x => x.id === state.selected?.id);\r\n if (idx === -1) return;\r\n\r\n // todo this method for all seminar copies\r\n const seminar = JSON.parse(JSON.stringify(state.seminars[idx]));\r\n seminar.order = JSON.parse(JSON.stringify(seminar.initialOrder));\r\n seminar.orderChanged = false;\r\n\r\n state.seminars[idx] = JSON.parse(JSON.stringify(seminar));\r\n state.selected = JSON.parse(JSON.stringify(seminar));\r\n },\r\n\r\n async updateOrder({ state, dispatch }) {\r\n const order = state.selected?.order;\r\n if (!order)\r\n return dispatch(\r\n \"displaySnackbar\",\r\n \"Order of currently selected seminar is null\",\r\n { root: true },\r\n );\r\n\r\n try {\r\n await api.patch(\"/api/Seminar/Reorder\", { ...order });\r\n\r\n // get seminar + make copy\r\n const idx = state.seminars.findIndex(x => x.id === order.seminarId);\r\n if (idx === -1) return;\r\n const seminar = JSON.parse(JSON.stringify(state.seminars[idx]));\r\n\r\n // bring blocks in order and update order + initial\r\n const blocks = blocksInOrder(seminar, order);\r\n seminar.blocks = blocks;\r\n seminar.order = JSON.parse(JSON.stringify(order));\r\n seminar.initialOrder = JSON.parse(JSON.stringify(order));\r\n seminar.orderChanged = false;\r\n\r\n // update seminar\r\n state.seminars[idx] = seminar;\r\n if (state.selected?.id === order.seminarId) state.selected = seminar;\r\n } catch (error) {\r\n console.log(error);\r\n dispatch(\"displaySnackbar\", error, { root: true });\r\n }\r\n },\r\n\r\n async clearAllSubmissions({ state, dispatch }, id: number) {\r\n try {\r\n await api.delete(`/api/Seminar/Reset/${id}`);\r\n const idx = state.seminars.findIndex(x => x.id === id);\r\n if (idx === -1) return;\r\n\r\n // update array\r\n const newSeminar = JSON.parse(\r\n JSON.stringify(state.seminars[idx]),\r\n ) as Seminar;\r\n newSeminar.allSubmissions = [];\r\n newSeminar.submissions = [];\r\n const newUsers = newSeminar.users?.map(u => ({ ...u, progress: 0 }));\r\n newSeminar.users = newUsers;\r\n state.seminars[idx] = newSeminar;\r\n\r\n // update selected if same\r\n if (state.selected?.id === id) state.selected = newSeminar;\r\n\r\n // message\r\n const m = \"All submissions cleared.\";\r\n dispatch(\"displaySnackbar\", m, { root: true });\r\n } catch (error) {\r\n // todo translate\r\n const m = \"Could not clear all submissions.\";\r\n dispatch(\"displaySnackbar\", m, { root: true });\r\n }\r\n },\r\n\r\n async clearUserSubmissions(\r\n { state, rootGetters, dispatch },\r\n { seminarId, userId }: SemIdUId,\r\n ) {\r\n try {\r\n await api.patch(\"/api/Seminar/ResetOne\", { seminarId, userId });\r\n const idx = state.seminars.findIndex(x => x.id === seminarId);\r\n if (idx === -1) return;\r\n\r\n // copy seminar\r\n const newSeminar = JSON.parse(\r\n JSON.stringify(state.seminars[idx]),\r\n ) as Seminar;\r\n\r\n // remove subs\r\n newSeminar.allSubmissions = newSeminar.allSubmissions?.filter(\r\n x => x.userId !== userId,\r\n );\r\n if (userId === rootGetters[\"profile/id\"]) newSeminar.submissions = [];\r\n\r\n let username = \"<>\";\r\n const userIdx = newSeminar.users?.findIndex(x => x.id === userId) || -1;\r\n if (newSeminar.users && userIdx !== -1) {\r\n username = newSeminar.users[userIdx].username;\r\n newSeminar.users[userIdx].progress = 0;\r\n }\r\n\r\n // update\r\n state.seminars[idx] = newSeminar;\r\n if (state.selected?.id === seminarId) state.selected = newSeminar;\r\n\r\n // message\r\n const m = `Cleared all submissions for ${username}.`;\r\n dispatch(\"displaySnackbar\", m, { root: true });\r\n } catch (error) {\r\n // todo translate\r\n const m = \"Could not clear submissions for this user.\";\r\n dispatch(\"displaySnackbar\", m, { root: true });\r\n }\r\n },\r\n\r\n // Remove one user\r\n async removeUser({ state, dispatch }, { seminarId, userId }: SemIdUId) {\r\n try {\r\n const end = `/api/Seminar/RemoveUser/${seminarId}/${userId}`;\r\n await api.delete(end);\r\n\r\n // get seminar\r\n const idx = state.seminars.findIndex(x => x.id === seminarId);\r\n if (idx === -1) return;\r\n const newSeminar = JSON.parse(\r\n JSON.stringify(state.seminars[idx]),\r\n ) as Seminar;\r\n\r\n // remove user + subs\r\n newSeminar.submissions = newSeminar.submissions?.filter(\r\n x => x.userId !== userId,\r\n );\r\n newSeminar.users = newSeminar.users?.filter(x => x.id !== userId);\r\n\r\n // commit changes\r\n state.seminars[idx] = newSeminar;\r\n if (state.selected?.id === seminarId) state.selected = newSeminar;\r\n } catch (error) {\r\n console.log(error);\r\n const m = \"Could not remove this user\";\r\n dispatch(\"displaySnackbar\", m, { root: true });\r\n }\r\n },\r\n\r\n async removeAllUsers({ state, dispatch }, id: number) {\r\n try {\r\n const end = `/api/Seminar/RemoveUsers/${id}`;\r\n await api.delete(end);\r\n\r\n // get seminar\r\n const idx = state.seminars.findIndex(x => x.id === id);\r\n if (idx === -1) return;\r\n const newSeminar = JSON.parse(JSON.stringify(state.seminars[idx]));\r\n\r\n // remove user + subs\r\n newSeminar.submissions = [];\r\n newSeminar.users = [];\r\n\r\n // commit changes\r\n state.seminars[idx] = newSeminar;\r\n if (state.selected?.id === id) state.selected = newSeminar;\r\n } catch (error) {\r\n console.log(error);\r\n const m = \"Could not remove this user\";\r\n dispatch(\"displaySnackbar\", m, { root: true });\r\n }\r\n },\r\n\r\n refreshGoalElement(\r\n { state, rootGetters, dispatch },\r\n {\r\n element,\r\n makeCall = false,\r\n }: {\r\n element: SeminarElement;\r\n makeCall: boolean;\r\n },\r\n ) {\r\n if (element.type !== \"goal\") return false;\r\n\r\n // local update\r\n // get goal\r\n const goal = (rootGetters[\"goals/getAssignedGoals\"] as any[]).find(\r\n x => x.id === element.goalId,\r\n );\r\n // get that goal's progress\r\n const progress = goal?.Progress || goal?.progress || 0;\r\n\r\n // update if new non-null value\r\n if (progress !== element.progress && progress > 0) {\r\n element.progress = progress;\r\n\r\n // update selected element\r\n const newSelected = JSON.parse(JSON.stringify(state.selected)) as Seminar;\r\n newSelected.elements = JSON.parse(\r\n JSON.stringify(newSelected.elements),\r\n ) as SeminarElement[];\r\n const idx = newSelected.elements.findIndex(x => x.id === element.id);\r\n newSelected.elements[idx] = JSON.parse(JSON.stringify(element));\r\n\r\n // update seminar in array\r\n updateArray(state);\r\n\r\n // return false (no call to api)\r\n return false;\r\n }\r\n\r\n if (!makeCall) return false;\r\n\r\n // api update\r\n dispatch(\"goals/getGoals\", null, { root: true });\r\n // return true (call to api made)\r\n return true;\r\n },\r\n\r\n setAssignedToGoal({ state }, element: SeminarElement) {\r\n if (element.type !== \"goal\") return;\r\n element.isAssignedToUser = true;\r\n\r\n // update element\r\n const newSelected = JSON.parse(JSON.stringify(state.selected)) as Seminar;\r\n newSelected.elements = JSON.parse(\r\n JSON.stringify(newSelected.elements),\r\n ) as SeminarElement[];\r\n const idx = newSelected.elements.findIndex(x => x.id === element.id);\r\n newSelected.elements[idx] = JSON.parse(JSON.stringify(element));\r\n state.selected = newSelected;\r\n\r\n // update array\r\n updateArray(state);\r\n },\r\n};\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { SeminarsState } from \".\";\r\nimport { RootState } from \"../root\";\r\n\r\nimport { blocksInOrder, elementStatus } from \"@/core/utils/seminars\";\r\n\r\nexport const getters: GetterTree = {\r\n gettingAll: state => state.gettingAll,\r\n loading: state => state.loading,\r\n skipping: state => state.skipping,\r\n adding: state => state.adding,\r\n updating: state => state.updating,\r\n retrieved: state => state.retrieved,\r\n seminars: state =>\r\n state.seminars.sort(\r\n (a, b) => +new Date(b.createdAt) - +new Date(a.createdAt),\r\n ),\r\n selected: state => state.selected,\r\n selectedId: state => state.selected?.id || 0,\r\n ownsSeminar: state => state.seminars.some(x => x.isOwner),\r\n isOwner: state => state.selected?.isOwner,\r\n users: state => state.selected?.users || [],\r\n submissions: state => state.selected?.submissions || [],\r\n\r\n currentLogo: state => state.selected?.logo || \"\",\r\n blockIndex: state => state.blockIndex,\r\n elementIndex: state => state.elementIndex,\r\n block: state => state.selected?.blocks[state.blockIndex],\r\n element: state => {\r\n const blocks = blocksInOrder(state.selected, state.selected?.order);\r\n return blocks[state.blockIndex]?.elements[state.elementIndex];\r\n },\r\n selectableUpTo: state => {\r\n const blocks = blocksInOrder(state.selected, state.selected?.order);\r\n if (!blocks.length) return [0, 0];\r\n\r\n const lastBlockIdx = blocks.length - 1;\r\n for (let i = 0; i <= lastBlockIdx; i++)\r\n for (let j = 0; j < blocks[i]?.elements.length || 0; j++) {\r\n const curr = blocks[i]?.elements[j];\r\n if (elementStatus(curr, state.selected) === \"active\") return [i, j];\r\n }\r\n return [lastBlockIdx, (blocks[lastBlockIdx]?.elements.length || 1) - 1];\r\n },\r\n\r\n gettingFeedback: state => state.gettingFeedback,\r\n feedbackVideos: state => state.feedbackVideos.get(state.selected?.id || 0),\r\n\r\n order: state => state.selected?.order,\r\n blocks: state => blocksInOrder(state.selected, state.selected?.order),\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { RootState } from \"../root\";\r\nimport { actions } from \"./actions\";\r\nimport { getters } from \"./getters\";\r\nimport {\r\n Seminar,\r\n SeminarBlock,\r\n SeminarElement,\r\n Submission,\r\n} from \"@/core/models\";\r\n\r\nexport interface SeminarsState {\r\n skipping: boolean;\r\n gettingAll: boolean;\r\n loading: boolean;\r\n adding: boolean;\r\n updating: boolean;\r\n retrieved: boolean;\r\n seminars: Seminar[];\r\n selected: Seminar | undefined;\r\n blockIndex: number;\r\n elementIndex: number;\r\n selectedBlock: SeminarBlock | undefined;\r\n selectedElement: SeminarElement | undefined;\r\n feedbackVideos: Map;\r\n gettingFeedback: boolean;\r\n}\r\n\r\nexport const state: SeminarsState = {\r\n gettingAll: false,\r\n skipping: false,\r\n loading: false,\r\n adding: false,\r\n updating: false,\r\n retrieved: false,\r\n seminars: [],\r\n selected: undefined,\r\n blockIndex: 0,\r\n elementIndex: 0,\r\n selectedBlock: undefined,\r\n selectedElement: undefined,\r\n feedbackVideos: new Map(),\r\n gettingFeedback: false,\r\n};\r\n\r\nexport const seminars: Module = {\r\n namespaced: true,\r\n state,\r\n actions,\r\n getters,\r\n};\r\n","import { Notification } from \"@/core/models\";\r\nimport { GetterTree } from \"vuex\";\r\nimport { NotificationsState } from \".\";\r\nimport { RootState } from \"../root\";\r\n\r\nconst getters: GetterTree = {\r\n getNotifications: state =>\r\n state.notifications.sort(\r\n (a: Notification, b: Notification) => +b.date - +a.date,\r\n ),\r\n retrieved: state => state.retrieved,\r\n lastChecked: state => state.lastChecked,\r\n newNotificationsCount: state =>\r\n state.notifications.filter(x => +x.date - +state.lastChecked > 0).length,\r\n};\r\n\r\nexport default getters;\r\n","import { ActionTree } from \"vuex\";\r\n\r\nimport api from \"@/core/utils/api\";\r\nimport { Notification } from \"@/core/models\";\r\nimport { RootState } from \"../root\";\r\nimport { NotificationsState } from \".\";\r\n\r\nconst actions: ActionTree = {\r\n async loadNotifications({ state }) {\r\n state.retrieved = false;\r\n try {\r\n const res = (await api.get(\"/api/Notifications\")) as any;\r\n state.notifications = res.notifications.map(\r\n (x: any) => new Notification(x),\r\n );\r\n state.lastChecked = new Date(res.lastChecked);\r\n state.retrieved = true;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n\r\n async checkNotifications({ state }) {\r\n console.log(\"CHECK NOTIFICATIONS\");\r\n try {\r\n await api.patch(\"/api/Notifications\");\r\n state.lastChecked = new Date(Date.now());\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { MutationTree } from \"vuex\";\r\nimport { NotificationsState } from \".\";\r\nimport { Notification } from \"@/core/models\";\r\n\r\nconst mutations: MutationTree = {\r\n setLastChecked(state, lastCheckedNotifications: Date) {\r\n state.lastChecked = lastCheckedNotifications;\r\n },\r\n\r\n addNotification(state, notification: Notification) {\r\n console.log(\"addNotification\");\r\n console.log(notification);\r\n state.notifications.push(notification);\r\n },\r\n};\r\n\r\nexport default mutations;\r\n","import { Module } from \"vuex\";\r\n\r\nimport getters from \"./getters\";\r\nimport actions from \"./actions\";\r\nimport { RootState } from \"../root\";\r\nimport mutations from \"./mutations\";\r\nimport { Notification } from \"@/core/models\";\r\n\r\nexport interface NotificationsState {\r\n notifications: Notification[];\r\n retrieved: boolean;\r\n lastChecked: Date;\r\n}\r\n\r\nexport const state: NotificationsState = {\r\n notifications: [],\r\n retrieved: false,\r\n lastChecked: new Date(\"2021-05-01T10:00:00\"),\r\n};\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const notifications: Module = {\r\n namespaced,\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n};\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { SupportState } from \".\";\r\nimport { RootState } from \"../root\";\r\n\r\nconst getters: GetterTree = {\r\n freshchatActive: state => state.freshchatActive,\r\n supportInfo: state => state.supportInfo,\r\n};\r\n\r\nexport default getters;\r\n","import { ActionTree } from \"vuex\";\r\n\r\nimport api from \"@/core/utils/api\";\r\nimport { RootState } from \"../root\";\r\nimport { SupportState } from \".\";\r\nimport { SupportInfo } from \"@/core/models/support-info\";\r\n\r\nconst actions: ActionTree = {\r\n async getFreshchatActive({ state }) {\r\n try {\r\n const end = \"/api/tenants/freshchat\";\r\n state.freshchatActive = (await api.get(end)) as boolean;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n async getSupportInfo({ state }, locale: string) {\r\n try {\r\n const end = \"/api/tenants/support/\" + locale;\r\n state.supportInfo = (await api.get(end)) as SupportInfo;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { Module } from \"vuex\";\r\n\r\nimport getters from \"./getters\";\r\nimport actions from \"./actions\";\r\n// import mutations from \"./mutations\";\r\nimport { RootState } from \"../root\";\r\nimport { SupportInfo } from \"@/core/models/support-info\";\r\n\r\nexport interface SupportState {\r\n freshchatActive: boolean;\r\n supportInfo: SupportInfo;\r\n}\r\n\r\nexport const state: SupportState = {\r\n freshchatActive: false,\r\n supportInfo: { name: \"Support\", email: \"\", phone: \"\", times: \"\" },\r\n};\r\n\r\nconst namespaced = true;\r\nexport const tenants: Module = {\r\n namespaced,\r\n state,\r\n getters,\r\n actions,\r\n // mutations,\r\n};\r\n","import { ActionTree } from \"vuex\";\r\n\r\nimport api from \"@/core/utils/api\";\r\n\r\nimport { RootState } from \"../root\";\r\nimport { ContactState } from \"@/core/store/contact/index\";\r\nimport i18n from \"@/core/plugins/i18n\";\r\n\r\nconst actions: ActionTree = {\r\n // contact message post\r\n async sendMessage({ state, dispatch }, payload) {\r\n const messageTimeout = 10 * 1000;\r\n state.messageLoading = true;\r\n try {\r\n await api.post(\"/api/Contact\", payload);\r\n state.messageSent = true;\r\n setTimeout(() => (state.messageSent = false), messageTimeout);\r\n dispatch(\"displaySnackbar\", i18n.t(\"forms.contact.success\").toString(), {\r\n root: true,\r\n });\r\n } catch (error) {\r\n console.error((error as any).description);\r\n dispatch(\"displaySnackbar\", i18n.t(\"forms.contact.fail\").toString(), {\r\n root: true,\r\n });\r\n state.messageSent = false;\r\n }\r\n state.messageLoading = false;\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { ContactState } from \"@/core/store/contact/index\";\r\nimport { RootState } from \"../root\";\r\n\r\nconst getters: GetterTree = {\r\n messageLoading: state => state.messageLoading,\r\n messageSent: state => state.messageSent,\r\n};\r\n\r\nexport default getters;\r\n","import { MutationTree } from \"vuex\";\r\n\r\nimport { ContactState } from \"@/core/store/contact/index\";\r\n\r\nconst mutations: MutationTree = {\r\n set(state) {\r\n state.messageLoading = false;\r\n state.messageSent = false;\r\n },\r\n};\r\n\r\nexport default mutations;\r\n","import { Module } from \"vuex\";\r\n\r\nimport actions from \"@/core/store/contact/actions\";\r\nimport getters from \"@/core/store/contact/getters\";\r\nimport mutations from \"@/core/store/contact/mutations\";\r\nimport { RootState } from \"../root\";\r\n\r\nexport interface ContactState {\r\n messageLoading: boolean;\r\n messageSent: boolean;\r\n}\r\n\r\nexport const state: ContactState = {\r\n messageLoading: false,\r\n messageSent: false,\r\n};\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const contact: Module = {\r\n namespaced,\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n};\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { RootState } from \"@/core/store/root\";\r\nimport { HowTosState } from \"@/core/store/howtos\";\r\n\r\nconst getters: GetterTree = {\r\n getVideos: state => state.videos.sort((a, b) => +b.CreatedAt - +a.CreatedAt),\r\n loading: state => state.loading,\r\n retrieved: state => state.retrieved,\r\n\r\n addVideoLoading: state => state.addVideoLoading,\r\n editVideoLoading: state => state.editVideoLoading,\r\n editedVideoID: state => state.editedVideoID,\r\n deleteVideoLoading: state => state.deleteVideoLoading,\r\n deletedVideoID: state => state.deletedVideoID,\r\n};\r\n\r\nexport default getters;\r\n","import { ActionTree } from \"vuex\";\r\n\r\nimport api from \"@/core/utils/api\";\r\nimport { RootState } from \"@/core/store/root\";\r\nimport { HowTosState } from \"@/core/store/howtos\";\r\nimport { HowToVideo } from \"@/core/models\";\r\n\r\nconst actions: ActionTree = {\r\n clearHowTos({ state }) {\r\n state.videos = [];\r\n state.retrieved = false;\r\n },\r\n\r\n async getHowTos({ state }) {\r\n state.loading = true;\r\n state.retrieved = false;\r\n try {\r\n const res = (await api.get(\"/api/Showcase/\")) as HowToVideo[];\r\n console.log(\"API response:\", res);\r\n state.videos = res.map(h => HowToVideo.parseHowToVideo(h));\r\n console.log(\"Videos state:\", state.videos);\r\n state.retrieved = true;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.loading = false;\r\n },\r\n\r\n async addVideoFromLink({ state }, data: any) {\r\n state.addVideoLoading = true;\r\n try {\r\n const res = await api.post(\"/api/Showcase/AddVideoFromURI\", data);\r\n const video = HowToVideo.parseHowToVideo(res);\r\n state.videos.push(video);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.addVideoLoading = false;\r\n },\r\n\r\n async addVideoFromFile({ state }, data: FormData) {\r\n state.addVideoLoading = true;\r\n try {\r\n const res = await api.post(\"/api/Showcase/AddVideoFromFile\", data, {\r\n headers: { ContentType: \"multipart/form-data\" },\r\n });\r\n const video = HowToVideo.parseHowToVideo(res);\r\n state.videos.push(video);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.addVideoLoading = false;\r\n },\r\n\r\n async editVideo({ state }, data: any) {\r\n state.editVideoLoading = true;\r\n state.editedVideoID = data.videoId;\r\n try {\r\n await api.put(\"/api/Showcase\", data);\r\n\r\n const idx = state.videos.findIndex(h => h.ID == data.videoId);\r\n if (idx === -1) return;\r\n\r\n state.videos[idx].Title = data.newTitle;\r\n state.videos[idx].Description = data.newDescription;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.editVideoLoading = false;\r\n },\r\n\r\n async deleteVideo({ state }, data: any) {\r\n state.deleteVideoLoading = true;\r\n state.deletedVideoID = data.videoId;\r\n try {\r\n const endpoint = `/api/Showcase/${data.videoId}`;\r\n await api.delete(endpoint);\r\n const idx = state.videos.findIndex(h => h.ID == data.videoId);\r\n if (idx === -1) return;\r\n state.videos.splice(idx, 1);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n state.deleteVideoLoading = false;\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { Module } from \"vuex\";\r\n\r\nimport { RootState } from \"../root\";\r\nimport { HowToVideo } from \"@/core/models\";\r\n\r\n// getters\r\nimport getters from \"./getters\";\r\n\r\n// actions\r\nimport actions from \"./actions\";\r\n\r\n// mutations\r\n//import mutations from \"./mutations\";\r\n\r\nexport interface HowTosState {\r\n videos: HowToVideo[];\r\n loading: boolean;\r\n retrieved: boolean;\r\n\r\n // Helper loadings\r\n addVideoLoading: boolean;\r\n editVideoLoading: boolean;\r\n deleteVideoLoading: boolean;\r\n\r\n // Loading Helpers\r\n editedVideoID: number;\r\n deletedVideoID: number;\r\n}\r\n\r\nexport const state: HowTosState = {\r\n videos: [],\r\n loading: false,\r\n retrieved: false,\r\n\r\n // Loadings\r\n addVideoLoading: false,\r\n editVideoLoading: false,\r\n deleteVideoLoading: false,\r\n\r\n // Loading Helpers\r\n editedVideoID: 0,\r\n deletedVideoID: 0,\r\n};\r\n\r\nexport const howTos: Module = {\r\n state,\r\n namespaced: true,\r\n //mutations: { ...mutations },\r\n getters: { ...getters },\r\n actions: { ...actions },\r\n};\r\n","import Vue from \"vue\";\r\nimport Vuex, { StoreOptions } from \"vuex\";\r\n\r\n// register\r\nVue.use(Vuex);\r\n\r\n// root\r\nimport { state, actions, mutations, getters, RootState } from \"./root\";\r\n\r\n// modules\r\nimport { profile } from \"./profile\";\r\nimport { sessions } from \"./sessions\";\r\nimport { presentations } from \"./presentations\";\r\nimport { groups } from \"./groups\";\r\nimport { news } from \"./news\";\r\nimport { goals } from \"./goals\";\r\nimport { meetings } from \"./meetings\";\r\nimport { company } from \"./company\";\r\nimport { audio } from \"./audio\";\r\nimport { products } from \"./products\";\r\nimport { currentSession } from \"./currentSession\";\r\nimport { managed } from \"./managed\";\r\nimport { dashboard } from \"./dashboard\";\r\nimport { invitations } from \"./invitations\";\r\nimport { seminars } from \"./seminars\";\r\nimport { notifications } from \"./notifications\";\r\nimport { tenants } from \"./tenants\";\r\nimport { contact } from \"./contact\";\r\nimport { howTos } from \"./howTos\";\r\n\r\nconst store: StoreOptions = {\r\n state,\r\n actions,\r\n getters,\r\n mutations,\r\n modules: {\r\n profile,\r\n sessions,\r\n presentations,\r\n groups,\r\n news,\r\n goals,\r\n meetings,\r\n company,\r\n audio,\r\n products,\r\n currentSession,\r\n managed,\r\n dashboard,\r\n invitations,\r\n seminars,\r\n notifications,\r\n tenants,\r\n contact,\r\n howTos,\r\n },\r\n};\r\n\r\nexport default new Vuex.Store(store);\r\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileDropdown.vue?vue&type=style&index=0&id=38653cb7&prod&lang=scss&scoped=true&\"","var map = {\n\t\"./admin\": [\n\t\t\"f595\",\n\t\t\"chunk-91ff4934\"\n\t],\n\t\"./admin/\": [\n\t\t\"f595\",\n\t\t\"chunk-91ff4934\"\n\t],\n\t\"./admin/AdminPanel\": [\n\t\t\"2711\",\n\t\t\"chunk-2ea0e2a4\"\n\t],\n\t\"./admin/AdminPanel.vue\": [\n\t\t\"2711\",\n\t\t\"chunk-2ea0e2a4\"\n\t],\n\t\"./admin/components/CouponItem\": [\n\t\t\"f4f8\",\n\t\t\"chunk-2d22ce96\"\n\t],\n\t\"./admin/components/CouponItem.vue\": [\n\t\t\"f4f8\",\n\t\t\"chunk-2d22ce96\"\n\t],\n\t\"./admin/components/CreateCoupon\": [\n\t\t\"dde4\",\n\t\t\"chunk-68afedc3\"\n\t],\n\t\"./admin/components/CreateCoupon.vue\": [\n\t\t\"dde4\",\n\t\t\"chunk-68afedc3\"\n\t],\n\t\"./admin/components/CreateProduct\": [\n\t\t\"1d06\",\n\t\t\"chunk-186104d2\"\n\t],\n\t\"./admin/components/CreateProduct.vue\": [\n\t\t\"1d06\",\n\t\t\"chunk-186104d2\"\n\t],\n\t\"./admin/components/CreateVideo\": [\n\t\t\"3d13\",\n\t\t\"chunk-4007ecae\"\n\t],\n\t\"./admin/components/CreateVideo.vue\": [\n\t\t\"3d13\",\n\t\t\"chunk-4007ecae\"\n\t],\n\t\"./admin/components/ProductItem\": [\n\t\t\"bd73\",\n\t\t\"chunk-64fd58dc\"\n\t],\n\t\"./admin/components/ProductItem.vue\": [\n\t\t\"bd73\",\n\t\t\"chunk-64fd58dc\"\n\t],\n\t\"./admin/components/UserItem\": [\n\t\t\"d0b8\",\n\t\t\"chunk-0d177668\"\n\t],\n\t\"./admin/components/UserItem.vue\": [\n\t\t\"d0b8\",\n\t\t\"chunk-0d177668\"\n\t],\n\t\"./admin/components/VideoItem\": [\n\t\t\"45e1\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-0c7fbcd5\"\n\t],\n\t\"./admin/components/VideoItem.vue\": [\n\t\t\"45e1\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-0c7fbcd5\"\n\t],\n\t\"./admin/index\": [\n\t\t\"f595\",\n\t\t\"chunk-91ff4934\"\n\t],\n\t\"./admin/index.ts\": [\n\t\t\"f595\",\n\t\t\"chunk-91ff4934\"\n\t],\n\t\"./admin/pages/Companies\": [\n\t\t\"1fd6\",\n\t\t\"chunk-18ad5444\"\n\t],\n\t\"./admin/pages/Companies.vue\": [\n\t\t\"1fd6\",\n\t\t\"chunk-18ad5444\"\n\t],\n\t\"./admin/pages/HowToVideos\": [\n\t\t\"9bac\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-4007ecae\",\n\t\t\"chunk-924d911a\"\n\t],\n\t\"./admin/pages/HowToVideos.vue\": [\n\t\t\"9bac\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-4007ecae\",\n\t\t\"chunk-924d911a\"\n\t],\n\t\"./admin/pages/Slides\": [\n\t\t\"2e2e\",\n\t\t\"chunk-091aab35\"\n\t],\n\t\"./admin/pages/Slides.vue\": [\n\t\t\"2e2e\",\n\t\t\"chunk-091aab35\"\n\t],\n\t\"./admin/pages/StripeCoupons\": [\n\t\t\"5b21\",\n\t\t\"chunk-781d7ee8\"\n\t],\n\t\"./admin/pages/StripeCoupons.vue\": [\n\t\t\"5b21\",\n\t\t\"chunk-781d7ee8\"\n\t],\n\t\"./admin/pages/StripeProducts\": [\n\t\t\"5404\",\n\t\t\"chunk-186104d2\",\n\t\t\"chunk-0a3f2c2f\"\n\t],\n\t\"./admin/pages/StripeProducts.vue\": [\n\t\t\"5404\",\n\t\t\"chunk-186104d2\",\n\t\t\"chunk-0a3f2c2f\"\n\t],\n\t\"./admin/pages/Users\": [\n\t\t\"161f\",\n\t\t\"chunk-3b2cafeb\"\n\t],\n\t\"./admin/pages/Users.vue\": [\n\t\t\"161f\",\n\t\t\"chunk-3b2cafeb\"\n\t],\n\t\"./auth\": [\n\t\t\"b50b\",\n\t\t\"chunk-2ddc38f1\"\n\t],\n\t\"./auth/\": [\n\t\t\"b50b\",\n\t\t\"chunk-2ddc38f1\"\n\t],\n\t\"./auth/AuthPage\": [\n\t\t\"7b34\",\n\t\t\"chunk-cf8ee55e\"\n\t],\n\t\"./auth/AuthPage.vue\": [\n\t\t\"7b34\",\n\t\t\"chunk-cf8ee55e\"\n\t],\n\t\"./auth/components/EmptyQuery\": [\n\t\t\"982f\",\n\t\t\"chunk-2d0e62c9\"\n\t],\n\t\"./auth/components/EmptyQuery.vue\": [\n\t\t\"982f\",\n\t\t\"chunk-2d0e62c9\"\n\t],\n\t\"./auth/components/NewPassword\": [\n\t\t\"bb33\",\n\t\t\"chunk-2d21a396\"\n\t],\n\t\"./auth/components/NewPassword.vue\": [\n\t\t\"bb33\",\n\t\t\"chunk-2d21a396\"\n\t],\n\t\"./auth/index\": [\n\t\t\"b50b\",\n\t\t\"chunk-2ddc38f1\"\n\t],\n\t\"./auth/index.ts\": [\n\t\t\"b50b\",\n\t\t\"chunk-2ddc38f1\"\n\t],\n\t\"./auth/pages/ConfirmDevice\": [\n\t\t\"e8c5\",\n\t\t\"chunk-34cfe5fb\"\n\t],\n\t\"./auth/pages/ConfirmDevice.vue\": [\n\t\t\"e8c5\",\n\t\t\"chunk-34cfe5fb\"\n\t],\n\t\"./auth/pages/ConfirmEmail\": [\n\t\t\"cca1\",\n\t\t\"chunk-2d222146\"\n\t],\n\t\"./auth/pages/ConfirmEmail.vue\": [\n\t\t\"cca1\",\n\t\t\"chunk-2d222146\"\n\t],\n\t\"./auth/pages/ForgotPassword\": [\n\t\t\"bbe2\",\n\t\t\"chunk-2d21a9a3\"\n\t],\n\t\"./auth/pages/ForgotPassword.vue\": [\n\t\t\"bbe2\",\n\t\t\"chunk-2d21a9a3\"\n\t],\n\t\"./auth/pages/InactiveProfile\": [\n\t\t\"8101\",\n\t\t\"chunk-6bc3680e\"\n\t],\n\t\"./auth/pages/InactiveProfile.vue\": [\n\t\t\"8101\",\n\t\t\"chunk-6bc3680e\"\n\t],\n\t\"./auth/pages/Login\": [\n\t\t\"7684\",\n\t\t\"chunk-2d0d7311\"\n\t],\n\t\"./auth/pages/Login.vue\": [\n\t\t\"7684\",\n\t\t\"chunk-2d0d7311\"\n\t],\n\t\"./auth/pages/NewUser\": [\n\t\t\"7dad\",\n\t\t\"chunk-c22b85fa\"\n\t],\n\t\"./auth/pages/NewUser.vue\": [\n\t\t\"7dad\",\n\t\t\"chunk-c22b85fa\"\n\t],\n\t\"./auth/pages/Onboarding\": [\n\t\t\"a854\",\n\t\t\"chunk-36a57274\"\n\t],\n\t\"./auth/pages/Onboarding.vue\": [\n\t\t\"a854\",\n\t\t\"chunk-36a57274\"\n\t],\n\t\"./auth/pages/Register\": [\n\t\t\"033e\",\n\t\t\"chunk-3686c30c\"\n\t],\n\t\"./auth/pages/Register.vue\": [\n\t\t\"033e\",\n\t\t\"chunk-3686c30c\"\n\t],\n\t\"./auth/pages/RegisterDevice\": [\n\t\t\"454e\",\n\t\t\"chunk-2d0c11e8\"\n\t],\n\t\"./auth/pages/RegisterDevice.vue\": [\n\t\t\"454e\",\n\t\t\"chunk-2d0c11e8\"\n\t],\n\t\"./auth/pages/ResetPassword\": [\n\t\t\"f6c0\",\n\t\t\"chunk-2d22d5b3\"\n\t],\n\t\"./auth/pages/ResetPassword.vue\": [\n\t\t\"f6c0\",\n\t\t\"chunk-2d22d5b3\"\n\t],\n\t\"./company\": [\n\t\t\"6d21\",\n\t\t\"chunk-3fe6888f\"\n\t],\n\t\"./company/\": [\n\t\t\"6d21\",\n\t\t\"chunk-3fe6888f\"\n\t],\n\t\"./company/CompanyPage\": [\n\t\t\"427e\",\n\t\t\"chunk-5a393167\"\n\t],\n\t\"./company/CompanyPage.vue\": [\n\t\t\"427e\",\n\t\t\"chunk-5a393167\"\n\t],\n\t\"./company/components/AddEmployees\": [\n\t\t\"b2ee\",\n\t\t\"chunk-35274162\"\n\t],\n\t\"./company/components/AddEmployees.vue\": [\n\t\t\"b2ee\",\n\t\t\"chunk-35274162\"\n\t],\n\t\"./company/components/BillingDetailsForm\": [\n\t\t\"8e93\",\n\t\t\"chunk-92908aa4\",\n\t\t\"chunk-6cc8b85e\"\n\t],\n\t\"./company/components/BillingDetailsForm.vue\": [\n\t\t\"8e93\",\n\t\t\"chunk-92908aa4\",\n\t\t\"chunk-6cc8b85e\"\n\t],\n\t\"./company/components/CreateCompany\": [\n\t\t\"a13d\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-b06618be\"\n\t],\n\t\"./company/components/CreateCompany.vue\": [\n\t\t\"a13d\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-b06618be\"\n\t],\n\t\"./company/components/CreateCompanyForm\": [\n\t\t\"b6ca\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-02db7a18\"\n\t],\n\t\"./company/components/CreateCompanyForm.vue\": [\n\t\t\"b6ca\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-02db7a18\"\n\t],\n\t\"./company/components/EditCompanyName\": [\n\t\t\"d497\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-05f32b27\"\n\t],\n\t\"./company/components/EditCompanyName.vue\": [\n\t\t\"d497\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-05f32b27\"\n\t],\n\t\"./company/components/PricingTier\": [\n\t\t\"cc11\",\n\t\t\"chunk-247d05ab\"\n\t],\n\t\"./company/components/PricingTier.vue\": [\n\t\t\"cc11\",\n\t\t\"chunk-247d05ab\"\n\t],\n\t\"./company/components/PurchaseOverview\": [\n\t\t\"a498\",\n\t\t\"chunk-597ee9f0\"\n\t],\n\t\"./company/components/PurchaseOverview.vue\": [\n\t\t\"a498\",\n\t\t\"chunk-597ee9f0\"\n\t],\n\t\"./company/components/SingleEmployee\": [\n\t\t\"9a6f\",\n\t\t\"chunk-2d0efd2e\"\n\t],\n\t\"./company/components/SingleEmployee.vue\": [\n\t\t\"9a6f\",\n\t\t\"chunk-2d0efd2e\"\n\t],\n\t\"./company/components/Upgrade\": [\n\t\t\"faa1\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-8379e448\"\n\t],\n\t\"./company/components/Upgrade.vue\": [\n\t\t\"faa1\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-8379e448\"\n\t],\n\t\"./company/components/pmTypes\": [\n\t\t\"b2e8\",\n\t\t\"chunk-2d20f579\"\n\t],\n\t\"./company/components/pmTypes.ts\": [\n\t\t\"b2e8\",\n\t\t\"chunk-2d20f579\"\n\t],\n\t\"./company/components/tiers\": [\n\t\t\"fe58\",\n\t\t\"chunk-2d238098\"\n\t],\n\t\"./company/components/tiers.ts\": [\n\t\t\"fe58\",\n\t\t\"chunk-2d238098\"\n\t],\n\t\"./company/index\": [\n\t\t\"6d21\",\n\t\t\"chunk-3fe6888f\"\n\t],\n\t\"./company/index.ts\": [\n\t\t\"6d21\",\n\t\t\"chunk-3fe6888f\"\n\t],\n\t\"./company/pages/CompanyDashboard\": [\n\t\t\"f3f8\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-13043de1\"\n\t],\n\t\"./company/pages/CompanyDashboard.vue\": [\n\t\t\"f3f8\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-13043de1\"\n\t],\n\t\"./company/pages/CompanyHome\": [\n\t\t\"d7ca\",\n\t\t\"chunk-7c709662\"\n\t],\n\t\"./company/pages/CompanyHome.vue\": [\n\t\t\"d7ca\",\n\t\t\"chunk-7c709662\"\n\t],\n\t\"./company/pages/CompanyPurchase\": [\n\t\t\"a349\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-055fca6b\"\n\t],\n\t\"./company/pages/CompanyPurchase.vue\": [\n\t\t\"a349\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-055fca6b\"\n\t],\n\t\"./company/pages/CreateCompany\": [\n\t\t\"36e2\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-ea341076\"\n\t],\n\t\"./company/pages/CreateCompany.vue\": [\n\t\t\"36e2\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-ea341076\"\n\t],\n\t\"./company/pages/PricingPage\": [\n\t\t\"aefec\",\n\t\t\"chunk-6c8c4d76\"\n\t],\n\t\"./company/pages/PricingPage.vue\": [\n\t\t\"aefec\",\n\t\t\"chunk-6c8c4d76\"\n\t],\n\t\"./dashboard\": [\n\t\t\"34ab\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-7f16e0ca\"\n\t],\n\t\"./dashboard/\": [\n\t\t\"34ab\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-7f16e0ca\"\n\t],\n\t\"./dashboard/Dashboard\": [\n\t\t\"5c3a\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-9ff351e8\"\n\t],\n\t\"./dashboard/Dashboard.vue\": [\n\t\t\"5c3a\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-9ff351e8\"\n\t],\n\t\"./dashboard/components\": [\n\t\t\"a86c\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-dfbfa5d4\"\n\t],\n\t\"./dashboard/components/\": [\n\t\t\"a86c\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-dfbfa5d4\"\n\t],\n\t\"./dashboard/components/GoalsCard\": [\n\t\t\"184b\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-21532c36\"\n\t],\n\t\"./dashboard/components/GoalsCard.vue\": [\n\t\t\"184b\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-21532c36\"\n\t],\n\t\"./dashboard/components/GroupsCard\": [\n\t\t\"3663\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-deeac116\"\n\t],\n\t\"./dashboard/components/GroupsCard.vue\": [\n\t\t\"3663\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-deeac116\"\n\t],\n\t\"./dashboard/components/HowToDash\": [\n\t\t\"bf7a\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-2d62230a\"\n\t],\n\t\"./dashboard/components/HowToDash.vue\": [\n\t\t\"bf7a\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-2d62230a\"\n\t],\n\t\"./dashboard/components/NewsCard\": [\n\t\t\"8215\",\n\t\t\"chunk-08c06d15\"\n\t],\n\t\"./dashboard/components/NewsCard.vue\": [\n\t\t\"8215\",\n\t\t\"chunk-08c06d15\"\n\t],\n\t\"./dashboard/components/PresentationsCard\": [\n\t\t\"7fdb\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-57fac3ad\"\n\t],\n\t\"./dashboard/components/PresentationsCard.vue\": [\n\t\t\"7fdb\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-57fac3ad\"\n\t],\n\t\"./dashboard/components/ProgressCard\": [\n\t\t\"6c7e\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-05a9ced2\"\n\t],\n\t\"./dashboard/components/ProgressCard.vue\": [\n\t\t\"6c7e\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-05a9ced2\"\n\t],\n\t\"./dashboard/components/VideosCard\": [\n\t\t\"bc43\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-6742be2b\"\n\t],\n\t\"./dashboard/components/VideosCard.vue\": [\n\t\t\"bc43\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-6742be2b\"\n\t],\n\t\"./dashboard/components/index\": [\n\t\t\"a86c\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-dfbfa5d4\"\n\t],\n\t\"./dashboard/components/index.ts\": [\n\t\t\"a86c\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-dfbfa5d4\"\n\t],\n\t\"./dashboard/components/subcomponents/ExpandSlidesDialog\": [\n\t\t\"5663\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-efb43160\"\n\t],\n\t\"./dashboard/components/subcomponents/ExpandSlidesDialog.vue\": [\n\t\t\"5663\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-efb43160\"\n\t],\n\t\"./dashboard/components/subcomponents/MetaSingle\": [\n\t\t\"8b8f\",\n\t\t\"chunk-213b0f70\"\n\t],\n\t\"./dashboard/components/subcomponents/MetaSingle.vue\": [\n\t\t\"8b8f\",\n\t\t\"chunk-213b0f70\"\n\t],\n\t\"./dashboard/components/subcomponents/SinglePresentation\": [\n\t\t\"cb6b\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-38845a50\"\n\t],\n\t\"./dashboard/components/subcomponents/SinglePresentation.vue\": [\n\t\t\"cb6b\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-38845a50\"\n\t],\n\t\"./dashboard/index\": [\n\t\t\"34ab\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-7f16e0ca\"\n\t],\n\t\"./dashboard/index.ts\": [\n\t\t\"34ab\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-7f16e0ca\"\n\t],\n\t\"./goals\": [\n\t\t\"3200\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-ad7581ca\"\n\t],\n\t\"./goals/\": [\n\t\t\"3200\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-ad7581ca\"\n\t],\n\t\"./goals/Goals\": [\n\t\t\"30c1\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-891f88ae\"\n\t],\n\t\"./goals/Goals.vue\": [\n\t\t\"30c1\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-891f88ae\"\n\t],\n\t\"./goals/components\": [\n\t\t\"5121\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-1c3e1a3a\"\n\t],\n\t\"./goals/components/\": [\n\t\t\"5121\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-1c3e1a3a\"\n\t],\n\t\"./goals/components/AddGoalButton\": [\n\t\t\"8ef3\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-9fad2154\"\n\t],\n\t\"./goals/components/AddGoalButton.vue\": [\n\t\t\"8ef3\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-9fad2154\"\n\t],\n\t\"./goals/components/AssignedGoalItem\": [\n\t\t\"6815\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-f5e74886\"\n\t],\n\t\"./goals/components/AssignedGoalItem.vue\": [\n\t\t\"6815\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-f5e74886\"\n\t],\n\t\"./goals/components/ConditionDisplay\": [\n\t\t\"0b94\",\n\t\t\"chunk-2d0ae9c3\"\n\t],\n\t\"./goals/components/ConditionDisplay.vue\": [\n\t\t\"0b94\",\n\t\t\"chunk-2d0ae9c3\"\n\t],\n\t\"./goals/components/ConditionsSelect\": [\n\t\t\"e7b5\",\n\t\t\"chunk-5c2ea17e\"\n\t],\n\t\"./goals/components/ConditionsSelect.vue\": [\n\t\t\"e7b5\",\n\t\t\"chunk-5c2ea17e\"\n\t],\n\t\"./goals/components/CreatedGoal\": [\n\t\t\"10be\",\n\t\t\"chunk-5471779e\"\n\t],\n\t\"./goals/components/CreatedGoal.vue\": [\n\t\t\"10be\",\n\t\t\"chunk-5471779e\"\n\t],\n\t\"./goals/components/index\": [\n\t\t\"5121\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-1c3e1a3a\"\n\t],\n\t\"./goals/components/index.ts\": [\n\t\t\"5121\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-1c3e1a3a\"\n\t],\n\t\"./goals/index\": [\n\t\t\"3200\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-ad7581ca\"\n\t],\n\t\"./goals/index.ts\": [\n\t\t\"3200\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-ad7581ca\"\n\t],\n\t\"./groups/GroupDetails\": [\n\t\t\"a614\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-4662f460\"\n\t],\n\t\"./groups/GroupDetails.vue\": [\n\t\t\"a614\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-4662f460\"\n\t],\n\t\"./groups/Groups\": [\n\t\t\"aa3c\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-52379dfa\"\n\t],\n\t\"./groups/Groups.vue\": [\n\t\t\"aa3c\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-52379dfa\"\n\t],\n\t\"./groups/components\": [\n\t\t\"b5fc\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-3a585e03\"\n\t],\n\t\"./groups/components/\": [\n\t\t\"b5fc\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-3a585e03\"\n\t],\n\t\"./groups/components/AddGroupCard\": [\n\t\t\"6fd0\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-26a50e1c\"\n\t],\n\t\"./groups/components/AddGroupCard.vue\": [\n\t\t\"6fd0\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-26a50e1c\"\n\t],\n\t\"./groups/components/CompanyGroupItem\": [\n\t\t\"b5c5\",\n\t\t\"chunk-7f7e72f4\"\n\t],\n\t\"./groups/components/CompanyGroupItem.vue\": [\n\t\t\"b5c5\",\n\t\t\"chunk-7f7e72f4\"\n\t],\n\t\"./groups/components/CompanyGroups\": [\n\t\t\"616f\",\n\t\t\"chunk-409ef6be\"\n\t],\n\t\"./groups/components/CompanyGroups.vue\": [\n\t\t\"616f\",\n\t\t\"chunk-409ef6be\"\n\t],\n\t\"./groups/components/GroupInvitations\": [\n\t\t\"97ab\",\n\t\t\"chunk-6f44b09c\"\n\t],\n\t\"./groups/components/GroupInvitations.vue\": [\n\t\t\"97ab\",\n\t\t\"chunk-6f44b09c\"\n\t],\n\t\"./groups/components/GroupItem\": [\n\t\t\"0d88\",\n\t\t\"chunk-48f39aab\"\n\t],\n\t\"./groups/components/GroupItem.vue\": [\n\t\t\"0d88\",\n\t\t\"chunk-48f39aab\"\n\t],\n\t\"./groups/components/GroupName\": [\n\t\t\"c8dd\",\n\t\t\"chunk-2d21806b\"\n\t],\n\t\"./groups/components/GroupName.vue\": [\n\t\t\"c8dd\",\n\t\t\"chunk-2d21806b\"\n\t],\n\t\"./groups/components/InvitedUsers\": [\n\t\t\"38a2\",\n\t\t\"chunk-2d0bae0c\"\n\t],\n\t\"./groups/components/InvitedUsers.vue\": [\n\t\t\"38a2\",\n\t\t\"chunk-2d0bae0c\"\n\t],\n\t\"./groups/components/MyGroups\": [\n\t\t\"a6a9\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-3a585e03\"\n\t],\n\t\"./groups/components/MyGroups.vue\": [\n\t\t\"a6a9\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-3a585e03\"\n\t],\n\t\"./groups/components/PublicGroupItem\": [\n\t\t\"2b23\",\n\t\t\"chunk-68b65227\"\n\t],\n\t\"./groups/components/PublicGroupItem.vue\": [\n\t\t\"2b23\",\n\t\t\"chunk-68b65227\"\n\t],\n\t\"./groups/components/PublicGroups\": [\n\t\t\"533b\",\n\t\t\"chunk-3fadb0c8\"\n\t],\n\t\"./groups/components/PublicGroups.vue\": [\n\t\t\"533b\",\n\t\t\"chunk-3fadb0c8\"\n\t],\n\t\"./groups/components/SingleInvitation\": [\n\t\t\"396a\",\n\t\t\"chunk-2d0bacc7\"\n\t],\n\t\"./groups/components/SingleInvitation.vue\": [\n\t\t\"396a\",\n\t\t\"chunk-2d0bacc7\"\n\t],\n\t\"./groups/components/index\": [\n\t\t\"b5fc\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-3a585e03\"\n\t],\n\t\"./groups/components/index.ts\": [\n\t\t\"b5fc\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-3a585e03\"\n\t],\n\t\"./groups/components/posts/AddPostButton\": [\n\t\t\"d1dd\",\n\t\t\"chunk-47664258\"\n\t],\n\t\"./groups/components/posts/AddPostButton.vue\": [\n\t\t\"d1dd\",\n\t\t\"chunk-47664258\"\n\t],\n\t\"./groups/components/posts/GroupPostItem\": [\n\t\t\"0738\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-1a052c3c\"\n\t],\n\t\"./groups/components/posts/GroupPostItem.vue\": [\n\t\t\"0738\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-1a052c3c\"\n\t],\n\t\"./groups/components/posts/GroupPostMenu\": [\n\t\t\"5e19\",\n\t\t\"chunk-502553b6\"\n\t],\n\t\"./groups/components/posts/GroupPostMenu.vue\": [\n\t\t\"5e19\",\n\t\t\"chunk-502553b6\"\n\t],\n\t\"./groups/components/posts/GroupPostsCard\": [\n\t\t\"a656\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-656d23de\"\n\t],\n\t\"./groups/components/posts/GroupPostsCard.vue\": [\n\t\t\"a656\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-656d23de\"\n\t],\n\t\"./groups/components/users/AddUserCard\": [\n\t\t\"5b04\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-4266a7e4\"\n\t],\n\t\"./groups/components/users/AddUserCard.vue\": [\n\t\t\"5b04\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-4266a7e4\"\n\t],\n\t\"./groups/components/users/GroupUsersCard\": [\n\t\t\"9ba4\",\n\t\t\"chunk-622a072c\"\n\t],\n\t\"./groups/components/users/GroupUsersCard.vue\": [\n\t\t\"9ba4\",\n\t\t\"chunk-622a072c\"\n\t],\n\t\"./groups/components/users/GroupUsersList\": [\n\t\t\"eaef\",\n\t\t\"chunk-2d230333\"\n\t],\n\t\"./groups/components/users/GroupUsersList.vue\": [\n\t\t\"eaef\",\n\t\t\"chunk-2d230333\"\n\t],\n\t\"./groups/components/users/UploadUsersCard\": [\n\t\t\"42ba\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-0a8e09b8\"\n\t],\n\t\"./groups/components/users/UploadUsersCard.vue\": [\n\t\t\"42ba\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-0a8e09b8\"\n\t],\n\t\"./groups/components/videos/AddVideoButton\": [\n\t\t\"237f\",\n\t\t\"chunk-7f0355d1\",\n\t\t\"chunk-6044da8d\"\n\t],\n\t\"./groups/components/videos/AddVideoButton.vue\": [\n\t\t\"237f\",\n\t\t\"chunk-7f0355d1\",\n\t\t\"chunk-6044da8d\"\n\t],\n\t\"./groups/components/videos/GroupVideoItem\": [\n\t\t\"6fb0\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-56c34f6c\"\n\t],\n\t\"./groups/components/videos/GroupVideoItem.vue\": [\n\t\t\"6fb0\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-56c34f6c\"\n\t],\n\t\"./groups/components/videos/GroupVideoMenu\": [\n\t\t\"6fdd\",\n\t\t\"chunk-024b382e\"\n\t],\n\t\"./groups/components/videos/GroupVideoMenu.vue\": [\n\t\t\"6fdd\",\n\t\t\"chunk-024b382e\"\n\t],\n\t\"./groups/components/videos/GroupVideosCard\": [\n\t\t\"9277\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-7f0355d1\",\n\t\t\"chunk-3df9ccf7\"\n\t],\n\t\"./groups/components/videos/GroupVideosCard.vue\": [\n\t\t\"9277\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-7f0355d1\",\n\t\t\"chunk-3df9ccf7\"\n\t],\n\t\"./home\": [\n\t\t\"7148\",\n\t\t\"chunk-69ef97b7\"\n\t],\n\t\"./home/\": [\n\t\t\"7148\",\n\t\t\"chunk-69ef97b7\"\n\t],\n\t\"./home/Home\": [\n\t\t\"b3d7\",\n\t\t\"chunk-cb2cafa4\"\n\t],\n\t\"./home/Home.vue\": [\n\t\t\"b3d7\",\n\t\t\"chunk-cb2cafa4\"\n\t],\n\t\"./home/components/SeminarList\": [\n\t\t\"2c89\",\n\t\t\"chunk-2d0bd628\"\n\t],\n\t\"./home/components/SeminarList.vue\": [\n\t\t\"2c89\",\n\t\t\"chunk-2d0bd628\"\n\t],\n\t\"./home/index\": [\n\t\t\"7148\",\n\t\t\"chunk-69ef97b7\"\n\t],\n\t\"./home/index.ts\": [\n\t\t\"7148\",\n\t\t\"chunk-69ef97b7\"\n\t],\n\t\"./legal\": [\n\t\t\"28db\",\n\t\t\"chunk-03386bea\"\n\t],\n\t\"./legal/\": [\n\t\t\"28db\",\n\t\t\"chunk-03386bea\"\n\t],\n\t\"./legal/Contact\": [\n\t\t\"3c27\",\n\t\t\"chunk-12265e48\"\n\t],\n\t\"./legal/Contact.vue\": [\n\t\t\"3c27\",\n\t\t\"chunk-12265e48\"\n\t],\n\t\"./legal/Imprint\": [\n\t\t\"6e69\",\n\t\t\"chunk-cae591d0\"\n\t],\n\t\"./legal/Imprint.vue\": [\n\t\t\"6e69\",\n\t\t\"chunk-cae591d0\"\n\t],\n\t\"./legal/PrivacyPolicy\": [\n\t\t\"34cb\",\n\t\t\"chunk-2d0f04b8\",\n\t\t\"chunk-2d229b69\",\n\t\t\"chunk-630f4cff\"\n\t],\n\t\"./legal/PrivacyPolicy.vue\": [\n\t\t\"34cb\",\n\t\t\"chunk-2d0f04b8\",\n\t\t\"chunk-2d229b69\",\n\t\t\"chunk-630f4cff\"\n\t],\n\t\"./legal/components/ConditionalBackLink\": [\n\t\t\"59c5\",\n\t\t\"chunk-2d0c9acc\"\n\t],\n\t\"./legal/components/ConditionalBackLink.vue\": [\n\t\t\"59c5\",\n\t\t\"chunk-2d0c9acc\"\n\t],\n\t\"./legal/i18n/Imprint_DE\": [\n\t\t\"ff4e\",\n\t\t\"chunk-2d238467\"\n\t],\n\t\"./legal/i18n/Imprint_DE.vue\": [\n\t\t\"ff4e\",\n\t\t\"chunk-2d238467\"\n\t],\n\t\"./legal/i18n/Imprint_EN\": [\n\t\t\"08a5\",\n\t\t\"chunk-2d0a50f2\"\n\t],\n\t\"./legal/i18n/Imprint_EN.vue\": [\n\t\t\"08a5\",\n\t\t\"chunk-2d0a50f2\"\n\t],\n\t\"./legal/i18n/PrivacyPolicy_DE\": [\n\t\t\"9c80\",\n\t\t\"chunk-2d0f04b8\"\n\t],\n\t\"./legal/i18n/PrivacyPolicy_DE.vue\": [\n\t\t\"9c80\",\n\t\t\"chunk-2d0f04b8\"\n\t],\n\t\"./legal/i18n/PrivacyPolicy_EN\": [\n\t\t\"df2c\",\n\t\t\"chunk-2d229b69\"\n\t],\n\t\"./legal/i18n/PrivacyPolicy_EN.vue\": [\n\t\t\"df2c\",\n\t\t\"chunk-2d229b69\"\n\t],\n\t\"./legal/index\": [\n\t\t\"28db\",\n\t\t\"chunk-03386bea\"\n\t],\n\t\"./legal/index.ts\": [\n\t\t\"28db\",\n\t\t\"chunk-03386bea\"\n\t],\n\t\"./liverecorder\": [\n\t\t\"dff7\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-75a8c51d\"\n\t],\n\t\"./liverecorder/\": [\n\t\t\"dff7\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-75a8c51d\"\n\t],\n\t\"./liverecorder/LiveRecorder\": [\n\t\t\"46b0\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-5bd2230e\"\n\t],\n\t\"./liverecorder/LiveRecorder.vue\": [\n\t\t\"46b0\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-5bd2230e\"\n\t],\n\t\"./liverecorder/components\": [\n\t\t\"6558\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-2cecc0ab\"\n\t],\n\t\"./liverecorder/components/\": [\n\t\t\"6558\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-2cecc0ab\"\n\t],\n\t\"./liverecorder/components/PresentationSelect\": [\n\t\t\"4a64\",\n\t\t\"chunk-2d0cb721\"\n\t],\n\t\"./liverecorder/components/PresentationSelect.vue\": [\n\t\t\"4a64\",\n\t\t\"chunk-2d0cb721\"\n\t],\n\t\"./liverecorder/components/RecordList\": [\n\t\t\"0109\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-e8278d78\"\n\t],\n\t\"./liverecorder/components/RecordList.vue\": [\n\t\t\"0109\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-e8278d78\"\n\t],\n\t\"./liverecorder/components/RecordingDialog\": [\n\t\t\"6333\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-3f0ba718\"\n\t],\n\t\"./liverecorder/components/RecordingDialog.vue\": [\n\t\t\"6333\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-3f0ba718\"\n\t],\n\t\"./liverecorder/components/RecordingItem\": [\n\t\t\"d490\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-1ded471a\"\n\t],\n\t\"./liverecorder/components/RecordingItem.vue\": [\n\t\t\"d490\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-1ded471a\"\n\t],\n\t\"./liverecorder/components/index\": [\n\t\t\"6558\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-2cecc0ab\"\n\t],\n\t\"./liverecorder/components/index.ts\": [\n\t\t\"6558\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-2cecc0ab\"\n\t],\n\t\"./liverecorder/index\": [\n\t\t\"dff7\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-75a8c51d\"\n\t],\n\t\"./liverecorder/index.ts\": [\n\t\t\"dff7\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-75a8c51d\"\n\t],\n\t\"./maintenance\": [\n\t\t\"f380\",\n\t\t\"chunk-43389a06\"\n\t],\n\t\"./maintenance/\": [\n\t\t\"f380\",\n\t\t\"chunk-43389a06\"\n\t],\n\t\"./maintenance/Maintenance\": [\n\t\t\"49d0\",\n\t\t\"chunk-2d0c2687\"\n\t],\n\t\"./maintenance/Maintenance.vue\": [\n\t\t\"49d0\",\n\t\t\"chunk-2d0c2687\"\n\t],\n\t\"./maintenance/index\": [\n\t\t\"f380\",\n\t\t\"chunk-43389a06\"\n\t],\n\t\"./maintenance/index.ts\": [\n\t\t\"f380\",\n\t\t\"chunk-43389a06\"\n\t],\n\t\"./meetings\": [\n\t\t\"9aad\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-0a731774\"\n\t],\n\t\"./meetings/\": [\n\t\t\"9aad\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-0a731774\"\n\t],\n\t\"./meetings/Meetings\": [\n\t\t\"459b\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-5b970cbc\"\n\t],\n\t\"./meetings/Meetings.vue\": [\n\t\t\"459b\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-5b970cbc\"\n\t],\n\t\"./meetings/components\": [\n\t\t\"6edf\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-5e5e95bb\"\n\t],\n\t\"./meetings/components/\": [\n\t\t\"6edf\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-5e5e95bb\"\n\t],\n\t\"./meetings/components/AddMeetingButton\": [\n\t\t\"ac23\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-610011c3\"\n\t],\n\t\"./meetings/components/AddMeetingButton.vue\": [\n\t\t\"ac23\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-610011c3\"\n\t],\n\t\"./meetings/components/MeetingMenu\": [\n\t\t\"e6b6\",\n\t\t\"chunk-2d22613b\"\n\t],\n\t\"./meetings/components/MeetingMenu.vue\": [\n\t\t\"e6b6\",\n\t\t\"chunk-2d22613b\"\n\t],\n\t\"./meetings/components/index\": [\n\t\t\"6edf\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-5e5e95bb\"\n\t],\n\t\"./meetings/components/index.ts\": [\n\t\t\"6edf\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-5e5e95bb\"\n\t],\n\t\"./meetings/index\": [\n\t\t\"9aad\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-0a731774\"\n\t],\n\t\"./meetings/index.ts\": [\n\t\t\"9aad\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-0a731774\"\n\t],\n\t\"./news/ArticleDetails\": [\n\t\t\"0b6c\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-a167ac3a\"\n\t],\n\t\"./news/ArticleDetails.vue\": [\n\t\t\"0b6c\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-a167ac3a\"\n\t],\n\t\"./news/News\": [\n\t\t\"5884\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-d867dcce\",\n\t\t\"chunk-50b8aafa\"\n\t],\n\t\"./news/News.vue\": [\n\t\t\"5884\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-d867dcce\",\n\t\t\"chunk-50b8aafa\"\n\t],\n\t\"./news/components/AddArticleButton\": [\n\t\t\"5221\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-d867dcce\"\n\t],\n\t\"./news/components/AddArticleButton.vue\": [\n\t\t\"5221\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-d867dcce\"\n\t],\n\t\"./news/components/ArticleActions\": [\n\t\t\"749c\",\n\t\t\"chunk-8b3d3f4a\"\n\t],\n\t\"./news/components/ArticleActions.vue\": [\n\t\t\"749c\",\n\t\t\"chunk-8b3d3f4a\"\n\t],\n\t\"./news/components/ArticleItem\": [\n\t\t\"4cd1\",\n\t\t\"chunk-2d0cc432\"\n\t],\n\t\"./news/components/ArticleItem.vue\": [\n\t\t\"4cd1\",\n\t\t\"chunk-2d0cc432\"\n\t],\n\t\"./recorder\": [\n\t\t\"26fa\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-20e84e14\"\n\t],\n\t\"./recorder/\": [\n\t\t\"26fa\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-20e84e14\"\n\t],\n\t\"./recorder/Recorder\": [\n\t\t\"193f\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-aa3b3128\"\n\t],\n\t\"./recorder/Recorder.vue\": [\n\t\t\"193f\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-aa3b3128\"\n\t],\n\t\"./recorder/components\": [\n\t\t\"7dfd\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-220c6c45\"\n\t],\n\t\"./recorder/components/\": [\n\t\t\"7dfd\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-220c6c45\"\n\t],\n\t\"./recorder/components/AudioRecorder\": [\n\t\t\"8bef\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-4e4a65da\"\n\t],\n\t\"./recorder/components/AudioRecorder.vue\": [\n\t\t\"8bef\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-4e4a65da\"\n\t],\n\t\"./recorder/components/DeviceSelect\": [\n\t\t\"aadf\",\n\t\t\"chunk-f482f0b2\"\n\t],\n\t\"./recorder/components/DeviceSelect.vue\": [\n\t\t\"aadf\",\n\t\t\"chunk-f482f0b2\"\n\t],\n\t\"./recorder/components/LangSwitcher\": [\n\t\t\"2803\",\n\t\t\"chunk-2d0b33bf\"\n\t],\n\t\"./recorder/components/LangSwitcher.vue\": [\n\t\t\"2803\",\n\t\t\"chunk-2d0b33bf\"\n\t],\n\t\"./recorder/components/PresentationSelect\": [\n\t\t\"385f\",\n\t\t\"chunk-2d0ba8ec\"\n\t],\n\t\"./recorder/components/PresentationSelect.vue\": [\n\t\t\"385f\",\n\t\t\"chunk-2d0ba8ec\"\n\t],\n\t\"./recorder/components/RecordList\": [\n\t\t\"b103\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-4dc75630\"\n\t],\n\t\"./recorder/components/RecordList.vue\": [\n\t\t\"b103\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-4dc75630\"\n\t],\n\t\"./recorder/components/RecordingDialog\": [\n\t\t\"e240\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-389a668c\"\n\t],\n\t\"./recorder/components/RecordingDialog.vue\": [\n\t\t\"e240\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-389a668c\"\n\t],\n\t\"./recorder/components/RecordingItem\": [\n\t\t\"ed8b\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-26ad9d44\"\n\t],\n\t\"./recorder/components/RecordingItem.vue\": [\n\t\t\"ed8b\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-26ad9d44\"\n\t],\n\t\"./recorder/components/index\": [\n\t\t\"7dfd\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-220c6c45\"\n\t],\n\t\"./recorder/components/index.ts\": [\n\t\t\"7dfd\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-220c6c45\"\n\t],\n\t\"./recorder/components/utils\": [\n\t\t\"03ec\"\n\t],\n\t\"./recorder/components/utils.ts\": [\n\t\t\"03ec\"\n\t],\n\t\"./recorder/components/volume-tester\": [\n\t\t\"19cd\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-409b70b9\",\n\t\t\"chunk-456ac820\"\n\t],\n\t\"./recorder/components/volume-tester/\": [\n\t\t\"19cd\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-409b70b9\",\n\t\t\"chunk-456ac820\"\n\t],\n\t\"./recorder/components/volume-tester/Gauge\": [\n\t\t\"75f8\",\n\t\t\"chunk-4b4171b6\"\n\t],\n\t\"./recorder/components/volume-tester/Gauge.vue\": [\n\t\t\"75f8\",\n\t\t\"chunk-4b4171b6\"\n\t],\n\t\"./recorder/components/volume-tester/VolumeCircle\": [\n\t\t\"0de4\",\n\t\t\"chunk-b8b3a7f8\"\n\t],\n\t\"./recorder/components/volume-tester/VolumeCircle.vue\": [\n\t\t\"0de4\",\n\t\t\"chunk-b8b3a7f8\"\n\t],\n\t\"./recorder/components/volume-tester/VolumeTester\": [\n\t\t\"b415\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-409b70b9\",\n\t\t\"chunk-2d216256\"\n\t],\n\t\"./recorder/components/volume-tester/VolumeTester.vue\": [\n\t\t\"b415\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-409b70b9\",\n\t\t\"chunk-2d216256\"\n\t],\n\t\"./recorder/components/volume-tester/index\": [\n\t\t\"19cd\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-409b70b9\",\n\t\t\"chunk-456ac820\"\n\t],\n\t\"./recorder/components/volume-tester/index.ts\": [\n\t\t\"19cd\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-409b70b9\",\n\t\t\"chunk-456ac820\"\n\t],\n\t\"./recorder/index\": [\n\t\t\"26fa\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-20e84e14\"\n\t],\n\t\"./recorder/index.ts\": [\n\t\t\"26fa\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-20e84e14\"\n\t],\n\t\"./recorder/lib/backup_recorder\": [\n\t\t\"e32f\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-6c1c781d\"\n\t],\n\t\"./recorder/lib/backup_recorder.ts\": [\n\t\t\"e32f\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-6c1c781d\"\n\t],\n\t\"./recorder/lib/devices\": [\n\t\t\"c0e8\",\n\t\t\"chunk-2d216256\"\n\t],\n\t\"./recorder/lib/devices.ts\": [\n\t\t\"c0e8\",\n\t\t\"chunk-2d216256\"\n\t],\n\t\"./recorder/lib/encoder\": [\n\t\t\"3dc7\",\n\t\t\"chunk-0dfe6dab\"\n\t],\n\t\"./recorder/lib/encoder.ts\": [\n\t\t\"3dc7\",\n\t\t\"chunk-0dfe6dab\"\n\t],\n\t\"./recorder/lib/recorder\": [\n\t\t\"6610\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-a65348e4\"\n\t],\n\t\"./recorder/lib/recorder.ts\": [\n\t\t\"6610\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-a65348e4\"\n\t],\n\t\"./recorder/lib/tester\": [\n\t\t\"3868\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-2d0ba8dd\"\n\t],\n\t\"./recorder/lib/tester.ts\": [\n\t\t\"3868\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-2d0ba8dd\"\n\t],\n\t\"./seminars\": [\n\t\t\"676b\",\n\t\t\"chunk-04cdec4a\"\n\t],\n\t\"./seminars/\": [\n\t\t\"676b\",\n\t\t\"chunk-04cdec4a\"\n\t],\n\t\"./seminars/Seminars\": [\n\t\t\"998d\",\n\t\t\"chunk-2d0e6742\"\n\t],\n\t\"./seminars/Seminars.vue\": [\n\t\t\"998d\",\n\t\t\"chunk-2d0e6742\"\n\t],\n\t\"./seminars/components/Block\": [\n\t\t\"c556\",\n\t\t\"chunk-9cd6770a\"\n\t],\n\t\"./seminars/components/Block.vue\": [\n\t\t\"c556\",\n\t\t\"chunk-9cd6770a\"\n\t],\n\t\"./seminars/components/Categorize\": [\n\t\t\"a660\",\n\t\t\"chunk-73c8449e\"\n\t],\n\t\"./seminars/components/Categorize.vue\": [\n\t\t\"a660\",\n\t\t\"chunk-73c8449e\"\n\t],\n\t\"./seminars/components/CategorizeSubmission\": [\n\t\t\"d91d\",\n\t\t\"chunk-bd4b2036\"\n\t],\n\t\"./seminars/components/CategorizeSubmission.vue\": [\n\t\t\"d91d\",\n\t\t\"chunk-bd4b2036\"\n\t],\n\t\"./seminars/components/Content\": [\n\t\t\"13a7\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-15f568f7\",\n\t\t\"chunk-73c8449e\",\n\t\t\"chunk-6e5c1473\"\n\t],\n\t\"./seminars/components/Content.vue\": [\n\t\t\"13a7\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-15f568f7\",\n\t\t\"chunk-73c8449e\",\n\t\t\"chunk-6e5c1473\"\n\t],\n\t\"./seminars/components/ElementControls\": [\n\t\t\"260f\",\n\t\t\"chunk-2d0b2c70\"\n\t],\n\t\"./seminars/components/ElementControls.vue\": [\n\t\t\"260f\",\n\t\t\"chunk-2d0b2c70\"\n\t],\n\t\"./seminars/components/GapText\": [\n\t\t\"ca54\",\n\t\t\"chunk-083463ba\"\n\t],\n\t\"./seminars/components/GapText.vue\": [\n\t\t\"ca54\",\n\t\t\"chunk-083463ba\"\n\t],\n\t\"./seminars/components/GapTextSubmission\": [\n\t\t\"5929\",\n\t\t\"chunk-07c9b67d\"\n\t],\n\t\"./seminars/components/GapTextSubmission.vue\": [\n\t\t\"5929\",\n\t\t\"chunk-07c9b67d\"\n\t],\n\t\"./seminars/components/GiveFeedback\": [\n\t\t\"8f35\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-15f568f7\",\n\t\t\"chunk-1b84cc7f\"\n\t],\n\t\"./seminars/components/GiveFeedback.vue\": [\n\t\t\"8f35\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-15f568f7\",\n\t\t\"chunk-1b84cc7f\"\n\t],\n\t\"./seminars/components/GoalElement\": [\n\t\t\"1325\",\n\t\t\"chunk-2f38cc30\"\n\t],\n\t\"./seminars/components/GoalElement.vue\": [\n\t\t\"1325\",\n\t\t\"chunk-2f38cc30\"\n\t],\n\t\"./seminars/components/Participants\": [\n\t\t\"bba9\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-15f568f7\",\n\t\t\"chunk-0cd3a036\",\n\t\t\"chunk-0d0dc92a\"\n\t],\n\t\"./seminars/components/Participants.vue\": [\n\t\t\"bba9\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-15f568f7\",\n\t\t\"chunk-0cd3a036\",\n\t\t\"chunk-0d0dc92a\"\n\t],\n\t\"./seminars/components/RecordVideo\": [\n\t\t\"17a2\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-15f568f7\",\n\t\t\"chunk-649d9a3a\"\n\t],\n\t\"./seminars/components/RecordVideo.vue\": [\n\t\t\"17a2\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-15f568f7\",\n\t\t\"chunk-649d9a3a\"\n\t],\n\t\"./seminars/components/RenderSeminarUsers\": [\n\t\t\"bf92\",\n\t\t\"chunk-10d05547\"\n\t],\n\t\"./seminars/components/RenderSeminarUsers.vue\": [\n\t\t\"bf92\",\n\t\t\"chunk-10d05547\"\n\t],\n\t\"./seminars/components/Rephrase\": [\n\t\t\"0662\",\n\t\t\"chunk-9e0660b0\"\n\t],\n\t\"./seminars/components/Rephrase.vue\": [\n\t\t\"0662\",\n\t\t\"chunk-9e0660b0\"\n\t],\n\t\"./seminars/components/RephraseSubmission\": [\n\t\t\"49b0\",\n\t\t\"chunk-74829180\"\n\t],\n\t\"./seminars/components/RephraseSubmission.vue\": [\n\t\t\"49b0\",\n\t\t\"chunk-74829180\"\n\t],\n\t\"./seminars/components/SeminarList\": [\n\t\t\"34b6\",\n\t\t\"chunk-7176d6fb\"\n\t],\n\t\"./seminars/components/SeminarList.vue\": [\n\t\t\"34b6\",\n\t\t\"chunk-7176d6fb\"\n\t],\n\t\"./seminars/components/SeminarScores\": [\n\t\t\"e1e8\",\n\t\t\"chunk-f18b7976\"\n\t],\n\t\"./seminars/components/SeminarScores.vue\": [\n\t\t\"e1e8\",\n\t\t\"chunk-f18b7976\"\n\t],\n\t\"./seminars/components/Sidebar\": [\n\t\t\"6d96\",\n\t\t\"chunk-5a3b1f3a\"\n\t],\n\t\"./seminars/components/Sidebar.vue\": [\n\t\t\"6d96\",\n\t\t\"chunk-5a3b1f3a\"\n\t],\n\t\"./seminars/components/SubmissionFooter\": [\n\t\t\"7aff\",\n\t\t\"chunk-2d0e1a40\"\n\t],\n\t\"./seminars/components/SubmissionFooter.vue\": [\n\t\t\"7aff\",\n\t\t\"chunk-2d0e1a40\"\n\t],\n\t\"./seminars/components/VRTraining\": [\n\t\t\"e49c\",\n\t\t\"chunk-7485c819\"\n\t],\n\t\"./seminars/components/VRTraining.vue\": [\n\t\t\"e49c\",\n\t\t\"chunk-7485c819\"\n\t],\n\t\"./seminars/components/VideoMenu\": [\n\t\t\"0060\",\n\t\t\"chunk-2d0a2db0\"\n\t],\n\t\"./seminars/components/VideoMenu.vue\": [\n\t\t\"0060\",\n\t\t\"chunk-2d0a2db0\"\n\t],\n\t\"./seminars/components/VideoRatings\": [\n\t\t\"ee64\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-53c626be\"\n\t],\n\t\"./seminars/components/VideoRatings.vue\": [\n\t\t\"ee64\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-53c626be\"\n\t],\n\t\"./seminars/components/VideoSubmission\": [\n\t\t\"90a7\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-15f568f7\"\n\t],\n\t\"./seminars/components/VideoSubmission.vue\": [\n\t\t\"90a7\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-15f568f7\"\n\t],\n\t\"./seminars/components/WatchFeedback\": [\n\t\t\"421b\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-15f568f7\",\n\t\t\"chunk-48bfba55\"\n\t],\n\t\"./seminars/components/WatchFeedback.vue\": [\n\t\t\"421b\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-15f568f7\",\n\t\t\"chunk-48bfba55\"\n\t],\n\t\"./seminars/components/WatchVideo\": [\n\t\t\"2649\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-2d0b2cbf\"\n\t],\n\t\"./seminars/components/WatchVideo.vue\": [\n\t\t\"2649\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-2d0b2cbf\"\n\t],\n\t\"./seminars/components/admin/Block\": [\n\t\t\"df2d\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-914bfe74\"\n\t],\n\t\"./seminars/components/admin/Block.vue\": [\n\t\t\"df2d\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-914bfe74\"\n\t],\n\t\"./seminars/components/admin/BlockDialog\": [\n\t\t\"d4bf\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-211f1963\"\n\t],\n\t\"./seminars/components/admin/BlockDialog.vue\": [\n\t\t\"d4bf\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-211f1963\"\n\t],\n\t\"./seminars/components/admin/CreateSeminar\": [\n\t\t\"3c2f\",\n\t\t\"chunk-2d0c49fa\"\n\t],\n\t\"./seminars/components/admin/CreateSeminar.vue\": [\n\t\t\"3c2f\",\n\t\t\"chunk-2d0c49fa\"\n\t],\n\t\"./seminars/components/admin/Element\": [\n\t\t\"7965\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-127dac8a\"\n\t],\n\t\"./seminars/components/admin/Element.vue\": [\n\t\t\"7965\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-127dac8a\"\n\t],\n\t\"./seminars/components/admin/ElementDialog\": [\n\t\t\"6a82\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-1c875b14\"\n\t],\n\t\"./seminars/components/admin/ElementDialog.vue\": [\n\t\t\"6a82\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-1c875b14\"\n\t],\n\t\"./seminars/index\": [\n\t\t\"676b\",\n\t\t\"chunk-04cdec4a\"\n\t],\n\t\"./seminars/index.ts\": [\n\t\t\"676b\",\n\t\t\"chunk-04cdec4a\"\n\t],\n\t\"./seminars/pages/Admin\": [\n\t\t\"2a59\",\n\t\t\"chunk-7176d6fb\",\n\t\t\"chunk-5c27c878\"\n\t],\n\t\"./seminars/pages/Admin.vue\": [\n\t\t\"2a59\",\n\t\t\"chunk-7176d6fb\",\n\t\t\"chunk-5c27c878\"\n\t],\n\t\"./seminars/pages/Dashboard\": [\n\t\t\"b73c\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-15f568f7\",\n\t\t\"chunk-f18b7976\",\n\t\t\"chunk-2be3681a\"\n\t],\n\t\"./seminars/pages/Dashboard.vue\": [\n\t\t\"b73c\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-15f568f7\",\n\t\t\"chunk-f18b7976\",\n\t\t\"chunk-2be3681a\"\n\t],\n\t\"./seminars/pages/Details\": [\n\t\t\"9143\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-15f568f7\",\n\t\t\"chunk-73c8449e\",\n\t\t\"chunk-5bc57d07\"\n\t],\n\t\"./seminars/pages/Details.vue\": [\n\t\t\"9143\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-15f568f7\",\n\t\t\"chunk-73c8449e\",\n\t\t\"chunk-5bc57d07\"\n\t],\n\t\"./seminars/pages/Edit\": [\n\t\t\"eeab\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-30d46443\"\n\t],\n\t\"./seminars/pages/Edit.vue\": [\n\t\t\"eeab\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-30d46443\"\n\t],\n\t\"./seminars/pages/Home\": [\n\t\t\"a81e\",\n\t\t\"chunk-7176d6fb\",\n\t\t\"chunk-4c893fbf\"\n\t],\n\t\"./seminars/pages/Home.vue\": [\n\t\t\"a81e\",\n\t\t\"chunk-7176d6fb\",\n\t\t\"chunk-4c893fbf\"\n\t],\n\t\"./seminars/pages/SubmissionDetails\": [\n\t\t\"5e20\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-15f568f7\",\n\t\t\"chunk-2d0d3a04\"\n\t],\n\t\"./seminars/pages/SubmissionDetails.vue\": [\n\t\t\"5e20\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-15f568f7\",\n\t\t\"chunk-2d0d3a04\"\n\t],\n\t\"./seminars/pages/Users\": [\n\t\t\"f0db\",\n\t\t\"chunk-2d22bf7e\"\n\t],\n\t\"./seminars/pages/Users.vue\": [\n\t\t\"f0db\",\n\t\t\"chunk-2d22bf7e\"\n\t],\n\t\"./seminars/pages/Videos\": [\n\t\t\"9ff4\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-15f568f7\",\n\t\t\"chunk-18881112\"\n\t],\n\t\"./seminars/pages/Videos.vue\": [\n\t\t\"9ff4\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-15f568f7\",\n\t\t\"chunk-18881112\"\n\t],\n\t\"./sessions/ManagedSessions\": [\n\t\t\"aed2\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-080f2a98\"\n\t],\n\t\"./sessions/ManagedSessions.vue\": [\n\t\t\"aed2\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-080f2a98\"\n\t],\n\t\"./sessions/Sessions\": [\n\t\t\"b1b0\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-20da1afc\"\n\t],\n\t\"./sessions/Sessions.vue\": [\n\t\t\"b1b0\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-20da1afc\"\n\t],\n\t\"./sessions/SubmittedSessions\": [\n\t\t\"664d\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-2031bd8e\"\n\t],\n\t\"./sessions/SubmittedSessions.vue\": [\n\t\t\"664d\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-2031bd8e\"\n\t],\n\t\"./sessions/components/EditSessionDialog\": [\n\t\t\"9752\",\n\t\t\"chunk-3a2dcbd4\",\n\t\t\"chunk-bf5ef170\"\n\t],\n\t\"./sessions/components/EditSessionDialog.vue\": [\n\t\t\"9752\",\n\t\t\"chunk-3a2dcbd4\",\n\t\t\"chunk-bf5ef170\"\n\t],\n\t\"./sessions/components/EditSharedWith\": [\n\t\t\"936b\",\n\t\t\"chunk-3a2dcbd4\",\n\t\t\"chunk-f120ec20\"\n\t],\n\t\"./sessions/components/EditSharedWith.vue\": [\n\t\t\"936b\",\n\t\t\"chunk-3a2dcbd4\",\n\t\t\"chunk-f120ec20\"\n\t],\n\t\"./sessions/components/ManagedToggle\": [\n\t\t\"ec42\",\n\t\t\"chunk-f2240006\"\n\t],\n\t\"./sessions/components/ManagedToggle.vue\": [\n\t\t\"ec42\",\n\t\t\"chunk-f2240006\"\n\t],\n\t\"./sessions/components/ProgressHeader\": [\n\t\t\"f257\",\n\t\t\"chunk-2242eef6\"\n\t],\n\t\"./sessions/components/ProgressHeader.vue\": [\n\t\t\"f257\",\n\t\t\"chunk-2242eef6\"\n\t],\n\t\"./sessions/components/SessionHeader\": [\n\t\t\"32e6\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-4921691f\"\n\t],\n\t\"./sessions/components/SessionHeader.vue\": [\n\t\t\"32e6\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-4921691f\"\n\t],\n\t\"./sessions/components/SessionLimitControl\": [\n\t\t\"4038\",\n\t\t\"chunk-2d0bfed7\"\n\t],\n\t\"./sessions/components/SessionLimitControl.vue\": [\n\t\t\"4038\",\n\t\t\"chunk-2d0bfed7\"\n\t],\n\t\"./sessions/components/SessionSelectItem\": [\n\t\t\"2438\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-3a2dcbd4\",\n\t\t\"chunk-21160be2\"\n\t],\n\t\"./sessions/components/SessionSelectItem.vue\": [\n\t\t\"2438\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-3a2dcbd4\",\n\t\t\"chunk-21160be2\"\n\t],\n\t\"./sessions/components/SessionsSelect\": [\n\t\t\"f9bf\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-1931257e\"\n\t],\n\t\"./sessions/components/SessionsSelect.vue\": [\n\t\t\"f9bf\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-1931257e\"\n\t],\n\t\"./sessions/components/SessionsToggle\": [\n\t\t\"1521\",\n\t\t\"chunk-5e406758\"\n\t],\n\t\"./sessions/components/SessionsToggle.vue\": [\n\t\t\"1521\",\n\t\t\"chunk-5e406758\"\n\t],\n\t\"./sessions/components/SharedWithItem\": [\n\t\t\"9fec\",\n\t\t\"chunk-3e275b38\"\n\t],\n\t\"./sessions/components/SharedWithItem.vue\": [\n\t\t\"9fec\",\n\t\t\"chunk-3e275b38\"\n\t],\n\t\"./sessions/components/SharedWithUserItem\": [\n\t\t\"bf5d\",\n\t\t\"chunk-6f81dfc0\"\n\t],\n\t\"./sessions/components/SharedWithUserItem.vue\": [\n\t\t\"bf5d\",\n\t\t\"chunk-6f81dfc0\"\n\t],\n\t\"./sessions/components/SubmittedSessionItem\": [\n\t\t\"4376\",\n\t\t\"chunk-7a687420\"\n\t],\n\t\"./sessions/components/SubmittedSessionItem.vue\": [\n\t\t\"4376\",\n\t\t\"chunk-7a687420\"\n\t],\n\t\"./settings\": [\n\t\t\"2c92\",\n\t\t\"chunk-0cd3a036\",\n\t\t\"chunk-3defcf1a\",\n\t\t\"chunk-232b2e74\",\n\t\t\"chunk-09d3bd92\",\n\t\t\"chunk-2d0bd640\"\n\t],\n\t\"./settings/\": [\n\t\t\"2c92\",\n\t\t\"chunk-0cd3a036\",\n\t\t\"chunk-3defcf1a\",\n\t\t\"chunk-232b2e74\",\n\t\t\"chunk-09d3bd92\",\n\t\t\"chunk-2d0bd640\"\n\t],\n\t\"./settings/Settings\": [\n\t\t\"ee09\",\n\t\t\"chunk-0cd3a036\",\n\t\t\"chunk-3defcf1a\",\n\t\t\"chunk-232b2e74\",\n\t\t\"chunk-09d3bd92\"\n\t],\n\t\"./settings/Settings.vue\": [\n\t\t\"ee09\",\n\t\t\"chunk-0cd3a036\",\n\t\t\"chunk-3defcf1a\",\n\t\t\"chunk-232b2e74\",\n\t\t\"chunk-09d3bd92\"\n\t],\n\t\"./settings/components/ActiveSubscription\": [\n\t\t\"aec1\",\n\t\t\"chunk-3defcf1a\",\n\t\t\"chunk-2d21445b\"\n\t],\n\t\"./settings/components/ActiveSubscription.vue\": [\n\t\t\"aec1\",\n\t\t\"chunk-3defcf1a\",\n\t\t\"chunk-2d21445b\"\n\t],\n\t\"./settings/components/BaselineSessionUpload\": [\n\t\t\"2e7c\",\n\t\t\"chunk-2d0bddb5\"\n\t],\n\t\"./settings/components/BaselineSessionUpload.vue\": [\n\t\t\"2e7c\",\n\t\t\"chunk-2d0bddb5\"\n\t],\n\t\"./settings/components/BaselineSessions\": [\n\t\t\"b8dd\",\n\t\t\"chunk-0cd3a036\",\n\t\t\"chunk-c9c8e140\"\n\t],\n\t\"./settings/components/BaselineSessions.vue\": [\n\t\t\"b8dd\",\n\t\t\"chunk-0cd3a036\",\n\t\t\"chunk-c9c8e140\"\n\t],\n\t\"./settings/components/DarkModeSwitch\": [\n\t\t\"99d5\",\n\t\t\"chunk-dfd2cbfe\"\n\t],\n\t\"./settings/components/DarkModeSwitch.vue\": [\n\t\t\"99d5\",\n\t\t\"chunk-dfd2cbfe\"\n\t],\n\t\"./settings/components/LatestInvoice\": [\n\t\t\"5d6d\",\n\t\t\"chunk-232b2e74\"\n\t],\n\t\"./settings/components/LatestInvoice.vue\": [\n\t\t\"5d6d\",\n\t\t\"chunk-232b2e74\"\n\t],\n\t\"./settings/components/PfpController\": [\n\t\t\"4780\",\n\t\t\"chunk-035ef681\"\n\t],\n\t\"./settings/components/PfpController.vue\": [\n\t\t\"4780\",\n\t\t\"chunk-035ef681\"\n\t],\n\t\"./settings/index\": [\n\t\t\"2c92\",\n\t\t\"chunk-0cd3a036\",\n\t\t\"chunk-3defcf1a\",\n\t\t\"chunk-232b2e74\",\n\t\t\"chunk-09d3bd92\",\n\t\t\"chunk-2d0bd640\"\n\t],\n\t\"./settings/index.ts\": [\n\t\t\"2c92\",\n\t\t\"chunk-0cd3a036\",\n\t\t\"chunk-3defcf1a\",\n\t\t\"chunk-232b2e74\",\n\t\t\"chunk-09d3bd92\",\n\t\t\"chunk-2d0bd640\"\n\t],\n\t\"./subscription\": [\n\t\t\"53d8\",\n\t\t\"chunk-b49c6bb0\"\n\t],\n\t\"./subscription/\": [\n\t\t\"53d8\",\n\t\t\"chunk-b49c6bb0\"\n\t],\n\t\"./subscription/Subscription\": [\n\t\t\"5f7f\",\n\t\t\"chunk-c659955a\"\n\t],\n\t\"./subscription/Subscription.vue\": [\n\t\t\"5f7f\",\n\t\t\"chunk-c659955a\"\n\t],\n\t\"./subscription/components/PricingTier\": [\n\t\t\"4189\",\n\t\t\"chunk-715ea8c1\"\n\t],\n\t\"./subscription/components/PricingTier.vue\": [\n\t\t\"4189\",\n\t\t\"chunk-715ea8c1\"\n\t],\n\t\"./subscription/components/PurchaseOverview\": [\n\t\t\"5013\",\n\t\t\"chunk-1172fd10\",\n\t\t\"chunk-2d21eec9\"\n\t],\n\t\"./subscription/components/PurchaseOverview.vue\": [\n\t\t\"5013\",\n\t\t\"chunk-1172fd10\",\n\t\t\"chunk-2d21eec9\"\n\t],\n\t\"./subscription/components/StripePaymentElementForm\": [\n\t\t\"4627\",\n\t\t\"chunk-92908aa4\",\n\t\t\"chunk-9d1a26fa\"\n\t],\n\t\"./subscription/components/StripePaymentElementForm.vue\": [\n\t\t\"4627\",\n\t\t\"chunk-92908aa4\",\n\t\t\"chunk-9d1a26fa\"\n\t],\n\t\"./subscription/components/pmTypes\": [\n\t\t\"c345\",\n\t\t\"chunk-2d2167a7\"\n\t],\n\t\"./subscription/components/pmTypes.ts\": [\n\t\t\"c345\",\n\t\t\"chunk-2d2167a7\"\n\t],\n\t\"./subscription/components/tiers\": [\n\t\t\"bf84\",\n\t\t\"chunk-2d21b336\"\n\t],\n\t\"./subscription/components/tiers.ts\": [\n\t\t\"bf84\",\n\t\t\"chunk-2d21b336\"\n\t],\n\t\"./subscription/index\": [\n\t\t\"53d8\",\n\t\t\"chunk-b49c6bb0\"\n\t],\n\t\"./subscription/index.ts\": [\n\t\t\"53d8\",\n\t\t\"chunk-b49c6bb0\"\n\t],\n\t\"./subscription/pages/SubscriptionCheckout\": [\n\t\t\"5143\",\n\t\t\"chunk-2d0c7711\"\n\t],\n\t\"./subscription/pages/SubscriptionCheckout.vue\": [\n\t\t\"5143\",\n\t\t\"chunk-2d0c7711\"\n\t],\n\t\"./subscription/pages/SubscriptionPricing\": [\n\t\t\"4a62\",\n\t\t\"chunk-715ea8c1\",\n\t\t\"chunk-8e300562\"\n\t],\n\t\"./subscription/pages/SubscriptionPricing.vue\": [\n\t\t\"4a62\",\n\t\t\"chunk-715ea8c1\",\n\t\t\"chunk-8e300562\"\n\t],\n\t\"./subscription/pages/SubscriptionPurchase\": [\n\t\t\"baa3\",\n\t\t\"chunk-92908aa4\",\n\t\t\"chunk-9d1a26fa\",\n\t\t\"chunk-1172fd10\",\n\t\t\"chunk-66ef67ba\"\n\t],\n\t\"./subscription/pages/SubscriptionPurchase.vue\": [\n\t\t\"baa3\",\n\t\t\"chunk-92908aa4\",\n\t\t\"chunk-9d1a26fa\",\n\t\t\"chunk-1172fd10\",\n\t\t\"chunk-66ef67ba\"\n\t],\n\t\"./vrrecorder\": [\n\t\t\"aefe\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-99b0fa2e\"\n\t],\n\t\"./vrrecorder/\": [\n\t\t\"aefe\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-99b0fa2e\"\n\t],\n\t\"./vrrecorder/VrRecorder\": [\n\t\t\"25d6\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-2e61a05b\"\n\t],\n\t\"./vrrecorder/VrRecorder.vue\": [\n\t\t\"25d6\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-2e61a05b\"\n\t],\n\t\"./vrrecorder/components\": [\n\t\t\"34ce\",\n\t\t\"chunk-7e74c094\"\n\t],\n\t\"./vrrecorder/components/\": [\n\t\t\"34ce\",\n\t\t\"chunk-7e74c094\"\n\t],\n\t\"./vrrecorder/components/PresentationSelect\": [\n\t\t\"00c9\",\n\t\t\"chunk-2d0a332c\"\n\t],\n\t\"./vrrecorder/components/PresentationSelect.vue\": [\n\t\t\"00c9\",\n\t\t\"chunk-2d0a332c\"\n\t],\n\t\"./vrrecorder/components/index\": [\n\t\t\"34ce\",\n\t\t\"chunk-7e74c094\"\n\t],\n\t\"./vrrecorder/components/index.ts\": [\n\t\t\"34ce\",\n\t\t\"chunk-7e74c094\"\n\t],\n\t\"./vrrecorder/index\": [\n\t\t\"aefe\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-99b0fa2e\"\n\t],\n\t\"./vrrecorder/index.ts\": [\n\t\t\"aefe\",\n\t\t\"chunk-02ea73e0\",\n\t\t\"chunk-f832fd00\",\n\t\t\"chunk-79cd1d8d\",\n\t\t\"chunk-71951b55\",\n\t\t\"chunk-99b0fa2e\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = \"9dac\";\nmodule.exports = webpackAsyncContext;","import axios, { AxiosError, AxiosRequestConfig } from \"axios\";\r\n\r\nimport store from \"@/core/store\";\r\nimport router from \"@/core/router\";\r\nimport i18n from \"@/core/plugins/i18n\";\r\nimport Storage from \"@/core/utils/LocalStorage\";\r\n\r\nimport { apiBaseUrl } from \"@/settings\";\r\n\r\nconst api = axios.create({\r\n baseURL: apiBaseUrl,\r\n headers: { accept: \"application/json\" },\r\n});\r\n\r\napi.interceptors.request.use(config => {\r\n config.headers[\"preferred-lang\"] = i18n.locale;\r\n const token = Storage.getAccessToken() || \"\";\r\n config.headers.Authorization = `Bearer ${token}`;\r\n return config;\r\n});\r\n\r\nlet refreshingRequest: any = null;\r\nlet requestsToRetry: AxiosRequestConfig[] = [];\r\nconst handleUnuth = async (err: AxiosError) => {\r\n // token expired\r\n if (err.response?.headers[\"token-expired\"] === \"true\")\r\n try {\r\n // already outgoing request to refresh\r\n if (refreshingRequest) {\r\n requestsToRetry.push(err.config);\r\n return handleError(err);\r\n }\r\n\r\n // make refresh request\r\n refreshingRequest = api.post(\r\n \"/api/Account/RefreshJwt\",\r\n {\r\n token: Storage.getAccessToken() || \"\",\r\n refreshToken: Storage.getRefreshToken() || \"\",\r\n },\r\n { skipRefresh: true } as AxiosRequestConfig,\r\n );\r\n\r\n // await refresh, get tokens, set tokens\r\n const { accessToken, refreshToken } = await refreshingRequest;\r\n refreshingRequest = null;\r\n Storage.setAccessToken(accessToken);\r\n Storage.setRefreshToken(refreshToken);\r\n err.config.headers[\"Authorization\"] = `Bearer ${accessToken}`;\r\n\r\n // retry other requests that might have attempted to refresh\r\n try {\r\n Promise.all([requestsToRetry.map(x => api(x))]);\r\n } catch {\r\n // have to be manually attempted again\r\n console.log(\"Could not refresh all previous requests\");\r\n } finally {\r\n requestsToRetry = [];\r\n }\r\n\r\n // retry first request\r\n try {\r\n return await api(err.config);\r\n } catch (error) {\r\n return handleError(error as any);\r\n }\r\n } catch (error) {\r\n if (router.currentRoute.path != \"/auth/login\")\r\n router.replace(\"/auth/login\");\r\n store.dispatch(\"profile/logoutUser\");\r\n return Promise.reject();\r\n }\r\n\r\n // other error\r\n // logout, then to login page\r\n if (router.currentRoute.path != \"/auth/login\") router.replace(\"/auth/login\");\r\n store.dispatch(\"profile/logoutUser\");\r\n return handleError(err);\r\n};\r\n\r\n// default handling of error\r\nconst handleError = (err: AxiosError) => {\r\n const data = err.response?.data;\r\n // temp. solution for translated backend errors\r\n console.log(data);\r\n\r\n let msg = i18n.t(\"global.err\").toString();\r\n\r\n if (data.description == \"Incorrect password\")\r\n // DEPRECATED: Use i18n api_errors with response msg templates instead, e.g. see: PrezpVR.Web/ClientApp/src/core/store/profile/actions.ts#46\r\n msg = i18n.t(\"loginSection.wrongPasswordError\").toString();\r\n else if (data.code === \"EMAIL_NOT_VERIFIED\")\r\n msg = i18n.t(\"loginSection.unconfirmedEmail\").toString();\r\n else if (err.response?.status === 401)\r\n msg = i18n.t(\"loginSection.unauthorizedError\").toString();\r\n\r\n // Show 401 snackbar only if it's not the first visit\r\n if (err.response?.status === 401) {\r\n const token = Storage.getAccessToken() || \"\";\r\n if (token || token === \"\")\r\n store.commit(\"displaySnackbar\", msg, { root: true });\r\n // Silently log unauthorized errors if the token has never been set (=> first visit)\r\n console.warn(msg);\r\n } else store.commit(\"displaySnackbar\", msg, { root: true });\r\n\r\n if (typeof data === typeof Array) return Promise.reject(data[0]);\r\n return Promise.reject(data);\r\n};\r\n\r\n// default interceptors\r\napi.interceptors.response.use(\r\n res => {\r\n console.log(`${res.config.url} (${res.status})`, res.data);\r\n return Promise.resolve(res.data);\r\n },\r\n async (err: AxiosError) => {\r\n if (!err.response) return Promise.reject();\r\n\r\n const unauth = err.response.status === 401;\r\n const tokenExpired = err.response?.headers[\"token-expired\"] === \"true\";\r\n const shouldRefresh = !(err.config as any).skipRefresh;\r\n if ((unauth || tokenExpired) && shouldRefresh)\r\n return await handleUnuth(err);\r\n return handleError(err);\r\n },\r\n);\r\n\r\nexport default api;\r\n","module.exports = __webpack_public_path__ + \"assets/img/prezp_logo_alternate.e7713622.png\";","import { VApp } from 'vuetify/lib/components/VApp';\nimport { VMain } from 'vuetify/lib/components/VMain';\nimport { VSnackbar } from 'vuetify/lib/components/VSnackbar';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(VApp,{style:(_vm.VRMode && 'background-color: transparent;')},[(_vm.showLayout && _vm.loaded)?_c('AppBar',{attrs:{\"is-mobile\":_vm.isMobile},on:{\"open-nav\":_vm.toggleNav}}):_vm._e(),(_vm.showLayout && _vm.loaded && !_vm.hideNav)?_c('Navigation',{attrs:{\"is-uploading-prop\":_vm.isUploading,\"is-mobile\":_vm.isMobile,\"show-layout\":_vm.showLayout,\"is-open\":_vm.navOpened},on:{\"update:isUploadingProp\":function($event){_vm.isUploading=$event},\"update:is-uploading-prop\":function($event){_vm.isUploading=$event},\"update:isOpen\":function($event){_vm.navOpened=$event},\"update:is-open\":function($event){_vm.navOpened=$event},\"close-nav\":_vm.toggleNav}}):_vm._e(),(_vm.dataLoading || (!_vm.isAuthenticated && _vm.appLoading))?_c('div',{staticClass:\"loading-window\"},[_c('img',{staticClass:\"loading-image\",attrs:{\"src\":require(\"@/assets/prezp_logo.png\")}}),_c('span',{staticClass:\"display-1 font-weight-bold\"},[_vm._v(\"Loading\")])]):_vm._e(),_c(VMain,{style:(_vm.VRMode ? 'background-color: transparent;' : { backgroundColor: _vm.backgroundColor })},[_c('router-view')],1),(\n (!_vm.dataLoading && !_vm.appLoading && !_vm.freshchatActive) || _vm.showSupportFAB()\n )?_c('div',[_c('SupportFAB')],1):_vm._e(),_c(VSnackbar,{style:(_vm.snackbarStyle),attrs:{\"value\":_vm.showSnackbar,\"timeout\":-1,\"bottom\":\"\",\"right\":\"\",\"app\":\"\"}},[_c('span',[_vm._v(_vm._s(_vm.snackbarText))])]),(!_vm.VRMode)?_c('TourProgress',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showLayout && _vm.loaded && _vm.showTutorial),expression:\"showLayout && loaded && showTutorial\"}]}):_vm._e(),(_vm.showLayout && _vm.loaded && !_vm.hideFooter)?_c('Footer'):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* eslint-disable */\r\nexport const checkIsMobile = (): boolean => {\r\n let check = false;\r\n (function(a) {\r\n if (\r\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(\r\n a,\r\n ) ||\r\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\r\n a.substr(0, 4),\r\n )\r\n )\r\n check = true;\r\n })(navigator.userAgent || navigator.vendor || (window as any).opera);\r\n return check;\r\n};\r\n","import { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.VRMode)?_c(VAppBar,{staticClass:\"app-bar\",staticStyle:{\"z-index\":\"100\"},attrs:{\"app\":\"\",\"flat\":\"\",\"color\":\"other\",\"height\":\"60\"}},[(_vm.isMobile)?_c(VBtn,{attrs:{\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('open-nav')}}},[_c(VIcon,[_vm._v(\"mdi-menu\")])],1):_vm._e(),_c(VSpacer),_c('div',{staticClass:\"d-flex align-center w-full\"},[_c('QuotaBar',{attrs:{\"analysis-fast\":_vm.analysisFast,\"analysis-relaxed\":_vm.analysisRelaxed,\"ai-feedback-fast\":_vm.aiFeedbackFast,\"ai-feedback-relaxed\":_vm.aiFeedbackRelaxed,\"live-transcription-fast\":_vm.liveTranscriptionFast,\"live-transcription-relaxed\":_vm.liveTranscriptionRelaxed}}),_c(VSpacer),_c('UpgradeButton',{attrs:{\"analysis-fast\":_vm.analysisFast,\"ai-feedback-fast\":_vm.aiFeedbackFast,\"live-transcription-fast\":_vm.liveTranscriptionFast}}),(!_vm.isChrome)?_c('BrowserWarning'):_vm._e(),(!_vm.isChrome)?_c('div',{staticClass:\"mx-2\"}):_vm._e(),(_vm.isLocal || _vm.isDev)?_c('SeminarSelect'):_vm._e(),(_vm.isLocal || _vm.isDev)?_c('div',{staticClass:\"mx-2\"}):_vm._e(),(_vm.hasPrivileges || _vm.isLocal || _vm.isDev)?_c(VBtn,{attrs:{\"icon\":\"\",\"large\":\"\"},on:{\"click\":function($event){return _vm.switchVRMode()}}},[_c(VIcon,[_vm._v(\"mdi-virtual-reality\")])],1):_vm._e(),(_vm.hasPrivileges || _vm.isLocal || _vm.isDev)?_c('div',{staticClass:\"mx-3\"}):_vm._e(),_c('Notifications'),_c('div',{staticClass:\"mx-2\"}),_c('LanguageSelect'),_c('div',{staticClass:\"mx-2\"}),_c('ProfileDropdown')],1),(false)?_c('div',{staticClass:\"banner\",style:({ background: _vm.theme.prezpRed })},[_c('span',{staticClass:\"mr-4\"},[_vm._v(_vm._s(_vm.$t(\"appBar.notConfirmedEmail\")))]),(!_vm.confirmEmailSent)?_c(VBtn,{attrs:{\"text\":\"\",\"dark\":\"\"},on:{\"click\":_vm.sendEmail}},[(_vm.sending)?_c('span',[_vm._v(_vm._s(_vm.$t(\"appBar.sending\")))]):_c('span',[_vm._v(_vm._s(_vm.$t(\"appBar.sendEmail\")))])]):_c(VBtn,{attrs:{\"text\":\"\",\"dark\":\"\"},on:{\"click\":function () {}}},[_c('span',[_vm._v(_vm._s(_vm.$t(\"appBar.emailSent\")))])])],1):_vm._e(),_c(VProgressLinear,{attrs:{\"bottom\":\"\",\"absolute\":\"\",\"indeterminate\":\"\",\"active\":_vm.appLoading,\"color\":\"lightgray\"}})],1):(_vm.hasPrivileges || _vm.isDev)?_c('div',{staticClass:\"vr-leave-btn\"},[_c(VBtn,{staticStyle:{\"background-color\":\"#e4e7e9\"},attrs:{\"icon\":\"\",\"large\":\"\"},on:{\"click\":function($event){return _vm.switchVRMode()}}},[_c(VIcon,{staticClass:\"black--text\"},[_vm._v(\"mdi-menu-open\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.shouldShow)?_c(VDialog,{attrs:{\"max-width\":\"400px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c(VBtn,_vm._g({attrs:{\"color\":\"prezpRed\",\"elevation\":\"0\"}},on),[_c('div',{staticClass:\"other--text\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"browser_warnings.unsuppBrowser\"))+\" \")]),_c(VIcon,{staticClass:\"other--text\",attrs:{\"right\":\"\"}},[_vm._v(\"mdi-alert\")])],1)]}}],null,false,1460669195),model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c(VCard,[_c(VCardTitle,[_vm._v(\" \"+_vm._s(_vm.$t(\"browser_warnings.unsuppBrowserTitle\"))+\" \")]),_c(VCardText,[_vm._v(\" \"+_vm._s(_vm.$t(\"browser_warnings.unsuppBrowserText\"))+\" \")]),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"elevation\":\"0\",\"color\":\"primary\"},on:{\"click\":function($event){_vm.dialog = false}}},[_c('span',[_vm._v(_vm._s(_vm.$t(\"browser_warnings.ok\")))])])],1)],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Getter } from \"vuex-class\";\r\nimport { Component } from \"vue-property-decorator\";\r\n\r\nconst key = \"prezp_hide_browser_warning\";\r\n\r\n@Component\r\nexport default class BrowserWarning extends Vue {\r\n @Getter(\"profile/id\") userId!: string;\r\n\r\n dialog = false;\r\n shouldShow = false;\r\n dontShow() {\r\n const arr = window.localStorage.getItem(key);\r\n const newArr = !arr ? [] : [...(JSON.parse(arr) as string[])];\r\n newArr.push(this.userId);\r\n window.localStorage.setItem(key, JSON.stringify(newArr));\r\n this.dialog = false;\r\n }\r\n created() {\r\n const arr = window.localStorage.getItem(key);\r\n if (!arr) {\r\n this.shouldShow = true;\r\n return;\r\n }\r\n\r\n const uids = JSON.parse(arr) as string[];\r\n this.shouldShow = !uids.includes(this.userId);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrowserWarning.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrowserWarning.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BrowserWarning.vue?vue&type=template&id=76cbe672&scoped=true&\"\nimport script from \"./BrowserWarning.vue?vue&type=script&lang=ts&\"\nexport * from \"./BrowserWarning.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BrowserWarning.vue?vue&type=style&index=0&id=76cbe672&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"76cbe672\",\n null\n \n)\n\nexport default component.exports","import { VAvatar } from 'vuetify/lib/components/VAvatar';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex align-center justify-center\"},[(!_vm.isMobile)?_c(VAvatar,{attrs:{\"tile\":\"\",\"size\":\"30\"}},[_c('img',{attrs:{\"src\":require(\"@/assets/brand_logo_small.svg\"),\"alt\":\"PREZP\"}})]):_vm._e(),_c('div',{staticClass:\"d-flex flex-column ml-2\"},[_c('span',{staticClass:\"subtitle-2\",staticStyle:{\"font-weight\":\"600\"}},[_vm._v(_vm._s(_vm.name || \"...\"))]),_c('span',{staticClass:\"subtitle-2\",staticStyle:{\"font-weight\":\"400\"}},[_vm._v(_vm._s(_vm.email || \"...\"))])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Component, Prop } from \"vue-property-decorator\";\r\nimport { Getter } from \"vuex-class\";\r\n\r\n@Component\r\nexport default class CurrentUser extends Vue {\r\n @Prop({ default: () => false }) isMobile!: boolean;\r\n @Getter(\"profile/getUserEmail\") email!: string;\r\n @Getter(\"profile/getUserName\") name!: string;\r\n\r\n get firstLetter(): string {\r\n return this.name.charAt(0);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CurrentUser.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CurrentUser.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CurrentUser.vue?vue&type=template&id=733b0f9e&\"\nimport script from \"./CurrentUser.vue?vue&type=script&lang=ts&\"\nexport * from \"./CurrentUser.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VBadge } from 'vuetify/lib/components/VBadge';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(VMenu,{attrs:{\"offset-y\":\"\",\"transition\":\"slide-y-transition\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c(VBtn,_vm._g({attrs:{\"icon\":\"\",\"large\":\"\"}},on),[_c(VIcon,[_vm._v(\"mdi-bell\")]),(_vm.newNotificationsCount > 0)?_c(VBadge,{attrs:{\"content\":_vm.newNotificationsCount}}):_vm._e()],1)]}}]),model:{value:(_vm.shown),callback:function ($$v) {_vm.shown=$$v},expression:\"shown\"}},[_c(VCard,{attrs:{\"elevation\":\"0\",\"width\":\"500px\"}},[_c(VList,{staticClass:\"pa-0 overflow-y-auto\",staticStyle:{\"max-height\":\"435px\"}},[_vm._l((_vm.notifications),function(notification){return _c(VListItem,{key:notification.submissionId,staticClass:\"py-2 align-center\",attrs:{\"link\":\"\",\"to\":'/seminars/submission/' + notification.submissionId}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(_vm._s(_vm.getIcon(notification.type)))])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\" \"+_vm._s(_vm.getNotificationTitle(notification.type))+\" \")]),_c(VListItemSubtitle,[_vm._v(\" by \"+_vm._s(notification.user.username)+\" \")]),_c(VListItemSubtitle,{staticClass:\"primary--text\"},[_vm._v(\" \"+_vm._s(_vm.getNotificationsTimeSpan(notification.date))+\" \")])],1),(_vm.isNew(notification))?_c(VListItemIcon,[_c(VBadge,{attrs:{\"inline\":\"\"}})],1):_vm._e()],1)}),_c(VDivider)],2),_c(VListItem,[_c(VSpacer),_c(VBtn,{staticClass:\"mr-4\",attrs:{\"text\":\"\"},on:{\"click\":_vm.loadNotifications}},[_vm._v(\" \"+_vm._s(_vm.$t(\"toolbarMenu.refresh\"))+\" \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Getter, Action } from \"vuex-class\";\r\nimport { Component, Watch } from \"vue-property-decorator\";\r\nimport { Notification, NotificationType } from \"@/core/models\";\r\n\r\n@Component\r\nexport default class Notifications extends Vue {\r\n @Getter(\"profile/isAuthenticated\") isAuth!: boolean;\r\n @Getter(\"notifications/getNotifications\") notifications!: Notification[];\r\n @Getter(\"notifications/retrieved\") retrieved!: boolean;\r\n @Getter(\"notifications/newNotificationsCount\") newNotificationsCount!: number;\r\n @Getter(\"notifications/lastChecked\") lastChecked!: Date;\r\n @Action(\"notifications/loadNotifications\") loadNotifications!: () => void;\r\n @Action(\"notifications/checkNotifications\") checkNotifications!: () => void;\r\n\r\n shown = false;\r\n @Watch(\"shown\")\r\n menuChanged() {\r\n if (!this.shown) this.checkNotifications();\r\n }\r\n\r\n isNew(notification: Notification): boolean {\r\n return this.lastChecked.getTime() < notification.date.getTime();\r\n }\r\n\r\n leave(el: any, done: Function) {\r\n console.log(el);\r\n console.log(\"leave\");\r\n this.checkNotifications();\r\n done();\r\n }\r\n\r\n getIcon(type: NotificationType): string {\r\n switch (type) {\r\n case NotificationType.FeedbackReceived:\r\n return \"mdi-video-account\";\r\n case NotificationType.RateVideo:\r\n return \"mdi-video\";\r\n case NotificationType.RatingReceived:\r\n return \"mdi-video-plus\";\r\n default:\r\n return \"mdi-video\";\r\n }\r\n }\r\n\r\n getNotificationTitle(type: NotificationType): string {\r\n switch (type) {\r\n case NotificationType.FeedbackReceived:\r\n return this.$t(\"notifications.feedback_received\").toString();\r\n case NotificationType.RateVideo:\r\n return this.$t(\"notifications.rate_video\").toString();\r\n case NotificationType.RatingReceived:\r\n return this.$t(\"notifications.rating_received\").toString();\r\n default:\r\n return \"NOTIFICATION TYPE NOT SUPPORTED\";\r\n }\r\n }\r\n\r\n getNotificationsTimeSpan(date: Date): string {\r\n const now = new Date().getTime();\r\n var diff = now - date.getTime();\r\n var minutes = Math.floor(diff / 1000 / 60);\r\n var hours = Math.floor(minutes / 60);\r\n var days = Math.floor(hours / 24);\r\n var weeks = Math.floor(days / 7);\r\n var months = Math.floor(weeks / 30);\r\n\r\n if (months > 0) return months + \" \" + this.$t(\"notifications.months\");\r\n if (weeks > 0) return weeks + \" \" + this.$t(\"notifications.weeks\");\r\n if (days > 0) return days + \" \" + this.$t(\"notifications.days\");\r\n if (hours > 0) return hours + \" \" + this.$t(\"notifications.hours\");\r\n if (minutes > 0) return minutes + \" \" + this.$t(\"notifications.minutes\");\r\n return this.$t(\"notifications.fewSeconds\").toString();\r\n }\r\n\r\n @Watch(\"isAuth\", { immediate: true })\r\n isAuthChanged() {\r\n if (!this.isAuth) return;\r\n if (!this.retrieved) this.loadNotifications();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Notifications.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Notifications.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Notifications.vue?vue&type=template&id=12516fac&\"\nimport script from \"./Notifications.vue?vue&type=script&lang=ts&\"\nexport * from \"./Notifications.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(VMenu,{attrs:{\"offset-y\":\"\",\"transition\":\"slide-y-transition\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c(VBtn,_vm._g({staticClass:\"d-flex align-center shadow\",staticStyle:{\"border-color\":\"var(--v-accent-base)\"},attrs:{\"large\":\"\",\"rounded\":\"\",\"outlined\":\"\",\"color\":\"accentText\"}},on),[_c('div',{staticClass:\"menu-button\"},[_c('img',{attrs:{\"src\":_vm.pfp,\"alt\":\"Profile Picture\"}})]),_c(VIcon,{attrs:{\"right\":\"\"}},[_vm._v(\"mdi-dots-vertical\")])],1)]}}])},[_c(VCard,{attrs:{\"elevation\":\"0\",\"width\":\"300px\"}},[_c(VList,{staticClass:\"pa-0\"},[_c(VListItem,{staticClass:\"pa-0\"},[_c('div',{staticClass:\"banner other--text text-truncate\"},[_c('div',{staticClass:\"text-truncate font-weight-bold\"},[_vm._v(\" \"+_vm._s(_vm.name || \"Username\")+\" \")]),_c('div',{staticClass:\"text-truncate\"},[_vm._v(\" \"+_vm._s(_vm.email || \"example@email.com\")+\" \")])])]),_c(VDivider),_c(VListItem,{staticClass:\"py-2 align-center\",attrs:{\"link\":\"\",\"to\":\"/settings\"}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-account\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(_vm._s(_vm.$t(\"profileDropdown.profile\")))]),_c(VListItemSubtitle,[_vm._v(_vm._s(_vm.$t(\"profileDropdown.checkoutSettings\")))])],1),_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)],1),_c(VDivider),_c(VListItem,[_c(VSpacer),_c(VBtn,{staticClass:\"mr-4\",attrs:{\"text\":\"\"},on:{\"click\":_vm.refresh}},[_vm._v(\" \"+_vm._s(_vm.$t(\"toolbarMenu.refresh\"))+\" \")]),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":_vm.logoutUser}},[_vm._v(_vm._s(_vm.$t(\"profileDropdown.logout\")))])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Getter, Action } from \"vuex-class\";\r\nimport { Component } from \"vue-property-decorator\";\r\n\r\n@Component\r\nexport default class ProfileDropdown extends Vue {\r\n @Getter(\"profile/getUserName\") name!: string;\r\n @Getter(\"profile/getUserEmail\") email!: string;\r\n @Getter(\"profile/loading\") profileLoading!: string;\r\n @Getter(\"profile/pfp\") pfp!: string;\r\n @Action(\"profile/logoutUser\") logout!: () => void;\r\n @Action(\"clearEverything\") clearEverything!: () => void;\r\n\r\n get firstLetter() {\r\n return this.name.charAt(0);\r\n }\r\n\r\n logoutUser() {\r\n this.logout();\r\n this.$sessionHub.stop();\r\n this.$notificationHub.stop();\r\n this.$router.replace(\"/auth/login\");\r\n }\r\n\r\n refresh() {\r\n location.reload();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileDropdown.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileDropdown.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProfileDropdown.vue?vue&type=template&id=38653cb7&scoped=true&\"\nimport script from \"./ProfileDropdown.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProfileDropdown.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProfileDropdown.vue?vue&type=style&index=0&id=38653cb7&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"38653cb7\",\n null\n \n)\n\nexport default component.exports","import { VCard } from 'vuetify/lib/components/VCard';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(VCard,{staticClass:\"d-flex align-center\",staticStyle:{\"width\":\"auto\"},attrs:{\"elevation\":\"0\"}},[_c('div',{staticClass:\"pa-2 ml-1 mr-2\"},[_c(VTooltip,{attrs:{\"right\":\"\",\"color\":_vm.hasLiveTranscriptionQuota ? 'error' : 'primary'},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('div',_vm._g({staticClass:\"body-2\",staticStyle:{\"cursor\":\"default\"}},on),[_c(VIcon,{class:(\"mr-2 \" + (_vm.hasLiveTranscriptionQuota ? 'error--text' : 'primary--text'))},[_vm._v(\"mdi-microphone\")]),_c(VCard,{staticClass:\"body-2 px-3 py-1 d-inline-block font-weight-medium\",staticStyle:{\"background\":\"none\"},attrs:{\"flat\":\"\"}},[_c('div',{class:(\"body-2 d-inline \" + (_vm.liveTranscriptionFast === 0\n ? 'grey--text text--lighten-1 font-weight-normal'\n : 'font-weight-medium'))},[_vm._v(\" \"+_vm._s(_vm.liveTranscriptionFast === \"∞\" ? _vm.liveTranscriptionFast : _vm.convertDuration( parseInt(_vm.liveTranscriptionFast.toString()) ))+\" \"),_c(VIcon,{staticClass:\"body-2\"},[_vm._v(\"mdi-clock-fast\")])],1),_c(VDivider,{staticClass:\"ml-2 mr-1 h-full d-inline\",attrs:{\"vertical\":\"\"}}),_c('div',{class:(\"body-2 d-inline \" + (_vm.liveTranscriptionRelaxed === 0\n ? 'grey--text text--lighten-1 font-weight-normal'\n : 'font-weight-medium'))},[_vm._v(\" \"+_vm._s(_vm.liveTranscriptionRelaxed === \"∞\" ? _vm.liveTranscriptionRelaxed : _vm.convertDuration( parseInt(_vm.liveTranscriptionRelaxed.toString()) ))+\" \")]),_c(VIcon,{staticClass:\"body-2\"},[_vm._v(\"mdi-speedometer-slow\")])],1)],1)]}}])},[_c('span',[_vm._v(\" \"+_vm._s(_vm.$t(\"quota.tip.liveTranscription\"))),_c('br'),_c('br'),_c(VIcon,{staticClass:\"body-2 white--text mr-2\"},[_vm._v(\"mdi-clock-fast\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"quota.fast\"))+\": \"),_c('b',[_vm._v(_vm._s(_vm.liveTranscriptionFast === \"∞\" ? _vm.$t(\"quota.unlimited\") : (_vm.liveTranscriptionFast + \"s\")))]),_c('br'),_c(VIcon,{staticClass:\"body-2 white--text mr-2\"},[_vm._v(\"mdi-speedometer-slow\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"quota.relaxed\"))+\": \"),_c('b',[_vm._v(_vm._s(_vm.liveTranscriptionRelaxed === \"∞\" ? _vm.$t(\"quota.unlimited\") : (_vm.liveTranscriptionRelaxed + \"s\")))]),(_vm.hasAnalysisQuota)?_c('span',{staticClass:\"caption font-italic text-pre-wrap\"},[_c('br'),_c('br'),_vm._v(\" \"+_vm._s(_vm.$t(\"quota.tip.exceeded\"))+\" \")]):_vm._e()],1)])],1),_c('div',{staticClass:\"pa-2 mx-2\"},[_c(VTooltip,{attrs:{\"right\":\"\",\"color\":_vm.hasAnalysisQuota ? 'error' : 'primary'},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\nreturn [_c('div',_vm._g({staticClass:\"body-2\",staticStyle:{\"cursor\":\"default\"}},on),[_c(VIcon,{class:(\"mr-2 \" + (_vm.hasAnalysisQuota ? 'error--text' : 'primary--text'))},[_vm._v(\"mdi-chart-bar\")]),_c(VCard,{staticClass:\"body-2 px-3 py-1 d-inline-block font-weight-medium\",staticStyle:{\"background\":\"none\"},attrs:{\"flat\":\"\"}},[_c('div',{class:(\"body-2 d-inline \" + (_vm.analysisFast === 0\n ? 'grey--text text--lighten-1 font-weight-normal'\n : 'font-weight-medium'))},[_vm._v(\" \"+_vm._s(_vm.analysisFast)+\" \"),_c(VIcon,{staticClass:\"body-2\"},[_vm._v(\"mdi-clock-fast\")])],1),_c(VDivider,{staticClass:\"ml-2 mr-1 h-full d-inline\",attrs:{\"vertical\":\"\"}}),_c('div',{class:(\"body-2 d-inline \" + (_vm.analysisRelaxed === 0\n ? 'grey--text text--lighten-1 font-weight-normal'\n : 'font-weight-medium'))},[_vm._v(\" \"+_vm._s(_vm.analysisRelaxed)+\" \"),_c(VIcon,{staticClass:\"body-2\"},[_vm._v(\"mdi-speedometer-slow\")])],1)],1)],1)]}}])},[_c('span',[_vm._v(\" \"+_vm._s(_vm.$t(\"quota.tip.analysis\"))),_c('br'),_c('br'),_c(VIcon,{staticClass:\"body-2 white--text mr-2\"},[_vm._v(\"mdi-clock-fast\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"quota.fast\"))+\": \"),_c('b',[_vm._v(_vm._s(_vm.analysisFast === \"∞\" ? _vm.$t(\"quota.unlimited\") : (_vm.analysisFast + \" Session(s)\")))]),_c('br'),_c(VIcon,{staticClass:\"body-2 white--text mr-2\"},[_vm._v(\"mdi-speedometer-slow\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"quota.relaxed\"))+\": \"),_c('b',[_vm._v(_vm._s(_vm.analysisRelaxed === \"∞\" ? _vm.$t(\"quota.unlimited\") : (_vm.analysisRelaxed + \" Session(s)\")))]),(_vm.hasAnalysisQuota)?_c('span',{staticClass:\"caption font-italic text-pre-wrap\"},[_c('br'),_c('br'),_vm._v(\" \"+_vm._s(_vm.$t(\"quota.tip.exceeded\"))+\" \")]):_vm._e()],1)])],1),_c('div',{staticClass:\"pa-2 mx-2\"},[_c(VTooltip,{attrs:{\"right\":\"\",\"color\":_vm.hasAiFeedbackQuota ? 'error' : 'primary'},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\nreturn [_c('div',_vm._g({staticClass:\"body-2\",staticStyle:{\"cursor\":\"default\"}},on),[_c(VIcon,{class:(\"mr-2 \" + (_vm.hasAiFeedbackQuota ? 'error--text' : 'primary--text'))},[_vm._v(\"mdi-chat-processing-outline\")]),_c(VCard,{staticClass:\"body-2 px-3 py-1 d-inline-block font-weight-medium\",staticStyle:{\"background\":\"none\"},attrs:{\"flat\":\"\"}},[_c('div',{class:(\"body-2 d-inline \" + (_vm.aiFeedbackFast === 0\n ? 'grey--text text--lighten-1 font-weight-normal'\n : 'font-weight-medium'))},[_vm._v(\" \"+_vm._s(_vm.aiFeedbackFast)+\" \"),_c(VIcon,{staticClass:\"body-2\"},[_vm._v(\"mdi-clock-fast\")])],1),_c(VDivider,{staticClass:\"ml-2 mr-1 h-full d-inline\",attrs:{\"vertical\":\"\"}}),_c('div',{class:(\"body-2 d-inline \" + (_vm.aiFeedbackRelaxed === 0\n ? 'grey--text text--lighten-1 font-weight-normal'\n : 'font-weight-medium'))},[_vm._v(\" \"+_vm._s(_vm.aiFeedbackRelaxed)+\" \"),_c(VIcon,{staticClass:\"body-2\"},[_vm._v(\"mdi-speedometer-slow\")])],1)],1)],1)]}}])},[_c('span',[_vm._v(\" \"+_vm._s(_vm.$t(\"quota.tip.aiFeedback\"))),_c('br'),_c('br'),_c(VIcon,{staticClass:\"body-2 white--text mr-2\"},[_vm._v(\"mdi-clock-fast\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"quota.fast\"))+\": \"),_c('b',[_vm._v(_vm._s(_vm.aiFeedbackFast === \"∞\" ? _vm.$t(\"quota.unlimited\") : (_vm.aiFeedbackFast + \" Feedback(s)\")))]),_c('br'),_c(VIcon,{staticClass:\"body-2 white--text mr-2\"},[_vm._v(\"mdi-speedometer-slow\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"quota.relaxed\"))+\": \"),_c('b',[_vm._v(_vm._s(_vm.aiFeedbackRelaxed === \"∞\" ? _vm.$t(\"quota.unlimited\") : (_vm.aiFeedbackRelaxed + \" Feedback(s)\")))]),(_vm.hasAiFeedbackQuota)?_c('span',{staticClass:\"caption font-italic text-pre-wrap\"},[_c('br'),_c('br'),_vm._v(\" \"+_vm._s(_vm.$t(\"quota.tip.exceeded\"))+\" \")]):_vm._e()],1)])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Component, Prop } from \"vue-property-decorator\";\r\n\r\nimport { convertDuration } from \"@/views/recorder/components/utils\";\r\n\r\n@Component({\r\n methods: { convertDuration },\r\n})\r\nexport default class AppBar extends Vue {\r\n @Prop({ default: () => 0 }) analysisFast!: string | boolean;\r\n @Prop({ default: () => 0 }) analysisRelaxed!: string | boolean;\r\n @Prop({ default: () => 0 }) aiFeedbackFast!: string | boolean;\r\n @Prop({ default: () => 0 }) aiFeedbackRelaxed!: string | boolean;\r\n @Prop({ default: () => 0 }) liveTranscriptionFast!: string | boolean;\r\n @Prop({ default: () => 0 }) liveTranscriptionRelaxed!: string | boolean;\r\n\r\n get hasAnalysisQuota() {\r\n return (\r\n parseInt(this.analysisFast.toString()) === 0 &&\r\n parseInt(this.analysisRelaxed.toString()) === 0\r\n );\r\n }\r\n get hasAiFeedbackQuota() {\r\n return (\r\n parseInt(this.aiFeedbackFast.toString()) === 0 &&\r\n parseInt(this.aiFeedbackRelaxed.toString()) === 0\r\n );\r\n }\r\n get hasLiveTranscriptionQuota() {\r\n return (\r\n parseInt(this.liveTranscriptionFast.toString()) === 0 &&\r\n parseInt(this.liveTranscriptionRelaxed.toString()) === 0\r\n );\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuotaBar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuotaBar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./QuotaBar.vue?vue&type=template&id=27c54128&\"\nimport script from \"./QuotaBar.vue?vue&type=script&lang=ts&\"\nexport * from \"./QuotaBar.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.shown && _vm.seminars.length > 1)?_c('div',{staticClass:\"d-flex px-4\"},[_c(VSpacer),_c(VSelect,{staticStyle:{\"max-width\":\"200px\"},attrs:{\"items\":_vm.items,\"value\":_vm.selectedId,\"placeholder\":\"Choose seminar\",\"hide-details\":\"\"},on:{\"change\":_vm.select}})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Getter } from \"vuex-class\";\r\nimport { Component } from \"vue-property-decorator\";\r\nimport { SelectItem, Seminar } from \"@/core/models\";\r\n\r\n@Component\r\nexport default class SeminarSelect extends Vue {\r\n @Getter(\"seminars/selectedId\") selectedId!: number;\r\n @Getter(\"seminars/seminars\") seminars!: Seminar[];\r\n\r\n get items(): SelectItem[] {\r\n return this.seminars.map(x => ({\r\n text: `${x.name} (Owner: ${x.owner?.username})`,\r\n value: x.id,\r\n }));\r\n }\r\n\r\n select(id: number) {\r\n const currentRoute = this.$route.path;\r\n if (currentRoute === \"/seminars/admin\")\r\n return this.$router.replace(\"/seminars/edit/\" + id);\r\n const parts = currentRoute.split(\"/\");\r\n const newRoute = `/seminars/${parts[2]}/${id}`;\r\n this.$router.replace(newRoute);\r\n }\r\n\r\n get shown() {\r\n const routes = [\"/seminars/details\", \"/seminars/dashboard\"];\r\n return routes.some(x => this.$route.path.startsWith(x));\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeminarSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeminarSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SeminarSelect.vue?vue&type=template&id=902a08ce&\"\nimport script from \"./SeminarSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./SeminarSelect.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.isMobile)?_c('div',{staticClass:\"d-flex align-end py-2\",staticStyle:{\"height\":\"100%\"}},[_c(VBtn,{attrs:{\"text\":\"\",\"link\":\"\",\"to\":\"/settings\"}},[_c('span',{staticStyle:{\"text-transform\":\"initial\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"toolbarMenu.settings\"))+\" \")])]),_c('div',{staticClass:\"mx-1\"}),_c(VBtn,{attrs:{\"dark\":\"\",\"text\":\"\"},on:{\"click\":_vm.refresh}},[_c('span',{staticStyle:{\"text-transform\":\"initial\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"toolbarMenu.refresh\"))+\" \")])]),_c('div',{staticClass:\"mx-1\"}),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":_vm.logoutUser}},[_c('span',{staticStyle:{\"text-transform\":\"initial\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"toolbarMenu.logout\"))+\" \")])])],1):_c('div')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Component, Prop } from \"vue-property-decorator\";\r\nimport { Action } from \"vuex-class\";\r\n\r\n@Component\r\nexport default class ToolbarMenu extends Vue {\r\n @Prop({ default: () => false }) isMobile!: boolean;\r\n @Action(\"profile/logoutUser\") logout!: Function;\r\n @Action(\"loadEverything\") loadEverything!: Function;\r\n @Action(\"clearEverything\") clearEverything!: Function;\r\n\r\n logoutUser() {\r\n this.clearEverything();\r\n this.logout();\r\n this.$sessionHub.stop();\r\n this.$notificationHub.stop();\r\n this.$router.replace(\"/auth/login\");\r\n }\r\n refresh() {\r\n location.reload();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToolbarMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToolbarMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ToolbarMenu.vue?vue&type=template&id=5ed9b958&\"\nimport script from \"./ToolbarMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./ToolbarMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pa-2 mx-2\"},[(\n _vm.analysisFast !== '∞' ||\n _vm.aiFeedbackFast !== '∞' ||\n _vm.liveTranscriptionFast !== '∞'\n )?_c(VBtn,{attrs:{\"color\":\"primary\",\"width\":\"100%\",\"to\":_vm.hasSubscription ? '/settings' : '/subscription/pricing'}},[_vm._v(_vm._s(_vm.$t(\"quota.upgrade\")))]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Component, Prop } from \"vue-property-decorator\";\r\nimport { Getter } from \"vuex-class\";\r\n\r\n@Component({})\r\nexport default class AppBar extends Vue {\r\n @Prop({ default: () => 0 }) analysisFast!: string | boolean;\r\n @Prop({ default: () => 0 }) aiFeedbackFast!: string | boolean;\r\n @Prop({ default: () => 0 }) liveTranscriptionFast!: string | boolean;\r\n @Getter(\"profile/hasSubscription\") hasSubscription!: boolean;\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpgradeButton.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpgradeButton.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UpgradeButton.vue?vue&type=template&id=1198c5a4&\"\nimport script from \"./UpgradeButton.vue?vue&type=script&lang=ts&\"\nexport * from \"./UpgradeButton.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Component, Prop, Watch } from \"vue-property-decorator\";\r\nimport { Getter, Action } from \"vuex-class\";\r\n\r\nimport BrowserWarning from \"@/components/layout/components/BrowserWarning.vue\";\r\nimport CurrentUser from \"@/components/layout/components/CurrentUser.vue\";\r\nimport LanguageSelect from \"@/components/layout/components/LanguageSelect.vue\";\r\nimport Notifications from \"@/components/layout/components/Notifications.vue\";\r\nimport ProfileDropdown from \"@/components/layout/components/ProfileDropdown.vue\";\r\nimport QuotaBar from \"@/components/layout/components/QuotaBar.vue\";\r\nimport SeminarSelect from \"@/components/layout/components/SeminarSelect.vue\";\r\nimport ToolbarMenu from \"@/components/layout/components/ToolbarMenu.vue\";\r\nimport UpgradeButton from \"@/components/layout/components/UpgradeButton.vue\";\r\nimport LocalStorage from \"@/core/utils/LocalStorage\";\r\nimport { isDev, isLocal } from \"@/settings\";\r\nimport { UserClaims } from \"@/core/models\";\r\n\r\n@Component({\r\n computed: {\r\n LocalStorage() {\r\n return LocalStorage;\r\n },\r\n isDev() {\r\n return isDev;\r\n },\r\n isLocal() {\r\n return isLocal;\r\n },\r\n },\r\n components: {\r\n BrowserWarning,\r\n CurrentUser,\r\n LanguageSelect,\r\n Notifications,\r\n ProfileDropdown,\r\n QuotaBar,\r\n SeminarSelect,\r\n ToolbarMenu,\r\n UpgradeButton,\r\n },\r\n})\r\nexport default class AppBar extends Vue {\r\n @Getter(\"theme\") theme!: any;\r\n @Getter(\"appLoading\") appLoading!: boolean;\r\n @Getter(\"profile/loading\") profileLoading!: boolean;\r\n @Getter(\"profile/forgotEmailSent\") forgotEmailSent!: boolean;\r\n @Getter(\"profile/confirmEmailSent\") confirmEmailSent!: boolean;\r\n @Getter(\"profile/userEmailVerified\") userEmailVerified!: boolean;\r\n @Action(\"profile/sendConfirmEmail\") sendConfirmEmail!: Function;\r\n @Getter(\"profile/getUserHasPrivileges\") hasPrivileges!: boolean;\r\n @Getter(\"profile/userClaims\") userClaims!: UserClaims[];\r\n @Action(\"profile/fetchPermissions\") fetchPermissions!: () => Promise;\r\n\r\n @Prop({ default: () => false }) isMobile!: boolean;\r\n\r\n analysisFast = this.analysisFastQuota || 0;\r\n analysisRelaxed = this.analysisRelaxedQuota || 0;\r\n aiFeedbackFast = this.aiFeedbackFastQuota || 0;\r\n aiFeedbackRelaxed = this.aiFeedbackRelaxedQuota || 0;\r\n liveTranscriptionFast = this.liveTranscriptionFastQuota || 0;\r\n liveTranscriptionRelaxed = this.liveTranscriptionRelaxedQuota || 0;\r\n\r\n showBanner: boolean = false;\r\n\r\n VRMode = LocalStorage.getVRMode();\r\n\r\n switchVRMode() {\r\n LocalStorage.setVRMode(!LocalStorage.getVRMode());\r\n this.$router.go(0);\r\n }\r\n\r\n get isChrome() {\r\n return navigator.userAgent.indexOf(\"Chrome\") !== -1;\r\n }\r\n\r\n sending: boolean = false;\r\n sendEmail() {\r\n if (this.sending) return;\r\n this.sending = true;\r\n this.sendConfirmEmail();\r\n }\r\n\r\n get analysisFastQuota() {\r\n if (this.userClaims) {\r\n const quotaClaim = this.userClaims.filter(\r\n x => x.type === \"analysis:fast\",\r\n );\r\n if (quotaClaim[0]) {\r\n if (parseInt(quotaClaim[0].value as string, 10) === -1) return \"∞\";\r\n\r\n return parseInt(quotaClaim[0].value as string, 10);\r\n }\r\n return 0;\r\n }\r\n return 0;\r\n }\r\n\r\n get analysisRelaxedQuota() {\r\n if (this.userClaims) {\r\n const quotaClaim = this.userClaims.filter(\r\n x => x.type === \"analysis:relaxed\",\r\n );\r\n if (quotaClaim[0]) {\r\n if (parseInt(quotaClaim[0].value as string, 10) === -1) return \"∞\";\r\n\r\n return parseInt(quotaClaim[0].value as string, 10);\r\n }\r\n return 0;\r\n }\r\n return 0;\r\n }\r\n\r\n get aiFeedbackFastQuota() {\r\n if (this.userClaims) {\r\n const quotaClaim = this.userClaims.filter(\r\n x => x.type === \"ai_feedback:fast\",\r\n );\r\n if (quotaClaim[0]) {\r\n if (parseInt(quotaClaim[0].value as string, 10) === -1) return \"∞\";\r\n\r\n return parseInt(quotaClaim[0].value as string, 10);\r\n }\r\n return 0;\r\n }\r\n return 0;\r\n }\r\n\r\n get aiFeedbackRelaxedQuota() {\r\n if (this.userClaims) {\r\n const quotaClaim = this.userClaims.filter(\r\n x => x.type === \"ai_feedback:relaxed\",\r\n );\r\n if (quotaClaim[0]) {\r\n if (parseInt(quotaClaim[0].value as string, 10) === -1) return \"∞\";\r\n\r\n return parseInt(quotaClaim[0].value as string, 10);\r\n }\r\n return 0;\r\n }\r\n return 0;\r\n }\r\n\r\n get liveTranscriptionFastQuota() {\r\n if (this.userClaims) {\r\n const quotaClaim = this.userClaims.filter(\r\n x => x.type === \"live_transcription:fast\",\r\n );\r\n if (quotaClaim[0]) {\r\n if (parseInt(quotaClaim[0].value as string, 10) === -1) return \"∞\";\r\n\r\n return parseInt(quotaClaim[0].value as string, 10);\r\n }\r\n return 0;\r\n }\r\n return 0;\r\n }\r\n\r\n get liveTranscriptionRelaxedQuota() {\r\n if (this.userClaims) {\r\n const quotaClaim = this.userClaims.filter(\r\n x => x.type === \"live_transcription:relaxed\",\r\n );\r\n if (quotaClaim[0]) {\r\n if (parseInt(quotaClaim[0].value as string, 10) === -1) return \"∞\";\r\n\r\n return parseInt(quotaClaim[0].value as string, 10);\r\n }\r\n return 0;\r\n }\r\n return 0;\r\n }\r\n\r\n @Watch(\"analysisFastQuota\")\r\n updateAnalysisFast() {\r\n this.analysisFast = this.analysisFastQuota || 0;\r\n }\r\n @Watch(\"analysisRelaxedQuota\")\r\n updateAnalysisRelaxed() {\r\n this.analysisRelaxed = this.analysisRelaxedQuota || 0;\r\n }\r\n @Watch(\"aiFeedbackFastQuota\")\r\n updateAiFeedbackFast() {\r\n this.aiFeedbackFast = this.aiFeedbackFastQuota || 0;\r\n }\r\n @Watch(\"aiFeedbackRelaxedQuota\")\r\n updateAiFeedbackRelaxed() {\r\n this.aiFeedbackRelaxed = this.aiFeedbackRelaxedQuota || 0;\r\n }\r\n @Watch(\"liveTranscriptionFastQuota\")\r\n updateLiveTranscriptionFast() {\r\n this.liveTranscriptionFast = this.liveTranscriptionFastQuota || 0;\r\n }\r\n @Watch(\"liveTranscriptionRelaxedQuota\")\r\n updateLiveTranscriptionRelaxed() {\r\n this.liveTranscriptionRelaxed = this.liveTranscriptionRelaxedQuota || 0;\r\n }\r\n\r\n @Watch(\"$route\", { immediate: true })\r\n urlChanged() {\r\n this.showBanner = !this.userEmailVerified;\r\n if (this.$route.path.startsWith(\"/auth\")) this.showBanner = false;\r\n }\r\n\r\n @Watch(\"profileLoading\", { immediate: true })\r\n userLoaded() {\r\n this.showBanner = !this.userEmailVerified;\r\n if (this.$route.path.startsWith(\"/auth\")) this.showBanner = false;\r\n }\r\n\r\n mounted() {\r\n if (this.userEmailVerified) this.fetchPermissions(); // Do not try to fetch permissions, if a user is not logged in.\r\n\r\n this.analysisFast = this.analysisFastQuota || 0;\r\n this.analysisRelaxed = this.analysisRelaxedQuota || 0;\r\n this.aiFeedbackFast = this.aiFeedbackFastQuota || 0;\r\n this.aiFeedbackRelaxed = this.aiFeedbackRelaxedQuota || 0;\r\n this.liveTranscriptionFast = this.liveTranscriptionFastQuota || 0;\r\n this.liveTranscriptionRelaxed = this.liveTranscriptionRelaxedQuota || 0;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppBar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppBar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppBar.vue?vue&type=template&id=30a56c50&scoped=true&\"\nimport script from \"./AppBar.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppBar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppBar.vue?vue&type=style&index=0&id=30a56c50&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"30a56c50\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VNavigationDrawer } from 'vuetify/lib/components/VNavigationDrawer';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.VRMode)?_c(VNavigationDrawer,{staticStyle:{\"max-height\":\"100%\",\"display\":\"flex\",\"flex-direction\":\"column\"},attrs:{\"app\":\"\",\"mini-variant\":_vm.mini && !_vm.isMobile,\"permanent\":_vm.showLayout && !_vm.isMobile},model:{value:(_vm.open),callback:function ($$v) {_vm.open=$$v},expression:\"open\"}},[_c('div',{staticClass:\"d-flex align-center justify-center px-2 py-4\",class:_vm.mini && !_vm.isMobile && 'justify-center',style:(_vm.navHeadingHeight)},[(!_vm.mini || _vm.isMobile)?_c('div',{staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.$router.push('/')}}},[(_vm.selectedSeminarLogo.length > 0)?_c('div',{staticClass:\"mr-4\"},[_c(VImg,{staticStyle:{\"max-width\":\"180px\",\"max-height\":\"60px\"},attrs:{\"alt\":\"Seminar Logo\",\"src\":_vm.selectedSeminarLogo}})],1):_c('div',[(!_vm.isDarkMode)?_c('img',{staticClass:\"title font-weight-bold app-title flex-grow-1\",attrs:{\"alt\":\"Prezp Logo\",\"width\":_vm.imageWidth,\"src\":require(\"@/assets/prezp_logo.png\")}}):_c('img',{staticClass:\"title font-weight-bold app-title flex-grow-1\",attrs:{\"alt\":\"Prezp Logo\",\"width\":_vm.imageWidth,\"src\":require(\"@/assets/prezp_logo_alternate.png\")}})])]):_vm._e(),_c('div',{staticClass:\"d-flex align-center justify-center\"},[(!_vm.isMobile)?_c(VBtn,{attrs:{\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleMini($event)}}},[_c(VIcon,[_vm._v(_vm._s(_vm.mini ? \"mdi-chevron-right\" : \"mdi-chevron-left\"))])],1):_c(VBtn,{attrs:{\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('close-nav')}}},[_c(VIcon,[_vm._v(\"mdi-close\")])],1)],1)]),_c('Menu',{attrs:{\"expanded\":_vm.expanded},on:{\"update:expanded\":function($event){_vm.expanded=$event}}}),(\n _vm.hasPermissions([\n 'live_transcription:fast',\n 'live_transcription:relaxed',\n 'upload:audio',\n 'upload:video' ])\n )?_c('div',{staticClass:\"flex-1 pb-6 px-2 buttons\"},[(\n _vm.hasPermissions([\n 'live_transcription:fast',\n 'live_transcription:relaxed' ])\n )?_c('RecordSession',{attrs:{\"mini\":_vm.mini,\"label\":_vm.$t('upsess.rec'),\"route\":'/liverecorder'}}):_vm._e(),(_vm.hasPermissions(['upload:audio']))?_c('div',{staticClass:\"my-1\"}):_vm._e(),(_vm.hasPermissions(['upload:audio']))?_c('UploadAudio',{attrs:{\"is-uploading-prop\":_vm.isUploading,\"mini\":_vm.mini},on:{\"update:isUploadingProp\":function($event){_vm.isUploading=$event},\"update:is-uploading-prop\":function($event){_vm.isUploading=$event}}}):_vm._e(),(_vm.hasPermissions(['upload:video']))?_c('div',{staticClass:\"my-1\"}):_vm._e(),(_vm.hasPermissions(['upload:video']))?_c('UploadVideo',{attrs:{\"is-uploading-prop\":_vm.isUploading,\"mini\":_vm.mini},on:{\"update:isUploadingProp\":function($event){_vm.isUploading=$event},\"update:is-uploading-prop\":function($event){_vm.isUploading=$event}}}):_vm._e()],1):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c(VTooltip,{attrs:{\"right\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c(VBtn,_vm._g({staticStyle:{\"width\":\"100%\"},attrs:{\"tile\":_vm.mini,\"icon\":_vm.mini,\"elevation\":\"0\",\"color\":\"primary\",\"loading\":_vm.loading,\"disabled\":_vm.loading},on:{\"click\":function($event){_vm.dialog = true}}},on),[_c(VIcon,{attrs:{\"left\":!_vm.mini,\"small\":!_vm.mini}},[_vm._v(\"mdi-upload\")]),(!_vm.mini)?_c('span',[_vm._v(\" \"+_vm._s(_vm.$t(\"upsess.button\"))+\" \")]):_vm._e()],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t(\"upsess.title\")))])]),_c('UploadSession',{attrs:{\"is-uploading-prop\":_vm.isUploading,\"dialog-prop\":_vm.dialog,\"locked\":!_vm.hasPermissions(['upload:audio'])},on:{\"update:isUploadingProp\":function($event){_vm.isUploading=$event},\"update:is-uploading-prop\":function($event){_vm.isUploading=$event},\"update:dialogProp\":function($event){_vm.dialog=$event},\"update:dialog-prop\":function($event){_vm.dialog=$event}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardSubtitle } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VFileInput } from 'vuetify/lib/components/VFileInput';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VOverlay } from 'vuetify/lib/components/VOverlay';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c(VDialog,{attrs:{\"width\":\"400\"},model:{value:(_vm.isTooBig),callback:function ($$v) {_vm.isTooBig=$$v},expression:\"isTooBig\"}},[_c(VCard,[_c(VCardTitle,{staticClass:\"text-h5 grey lighten-2\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"upsess.errorHeading\"))+\" \")]),_c(VCardText,[_c('p',{staticStyle:{\"margin-top\":\"8px\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"upsess.videoTooBig\"))+\" \")])]),_c(VDivider),_c(VCardActions,[_c(VSpacer),_c(VBtn,{staticClass:\"mt-4\",attrs:{\"elevation\":\"0\",\"color\":\"primary\",\"text\":\"\"},on:{\"click\":function($event){_vm.isTooBig = false}}},[_vm._v(\" Ok \")])],1)],1)],1),_c(VDialog,{attrs:{\"max-width\":\"700px\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c(VCard,[_c(VOverlay,{staticClass:\"text-center\",attrs:{\"value\":_vm.locked,\"absolute\":\"\",\"opacity\":\"0.75\"}},[_c('div',{staticClass:\"text-h6\"},[_vm._v(_vm._s(_vm.$t(\"feature.locked\")))]),_c('div',{staticClass:\"text-body-1\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"feature.toUnlockIt\"))+\" \"+_vm._s(_vm.$t(\"feature.toCloseThisWindow\"))+\" \")])]),_c(VCardTitle,[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.$t(\"upsess.subtitle\")))]),_c(VSpacer),_c(VBtn,{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.dialog = false}}},[_c(VIcon,[_vm._v(\"mdi-close\")])],1)],1),_c(VCardSubtitle,{staticClass:\"mt-2\"},[(_vm.isAudio)?_c('span',[_vm._v(_vm._s(_vm.$t(\"upsess.text\")))]):_c('span',[_vm._v(_vm._s(_vm.$t(\"upsessv.text\")))])]),_c(VCardText,[_c(VForm,{ref:\"form\",attrs:{\"disabled\":_vm.loading},on:{\"submit\":function($event){$event.preventDefault();return _vm.uploadSession($event)}},model:{value:(_vm.formValid),callback:function ($$v) {_vm.formValid=$$v},expression:\"formValid\"}},[_c(VFileInput,{attrs:{\"show-size\":\"\",\"accept\":_vm.fileFormat,\"label\":_vm.fileLabel},on:{\"change\":_vm.handleFileChange},model:{value:(_vm.uploadedFile),callback:function ($$v) {_vm.uploadedFile=$$v},expression:\"uploadedFile\"}}),(_vm.isAudio)?_c('div',{staticClass:\"text-body-2 text-right\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"upsess.hint\"))+\" \")]):_c('div',{staticClass:\"text-body-2 text-right\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"upsessv.hint\"))+\" \")]),(_vm.isAudio)?_c('div',{staticClass:\"text-subtitle-2 text-right\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"upsess.smallprint\"))+\" \")]):_c('div',{staticClass:\"text-subtitle-2 text-right\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"upsessv.smallprint\"))+\" \")]),_c(VTextField,{attrs:{\"rules\":[function (t) { return !!t || _vm.$t('forms.reqfield'); }],\"label\":_vm.$t('sessionsPage.uploadSessionSection.sessionName')},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c(VSelect,{attrs:{\"items\":_vm.localeItems,\"label\":_vm.$t('sessionsPage.uploadSessionSection.chooseLang')},model:{value:(_vm.locale),callback:function ($$v) {_vm.locale=$$v},expression:\"locale\"}}),_c(VBtn,{attrs:{\"type\":\"submit\",\"elevation\":\"0\",\"block\":\"\",\"color\":\"primary\",\"loading\":_vm.loading,\"disabled\":_vm.loading || !_vm.canSubmit}},[_c('span',[_vm._v(_vm._s(_vm.$t(\"upsess.go\")))])])],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Action, Getter } from \"vuex-class\";\r\nimport { Component, Prop, PropSync, Watch } from \"vue-property-decorator\";\r\nimport api from \"../../../../core/utils/api\";\r\nimport { Timestamp } from \"../../../../core/models\";\r\n\r\n@Component\r\nexport default class UploadSession extends Vue {\r\n @PropSync(\"dialogProp\", { default: () => false }) dialog!: boolean;\r\n @PropSync(\"isUploadingProp\") isUploading!: boolean;\r\n @Prop({ default: () => false }) locked!: boolean;\r\n @Prop({ default: () => true }) isAudio!: boolean;\r\n\r\n @Getter(\"sessions/uploadingSession\") loading!: boolean;\r\n @Action(\"sessions/uploadSession\")\r\n uploadSessionAction!: (d: FormData) => Promise;\r\n @Action(\"displaySnackbar\") displaySnackbar!: (msg: string) => void;\r\n\r\n isTooBig = false;\r\n\r\n get canSubmit() {\r\n return this.name && this.uploadedFile;\r\n }\r\n\r\n handleFileChange(file: File | null) {\r\n if (\r\n !file ||\r\n (this.isAudio\r\n ? !file.type.startsWith(\"audio/\")\r\n : file.type !== \"video/mp4\")\r\n ) {\r\n this.uploadedFile = null;\r\n this.displaySnackbar(\r\n this.isAudio\r\n ? this.$t(\"upsess.rejected_file\").toString()\r\n : this.$t(\"upsessv.rejected_file\").toString(),\r\n );\r\n // @ts-ignore\r\n this.$refs.form.reset();\r\n this.locale = this.$i18n.locale;\r\n return;\r\n }\r\n this.uploadedFile = file;\r\n if (!this.name)\r\n this.name = file.name.substring(0, file.name.lastIndexOf(\".\"));\r\n }\r\n\r\n name = \"\";\r\n locale = this.$i18n.locale;\r\n formValid = false;\r\n uploadedFile: File | null = null;\r\n localeItems = [\r\n { text: \"English\", value: \"en\" },\r\n { text: \"Deutsch\", value: \"de\" },\r\n ];\r\n fileFormat: string = this.isAudio ? \"audio/*, *.m4a\" : \"video/mp4\";\r\n fileLabel: string = this.isAudio\r\n ? this.$t(\"sessionsPage.uploadSessionSection.audioFile\").toString()\r\n : this.$t(\"sessionsPage.uploadSessionSection.videoFile\").toString();\r\n\r\n async uploadSession() {\r\n if (!this.formValid) {\r\n const message = this.$t(\"forms.invalidform\").toString();\r\n this.displaySnackbar(message);\r\n return;\r\n }\r\n\r\n if (!this.uploadedFile) {\r\n const message = this.isAudio\r\n ? this.$t(\"forms.audiofile\").toString()\r\n : this.$t(\"forms.videofile\").toString();\r\n this.displaySnackbar(message);\r\n return;\r\n }\r\n\r\n const maxSize = 400000000; // TODO: Move to settings.ts\r\n\r\n if (this.uploadedFile.size > maxSize) {\r\n this.isTooBig = true;\r\n return;\r\n }\r\n\r\n this.dialog = false;\r\n\r\n const data = new FormData();\r\n if (this.isAudio) {\r\n this.displaySnackbar(this.$t(\"upsess.uploading\").toString());\r\n this.isUploading = true;\r\n data.append(\"sessionName\", this.name);\r\n data.append(\"file\", this.uploadedFile);\r\n data.append(\"locale\", this.locale);\r\n await this.uploadSessionAction(data);\r\n this.isUploading = false;\r\n this.displaySnackbar(this.$t(\"upsess.uploadComplete\").toString());\r\n } else {\r\n this.displaySnackbar(this.$t(\"upsessv.uploading\").toString());\r\n this.isUploading = true;\r\n const now = new Date();\r\n const timestamps: Timestamp[] = [];\r\n data.append(\"file\", this.uploadedFile);\r\n data.append(\"title\", this.name);\r\n data.append(\"locale\", this.locale);\r\n data.append(\"recordedAt\", now.toISOString());\r\n data.append(\"timestamps\", JSON.stringify(timestamps));\r\n data.append(\"presentationId\", JSON.stringify(0));\r\n data.append(\"type\", \"video\");\r\n\r\n // send request\r\n const res = (await api.post(\"/api/Recordings\", data, {\r\n headers: { \"Content-Type\": \"multipart/form-data\" },\r\n })) as any;\r\n this.isUploading = false;\r\n this.displaySnackbar(this.$t(\"upsessv.uploadComplete\").toString());\r\n\r\n console.log(\"video recording created\", res);\r\n }\r\n\r\n // reset form\r\n this.name = \"\";\r\n this.uploadedFile = null;\r\n (this.$refs.form as HTMLFormElement).resetValidation();\r\n }\r\n\r\n @Watch(\"$i18n.locale\", { immediate: true })\r\n langChanged() {\r\n this.locale = this.$i18n.locale;\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UploadSession.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UploadSession.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UploadSession.vue?vue&type=template&id=b3614f80&\"\nimport script from \"./UploadSession.vue?vue&type=script&lang=ts&\"\nexport * from \"./UploadSession.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Getter } from \"vuex-class\";\r\nimport UploadSession from \"./UploadSession.vue\";\r\nimport { Component, Prop, PropSync } from \"vue-property-decorator\";\r\nimport { hasPermissions } from \"@/core/utils/auth\";\r\n\r\n@Component({\r\n methods: { hasPermissions },\r\n components: { UploadSession },\r\n})\r\nexport default class UploadAudio extends Vue {\r\n @PropSync(\"isUploadingProp\") isUploading!: boolean;\r\n @Prop({ default: () => false }) mini!: boolean;\r\n @Getter(\"sessions/uploadingSession\") loading!: boolean;\r\n\r\n dialog = false;\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UploadAudio.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UploadAudio.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UploadAudio.vue?vue&type=template&id=cfa8047a&\"\nimport script from \"./UploadAudio.vue?vue&type=script&lang=ts&\"\nexport * from \"./UploadAudio.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c(VTooltip,{attrs:{\"right\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c(VBtn,_vm._g({staticStyle:{\"width\":\"100%\"},attrs:{\"tile\":_vm.mini,\"icon\":_vm.mini,\"elevation\":\"0\",\"color\":\"primary\",\"loading\":_vm.loading,\"disabled\":_vm.loading},on:{\"click\":function($event){_vm.dialog = true}}},on),[_c(VIcon,{attrs:{\"left\":!_vm.mini,\"small\":!_vm.mini}},[_vm._v(\"mdi-upload\")]),(!_vm.mini)?_c('span',[_vm._v(\" \"+_vm._s(_vm.$t(\"upsessv.button\"))+\" \")]):_vm._e()],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t(\"upsessv.title\")))])]),_c('UploadSession',{attrs:{\"is-uploading-prop\":_vm.isUploading,\"dialog-prop\":_vm.dialog,\"is-audio\":false,\"locked\":!_vm.hasPermissions(['upload:video'])},on:{\"update:isUploadingProp\":function($event){_vm.isUploading=$event},\"update:is-uploading-prop\":function($event){_vm.isUploading=$event},\"update:dialogProp\":function($event){_vm.dialog=$event},\"update:dialog-prop\":function($event){_vm.dialog=$event}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Getter } from \"vuex-class\";\r\nimport UploadSession from \"./UploadSession.vue\";\r\nimport { Component, Prop, PropSync } from \"vue-property-decorator\";\r\nimport { hasPermissions } from \"@/core/utils/auth\";\r\n\r\n@Component({\r\n methods: { hasPermissions },\r\n components: { UploadSession },\r\n})\r\nexport default class UploadVideo extends Vue {\r\n @PropSync(\"isUploadingProp\") isUploading!: boolean;\r\n @Prop({ default: () => false }) mini!: boolean;\r\n @Getter(\"sessions/uploadingSession\") loading!: boolean;\r\n\r\n dialog = false;\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UploadVideo.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UploadVideo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UploadVideo.vue?vue&type=template&id=59163939&\"\nimport script from \"./UploadVideo.vue?vue&type=script&lang=ts&\"\nexport * from \"./UploadVideo.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c(VTooltip,{attrs:{\"right\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c(VBtn,_vm._g({staticStyle:{\"width\":\"100%\"},attrs:{\"tile\":_vm.mini,\"icon\":_vm.mini,\"elevation\":\"0\",\"color\":\"primary\",\"loading\":_vm.loading,\"disabled\":_vm.loading,\"link\":\"\",\"to\":_vm.route}},on),[_c(VIcon,{attrs:{\"left\":!_vm.mini,\"small\":!_vm.mini}},[_vm._v(\"mdi-microphone\")]),(!_vm.mini)?_c('span',[_vm._v(\" \"+_vm._s(_vm.label)+\" \")]):_vm._e()],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t(\"upsess.rectip\")))])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Getter } from \"vuex-class\";\r\nimport { Component, Prop } from \"vue-property-decorator\";\r\nimport type { LocaleMessages } from \"vue-i18n\";\r\n\r\n@Component\r\nexport default class RecordSession extends Vue {\r\n @Prop({ default: () => false }) mini!: boolean;\r\n @Prop({ default: \"\" }) label!: string | LocaleMessages;\r\n @Prop({ default: \"\" }) route!: string;\r\n @Getter(\"sessions/uploadingSession\") loading!: boolean;\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecordSession.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecordSession.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RecordSession.vue?vue&type=template&id=a0bff794&\"\nimport script from \"./RecordSession.vue?vue&type=script&lang=ts&\"\nexport * from \"./RecordSession.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VBadge } from 'vuetify/lib/components/VBadge';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListGroup } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(VList,{staticClass:\"text-uppercase\",attrs:{\"nav\":\"\"}},[_c(VListItemGroup,{staticClass:\"font-weight-bold\",attrs:{\"active-class\":\"other--text primary\"},model:{value:(_vm.selectedLink),callback:function ($$v) {_vm.selectedLink=$$v},expression:\"selectedLink\"}},[_c(VListItem,{attrs:{\"link\":\"\",\"to\":\"/dashboard\"}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-view-dashboard\")])],1),_c(VListItemContent,[_vm._v(_vm._s(_vm.$t(\"nav.dash\")))])],1),(_vm.hasPermissions(['public_group:limited', 'public_group:full']))?_c(VListItem,{attrs:{\"link\":\"\",\"to\":\"/groups\"}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-account-supervisor\")])],1),_c(VListItemContent,[_vm._v(_vm._s(_vm.$t(\"nav.groups\")))])],1):_vm._e(),(_vm.hasPermissions(['challenge:default']) && !_vm.isProd)?_c(VListItem,{attrs:{\"link\":\"\",\"to\":\"/goals\"}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-target\")])],1),_c(VListItemContent,[_vm._v(_vm._s(_vm.$t(\"nav.goals\")))])],1):_vm._e(),(_vm.hasPermissions(['analysis:fast', 'analysis:relaxed']))?_c(VListGroup,{attrs:{\"value\":_vm.expandedProp,\"prepend-icon\":\"mdi-chart-bar\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c(VListItemTitle,[_vm._v(\"Sessions\")])]},proxy:true}],null,false,2874809450)},[_c(VListItem,{staticClass:\"ml-12\",attrs:{\"link\":\"\",\"to\":\"/sessions/list\"}},[_c(VListItemTitle,[_vm._v(_vm._s(_vm.$t(\"nav.list\")))])],1),(_vm.hasPermissions(['teacher:default']))?_c(VListItem,{staticClass:\"ml-12\",attrs:{\"link\":\"\",\"to\":\"/sessions/submitted\"}},[_c(VListItemTitle,[_vm._v(_vm._s(_vm.$t(\"nav.submitted\")))])],1):_vm._e()],1):_vm._e(),(_vm.hasPermissions(['seminar:default']) && !_vm.isProd)?_c(VListItem,{attrs:{\"link\":\"\",\"to\":\"/seminars\"}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-account-group\")])],1),_c(VListItemContent,[_vm._v(_vm._s(_vm.$t(\"nav.seminars\")))])],1):_vm._e(),(_vm.hasPrivileges)?_c(VListGroup,{attrs:{\"value\":_vm.expandedProp,\"prepend-icon\":\"mdi-shield\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [(_vm.hasPrivileges)?_c(VListItemTitle,[_vm._v(\" Administration \")]):_vm._e()]},proxy:true}],null,false,4200903072)},[(_vm.hasPrivileges)?_c(VListItem,{staticClass:\"ml-12\",attrs:{\"link\":\"\",\"to\":\"/admin/users\"}},[_c(VListItemTitle,[_vm._v(_vm._s(_vm.$t(\"admin.users\")))])],1):_vm._e(),(_vm.hasPrivileges)?_c(VListItem,{staticClass:\"ml-12\",attrs:{\"link\":\"\",\"to\":\"/admin/videos\"}},[_c(VListItemTitle,[_vm._v(_vm._s(_vm.$t(\"admin.tuts\")))])],1):_vm._e(),(_vm.hasPrivileges)?_c(VListItem,{staticClass:\"ml-12\",attrs:{\"link\":\"\",\"to\":\"/admin/slides\"}},[_c(VListItemTitle,[_vm._v(_vm._s(_vm.$t(\"admin.slides\")))])],1):_vm._e(),(_vm.hasPrivileges && _vm.isDev)?_c(VListItem,{staticClass:\"ml-12\",attrs:{\"link\":\"\",\"to\":\"/company\"}},[_c(VListItemTitle,[_vm._v(\" B2B Dash \"),_c(VBadge,{staticClass:\"ml-2\",attrs:{\"color\":\"secondary\",\"content\":\"dev\"}})],1)],1):_vm._e(),(_vm.hasPrivileges && _vm.isDev)?_c(VListItem,{staticClass:\"ml-12\",attrs:{\"link\":\"\",\"to\":\"/admin/companies\"}},[_c(VListItemTitle,[_vm._v(\" Companies \"),_c(VBadge,{staticClass:\"ml-2\",attrs:{\"color\":\"secondary\",\"content\":\"dev\"}})],1)],1):_vm._e(),(_vm.hasPrivileges && _vm.isDev)?_c(VListItem,{staticClass:\"ml-12\",attrs:{\"link\":\"\",\"to\":\"/admin/products\"}},[_c(VListItemTitle,[_vm._v(\" Products \"),_c(VBadge,{staticClass:\"ml-2\",attrs:{\"color\":\"secondary\",\"content\":\"dev\"}})],1)],1):_vm._e(),(_vm.hasPrivileges && _vm.isDev)?_c(VListItem,{staticClass:\"ml-12\",attrs:{\"link\":\"\",\"to\":\"/admin/coupons\"}},[_c(VListItemTitle,[_vm._v(\" Coupons \"),_c(VBadge,{staticClass:\"ml-2\",attrs:{\"color\":\"secondary\",\"content\":\"dev\"}})],1)],1):_vm._e()],1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Getter } from \"vuex-class\";\r\nimport { Component, PropSync } from \"vue-property-decorator\";\r\nimport { hasPermissions } from \"@/core/utils/auth\";\r\n\r\nimport { isDev, isProd } from \"@/settings\";\r\n\r\n@Component({\r\n methods: { hasPermissions },\r\n computed: {\r\n isDev() {\r\n return isDev;\r\n },\r\n isProd() {\r\n return isProd;\r\n },\r\n },\r\n})\r\nexport default class Menu extends Vue {\r\n @PropSync(\"expanded\", { type: Boolean }) expandedProp!: boolean;\r\n @Getter(\"seminars/ownsSeminar\") ownsSeminar!: boolean;\r\n @Getter(\"profile/getUserHasPrivileges\") hasPrivileges!: boolean;\r\n\r\n selectedLink = \"\";\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Menu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Menu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Menu.vue?vue&type=template&id=17569782&\"\nimport script from \"./Menu.vue?vue&type=script&lang=ts&\"\nexport * from \"./Menu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Getter } from \"vuex-class\";\r\nimport { Component, Prop, PropSync, Watch } from \"vue-property-decorator\";\r\nimport { hasPermissions } from \"@/core/utils/auth\";\r\n\r\nimport LocalStorage from \"@/core/utils/LocalStorage\";\r\nimport {\r\n UploadAudio,\r\n UploadVideo,\r\n RecordSession,\r\n} from \"./components/add-session\";\r\nimport Menu from \"./components/Menu.vue\";\r\n\r\n@Component({\r\n methods: { hasPermissions },\r\n components: { UploadAudio, UploadVideo, RecordSession, Menu },\r\n})\r\nexport default class Navigation extends Vue {\r\n @PropSync(\"isUploadingProp\") isUploading!: boolean;\r\n @Prop({ default: () => true }) showLayout!: boolean;\r\n @Prop({ default: () => false }) isMobile!: boolean;\r\n @PropSync(\"isOpen\") open!: boolean;\r\n @Getter(\"isDarkMode\") isDarkMode!: boolean;\r\n @Getter(\"seminars/currentLogo\") selectedSeminarLogo!: string;\r\n\r\n VRMode = LocalStorage.getVRMode();\r\n\r\n mini = false;\r\n expanded = false;\r\n get imageWidth() {\r\n if (this.isMobile) return \"20%\";\r\n else return \"80%\";\r\n }\r\n get navHeadingHeight() {\r\n const width = \"width:100%;height:\";\r\n if (this.isMobile) return width + \"80px\";\r\n else return width + \"100px\";\r\n }\r\n\r\n get isOnSessions() {\r\n return this.$route.fullPath.startsWith(\"/sessions\");\r\n }\r\n\r\n toggleMini() {\r\n this.mini = !this.mini;\r\n if (this.mini) this.expanded = false;\r\n else if (this.isOnSessions) this.expanded = true;\r\n LocalStorage.setMenuMini(this.mini);\r\n }\r\n\r\n created() {\r\n this.mini = LocalStorage.getMenuMini();\r\n }\r\n\r\n @Watch(\"$route\")\r\n routeChanged() {\r\n if (this.isOnSessions && !this.mini) this.expanded = true;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Navigation.vue?vue&type=template&id=31dfdd2a&scoped=true&\"\nimport script from \"./Navigation.vue?vue&type=script&lang=ts&\"\nexport * from \"./Navigation.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Navigation.vue?vue&type=style&index=0&id=31dfdd2a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"31dfdd2a\",\n null\n \n)\n\nexport default component.exports","import { VFooter } from 'vuetify/lib/components/VFooter';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.VRMode)?_c(VFooter,{staticStyle:{\"padding\":\"20px\"},attrs:{\"app\":\"\",\"inset\":\"\",\"absolute\":\"\"}},[_c('div',{staticClass:\"d-flex\",staticStyle:{\"width\":\"100%\",\"align-items\":\"center\"}},[_c('div',{staticClass:\"mx-2\"}),_c('router-link',{staticClass:\"button-link black--text font-weight-thin\",staticStyle:{\"opacity\":\"0.32\",\"font-size\":\"14px\",\"letter-spacing\":\"0.367px\"},attrs:{\"to\":\"/imprint\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"global.imprint\"))+\" \")]),_c('div',{staticClass:\"mx-2\"}),_c('router-link',{staticClass:\"button-link black--text font-weight-thin\",staticStyle:{\"opacity\":\"0.32\",\"font-size\":\"14px\",\"letter-spacing\":\"0.367px\"},attrs:{\"to\":\"/privacy\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"global.dataprotection\"))+\" \")]),_c('div',{staticClass:\"mx-2\"}),_c('router-link',{staticClass:\"button-link black--text font-weight-thin\",staticStyle:{\"opacity\":\"0.32\",\"font-size\":\"14px\"},attrs:{\"to\":\"/contact\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"onboardingSection.footerLinkContact\"))+\" \")]),_c(VSpacer)],1)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport LocalStorage from \"@/core/utils/LocalStorage\";\r\nimport { Component } from \"vue-property-decorator\";\r\n\r\n@Component\r\nexport default class Footer extends Vue {\r\n VRMode = LocalStorage.getVRMode();\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Footer.vue?vue&type=template&id=0075efd4&\"\nimport script from \"./Footer.vue?vue&type=script&lang=ts&\"\nexport * from \"./Footer.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport Ripple from 'vuetify/lib/directives/ripple';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"progress-wrapper\"},[_c('div',{staticClass:\"progress-container\"},[_c('div',{staticClass:\"header\",on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleMinimized($event)}}},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t(\"tour.box.title\")))]),_c('div',{staticClass:\"minimize\"},[_c(VBtn,{attrs:{\"icon\":\"\",\"color\":\"other\",\"small\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleMinimized($event)}}},[_c(VIcon,[_vm._v(\" \"+_vm._s(_vm.minimized ? \"mdi-chevron-up\" : \"mdi-chevron-down\")+\" \")])],1)],1)]),_c('div',{staticClass:\"progress\",class:{ minimized: _vm.minimized }},_vm._l((_vm.steps),function(s,i){return _c('div',{directives:[{def: Ripple,name:\"ripple\",rawName:\"v-ripple\"}],key:i,staticClass:\"item\",class:{ completed: i < _vm.current, current: i === _vm.current },on:{\"click\":function($event){$event.stopPropagation();return _vm.openTour(s, i)}}},[_c('div',{staticClass:\"circle\"},[(i < _vm.current)?_c(VIcon,{attrs:{\"size\":\"16\",\"color\":\"other\"}},[_vm._v(\" mdi-check \")]):_vm._e()],1),_c('div',{staticClass:\"name\"},[_vm._v(_vm._s(s.title))])])}),0)])]),(_vm.welcomeDialog)?_c('div',{staticClass:\"tour-wrapper welcome-dialog\"},[_c('div',{staticClass:\"tour-dialog\"},[_c('div',{staticClass:\"header\"}),_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t(\"tour.welcome.title\")))]),_c('div',{staticClass:\"body\"},[_vm._v(_vm._s(_vm.$t(\"tour.welcome.body\")))])]),_c('div',{staticClass:\"actions\"},[_c('div',{staticClass:\"spacer\"}),_c('div',{staticClass:\"button\",on:{\"click\":function($event){return _vm.closeWelcomeDialog(true, false)}}},[_c('span',[_vm._v(\"OK\")])]),_c('div',{staticClass:\"margin\"}),_c('div',{staticClass:\"button\",on:{\"click\":function($event){return _vm.closeWelcomeDialog(false)}}},[_c('span',[_vm._v(_vm._s(_vm.$t(\"tour.welcome.btn1\")))])]),_c('div',{staticClass:\"margin\"}),_c('div',{staticClass:\"button\",on:{\"click\":function($event){return _vm.closeWelcomeDialog()}}},[_c('span',[_vm._v(_vm._s(_vm.$t(\"tour.welcome.btn2\")))])])])])]):_vm._e(),(_vm.finishedDialog)?_c('div',{staticClass:\"tour-wrapper\"},[_c('div',{staticClass:\"tour-dialog\"},[_c('div',{staticClass:\"header\"}),_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t(\"tour.finished.title\")))]),_c('div',{staticClass:\"body\"},[_vm._v(_vm._s(_vm.$t(\"tour.finished.body\")))])]),_c('div',{staticClass:\"actions\"},[_c('div',{staticClass:\"spacer\"}),_c('div',{staticClass:\"button\",on:{\"click\":function($event){_vm.finishedDialog = false}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"globals.ok\"))+\" \")])])])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Action, Getter } from \"vuex-class\";\r\nimport { Component, Watch } from \"vue-property-decorator\";\r\n\r\nimport LocalStorage from \"@/core/utils/LocalStorage\";\r\n\r\ntype Step = { title: string; page: string };\r\n\r\n@Component\r\nexport default class TourProgress extends Vue {\r\n @Getter(\"profile/tutorialStep\") tutorialStep!: number;\r\n @Getter(\"profile/showTutorial\") showTutorial!: boolean;\r\n @Action(\"profile/advanceTutorial\") advanceTutorial!: () => void;\r\n @Action(\"profile/completeTutorial\") completeTutorial!: () => void;\r\n\r\n current = 0;\r\n minimized = false;\r\n finishedDialog = false;\r\n welcomeDialog = false;\r\n get steps() {\r\n return [\r\n { title: this.$t(\"tour.box.home\").toString(), page: \"/seminars\" },\r\n { title: this.$t(\"tour.box.dash\").toString(), page: \"/dashboard\" },\r\n //{ title: this.$t(\"tour.box.goals\").toString(), page: \"/goals\" },\r\n { title: this.$t(\"tour.box.recorder\").toString(), page: \"/recorder\" },\r\n {\r\n title: this.$t(\"tour.box.sessions\").toString(),\r\n page: \"/sessions/list\",\r\n },\r\n ] as Step[];\r\n }\r\n toggleMinimized() {\r\n this.minimized = !this.minimized;\r\n }\r\n openCurrent() {\r\n this.openTour(this.steps[this.current], this.current);\r\n }\r\n openTour({ page }: Step, i: number) {\r\n if (this.current !== i) return;\r\n this.$router.push(page + \"?tour=true\");\r\n }\r\n nextStep() {\r\n if (this.current + 1 > this.steps.length) return;\r\n this.current++;\r\n\r\n if (this.current === this.steps.length) {\r\n this.completeTutorial();\r\n this.finishedDialog = true;\r\n } else this.advanceTutorial();\r\n }\r\n justLoggedIn() {\r\n const shouldShow = LocalStorage.getWelcomeDialog();\r\n if (!shouldShow) return;\r\n this.welcomeDialog = true;\r\n }\r\n closeWelcomeDialog(showAgain = true, start = true) {\r\n LocalStorage.setWelcomeDialog(showAgain);\r\n this.welcomeDialog = false;\r\n if (start) this.openCurrent();\r\n }\r\n created() {\r\n window.addEventListener(\"tour-next\", this.nextStep, false);\r\n window.addEventListener(\"user-logged-in\", this.justLoggedIn, false);\r\n }\r\n beforeDestroy() {\r\n window.removeEventListener(\"tour-next\", this.nextStep, false);\r\n window.removeEventListener(\"user-logged-in\", this.justLoggedIn, false);\r\n }\r\n\r\n @Watch(\"tutorialStep\", { immediate: true })\r\n stepChanged() {\r\n this.current = this.tutorialStep;\r\n }\r\n\r\n @Watch(\"$route\", { immediate: true })\r\n routeChanged() {\r\n if (\r\n this.$route.path === this.steps[this.current]?.page &&\r\n this.showTutorial\r\n )\r\n this.openCurrent();\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TourProgress.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TourProgress.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TourProgress.vue?vue&type=template&id=74fa3f7e&\"\nimport script from \"./TourProgress.vue?vue&type=script&lang=ts&\"\nexport * from \"./TourProgress.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c(VDialog,{attrs:{\"width\":\"340\",\"content-class\":\"bottom-right-dialog\"},model:{value:(_vm.supportInfoVisible),callback:function ($$v) {_vm.supportInfoVisible=$$v},expression:\"supportInfoVisible\"}},[_c(VCard,[_c(VToolbar,{attrs:{\"flat\":\"\",\"outlined\":\"\"}},[_c(VToolbarTitle,{staticClass:\"text-h6 font-weight-regular\"},[_vm._v(_vm._s(_vm.supportInfo.name))]),_c(VSpacer),_c(VBtn,{staticClass:\"subtle\",attrs:{\"fab\":\"\",\"small\":\"\",\"plain\":\"\",\"depressed\":\"\",\"icon\":\"\"},on:{\"click\":function($event){_vm.supportInfoVisible = false}}},[_c(VIcon,[_vm._v(\"mdi-close\")])],1)],1),_c(VCardText,{staticClass:\"mt-6\"},[_c('div',{staticClass:\"support-info\"},[_c(VIcon,{staticClass:\"mr-3\",attrs:{\"small\":\"\"}},[_vm._v(\"mdi-email\")]),_c('a',{staticClass:\"primary--text\",attrs:{\"href\":_vm.emailLink}},[_vm._v(_vm._s(_vm.supportInfo.email)+\" \")])],1),_c('div',{staticClass:\"support-info\"},[_c(VIcon,{staticClass:\"mr-3\",attrs:{\"small\":\"\"}},[_vm._v(\"mdi-phone\")]),_c('a',{staticClass:\"primary--text\",attrs:{\"href\":_vm.phoneLink}},[_vm._v(\" \"+_vm._s(_vm.supportInfo.phone))])],1),_c('div',{staticClass:\"support-info\"},[_c(VIcon,{staticClass:\"mr-3\",attrs:{\"small\":\"\"}},[_vm._v(\"mdi-clock\")]),_vm._v(\" \"+_vm._s(_vm.supportInfo.times)+\" \")],1)])],1)],1),_c(VBtn,{staticStyle:{\"z-index\":\"100\"},attrs:{\"fab\":\"\",\"fixed\":\"\",\"bottom\":\"\",\"right\":\"\",\"color\":\"primary\",\"title\":\"Support\"},on:{\"click\":_vm.showSupportInfo}},[_c(VIcon,[_vm._v(\"mdi-help-circle\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Vue, Component } from \"vue-property-decorator\";\r\nimport { Action, Getter } from \"vuex-class\";\r\n\r\nimport { SupportInfo } from \"@/core/models/support-info\";\r\nimport LocalStorage from \"@/core/utils/LocalStorage\";\r\n\r\n@Component({})\r\nexport default class SupportFAB extends Vue {\r\n @Getter(\"tenants/supportInfo\") supportInfo!: SupportInfo;\r\n @Action(\"tenants/getSupportInfo\") getSupportInfo!: (\r\n locale: string,\r\n ) => Promise;\r\n\r\n supportInfoVisible = false;\r\n\r\n async showSupportInfo() {\r\n const locale = LocalStorage.getLocale() ?? \"de\";\r\n await this.getSupportInfo(locale);\r\n this.supportInfoVisible = true;\r\n }\r\n\r\n hidingSupportInfo() {\r\n this.supportInfoVisible = false;\r\n }\r\n\r\n get emailLink() {\r\n return \"mailto:\" + this.supportInfo.email;\r\n }\r\n\r\n get phoneLink() {\r\n return \"tel:\" + this.supportInfo.phone;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SupportFAB.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SupportFAB.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SupportFAB.vue?vue&type=template&id=0cd51a88&scoped=true&\"\nimport script from \"./SupportFAB.vue?vue&type=script&lang=ts&\"\nexport * from \"./SupportFAB.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0cd51a88\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Action, Getter } from \"vuex-class\";\r\nimport { Component, Watch } from \"vue-property-decorator\";\r\n\r\nimport { RoleClaims } from \"@/core/models\";\r\nimport LocalStorage from \"@/core/utils/LocalStorage\";\r\nimport { checkIsMobile } from \"@/components/layout/util\";\r\nimport { AppBar, Footer, Navigation } from \"@/components/layout\";\r\nimport TourProgress from \"@/components/common/TourProgress.vue\";\r\nimport SupportFAB from \"@/components/common/SupportFAB.vue\";\r\nimport { chatSettings } from \"@/settings\";\r\n\r\n@Component({\r\n methods: {\r\n showSupportFAB() {\r\n return chatSettings.showSupportFABInsteadChat;\r\n },\r\n },\r\n components: {\r\n SupportFAB,\r\n AppBar,\r\n Navigation,\r\n Footer,\r\n TourProgress,\r\n },\r\n})\r\nexport default class App extends Vue {\r\n @Getter(\"theme\") theme!: any;\r\n @Getter(\"active\") userActive!: boolean;\r\n @Getter(\"appLoading\") appLoading!: boolean;\r\n @Getter(\"dataLoading\") dataLoading!: boolean;\r\n @Getter(\"showSnackbar\") showSnackbar!: boolean;\r\n @Getter(\"snackbarText\") snackbarText!: boolean;\r\n @Getter(\"dataLoadSuccess\") dataLoadSuccess!: boolean;\r\n\r\n @Getter(\"tenants/freshchatActive\") freshchatActive!: boolean;\r\n @Action(\"tenants/getFreshchatActive\")\r\n getFreshchatActive!: () => Promise;\r\n\r\n @Getter(\"profile/showTutorial\") showTutorial!: boolean;\r\n @Getter(\"profile/loading\") profileLoading!: string;\r\n @Getter(\"profile/getUserEmail\") userEmail!: string;\r\n @Getter(\"profile/permissions\") permissions!: RoleClaims[];\r\n @Getter(\"profile/isAuthenticated\") isAuthenticated!: boolean;\r\n @Getter(\"profile/userEmailVerified\") userEmailVerified!: boolean;\r\n @Getter(\"profile/id\") id!: string;\r\n\r\n @Action(\"sessions/getIncompleteSessions\") getSessions!: () => Promise;\r\n\r\n @Action(\"loadEverything\") loadEverything!: () => Promise;\r\n @Action(\"clearEverything\") clearEverything!: () => void;\r\n\r\n showLayout = true;\r\n isMobile = false;\r\n navOpened = false;\r\n showBanner = false;\r\n\r\n VRMode = LocalStorage.getVRMode();\r\n\r\n toggleNav() {\r\n this.navOpened = !this.navOpened;\r\n }\r\n\r\n get hideNav() {\r\n return !this.permissions?.length;\r\n }\r\n\r\n get backgroundColor() {\r\n return this.theme.background + \"\";\r\n }\r\n get loaded() {\r\n return !this.dataLoading && this.dataLoadSuccess;\r\n }\r\n\r\n get hideFooter() {\r\n console.log(\"hideFooter #path\", this.$route.path);\r\n return this.$route.path.startsWith(\"/sessions\");\r\n }\r\n\r\n refresh() {\r\n this.loadEverything();\r\n }\r\n reload() {\r\n location.reload();\r\n }\r\n clear() {\r\n this.clearEverything();\r\n this.$router.replace(\"/auth/login\");\r\n }\r\n\r\n freshchatDisplayed = false;\r\n freshchatRetryCount = 0;\r\n\r\n freshchatDisplayWidget() {\r\n if (chatSettings.showSupportFABInsteadChat || this.VRMode) return;\r\n\r\n const widget = document.querySelector(\"#fc_frame\");\r\n if (widget)\r\n if (this.freshchatActive) {\r\n // Override styles with delayed bottom transition\r\n if (\r\n ((widget as any).style.display !== \"block\" &&\r\n (widget as any).style.bottom === \"32px\") ||\r\n (widget as any).style.bottom === \"15px\" // freshchat default\r\n ) {\r\n (widget as any).style.transition = \"none\";\r\n (widget as any).style.display = \"block\";\r\n (widget as any).style.bottom = \"-100px\";\r\n (widget as any).style.transition = \"0.5s bottom\";\r\n const timer = setTimeout(() => {\r\n (widget as any).style.bottom = \"32px\";\r\n clearTimeout(timer);\r\n }, 900);\r\n }\r\n } else {\r\n (widget as any).style.display = \"none\";\r\n (widget as any).style.bottom = \"-100px\";\r\n }\r\n }\r\n\r\n freshchatRetryWidgetDisplayed() {\r\n if (chatSettings.showSupportFABInsteadChat || this.VRMode) return;\r\n\r\n const widget = document.querySelector(\"#fc_frame\");\r\n\r\n if (widget)\r\n if (\r\n (widget as any).style.display === \"block\" &&\r\n (widget as any).style.bottom !== \"15px\" // freshchat default\r\n ) {\r\n const timer = setTimeout(() => {\r\n this.freshchatRetryCount++;\r\n this.freshchatRetryCount === chatSettings.chatReadyRetries &&\r\n (this.freshchatDisplayed = true);\r\n clearTimeout(timer);\r\n }, 1000);\r\n }\r\n\r\n return this.freshchatDisplayed;\r\n }\r\n\r\n @Watch(\"$route\", { immediate: true })\r\n routeChanged() {\r\n // hide show layout/banner\r\n console.log(\"routeChanged #path\", this.$route.path);\r\n this.showLayout =\r\n !this.$route.path.startsWith(\"/auth\") &&\r\n !this.$route.path.startsWith(\"/legal\");\r\n this.showBanner = !this.userEmailVerified;\r\n if (\r\n this.$route.path.startsWith(\"/auth\") ||\r\n this.$route.path.startsWith(\"/legal\")\r\n )\r\n this.showBanner = false;\r\n\r\n // update document title\r\n const { name } = this.$route;\r\n document.title = `PREZP${name ? \" | \" + name : \"\"}`;\r\n\r\n // clear user on login page\r\n if (this.$route.path.startsWith(\"/auth\") && this.freshchatActive)\r\n // console.log(\r\n // \"routeChanged - clearing user information for logged out user\",\r\n // );\r\n // we would need to destroy the freshchat widget and to reinitialize it again in order to log out the previous user from freshchat\r\n // the least we can do is to close the freshchat window\r\n this.$freshchat.close();\r\n\r\n // display freshchat if active\r\n if (!chatSettings.showSupportFABInsteadChat) this.freshchatDisplayWidget();\r\n }\r\n\r\n get freshchatReady() {\r\n return this.$freshchat.ready;\r\n }\r\n\r\n // display freshchat if active\r\n @Watch(\"freshchatReady\")\r\n freshchatLoaded() {\r\n if (chatSettings.showSupportFABInsteadChat) return;\r\n\r\n // Poll widget every {chatReadyPollingInterval} and retry {chatReadyRetries} to check if it's really ready,\r\n // additionally wait 1 second for the widget to initialize smoothly with transition\r\n const timer = setInterval(() => {\r\n console.debug(\r\n \"chat ready:\",\r\n this.freshchatDisplayed,\r\n \"retry:\",\r\n this.freshchatRetryCount,\r\n );\r\n this.freshchatDisplayWidget();\r\n this.freshchatRetryWidgetDisplayed();\r\n if (this.freshchatDisplayed) clearInterval(timer);\r\n }, chatSettings.chatReadyPollingInterval);\r\n }\r\n\r\n @Watch(\"profileLoading\", { immediate: true })\r\n userLoaded() {\r\n this.showBanner = !this.userEmailVerified;\r\n if (\r\n this.$route.path.startsWith(\"/auth\") ||\r\n this.$route.path.startsWith(\"/legal\")\r\n )\r\n this.showBanner = false;\r\n }\r\n\r\n @Watch(\"isAuthenticated\")\r\n authStateChange() {\r\n if (this.isAuthenticated) {\r\n if (!this.$sessionHub.isStarted()) this.$sessionHub.start();\r\n if (!this.$notificationHub.isStarted()) this.$notificationHub.start();\r\n } else {\r\n this.$sessionHub.stop();\r\n this.$notificationHub.stop();\r\n }\r\n }\r\n\r\n get snackbarStyle() {\r\n if (this.$route.path === \"/sessions/list\") return \"padding-bottom: 120px;\";\r\n return \"padding-bottom: 0px\";\r\n }\r\n async load() {\r\n const route = window.location.toString();\r\n const parts = route.split(\"//\")[1].split(\"/\");\r\n const path = \"/\" + parts.slice(1).join(\"/\");\r\n await this.loadEverything();\r\n\r\n // todo toggle on\r\n // if (!this.userEmailVerified) this.$router.replace(\"/auth/onboarding\");\r\n if (!this.isAuthenticated) {\r\n if (!path.startsWith(\"/auth\") && !path.startsWith(\"/legal\"))\r\n this.$router.replace(\"/auth/login\");\r\n } else if (path.startsWith(\"/auth\") && !path.startsWith(\"/auth/device\"))\r\n // TODO: Add better handling for device auth when user is already logged in\r\n this.$router.replace(\"/\");\r\n else if (path !== this.$route.path) this.$router.replace(path);\r\n }\r\n\r\n interval: any;\r\n isUploading = false;\r\n\r\n confirmLeave() {\r\n return window.confirm(`${this.$t(\"alerts.beforeLeaveUpload\")}`);\r\n }\r\n confirmStayInUpload() {\r\n return this.isUploading && !this.confirmLeave();\r\n }\r\n\r\n // Alert before tab close, reload or external locations (upload doesn't interrupt on route change)\r\n beforeWindowUnload(e: Event) {\r\n if (this.confirmStayInUpload()) {\r\n e.preventDefault();\r\n // Chrome requires returnValue to be set\r\n e.returnValue = Boolean(\"\");\r\n }\r\n }\r\n\r\n created() {\r\n this.load();\r\n this.isMobile = checkIsMobile();\r\n this.$vuetify.theme.dark = LocalStorage.getDarkMode();\r\n this.interval = setInterval(() => this.getSessions(), 15 * 1000);\r\n window.addEventListener(\"beforeunload\", this.beforeWindowUnload);\r\n }\r\n\r\n beforeDestroy() {\r\n clearInterval(this.interval);\r\n window.removeEventListener(\"beforeunload\", this.beforeWindowUnload);\r\n }\r\n\r\n async mounted() {\r\n // freshchat integration\r\n if (!chatSettings.showSupportFABInsteadChat)\r\n await this.getFreshchatActive();\r\n }\r\n\r\n @Watch(\"id\", { immediate: true })\r\n updateId() {\r\n // console.log(\"updateId #freshchatActive\", this.freshchatActive, this.id);\r\n if (this.freshchatActive) this.$freshchat.setExternalId(this.id);\r\n }\r\n\r\n @Watch(\"userEmail\", { immediate: true })\r\n updateEmail() {\r\n // console.log(\r\n // \"setUserProperties #freshchatActive\",\r\n // this.freshchatActive,\r\n // this.userEmail,\r\n // );\r\n if (this.freshchatActive)\r\n this.$freshchat.setUserProperties({ email: this.userEmail });\r\n }\r\n}\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--15-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--15-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--15-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--15-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=85a29d3a&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=85a29d3a&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import _Vue from \"vue\";\r\n\r\nimport store from \"@/core/store\";\r\nimport { Session } from \"@/core/models\";\r\nimport LocalStorage from \"@/core/utils/LocalStorage\";\r\nimport { HubConnectionBuilder, LogLevel } from \"@aspnet/signalr\";\r\n\r\nimport { apiBaseUrl } from \"@/settings\";\r\n\r\ndeclare module \"vue/types/vue\" {\r\n interface Vue {\r\n $freshchat: any;\r\n $sessionHub: CombinedVueInstance<\r\n _Vue,\r\n object,\r\n { start: () => void; stop: () => void; isStarted: () => boolean },\r\n object,\r\n Record\r\n >;\r\n }\r\n}\r\n\r\nexport default {\r\n install: (Vue: typeof _Vue) => {\r\n let isStarted = false;\r\n const sessionHub = new Vue();\r\n Vue.prototype.$sessionHub = sessionHub;\r\n\r\n // Create connection\r\n const getToken = () => LocalStorage.getAccessToken() || \"\";\r\n const url = `${apiBaseUrl}/session-hub`;\r\n const connection = new HubConnectionBuilder()\r\n .withUrl(url, { accessTokenFactory: getToken })\r\n .configureLogging(LogLevel.Error)\r\n .build();\r\n\r\n // Handle update\r\n const handleUpdate = async (id: number) => {\r\n let list = store.getters[\"sessions/getSessions\"] as Session[];\r\n let session = list.find(x => x.ID === id);\r\n if (session?.Completed) return;\r\n\r\n // perform get\r\n await store.dispatch(\"sessions/getSingleSession\", id);\r\n\r\n list = store.getters[\"sessions/getSessions\"] as Session[];\r\n session = list.find(x => x.ID === id);\r\n if (!session) return;\r\n if (session.Completed) await store.dispatch(\"goals/getGoals\");\r\n };\r\n\r\n // Open connection\r\n const start = async () => {\r\n try {\r\n isStarted = true;\r\n await connection.start();\r\n connection.on(\"SessionStatusUpdate\", async id => {\r\n await handleUpdate(id);\r\n sessionHub.$emit(\"session-status-update\", id);\r\n });\r\n } catch (error) {\r\n if (getToken()) setTimeout(() => start(), 5000);\r\n }\r\n };\r\n\r\n if (getToken()) start();\r\n Vue.prototype.$sessionHub.start = () => start();\r\n Vue.prototype.$sessionHub.stop = async () => {\r\n await connection.stop();\r\n isStarted = false;\r\n console.log(\"HUB: Connection stopped\");\r\n };\r\n Vue.prototype.$sessionHub.isStarted = () => isStarted;\r\n },\r\n};\r\n","import _Vue from \"vue\";\r\nimport store from \"@/core/store\";\r\nimport { Notification, TokenNotification } from \"@/core/models\";\r\nimport LocalStorage from \"@/core/utils/LocalStorage\";\r\nimport { HubConnectionBuilder, LogLevel } from \"@aspnet/signalr\";\r\nimport { apiBaseUrl } from \"@/settings\";\r\n\r\ndeclare module \"vue/types/vue\" {\r\n interface Vue {\r\n $notificationHub: CombinedVueInstance<\r\n _Vue,\r\n object,\r\n { start: () => void; stop: () => void; isStarted: () => boolean },\r\n object,\r\n Record\r\n >;\r\n }\r\n}\r\n\r\nexport default {\r\n install: (Vue: typeof _Vue) => {\r\n let isStarted = false;\r\n const notificationHub = new Vue();\r\n Vue.prototype.$notificationHub = notificationHub;\r\n\r\n // Create connection\r\n const getToken = () => LocalStorage.getAccessToken() || \"\";\r\n const url = `${apiBaseUrl}/notification-hub`;\r\n const connection = new HubConnectionBuilder()\r\n .withUrl(url, { accessTokenFactory: getToken })\r\n .configureLogging(LogLevel.Error)\r\n .build();\r\n\r\n // Handle update\r\n const handleUpdate = async (notification: Notification) => {\r\n console.log(\"Handle Update for \", notification);\r\n store.commit(\r\n \"notifications/addNotification\",\r\n new Notification(notification),\r\n );\r\n };\r\n\r\n // Handle token update\r\n const handleTokenUpdate = async (tokenNotification: TokenNotification) => {\r\n console.log(\"Token Update received\");\r\n const { accessToken, refreshToken } = tokenNotification;\r\n\r\n // Dispatch token update\r\n await store.dispatch(\"profile/updateTokens\", {\r\n accessToken,\r\n refreshToken,\r\n });\r\n await store.dispatch(\"loadEverything\");\r\n };\r\n\r\n // Open connection\r\n const start = async () => {\r\n try {\r\n isStarted = true;\r\n console.log(\"HUB: trying to connect to Hub \" + url);\r\n await connection.start();\r\n console.log(\"HUB: Connection started for hub: \" + url);\r\n\r\n // Register event handlers\r\n connection.on(\"NotificationUpdate\", async notification => {\r\n console.log(\"Notification Hub:\", notification);\r\n await handleUpdate(notification);\r\n });\r\n\r\n connection.on(\r\n \"TokenUpdate\",\r\n async (tokenNotification: TokenNotification) => {\r\n console.log(\"TokenUpdate Hub:\", tokenNotification);\r\n await handleTokenUpdate(tokenNotification);\r\n },\r\n );\r\n } catch (error) {\r\n if (getToken()) setTimeout(() => start(), 5000);\r\n }\r\n };\r\n\r\n if (getToken()) start();\r\n Vue.prototype.$notificationHub.start = () => start();\r\n Vue.prototype.$notificationHub.stop = async () => {\r\n await connection.stop();\r\n isStarted = false;\r\n console.log(\"HUB: Connection stopped\");\r\n };\r\n Vue.prototype.$notificationHub.isStarted = () => isStarted;\r\n },\r\n};\r\n","// Scaffold app\r\nimport \"mutationobserver-shim\";\r\nimport Vue from \"vue\";\r\nimport App from \"./App.vue\";\r\n\r\n// Custom styles\r\nimport \"./styles.scss\";\r\nimport \"./variables.scss\";\r\n\r\n// Middleware\r\nimport router from \"@/core/router\";\r\nimport store from \"@/core/store\";\r\nimport i18n from \"@/core/plugins/i18n\";\r\nimport vuetify from \"@/core/plugins/vuetify\";\r\nimport { SessionHub, NotificationHub } from \"@/core/plugins/signalrconnection\";\r\n\r\n// USE LOCAL COPY OF materialdesignicons TO AVOID VIOLATING DSGVO\r\nimport \"@mdi/font/css/materialdesignicons.min.css\";\r\n\r\n// Quill\r\n// @ts-ignore\r\nimport VueQuillEditor from \"vue-quill-editor\";\r\nimport \"quill/dist/quill.core.css\"; // import styles\r\nimport \"quill/dist/quill.snow.css\"; // for snow theme\r\nimport \"quill/dist/quill.bubble.css\"; // for bubble theme\r\nVue.use(VueQuillEditor);\r\n\r\n// videojs\r\nimport \"video.js/dist/video-js.min.css\";\r\nimport \"videojs-record/dist/css/videojs.record.css\";\r\n\r\n// App settings\r\nimport LocalStorage from \"@/core/utils/LocalStorage\";\r\nimport * as Settings from \"@/settings\";\r\n\r\n// QuestionHub\r\nVue.use(SessionHub);\r\nVue.use(NotificationHub);\r\n\r\nimport Vuelidate from \"vuelidate\";\r\nVue.use(Vuelidate);\r\n\r\nimport VueMasonry from \"vue-masonry-css\";\r\nVue.use(VueMasonry);\r\n\r\nimport VueProgressiveImage from \"vue-progressive-image\";\r\nVue.use(VueProgressiveImage);\r\n\r\nimport VueSimpleMarkdown from \"vue-simple-markdown\";\r\nimport \"vue-simple-markdown/dist/vue-simple-markdown.css\";\r\nVue.use(VueSimpleMarkdown);\r\n\r\nVue.directive(\"hasPermission\", {\r\n bind(el: HTMLElement, binding: DirectiveBinding) {\r\n const { value } = binding;\r\n const userHasPermission = store.getters[\"profile/hasPermission\"];\r\n\r\n if (!userHasPermission(value)) el.style.display = \"none\";\r\n },\r\n});\r\n\r\nVue.directive(\"hasRole\", {\r\n bind(el: HTMLElement, binding: DirectiveBinding) {\r\n const { value } = binding;\r\n const userHasRole = store.getters[\"profile/hasRole\"];\r\n\r\n if (!userHasRole(value)) el.style.display = \"none\";\r\n },\r\n});\r\n\r\nimport VueFreshchat from \"vue-freshchat\";\r\nVue.use(VueFreshchat as any, {\r\n host: \"https://wchat.eu.freshchat.com\",\r\n appToken: \"42065161-57a6-412a-8551-0327fb052824\",\r\n config: {\r\n headerProperty: {\r\n hideChatButton: true,\r\n },\r\n },\r\n});\r\n\r\nimport { DateTime } from \"luxon\";\r\nVue.filter(\"format\", (v: any) => {\r\n let date;\r\n date = DateTime.fromJSDate(v);\r\n if (!date.isValid) date = DateTime.fromISO(v);\r\n return date.toLocaleString((DateTime.DATE_MED as any) as any);\r\n});\r\n\r\nVue.filter(\"formatwithtime\", (v: any) => {\r\n let date: DateTime | null = null;\r\n if (typeof v === \"string\") date = DateTime.fromISO(v);\r\n else date = DateTime.fromJSDate(v);\r\n\r\n // const addedHours = Number(date.toString().split(\"+\")[1].split(\":\")[0]);\r\n // date = date.plus(Duration.fromMillis(addedHours * 60 * 60 * 1000));\r\n\r\n return date.toFormat(\"dd MMM yyyy, HH:mm\");\r\n});\r\n\r\nVue.filter(\"truncate\", (v: string | undefined, maxChar: number = 300) => {\r\n if (!v) return \"\";\r\n if (v.length > maxChar) return v.substr(0, maxChar) + \"...\";\r\n return v;\r\n});\r\n\r\nconst redactedSettings = JSON.parse(JSON.stringify(Settings));\r\n\r\nconsole.debug(\"%cPREZP DEV CONSOLE\", \"font-size: 20px; color: #23b0e6\");\r\nSettings.isLocal && console.debug(LocalStorage.getAccessToken());\r\nconsole.debug(\"%cPARSED SETTINGS:\", \"color: #23b0e6\", redactedSettings);\r\nconsole.debug(\"%cENV VARS:\", \"color: #23b0e6\", process.env);\r\nconsole.log(\"%cv1.2.5\", \"font-size: 40px\");\r\n\r\nimport { Component } from \"vue-property-decorator\";\r\nimport { DirectiveBinding } from \"vue/types/options\";\r\nComponent.registerHooks([\"beforeRouteLeave\"]);\r\n\r\nVue.config.productionTip = false;\r\nnew Vue({\r\n router,\r\n store,\r\n i18n,\r\n vuetify,\r\n render: h => h(App),\r\n}).$mount(\"#app\");\r\n","module.exports = __webpack_public_path__ + \"assets/img/prezp_avatar.3d24f119.jpg\";","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=85a29d3a&prod&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrowserWarning.vue?vue&type=style&index=0&id=76cbe672&prod&lang=scss&scoped=true&\""],"sourceRoot":""}