{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/utils.js","webpack:///./src/mixins/enums.js","webpack:///./src/auth/auth.js","webpack:///./src/components/IconUnixTraversalUp.vue","webpack:///./src/components/IconUnixTraversalUp.vue?7580","webpack:///./src/plugins/vuetify.js","webpack:///./src/modules/home/routes/index.js","webpack:///./src/modules/snapshot/routes/index.js","webpack:///./src/modules/invitations/routes/index.js","webpack:///./src/modules/user/routes/index.js","webpack:///./src/modules/admin/routes/index.js","webpack:///./src/router.js","webpack:///./src/backend.js","webpack:///./src/App.vue","webpack:///./src/logRocketSession.js","webpack:///./src/cookiePopup.js","webpack:///src/App.vue","webpack:///./src/App.vue?d0c5","webpack:///./src/App.vue?3746","webpack:///./src/filters.js","webpack:///./src/registerServiceWorker.js","webpack:///./src/plugins/backend.js","webpack:///./src/main.js","webpack:///./src/App.vue?98cd","webpack:///./src/apis.js","webpack:///./src/mixins/regions.js","webpack:///./src/mixins/pwa.js","webpack:///./src/tourStore.js","webpack:///./src/modules/organization/store/index.js","webpack:///./src/modules/home/store/index.js","webpack:///./src/modules/space/store/index.js","webpack:///./src/modules/instance/store/index.js","webpack:///./src/modules/snapshot/store/index.js","webpack:///./src/modules/application/store/index.js","webpack:///./src/modules/user/store/index.js","webpack:///./src/store.js","webpack:///./src/mixins/analytics.js","webpack:///./src/helpers.js","webpack:///./src/App.vue?838d"],"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","makeShortId","longId","cutoff","notDigitOrChar","initialUnderscore","twoOrMoreUnderscores","finalUnderscore","accents","shortId","toLowerCase","normalize","replace","toLocaleFixed","number","digit","toLocaleString","minimumFractionDigits","maximumFractionDigits","splitEmails","emailString","nonEmailChars","allEmailsArray","split","filteredEmailsArray","filter","email","emailObjectsArray","forEach","status","sortArray","array","sortParameter","how","toString","ascSortedArray","descSortedArray","arrayCopy","Array","from","sort","a","b","toUpperCase","sortDateArray","Date","publicNames","parseURL","urlString","url","includes","org","match","oid","parseInt","space","sid","iid","snid","defaultAccountType","switchSuffixes","some","endsWith","humanFileSize","bytes","si","thresh","Math","abs","units","u","toFixed","bytesToGB","gigabytes","truncateText","text","maxLength","truncatedText","substring","isJson","str","JSON","parse","getObjectValueByKey","objectName","objectValue","keys","find","isDateGreaterThanToday","date","todayStringUTC","toUTCString","todayStringISO","toISOString","todayDateUTC","comparisonDate","isEditorRole","role","isViewerRole","isManagerRole","isObserverRole","isFacultyRole","isAdminRole","isDistributedInstance","instanceName","isMasterInstance","isMasterOrDistributedInstance","isCurrentState","snaphotName","calculateDuration","date2","date1","dt1","dt2","diff","getTime","round","calculateDateDifferenceInDays","firstDateString","secondDateString","diffferenceInTime","differenceInDays","areDatesInOrder","datesString","firstDate","secondDate","calculatePoint","intervalSize","colorRangeInfo","colorStart","colorEnd","useEndAsStart","interpolateColors","dataLength","colorScale","colorPoint","colorRange","colorArray","dateTimeConcat","time","datetime","UTCDatetime","isAllNull","arr","every","element","randomString","len","characters","num","floor","random","truncateMid","substr","ipcOptions","enumsData","tableUserModes","NONE","SERVICE","USER","LEGACY","spaceTypes","EDUCATION_SPACE","RESEARCH_SPACE","VENDOR_SPACE","KNOWLEDGE_BASE_SPACE","spaceVisibilityCodes","PUBLIC_SPACE","AFFILIATE_ONLY_SPACE","FACULTY_ONLY_SPACE","PRIVATE_SPACE","spaceStatus","WAKING","AWAKE","RESTED","RESTING","PRE_RESTING","nuvolosObjectTypes","FILE","FOLDER","TABLE","COLUMN","APPLICATION","APPLICATIONS","SNAPSHOT","INSTANCE","SPACE","ORGANIZATION","userWorkAreas","WORKSPACE","PERSONAL","roleTypes","ORG_MANAGER","ORG_FACULTY","ORG_MEMBER","SPACE_ADMIN","SPACE_MEMBER","INSTANCE_EDITOR","INSTANCE_OBSERVER","INSTANCE_VIEWER","instanceFixedNames","MASTER_INSTANCE","DISTRIBUTED_INSTANCE","orgTokenScopes","MANAGER","FACULTY","MEMBER","orgTokenTypes","XPRESSFEED","folderTypesLabels","WORKSPACE_FILES","PERSONAL_FILES","LIBRARY_FILES","taskStatusTypes","Enum","REJECTED","CREATED","QUEUED","RUNNING","COMPLETED","FAILED","ARCHIVED","CONTAINS_ERRORS","CANCELLED","distributionReasons","MATERIAL_SHARING","ASSIGNMENT","trialTiers","FREE","PAID","tours","PRESTART_MINIMUM_INSTANCE_COUNT","newSpace","ROUTES_BY_TYPE","secretLevels","0","1","2","3","cookiePopupInterval","month","instance","DEFAULT_REDIRECT_CALLBACK","history","replaceState","title","location","pathname","getInstance","useAuth0","onRedirectCallback","redirectUri","origin","Vue","loading","isAuthenticated","user","auth0Client","popupOpen","methods","loginWithPopup","getUser","handleRedirectCallback","log","loginWithRedirect","this","getIdTokenClaims","getTokenSilently","getTokenWithPopup","logout","targetQuery","Intercom","returnTo","created","createAuth0Client","domain","appConfig","VUE_APP_AUTH0_DOMAIN","client_id","VUE_APP_AUTH0_CLIENT_ID","audience","VUE_APP_AUTH0_AUDIENCE","redirect_uri","search","appState","Auth0Plugin","install","options","$auth","render","_vm","_c","_self","staticStyle","attrs","staticRenderFns","component","use","Vuetify","icons","iconfont","values","dropdown","unixTraversalUp","IconUnixTraversalUp","theme","themes","light","primary","secondary","anchor","accent","warning","info","success","dark","customProperties","TheHomeMain","TheHomeDashboard","TheHomeAddEducationSpace","TheHomeAddResearchSpace","TheHomeAddDatasetSpace","TheHomeOrganizationUserManagement","TheHomeOrganizationConfig","TheHomeOrganizationTokens","TheHomeEducationSpaceList","TheHomeResearchSpaceList","TheHomeDatasetSpaceList","Steppers","path","components","default","children","notifications","TheSnapshotMain","TheSnapshotTableTabset","TheSnapshotApplist","TheSnapshotImagelist","TheSnapshotAddSnapshot","TheSnapshotFileDiff","TheSnapshotDistribute","TheSnapshotOverview","TheSnapshotSideBar","TheSnapshotAddAppFinalHint","TheSnapshotDistributions","TheSnapshotAssignments","Assignment","VimeoVideos","AppStore","AppScale","TheSpaceDelete","TheSpaceUserManagement","TheSpaceConfiguration","TheInstanceSnapshotList","redirect","InvitationIndex","InvitationAccept","TrialIndex","SignupIndex","SignupHome","SignupOptions","SignupSuccess","TrialProvider","SignupProvider","InvitationPassword","InvitationHome","InvitationAuthenticated","InvitationProvider","InvitationToLogin","TheUserMain","TheUserTasks","TheUserRequests","TheUserSettings","TheUserResourcesAndUsage","MonitoringDashboard","TheUserProfile","TheUserSSHKeys","TheUserSecrets","TheUserEnvVars","TheUserSnowflakeTokens","TheUserDropboxLink","TheUserApiAccess","TheAdminMain","TheAdminOverview","TheLoginPage","FourOFour","TheLoginLandingPage","Router","baseRoutes","routes","concat","homeRoutes","snapshotRoutes","invitationRoutes","userRoutes","adminRoutes","router","beforeEach","to","next","indexOf","query","targetUrl","fullPath","baseURL","VUE_APP_ENV","VUE_APP_BACKEND_URL","localStorage","getItem","$axios","axios","headers","axiosRetry","retries","retryDelay","retryCount","interceptors","config","accessToken","Authorization","metadata","startTime","response","endTime","duration","endpoint","responseURL","method","feStart","feRuntime","beRuntime","warn","pop","LogRocket","captureException","extra","store","dispatch","dialogTitle","dialogText","dialogAction","test","regionCodeFromErrorMessage","regionsMixin","changeRegionURL","description","staticClass","snackBarIcon","domProps","forcePWAUpdate","on","callback","initLogRocketSession","init","network","requestSanitizer","body","app_pwd","stringify","password","identifySession","id","uid","identify","displayCookiePopup","interval","sessionStorage","popupShownLastTime","shownLast","DateTime","fromISO","isValid","now","shownNext","plus","show","mixins","statusUpdater","showUsePwaTrigger","showUpdatePwaTrigger","tourEvents","beforeLeave","enter","height","afterEnter","dismiss","show_install_pwa","dismissUsePwa","update","Shepherd","evt","mounted","app_id","snackBarText","snackBarLabel","snackBarTimeout","snackBarButtonOutline","beforeDestroy","destroyed","clearInterval","computed","isDashboard","showUpdatePwa","mapGetters","mapState","parseCurrentUrl","fetchingSpaceInstancePrerequisiteLoaded","watch","handler","immediate","$route","startFirstApp","hide_default_launcher","isSpaceAdmin","is_space_admin","currentSpaceType","has_research_space","has_edu_space","userInfo","user_id","user_hash","user_type","is_trial_user","has_analytics_data","fetchingUserInfo","show_welcome_tour","show_space_tour","show_snapshot_restore_guide","seen_grading_tour","analytics_opt_in","TheToolbar","GlobalDialog","errorCaptured","filters","formatTimestamp","timestamp","toLocaleTimeString","filterName","wb","navigator","Workbox","addEventListener","reload","register","$workbox","sync","plugins","isError","isProduction","$isError","$isProduction","$appConfig","AsyncComputed","axiosPlugin","VueClipboard","autoSetContainer","VueMask","VueKatex","globalOptions","delimiters","left","right","display","strict","throwOnError","preProcess","replaceAll","productionTip","dt","toFormat","VUE_APP_DATETIMEFORMAT","VUE_APP_DAYFORMAT","seconds","dur","Duration","fromObject","VUE_APP_DURATIONFORMAT","vuetify","h","App","$mount","delay","ms","fetchAppStartupSchedules","apiString","setAppStartupSchedule","aoid","startupTime","nodePool","stopAfterMinutes","startup_time","node_pool","stop_after_minutes","post","updateAppStartupSchedule","ssid","patch","deleteAppStartupSchedule","delete","fetchTask","taskId","task","finished","fetchVimeoVideos","regions","domainPrefix","enum","production","newRegionCode","oldURL","newRegion","urlToReplace","getCurrentRegionEnum","cr","getRegionCodeFromEnum","enumVal","region","getIsProduction","currentRegion","deferredPrompt","prompt","ret","outcome","moveTo","resizeTo","screen","availWidth","availHeight","isPWA","matchMedia","matches","tourStore","namespaced","state","stageTourStarted","stageAppTourStarted","stageTableTourStarted","mutations","val","actions","getters","orgStore","orgUsers","orgTokens","orgInvitations","spacesWithPrimarySnapshots","fetchingSpaces","fetchingOrgUsers","fetchingOrgTokens","fetchingOrgInvitations","fetchingInvitations","educationSpaces","researchSpaces","datasetSpaces","recentEducationSpaces","recentResearchSpaces","recentDatasetSpaces","setUsers","users","setOrgInvitations","invitations","setTokens","tokens","setFetching","fetchingObject","fetchingStatus","setSpacePrimarySnapshots","snapshotData","orgSpaces","lock_mode_name","dataSpaces","space_type","eduSpaces","resSpaces","fetchOrgSpaces","context","commit","max_snapshots","userHasSpaceAdminRole","space_role","root","catch","finally","fetchOrgUsers","fetchOrgTokens","fetchOrgInvitations","children_instance_invitations","children_space_invitations","orgLongName","rootState","route","params","userOrgs","long_id","isOrgManager","currentOrgData","currentOrg","isOrgFaculty","orgTablesStatus","tables_enabled","homeStore","createSpaceAndApp","operationSelected","step","spaceType","skipAppCreation","lastStepCompleted","updateCreateSpaceAndApp","operationSelectedVal","stepVal","skipAppCreationVal","lastStepCompletedVal","spaceTypeVal","resetCreateSpaceAndApp","newVal","getDefaultState","currentSpace","spaceInstances","spaceUsers","spaceBundles","fetchingSpaceBundles","spaceInvitations","distributedInstanceId","fetchingInstances","invitationFromSnapshotView","fetchingSpaceUsers","fetchingSpaceInvitations","mappedResources","fetchingApplications","applicationFamilies","applicationVersions","spaceStore","setCurrentSpace","resetSpaceState","assign","setInstances","instances","setDistributedInstanceId","setSpaceInvitations","setSpaceBundles","bundles","setMappedResources","setApplicationFamilies","families","setApplicationVersions","versions","setFetchingApplications","distributedInstance","short_id","fetchSpaceInstances","master","distributed","nonMasterAndDistributed","sortedNonMasterAndDistributed","finalInstanceList","fetchSpaceUsers","fetchCurrentSpace","currentRoute","fetchSpaceBundles","fetchSpaceInvitations","fetchMappedResources","fetchApplications","fetchingFamilies","fetchingVersions","spaceLongNameById","space_long_id","spaceDescriptionById","space_description","spaceArchiveTimestampById","space_archival_timestamp","spaceArchivalDateById","space_archive_by_date","spaceCreationDateById","space_creation_timestamp","spaceArchivalDate","spaceCreationDate","isSpaceArchived","currentSpaceVisibility","space_visibility_type","currentSpaceArchived","currentSpaceData","spaceData","assignmentsExist","distributionBundles","bundle","bundle_type_name","privateInstances","isTrialSpace","snapshot_location","applicationTags","allTags","version","tags","tagType","tagNames","tagNamesArr","isArray","tagName","imid","entries","captureMessage","isSpaceRested","resting_state","isSpacePreResting","isSpaceResting","isSpaceWaking","isSpaceInAnyRestState","isSpaceInAnyRestStateExceptPreResting","instanceSnapshots","instanceUsers","canSelectAndDistributeSnapshot","fetchingSnapshots","snapshotPollingInterval","instanceStore","resetInstanceState","setSnapshotPollingInterval","setSnapshots","snapshots","snapshot","setInterval","fetchSnapshots","sortByIdDesc","fetchInstanceSnapshots","fetchInstanceUsers","updateCreateAndInviteStep","resetCreateAndShareData","currentInstanceDescription","instanceLongNameById","instanceRearchiveAfterTimestamp","rearchive_after_timestamp","isInstanceEditor","currentInstance","isInstanceViewer","isInstanceArchived","filesystem_prefix","isInstanceObserver","masterInstance","canDeleteInstanceOrEditFields","undeletableInstance","filteredInstance","currentFiles","currentFolder","currentTables","currentColumns","previewColumnHeaders","previewData","selectedTableForPreview","filesFetching","tablesFetching","columnsFetching","previewFetching","applicationsFetching","applicationImageFetching","restoringSnapshot","pathArray","currentTreeLevel","applications","fileAreaType","fileOpened","imageList","stagingObjects","files","tables","lastUploadedFiles","showUploadSnackbar","currentFileUnderRevisionData","fid","previousVersions","fetchingFileVersions","snapshotQueries","queryPreviewData","tableData","sql","qid","latestQuery","fullQueryData","tablesPath","filePollingInterval","snapshotQuota","fetchingSnapshotQuota","canIncreaseQuota","exportedImages","exportedImagesFetching","snapshotStore","resetSnapshotState","setCurrentFiles","setCurrentFolder","setSelectedTableForPreview","table","clearCurrentFiles","setFilesPollingInterval","setSnapshotRestoreState","setFetchingFileVersions","clearFilePollingInterval","emptyTableData","clearQueryData","setFullQueryData","queryFiles","setTablesPath","setSnapshotQuotaData","setCanIncreaseQuota","setCurrentTables","setQueryPreviewData","setSnapshotQueries","queryData","sortBtQid","setCurrentColumns","sortedCols","setCurrentFileUnderRevisionData","prevData","setPreviewData","updateImageNamesList","setPathArray","appendPathArray","dir","setTreeLevel","level","setApplications","apps","setExportedImages","images","setFetchingSnapshotQuota","fetchingType","setFolderType","setOpenedFile","aid","set","emptyStageInSessionStorage","stage","setItem","setStagedObjectsFromStore","updateStagedObjectedInStore","updateStagingObjects","itemType","newItems","updateMode","fids","map","file","filteredArray","tids","tid","aids","application","updateLastUploadedFiles","newData","setShowUploadSnackbar","clearStagingObjects","quota","rootGetters","bytes_pcent","$store","fetchSnapshotQuotaData","extendedApps","app","fetchExportedImages","fetchQueries","fetchFullQueryData","restoreSnapshotToCurrentState","createBackup","put","auto_backup","tkid","openDirectory","nextDirectory","fetchCurrentFilesWithHistory","findIndex","currentPath","join","local_path","area","fetchCurrentFiles","setFetchingStatus","is_active","is_sysadmin","localPath","apiURL","currentSnapshotData","fetchCurrentTables","fetchColumnAndPreviewData","tableName","fetchTablePreviewData","header","align","fetchCurrentColumns","fetchCurrentImages","snapshotLongNameById","snapshotDescriptionById","snapshotFilesystemPrefixById","isColdStorage","backup_location","isDevelopment","developmentSnapshot","nonDevelopmentSnapshots","currentFileLocalPath","isStagingEmpty","appLongNameById","tableShortNameById","appStore","userApps","deploymentStatus","recentApps","appType","fetchingApps","lastStartedSessionId","stoppedSessions","startingApp","asOfTime","nodePools","fetchingNodePools","setDeploymentStatus","deployments","appsSortedById","setUserApps","setRecentApps","setNodePools","pools","setAppType","setFetchingNodePools","setLastStartedSessionId","sessionId","addStoppedSession","setStartingApp","starting","fetchAllUserApps","fetchNodePools","sortBy","fetchRecentApps","minIid","complexId","space_id","instance_id","Infinity","updateDeploymentStatus","withCredentials","startApp","appUsername","appPwd","dontWaitTask","launchedApp","scaleFactor","devicePixelRatio","innerWidth","innerHeight","app_type","shared","dpi","screen_width","screen_height","app_username","grading","mount_handback_to_files_for_hid","handback_hid","mount_handback_for_bid","handback_bid","taskResult","meta_data","stopApp","session_id","setCurrentAppType","runningDeployments","replicas","available_replicas","startingDeployments","stoppedApps","runningAppsIds","appStatus","matchingDeployments","userStore","sshKeys","snowflakeTokens","fetchingSSHKeys","isAccountManager","userTasks","fetchingAvailableResourcePools","availableResourcePools","defaultResourcePool","userRequests","own","toApprove","fetchingUserTasks","totalTasks","runningTasks","maxTaskPerPage","fetchingUserOwnRequests","fetchingUserToApproveRequests","userTaskPollingInterval","selectedResourcePool","selectedResourcePoolHpcUsers","fetchingResourceDescription","fetchingResourceBalanceCurrentMonth","fetchingResourceBalance","fetchingResourceBalanceBreakdown","fetchingResourcePoolResources","fetchingResourcePoolUsers","fetchingResourcePoolHpcUsers","fetchingDefaultResourcePool","signupUserDetails","fetchingSnowflakeTokens","settingTableUserMode","setSSHKeys","setAccountManagerStatus","setSelectedResourcePool","Number","setSelectedResourcePoolHpcUsers","newval","setFetchingSSHKeys","setResourcePoolUsersFetching","setResourcePoolHpcUsersFetching","setResourcePoolResourcesFetching","setResourceDescriptionFetching","setResourceBalanceCurrentMonthFetching","setResourceBalanceFetching","setResourceBalanceBreakdownFetching","setSnowflakeTokens","setResourcePoolDataFetching","setAvailableResourcePoolData","orderBy","setResourcePoolFetching","fetchingResourcePools","setDefaultResourcePool","setUserTasks","tasks","setUserOwnRequests","requests","setUserToApproveRequests","setFetchingUserTasks","setTotalTasks","setRunningTasks","setMaxTaskPerPage","max","setFetchingUserOwnRequests","setFetchingUserToApproveRequests","setUserTaskPollingInterval","setSignupUserDetails","details","setFetchingDefaultResourcePool","setFetchingSnowflakeTokens","setSettingTableUserMode","fetchSSHKeys","fetchAvailableResourcePoolData","fetchDefaultResourcePool","fetchSnowflakeTokens","fetchAccountManagerStatus","fetchResourcePoolHpcUsers","rpid","fetchUserTasks","URLSearchParams","count","max_per_page","fetchRunningUserTasks","fetchUserOwnRequests","fetchUserToApproveRequests","setTableUserMode","sf_user_type","validRequests","valid","isResourcePoolManager","pool","is_rp_manager","Vuex","Store","snackBar","globalDialog","globalDialogTitle","globalDialogText","globalDialogAction","globalDialogTaskId","currentOrgUsers","fetchingOrgs","userMetadata","snackBarTimer","openOrgSelectorDialog","trialInfo","bundleCreated","dimmedSidebar","showSnackBar","showGlobalDialog","setSnackBarTimer","timer","resetSnackBarTimer","setUserOrgs","setOpenOrgSelectorDialog","setCurrentOrgData","hideSnackBar","hideGlobalDialog","setFetchingUserInfo","setUserInfo","setUserMetadata","properties","user_metadata","setTrialInfo","setBundleCreated","toggleSidebarBrightness","fetchUserOrgs","orgData","latestOrg","oids","latestOrgData","getTrialInfo","getUserInfo","invid","analyticsMixin","isAnalyticsEnabled","userPreference","override","cleanUpData","sendAnalyticsEvent","eventName","eventData","track","sendErrorEvent","obj"],"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,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,YAAYA,GAAW,MAIn2Q,SAASyB,EAAoB1B,GAG5B,GAAG4B,EAAiB5B,GACnB,OAAO4B,EAAiB5B,GAAUgC,QAGnC,IAAIC,EAASL,EAAiB5B,GAAY,CACzCK,EAAGL,EACHkC,GAAG,EACHF,QAAS,IAUV,OANAlB,EAAQd,GAAUW,KAAKsB,EAAOD,QAASC,EAAQA,EAAOD,QAASN,GAG/DO,EAAOC,GAAI,EAGJD,EAAOD,QAKfN,EAAoBS,EAAI,SAAuBlC,GAC9C,IAAImC,EAAW,GAIXC,EAAY,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,GACr1GR,EAAmB5B,GAAUmC,EAASvB,KAAKgB,EAAmB5B,IACzB,IAAhC4B,EAAmB5B,IAAkBoC,EAAUpC,IACtDmC,EAASvB,KAAKgB,EAAmB5B,GAAW,IAAIqC,SAAQ,SAASC,EAASC,GAIzE,IAHA,IAAIC,EAAO,eAAiB,GAAGxC,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,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,YAAYA,GAAW,OAC30QyC,EAAWhB,E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","file":"static/js/app.0a9f507f.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 + \"static/js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-06927bf2\":\"f63f5e97\",\"chunk-084deff5\":\"1b210a65\",\"chunk-14fccbf6\":\"3f04a8f5\",\"chunk-15b4b67a\":\"f6156968\",\"chunk-26338444\":\"1679e7a2\",\"chunk-2d0b303e\":\"5961bf2c\",\"chunk-2d0b32d7\":\"36017bd3\",\"chunk-2d0e6107\":\"5f90653a\",\"chunk-2d0f069b\":\"d374df42\",\"chunk-2d138d9c\":\"5b4fe5f2\",\"chunk-2d207998\":\"94831992\",\"chunk-2d207ba8\":\"be987a98\",\"chunk-2d2091fb\":\"c1ad07dc\",\"chunk-2d21d488\":\"08bc7c42\",\"chunk-2d21d825\":\"4f93f3e1\",\"chunk-2d2297aa\":\"3c11fac1\",\"chunk-2d22e0fd\":\"d41cf9d2\",\"chunk-2e6a5208\":\"c66eb4ba\",\"chunk-33ab387a\":\"44000b88\",\"chunk-19b15129\":\"f250fb4b\",\"chunk-3b3b8a9d\":\"b9c51eb7\",\"chunk-544c9d46\":\"27040d7d\",\"chunk-6df65fa7\":\"3e7974d9\",\"chunk-3808b084\":\"93f7e47d\",\"chunk-44458d86\":\"5d03652b\",\"chunk-464b0c7a\":\"5ba2100d\",\"chunk-0635b8e1\":\"4e7e3047\",\"chunk-27f44430\":\"07bac6de\",\"chunk-2bb7d407\":\"84a5f64a\",\"chunk-55ec0266\":\"2d61bf69\",\"chunk-6bf0afaa\":\"f874ca90\",\"chunk-48cb7d18\":\"48ef7793\",\"chunk-c364eb48\":\"da278b31\",\"chunk-4dc7f1a4\":\"58c92bad\",\"chunk-53d58853\":\"cb17a7c6\",\"chunk-5937662f\":\"184f19a3\",\"chunk-65b0f1b4\":\"a336c0f0\",\"chunk-249bebab\":\"08931279\",\"chunk-430d6150\":\"c5d21499\",\"chunk-692681af\":\"6e1f183e\",\"chunk-23fb2168\":\"6567c284\",\"chunk-36f15415\":\"7eac1d26\",\"chunk-404a0105\":\"8974b9d3\",\"chunk-4b190cd9\":\"9f99465f\",\"chunk-6d46e3e3\":\"ab3158d4\",\"chunk-7a951cbe\":\"12976009\",\"chunk-7daafc93\":\"3005a51b\",\"chunk-80775ed4\":\"c06d368f\",\"chunk-9566b430\":\"de78fc87\",\"chunk-bb7a4eea\":\"78789d92\",\"chunk-f74817b4\":\"2946457f\",\"chunk-1afb4850\":\"6f693536\",\"chunk-30a941bc\":\"ed1d70e2\",\"chunk-4aec9d00\":\"b96c9688\",\"chunk-51e5c0d8\":\"03a12d00\",\"chunk-bf3ad5e4\":\"7fcdb671\",\"chunk-1e3dabd9\":\"5166daee\",\"chunk-2d0b2d87\":\"5d74b1b7\",\"chunk-bfa68920\":\"24082de9\",\"chunk-52772c63\":\"96446a69\",\"chunk-5ed51516\":\"efd7c1ac\",\"chunk-7e0de2f4\":\"dbe20c26\",\"chunk-71f029ac\":\"55d1b125\",\"chunk-0d9b4bf6\":\"679887ad\",\"chunk-13929efa\":\"e672deb1\",\"chunk-22c9bd3e\":\"fa7d75fe\",\"chunk-24f01d0a\":\"b80f9ddd\",\"chunk-408e2f35\":\"e989e040\",\"chunk-540897bf\":\"da3001d7\",\"chunk-584f9fe8\":\"7eebbe82\",\"chunk-7652ce3f\":\"3d2b85c6\",\"chunk-b8dc3ca4\":\"516b08ed\",\"chunk-f49543b4\":\"7b7d9261\",\"chunk-f4fe2618\":\"32d1a202\",\"chunk-fe45aeda\":\"125df627\",\"chunk-5394101d\":\"edd02670\",\"chunk-44c34ff6\":\"ed7709c9\",\"chunk-193200e5\":\"4bb8b321\",\"chunk-1130cfd0\":\"6f2a0212\",\"chunk-1da892bc\":\"491281d8\",\"chunk-3bdf2736\":\"570cb45c\",\"chunk-75b757bf\":\"b2680384\",\"chunk-279561ba\":\"1756898c\",\"chunk-5db39dca\":\"ac1a0c75\",\"chunk-318319f8\":\"1265de10\",\"chunk-66d79fda\":\"5e2522ac\",\"chunk-3f8ace94\":\"f0863149\",\"chunk-58c9b62a\":\"ebf72aeb\",\"chunk-d613fdb8\":\"fdeff08c\",\"chunk-15249f7b\":\"e34784c6\",\"chunk-2967be9a\":\"12a9836d\",\"chunk-e756d718\":\"251ee4a2\",\"chunk-5608611c\":\"9e2ff3db\",\"chunk-15d44989\":\"9eb000c3\",\"chunk-1bbe60d7\":\"1b058870\",\"chunk-5ef1d240\":\"68dc89e7\",\"chunk-749434c6\":\"7b94262a\",\"chunk-4a9d9f50\":\"059b916d\",\"chunk-01e57db8\":\"c91f461a\",\"chunk-171feeaa\":\"cdda5720\",\"chunk-2d2183a2\":\"aabacac4\",\"chunk-5d3fd560\":\"f3bca73c\",\"chunk-2d0dd401\":\"fd871bc8\",\"chunk-a5b84402\":\"01f114df\",\"chunk-79b40110\":\"3299dda5\",\"chunk-27e0e206\":\"f07696d7\",\"chunk-5f42f49e\":\"37f996dc\",\"chunk-7065a0d9\":\"f52d2ed0\",\"chunk-2d0b61f4\":\"7cbb0bd2\",\"chunk-2d0cfa4a\":\"645e678e\",\"chunk-2d22cc82\":\"4e95fa61\",\"chunk-2d0b6c9d\":\"5ec45343\",\"chunk-2745dbc4\":\"d9451d7c\",\"chunk-b33a481a\":\"1b716f06\",\"chunk-06000f2e\":\"89480ced\",\"chunk-2d0a3cd7\":\"d3eb0623\",\"chunk-2d0db22d\":\"85d8709c\",\"chunk-47646d9d\":\"39492f9d\",\"chunk-2d216214\":\"434dc5a0\",\"chunk-043b0313\":\"dbc5dc57\",\"chunk-470e90c8\":\"db47f4bb\",\"chunk-60124e63\":\"26d04096\",\"chunk-6a2a5cd9\":\"aaa0f607\",\"chunk-2d0be2ca\":\"04285385\",\"chunk-2d213b65\":\"02a00612\",\"chunk-5539c4a4\":\"41295aaa\",\"chunk-06fa3bfe\":\"5fdc242b\",\"chunk-6d179d02\":\"9592a778\",\"chunk-9ea9aff8\":\"f2978fc9\",\"chunk-04c6bc84\":\"84d0efe6\",\"chunk-b2b35cae\":\"ad0929b6\",\"chunk-587b0e9c\":\"ca65dc27\",\"chunk-1e3630f9\":\"9c413432\",\"chunk-3a961f6e\":\"83fd3363\",\"chunk-7675a32f\":\"c19e7676\",\"chunk-f397e102\":\"66826b29\",\"chunk-f2c9bf66\":\"2c62882e\",\"chunk-49453cd2\":\"219a2fbf\",\"chunk-d570905a\":\"35639775\",\"chunk-0c7d4257\":\"fb577c79\",\"chunk-2d213371\":\"2da5d2b8\",\"chunk-40acf738\":\"05c20b87\",\"chunk-8553acaa\":\"570d03a3\",\"chunk-e540ed1e\":\"4092db38\",\"chunk-6287b32a\":\"29c289c8\",\"chunk-f821f8c4\":\"ea40dfb4\",\"chunk-2d2178ea\":\"3e8134b1\",\"chunk-d8e39e98\":\"66237492\",\"chunk-1eb95c7b\":\"97cdc6a3\",\"chunk-2c3f879a\":\"c5358ca3\",\"chunk-bab4a066\":\"1a53f6ff\",\"chunk-4b3b8fe7\":\"341c7a5f\",\"chunk-f070cd1e\":\"44c9a7e1\",\"chunk-49917549\":\"a6f010a1\",\"chunk-0eafc84b\":\"f1dc130a\",\"chunk-b57cc00e\":\"a037842f\",\"chunk-144c5182\":\"d2a736d3\",\"chunk-da56d58e\":\"484b9bcf\",\"chunk-7bb17a0d\":\"3ef79267\",\"chunk-23119d88\":\"5528abbf\",\"chunk-2936cb04\":\"d02be26d\",\"chunk-2d0c45e5\":\"cef80a7b\",\"chunk-2d0c8fe8\":\"08c91977\",\"chunk-2d0e141c\":\"9c1b5ad0\",\"chunk-2d208dfd\":\"17da5cc9\",\"chunk-3cecfe4a\":\"4e756246\",\"chunk-547bb159\":\"d43a0d8d\",\"chunk-688e73c8\":\"ada9707b\",\"chunk-70ca4487\":\"6cd86c96\",\"chunk-3826bd56\":\"3fc22406\",\"chunk-66691c50\":\"b2c772a7\",\"chunk-8e27ee94\":\"79d3fbca\",\"chunk-139b05fb\":\"6a92b28d\",\"chunk-2a53cb96\":\"f098595a\",\"chunk-5d3a0bf1\":\"62850988\",\"chunk-7ae2817f\":\"7a54ece1\",\"chunk-0bc483ca\":\"26107efc\",\"chunk-9791b0e0\":\"ba948f6e\",\"chunk-3c21a756\":\"7aebdaf7\",\"chunk-061af204\":\"6995a847\",\"chunk-42ec4794\":\"c188d148\",\"chunk-dc153fcc\":\"02945a61\",\"chunk-89bd73ec\":\"a47836e3\",\"chunk-bcf21db8\":\"7395dc4e\",\"chunk-0d10a30e\":\"cfe41743\",\"chunk-39ec843a\":\"6de70466\",\"chunk-dd8a3844\":\"b2f7e87a\",\"chunk-2ad52252\":\"81f89e2b\",\"chunk-2d237c66\":\"141a40ef\",\"chunk-583847e6\":\"30b5a393\",\"chunk-72f73514\":\"70333142\",\"chunk-c26dfc40\":\"44771cfa\",\"chunk-345dd18b\":\"0d156989\",\"chunk-2d0dcff4\":\"d2b4a526\",\"chunk-2d0a2db1\":\"ebb88115\",\"chunk-2d0ab4d9\":\"ab40247b\",\"chunk-2d0d0595\":\"e1691207\",\"chunk-2d213195\":\"e23a05ad\",\"chunk-7b025616\":\"ceaad759\",\"chunk-2d22fd25\":\"7ee83764\",\"chunk-3efdcaba\":\"2aa2850b\",\"chunk-2592f299\":\"8755b89d\",\"chunk-73821c1b\":\"5f727c76\",\"chunk-ec1ee908\":\"fd7e9195\",\"chunk-2d230fb4\":\"b5957fe7\",\"chunk-75a6b812\":\"d336c797\",\"chunk-7bc6c144\":\"0ecbee80\",\"chunk-4605e79a\":\"e8f88af3\",\"chunk-8cbfedfe\":\"5efa46ec\",\"chunk-2d230c09\":\"b4e9fd0d\",\"chunk-2d0c95b3\":\"d40a7970\",\"chunk-6fa76e61\":\"992f467a\",\"chunk-53c3ce5d\":\"d34c5964\",\"chunk-2d0e9b71\":\"03095bb3\",\"chunk-2d21da58\":\"c52d7d8e\",\"chunk-2d228c86\":\"c6de7ac4\",\"chunk-2d229431\":\"54e9773a\",\"chunk-2d0e2664\":\"8b66e54c\",\"chunk-68936f7e\":\"e148963d\",\"chunk-33d138c6\":\"565f318e\",\"chunk-dc5a3b3c\":\"f1d8dc62\",\"chunk-30940b15\":\"6a6ecf6c\",\"chunk-4a6f4d59\":\"80574f70\",\"chunk-6837ed02\":\"5d1f1f99\",\"chunk-9eefa2ac\":\"3d16f423\",\"chunk-2d0de94f\":\"e3ddc910\",\"chunk-2d208ffd\":\"fdc5ee7f\",\"chunk-2d230696\":\"6cc68163\",\"chunk-2d2376e5\":\"7b76af05\",\"chunk-0b65ffb6\":\"b013156c\",\"chunk-2d0a3577\":\"6d7c8e42\",\"chunk-2d0a43df\":\"edc4989f\",\"chunk-2d0aa90c\":\"07c7ea69\",\"chunk-2d0aab07\":\"4bc4e88a\",\"chunk-2d0abc00\":\"1469fd22\",\"chunk-2d0ae937\":\"3c41d683\",\"chunk-2d0aeb45\":\"0ec15d50\",\"chunk-2d0af08c\":\"01a6d3c6\",\"chunk-2d0afa49\":\"b4e48d94\",\"chunk-2d0b2762\":\"4a6f4bb1\",\"chunk-2d0b6187\":\"00337985\",\"chunk-2d0ba136\":\"12d1142c\",\"chunk-2d0bb267\":\"77d06824\",\"chunk-2d0bcec1\":\"86feb86e\",\"chunk-2d0bdf38\":\"3ddb9e3f\",\"chunk-2d0bff92\":\"55de1f52\",\"chunk-2d0c0494\":\"5adc358b\",\"chunk-2d0c0a09\":\"0c66081a\",\"chunk-2d0c4313\":\"bf31e4d3\",\"chunk-2d0c46d1\":\"6ac88c30\",\"chunk-2d0c512b\":\"899f04c9\",\"chunk-2d0cf16e\":\"ca888ecf\",\"chunk-2d0d056d\":\"b0eb18bb\",\"chunk-2d0d0645\":\"40459d42\",\"chunk-2d0d2f22\":\"3ee31235\",\"chunk-2d0d61fd\":\"a4ed14e0\",\"chunk-2d0d7e63\":\"2ea8c91e\",\"chunk-2d0e1b57\":\"71c91d9f\",\"chunk-2d0e1fbe\":\"cbdee0aa\",\"chunk-2d0e22d6\":\"a86c6457\",\"chunk-2d0e542a\":\"02a326d7\",\"chunk-2d0e57ec\":\"c147ec55\",\"chunk-2d0e6553\":\"f5e48f57\",\"chunk-2d0e6c86\":\"e50be0c0\",\"chunk-2d0ea098\":\"ae6d826a\",\"chunk-2d0f0a11\":\"631d5885\",\"chunk-2d208ac5\":\"8cbdecb5\",\"chunk-2d209408\":\"7f232250\",\"chunk-2d20f745\":\"221e7d58\",\"chunk-2d20ff23\":\"d9a0988d\",\"chunk-2d2138c7\":\"24ea1d8b\",\"chunk-2d216f3b\":\"fa4e018c\",\"chunk-2d217e5b\":\"5bc6713d\",\"chunk-2d21b84a\":\"ee0eb6f0\",\"chunk-2d21dcd2\":\"cb55af11\",\"chunk-2d21f327\":\"f28acdef\",\"chunk-2d2214b3\":\"3a990375\",\"chunk-2d221799\":\"9b6ea1f4\",\"chunk-2d221814\":\"58381938\",\"chunk-2d221a34\":\"87ff53be\",\"chunk-2d22502a\":\"d00f7b1c\",\"chunk-2d226775\":\"655c4b65\",\"chunk-2d229411\":\"02f133ef\",\"chunk-2d2295e9\":\"8eaff5ce\",\"chunk-2d22c171\":\"d2dd748f\",\"chunk-2d22c2b8\":\"5a2624eb\",\"chunk-2d22ca58\":\"d5ac07ae\",\"chunk-2d2311f7\":\"f859bdaf\",\"chunk-2d237ee7\":\"80a733f8\",\"chunk-2d238465\":\"197b0da9\",\"chunk-30597b4a\":\"5f5ecd55\",\"chunk-7532b3ea\":\"52ca9e9b\",\"chunk-e13e4362\":\"8cb669bc\",\"chunk-2d0f0f77\":\"8e69d489\",\"chunk-bb0b12a4\":\"85ac9d88\",\"chunk-5e4cc6ce\":\"8e8e2831\",\"chunk-57f74b74\":\"9cf42b10\",\"chunk-ef73b16a\":\"f0342f03\",\"chunk-1e7e3456\":\"39173f88\",\"chunk-0cb1715a\":\"363f788a\",\"chunk-1df45ac9\":\"353c6710\",\"chunk-75b6a379\":\"050f193a\"}[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-06927bf2\":1,\"chunk-084deff5\":1,\"chunk-14fccbf6\":1,\"chunk-15b4b67a\":1,\"chunk-26338444\":1,\"chunk-2d138d9c\":1,\"chunk-2e6a5208\":1,\"chunk-19b15129\":1,\"chunk-3b3b8a9d\":1,\"chunk-544c9d46\":1,\"chunk-6df65fa7\":1,\"chunk-3808b084\":1,\"chunk-464b0c7a\":1,\"chunk-0635b8e1\":1,\"chunk-27f44430\":1,\"chunk-2bb7d407\":1,\"chunk-55ec0266\":1,\"chunk-6bf0afaa\":1,\"chunk-48cb7d18\":1,\"chunk-c364eb48\":1,\"chunk-4dc7f1a4\":1,\"chunk-53d58853\":1,\"chunk-5937662f\":1,\"chunk-65b0f1b4\":1,\"chunk-249bebab\":1,\"chunk-430d6150\":1,\"chunk-692681af\":1,\"chunk-23fb2168\":1,\"chunk-36f15415\":1,\"chunk-404a0105\":1,\"chunk-4b190cd9\":1,\"chunk-6d46e3e3\":1,\"chunk-7a951cbe\":1,\"chunk-7daafc93\":1,\"chunk-80775ed4\":1,\"chunk-9566b430\":1,\"chunk-bb7a4eea\":1,\"chunk-f74817b4\":1,\"chunk-1afb4850\":1,\"chunk-30a941bc\":1,\"chunk-4aec9d00\":1,\"chunk-51e5c0d8\":1,\"chunk-bf3ad5e4\":1,\"chunk-1e3dabd9\":1,\"chunk-bfa68920\":1,\"chunk-52772c63\":1,\"chunk-5ed51516\":1,\"chunk-7e0de2f4\":1,\"chunk-71f029ac\":1,\"chunk-0d9b4bf6\":1,\"chunk-13929efa\":1,\"chunk-22c9bd3e\":1,\"chunk-24f01d0a\":1,\"chunk-408e2f35\":1,\"chunk-540897bf\":1,\"chunk-584f9fe8\":1,\"chunk-7652ce3f\":1,\"chunk-b8dc3ca4\":1,\"chunk-f49543b4\":1,\"chunk-f4fe2618\":1,\"chunk-fe45aeda\":1,\"chunk-5394101d\":1,\"chunk-44c34ff6\":1,\"chunk-193200e5\":1,\"chunk-1130cfd0\":1,\"chunk-1da892bc\":1,\"chunk-3bdf2736\":1,\"chunk-75b757bf\":1,\"chunk-279561ba\":1,\"chunk-5db39dca\":1,\"chunk-318319f8\":1,\"chunk-66d79fda\":1,\"chunk-3f8ace94\":1,\"chunk-58c9b62a\":1,\"chunk-d613fdb8\":1,\"chunk-15249f7b\":1,\"chunk-2967be9a\":1,\"chunk-e756d718\":1,\"chunk-5608611c\":1,\"chunk-15d44989\":1,\"chunk-1bbe60d7\":1,\"chunk-5ef1d240\":1,\"chunk-749434c6\":1,\"chunk-4a9d9f50\":1,\"chunk-171feeaa\":1,\"chunk-5d3fd560\":1,\"chunk-a5b84402\":1,\"chunk-79b40110\":1,\"chunk-27e0e206\":1,\"chunk-5f42f49e\":1,\"chunk-7065a0d9\":1,\"chunk-2745dbc4\":1,\"chunk-b33a481a\":1,\"chunk-06000f2e\":1,\"chunk-043b0313\":1,\"chunk-470e90c8\":1,\"chunk-60124e63\":1,\"chunk-6a2a5cd9\":1,\"chunk-5539c4a4\":1,\"chunk-06fa3bfe\":1,\"chunk-6d179d02\":1,\"chunk-9ea9aff8\":1,\"chunk-04c6bc84\":1,\"chunk-b2b35cae\":1,\"chunk-587b0e9c\":1,\"chunk-1e3630f9\":1,\"chunk-3a961f6e\":1,\"chunk-7675a32f\":1,\"chunk-f397e102\":1,\"chunk-f2c9bf66\":1,\"chunk-49453cd2\":1,\"chunk-d570905a\":1,\"chunk-0c7d4257\":1,\"chunk-40acf738\":1,\"chunk-8553acaa\":1,\"chunk-e540ed1e\":1,\"chunk-6287b32a\":1,\"chunk-f821f8c4\":1,\"chunk-d8e39e98\":1,\"chunk-1eb95c7b\":1,\"chunk-2c3f879a\":1,\"chunk-bab4a066\":1,\"chunk-4b3b8fe7\":1,\"chunk-f070cd1e\":1,\"chunk-49917549\":1,\"chunk-0eafc84b\":1,\"chunk-b57cc00e\":1,\"chunk-144c5182\":1,\"chunk-da56d58e\":1,\"chunk-7bb17a0d\":1,\"chunk-23119d88\":1,\"chunk-2936cb04\":1,\"chunk-3cecfe4a\":1,\"chunk-547bb159\":1,\"chunk-688e73c8\":1,\"chunk-70ca4487\":1,\"chunk-3826bd56\":1,\"chunk-66691c50\":1,\"chunk-8e27ee94\":1,\"chunk-139b05fb\":1,\"chunk-2a53cb96\":1,\"chunk-5d3a0bf1\":1,\"chunk-7ae2817f\":1,\"chunk-0bc483ca\":1,\"chunk-9791b0e0\":1,\"chunk-3c21a756\":1,\"chunk-061af204\":1,\"chunk-42ec4794\":1,\"chunk-dc153fcc\":1,\"chunk-89bd73ec\":1,\"chunk-bcf21db8\":1,\"chunk-0d10a30e\":1,\"chunk-39ec843a\":1,\"chunk-dd8a3844\":1,\"chunk-2ad52252\":1,\"chunk-583847e6\":1,\"chunk-72f73514\":1,\"chunk-c26dfc40\":1,\"chunk-7b025616\":1,\"chunk-3efdcaba\":1,\"chunk-2592f299\":1,\"chunk-75a6b812\":1,\"chunk-7bc6c144\":1,\"chunk-4605e79a\":1,\"chunk-8cbfedfe\":1,\"chunk-53c3ce5d\":1,\"chunk-68936f7e\":1,\"chunk-33d138c6\":1,\"chunk-dc5a3b3c\":1,\"chunk-30940b15\":1,\"chunk-4a6f4d59\":1,\"chunk-6837ed02\":1,\"chunk-9eefa2ac\":1,\"chunk-bb0b12a4\":1,\"chunk-57f74b74\":1,\"chunk-1e7e3456\":1,\"chunk-0cb1715a\":1,\"chunk-1df45ac9\":1,\"chunk-75b6a379\":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 = \"static/css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-06927bf2\":\"d16207e5\",\"chunk-084deff5\":\"0ccb04eb\",\"chunk-14fccbf6\":\"0ccb04eb\",\"chunk-15b4b67a\":\"c82b478c\",\"chunk-26338444\":\"01a9055f\",\"chunk-2d0b303e\":\"31d6cfe0\",\"chunk-2d0b32d7\":\"31d6cfe0\",\"chunk-2d0e6107\":\"31d6cfe0\",\"chunk-2d0f069b\":\"31d6cfe0\",\"chunk-2d138d9c\":\"09aef95d\",\"chunk-2d207998\":\"31d6cfe0\",\"chunk-2d207ba8\":\"31d6cfe0\",\"chunk-2d2091fb\":\"31d6cfe0\",\"chunk-2d21d488\":\"31d6cfe0\",\"chunk-2d21d825\":\"31d6cfe0\",\"chunk-2d2297aa\":\"31d6cfe0\",\"chunk-2d22e0fd\":\"31d6cfe0\",\"chunk-2e6a5208\":\"407c12e2\",\"chunk-33ab387a\":\"31d6cfe0\",\"chunk-19b15129\":\"a23dff3c\",\"chunk-3b3b8a9d\":\"33d6148b\",\"chunk-544c9d46\":\"9f3e3f1a\",\"chunk-6df65fa7\":\"78f9e4ad\",\"chunk-3808b084\":\"314539b7\",\"chunk-44458d86\":\"31d6cfe0\",\"chunk-464b0c7a\":\"1e400b15\",\"chunk-0635b8e1\":\"8aec43e3\",\"chunk-27f44430\":\"cb23cd60\",\"chunk-2bb7d407\":\"cb23cd60\",\"chunk-55ec0266\":\"2d0f7fe6\",\"chunk-6bf0afaa\":\"3bf7fbbd\",\"chunk-48cb7d18\":\"ba09e7c8\",\"chunk-c364eb48\":\"8aec43e3\",\"chunk-4dc7f1a4\":\"70b73fc4\",\"chunk-53d58853\":\"4010c92c\",\"chunk-5937662f\":\"bd3914bf\",\"chunk-65b0f1b4\":\"c64293e7\",\"chunk-249bebab\":\"61375110\",\"chunk-430d6150\":\"614394ac\",\"chunk-692681af\":\"713f0224\",\"chunk-23fb2168\":\"3eeeb767\",\"chunk-36f15415\":\"d0b9afda\",\"chunk-404a0105\":\"0e84d4a5\",\"chunk-4b190cd9\":\"c98c56c4\",\"chunk-6d46e3e3\":\"0ccb04eb\",\"chunk-7a951cbe\":\"5731d774\",\"chunk-7daafc93\":\"49c3858d\",\"chunk-80775ed4\":\"983988b1\",\"chunk-9566b430\":\"6a82caf3\",\"chunk-bb7a4eea\":\"d77ea5f5\",\"chunk-f74817b4\":\"78973424\",\"chunk-1afb4850\":\"f299dae7\",\"chunk-30a941bc\":\"243887d9\",\"chunk-4aec9d00\":\"c6e73407\",\"chunk-51e5c0d8\":\"20d67ef5\",\"chunk-bf3ad5e4\":\"11d45217\",\"chunk-1e3dabd9\":\"1c411a53\",\"chunk-2d0b2d87\":\"31d6cfe0\",\"chunk-bfa68920\":\"ebbe624f\",\"chunk-52772c63\":\"fc1cf2f0\",\"chunk-5ed51516\":\"2526cf4c\",\"chunk-7e0de2f4\":\"353a490a\",\"chunk-71f029ac\":\"0bd65a6d\",\"chunk-0d9b4bf6\":\"3293d8c8\",\"chunk-13929efa\":\"ece94940\",\"chunk-22c9bd3e\":\"01baf68d\",\"chunk-24f01d0a\":\"7bdfe333\",\"chunk-408e2f35\":\"69c5f6bd\",\"chunk-540897bf\":\"7bdfe333\",\"chunk-584f9fe8\":\"012968a4\",\"chunk-7652ce3f\":\"c7608a9e\",\"chunk-b8dc3ca4\":\"9f460ca5\",\"chunk-f49543b4\":\"33637c8e\",\"chunk-f4fe2618\":\"b0a04137\",\"chunk-fe45aeda\":\"0ccb04eb\",\"chunk-5394101d\":\"69cb54e4\",\"chunk-44c34ff6\":\"0ccb04eb\",\"chunk-193200e5\":\"018d6e6b\",\"chunk-1130cfd0\":\"f362a936\",\"chunk-1da892bc\":\"e4a1b621\",\"chunk-3bdf2736\":\"929e0185\",\"chunk-75b757bf\":\"110c0266\",\"chunk-279561ba\":\"abe7b375\",\"chunk-5db39dca\":\"81df1f0f\",\"chunk-318319f8\":\"93d8d0a3\",\"chunk-66d79fda\":\"458f7d9f\",\"chunk-3f8ace94\":\"59703086\",\"chunk-58c9b62a\":\"f5cb7dea\",\"chunk-d613fdb8\":\"59703086\",\"chunk-15249f7b\":\"cbc386b6\",\"chunk-2967be9a\":\"17bed61c\",\"chunk-e756d718\":\"e637cf6e\",\"chunk-5608611c\":\"0427ace8\",\"chunk-15d44989\":\"333b3868\",\"chunk-1bbe60d7\":\"7e90fd11\",\"chunk-5ef1d240\":\"92dd55b2\",\"chunk-749434c6\":\"92dd55b2\",\"chunk-4a9d9f50\":\"2032a3e2\",\"chunk-01e57db8\":\"31d6cfe0\",\"chunk-171feeaa\":\"c527f7dd\",\"chunk-2d2183a2\":\"31d6cfe0\",\"chunk-5d3fd560\":\"d826a2d4\",\"chunk-2d0dd401\":\"31d6cfe0\",\"chunk-a5b84402\":\"5110037b\",\"chunk-79b40110\":\"245233f0\",\"chunk-27e0e206\":\"4a5ac241\",\"chunk-5f42f49e\":\"0cf9361a\",\"chunk-7065a0d9\":\"49788593\",\"chunk-2d0b61f4\":\"31d6cfe0\",\"chunk-2d0cfa4a\":\"31d6cfe0\",\"chunk-2d22cc82\":\"31d6cfe0\",\"chunk-2d0b6c9d\":\"31d6cfe0\",\"chunk-2745dbc4\":\"0cd4aee8\",\"chunk-b33a481a\":\"fdb7efbd\",\"chunk-06000f2e\":\"4d593234\",\"chunk-2d0a3cd7\":\"31d6cfe0\",\"chunk-2d0db22d\":\"31d6cfe0\",\"chunk-47646d9d\":\"31d6cfe0\",\"chunk-2d216214\":\"31d6cfe0\",\"chunk-043b0313\":\"a8d8ddd8\",\"chunk-470e90c8\":\"2d590036\",\"chunk-60124e63\":\"6eda853a\",\"chunk-6a2a5cd9\":\"92105f6d\",\"chunk-2d0be2ca\":\"31d6cfe0\",\"chunk-2d213b65\":\"31d6cfe0\",\"chunk-5539c4a4\":\"cb65fde6\",\"chunk-06fa3bfe\":\"2634cab9\",\"chunk-6d179d02\":\"a0b1b88d\",\"chunk-9ea9aff8\":\"7b9064a7\",\"chunk-04c6bc84\":\"018d6e6b\",\"chunk-b2b35cae\":\"a8601ea7\",\"chunk-587b0e9c\":\"ff9624d7\",\"chunk-1e3630f9\":\"098a89fa\",\"chunk-3a961f6e\":\"cefc9260\",\"chunk-7675a32f\":\"e09b12d7\",\"chunk-f397e102\":\"6c2f6c10\",\"chunk-f2c9bf66\":\"72160c70\",\"chunk-49453cd2\":\"0e0d210f\",\"chunk-d570905a\":\"72c2979c\",\"chunk-0c7d4257\":\"510db9f3\",\"chunk-2d213371\":\"31d6cfe0\",\"chunk-40acf738\":\"fa9572e1\",\"chunk-8553acaa\":\"e2687bc6\",\"chunk-e540ed1e\":\"bfa173b0\",\"chunk-6287b32a\":\"3af2e402\",\"chunk-f821f8c4\":\"8f81bbe1\",\"chunk-2d2178ea\":\"31d6cfe0\",\"chunk-d8e39e98\":\"69cb54e4\",\"chunk-1eb95c7b\":\"946d24cf\",\"chunk-2c3f879a\":\"4bf612b1\",\"chunk-bab4a066\":\"a8929a69\",\"chunk-4b3b8fe7\":\"946d24cf\",\"chunk-f070cd1e\":\"98c880a1\",\"chunk-49917549\":\"69cb54e4\",\"chunk-0eafc84b\":\"0ccb04eb\",\"chunk-b57cc00e\":\"0ccb04eb\",\"chunk-144c5182\":\"69cb54e4\",\"chunk-da56d58e\":\"69cb54e4\",\"chunk-7bb17a0d\":\"38b4dbe3\",\"chunk-23119d88\":\"0ccb04eb\",\"chunk-2936cb04\":\"5e90908b\",\"chunk-2d0c45e5\":\"31d6cfe0\",\"chunk-2d0c8fe8\":\"31d6cfe0\",\"chunk-2d0e141c\":\"31d6cfe0\",\"chunk-2d208dfd\":\"31d6cfe0\",\"chunk-3cecfe4a\":\"2ca2cf57\",\"chunk-547bb159\":\"9e579b11\",\"chunk-688e73c8\":\"0e433876\",\"chunk-70ca4487\":\"3663a56a\",\"chunk-3826bd56\":\"4bf612b1\",\"chunk-66691c50\":\"e9034c11\",\"chunk-8e27ee94\":\"e61fc3ea\",\"chunk-139b05fb\":\"69cb54e4\",\"chunk-2a53cb96\":\"72c9cc9d\",\"chunk-5d3a0bf1\":\"69cb54e4\",\"chunk-7ae2817f\":\"7589a3fd\",\"chunk-0bc483ca\":\"dece075a\",\"chunk-9791b0e0\":\"22f4aca6\",\"chunk-3c21a756\":\"d2a84d36\",\"chunk-061af204\":\"f13b8ccf\",\"chunk-42ec4794\":\"c05fa93e\",\"chunk-dc153fcc\":\"abbd71b7\",\"chunk-89bd73ec\":\"018d6e6b\",\"chunk-bcf21db8\":\"96eb3695\",\"chunk-0d10a30e\":\"bc2bb6f2\",\"chunk-39ec843a\":\"29622489\",\"chunk-dd8a3844\":\"e1253417\",\"chunk-2ad52252\":\"0446d128\",\"chunk-2d237c66\":\"31d6cfe0\",\"chunk-583847e6\":\"ef498f77\",\"chunk-72f73514\":\"ef498f77\",\"chunk-c26dfc40\":\"ef498f77\",\"chunk-345dd18b\":\"31d6cfe0\",\"chunk-2d0dcff4\":\"31d6cfe0\",\"chunk-2d0a2db1\":\"31d6cfe0\",\"chunk-2d0ab4d9\":\"31d6cfe0\",\"chunk-2d0d0595\":\"31d6cfe0\",\"chunk-2d213195\":\"31d6cfe0\",\"chunk-7b025616\":\"aaceb2f2\",\"chunk-2d22fd25\":\"31d6cfe0\",\"chunk-3efdcaba\":\"acb194fe\",\"chunk-2592f299\":\"ed881c82\",\"chunk-73821c1b\":\"31d6cfe0\",\"chunk-ec1ee908\":\"31d6cfe0\",\"chunk-2d230fb4\":\"31d6cfe0\",\"chunk-75a6b812\":\"cd4110f1\",\"chunk-7bc6c144\":\"5ef6f628\",\"chunk-4605e79a\":\"64f7319f\",\"chunk-8cbfedfe\":\"b7387ef6\",\"chunk-2d230c09\":\"31d6cfe0\",\"chunk-2d0c95b3\":\"31d6cfe0\",\"chunk-6fa76e61\":\"31d6cfe0\",\"chunk-53c3ce5d\":\"6a5f0420\",\"chunk-2d0e9b71\":\"31d6cfe0\",\"chunk-2d21da58\":\"31d6cfe0\",\"chunk-2d228c86\":\"31d6cfe0\",\"chunk-2d229431\":\"31d6cfe0\",\"chunk-2d0e2664\":\"31d6cfe0\",\"chunk-68936f7e\":\"858e5085\",\"chunk-33d138c6\":\"27b0f5a7\",\"chunk-dc5a3b3c\":\"7589a3fd\",\"chunk-30940b15\":\"33d6148b\",\"chunk-4a6f4d59\":\"4bf612b1\",\"chunk-6837ed02\":\"69cb54e4\",\"chunk-9eefa2ac\":\"4502a6bd\",\"chunk-2d0de94f\":\"31d6cfe0\",\"chunk-2d208ffd\":\"31d6cfe0\",\"chunk-2d230696\":\"31d6cfe0\",\"chunk-2d2376e5\":\"31d6cfe0\",\"chunk-0b65ffb6\":\"31d6cfe0\",\"chunk-2d0a3577\":\"31d6cfe0\",\"chunk-2d0a43df\":\"31d6cfe0\",\"chunk-2d0aa90c\":\"31d6cfe0\",\"chunk-2d0aab07\":\"31d6cfe0\",\"chunk-2d0abc00\":\"31d6cfe0\",\"chunk-2d0ae937\":\"31d6cfe0\",\"chunk-2d0aeb45\":\"31d6cfe0\",\"chunk-2d0af08c\":\"31d6cfe0\",\"chunk-2d0afa49\":\"31d6cfe0\",\"chunk-2d0b2762\":\"31d6cfe0\",\"chunk-2d0b6187\":\"31d6cfe0\",\"chunk-2d0ba136\":\"31d6cfe0\",\"chunk-2d0bb267\":\"31d6cfe0\",\"chunk-2d0bcec1\":\"31d6cfe0\",\"chunk-2d0bdf38\":\"31d6cfe0\",\"chunk-2d0bff92\":\"31d6cfe0\",\"chunk-2d0c0494\":\"31d6cfe0\",\"chunk-2d0c0a09\":\"31d6cfe0\",\"chunk-2d0c4313\":\"31d6cfe0\",\"chunk-2d0c46d1\":\"31d6cfe0\",\"chunk-2d0c512b\":\"31d6cfe0\",\"chunk-2d0cf16e\":\"31d6cfe0\",\"chunk-2d0d056d\":\"31d6cfe0\",\"chunk-2d0d0645\":\"31d6cfe0\",\"chunk-2d0d2f22\":\"31d6cfe0\",\"chunk-2d0d61fd\":\"31d6cfe0\",\"chunk-2d0d7e63\":\"31d6cfe0\",\"chunk-2d0e1b57\":\"31d6cfe0\",\"chunk-2d0e1fbe\":\"31d6cfe0\",\"chunk-2d0e22d6\":\"31d6cfe0\",\"chunk-2d0e542a\":\"31d6cfe0\",\"chunk-2d0e57ec\":\"31d6cfe0\",\"chunk-2d0e6553\":\"31d6cfe0\",\"chunk-2d0e6c86\":\"31d6cfe0\",\"chunk-2d0ea098\":\"31d6cfe0\",\"chunk-2d0f0a11\":\"31d6cfe0\",\"chunk-2d208ac5\":\"31d6cfe0\",\"chunk-2d209408\":\"31d6cfe0\",\"chunk-2d20f745\":\"31d6cfe0\",\"chunk-2d20ff23\":\"31d6cfe0\",\"chunk-2d2138c7\":\"31d6cfe0\",\"chunk-2d216f3b\":\"31d6cfe0\",\"chunk-2d217e5b\":\"31d6cfe0\",\"chunk-2d21b84a\":\"31d6cfe0\",\"chunk-2d21dcd2\":\"31d6cfe0\",\"chunk-2d21f327\":\"31d6cfe0\",\"chunk-2d2214b3\":\"31d6cfe0\",\"chunk-2d221799\":\"31d6cfe0\",\"chunk-2d221814\":\"31d6cfe0\",\"chunk-2d221a34\":\"31d6cfe0\",\"chunk-2d22502a\":\"31d6cfe0\",\"chunk-2d226775\":\"31d6cfe0\",\"chunk-2d229411\":\"31d6cfe0\",\"chunk-2d2295e9\":\"31d6cfe0\",\"chunk-2d22c171\":\"31d6cfe0\",\"chunk-2d22c2b8\":\"31d6cfe0\",\"chunk-2d22ca58\":\"31d6cfe0\",\"chunk-2d2311f7\":\"31d6cfe0\",\"chunk-2d237ee7\":\"31d6cfe0\",\"chunk-2d238465\":\"31d6cfe0\",\"chunk-30597b4a\":\"31d6cfe0\",\"chunk-7532b3ea\":\"31d6cfe0\",\"chunk-e13e4362\":\"31d6cfe0\",\"chunk-2d0f0f77\":\"31d6cfe0\",\"chunk-bb0b12a4\":\"a983e577\",\"chunk-5e4cc6ce\":\"31d6cfe0\",\"chunk-57f74b74\":\"504a5932\",\"chunk-ef73b16a\":\"31d6cfe0\",\"chunk-1e7e3456\":\"f5cb7dea\",\"chunk-0cb1715a\":\"59703086\",\"chunk-1df45ac9\":\"9da5c814\",\"chunk-75b6a379\":\"3b6f6606\"}[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 function makeShortId(longId, cutoff = 32) {\n const notDigitOrChar = /[^\\w |\\d]|\\s/g\n const initialUnderscore = /^_+/\n const twoOrMoreUnderscores = /__+/g\n const finalUnderscore = /_+$/\n const accents = /[\\u0300-\\u036f]/g\n const shortId = longId\n .toLowerCase()\n .normalize('NFD')\n .replace(accents, '')\n .replace(notDigitOrChar, '_')\n .replace(initialUnderscore, '')\n .replace(twoOrMoreUnderscores, '_')\n .replace(finalUnderscore, '')\n .slice(0, cutoff)\n return shortId\n}\n\nexport function toLocaleFixed(number, digit) {\n return number.toLocaleString(undefined, {\n minimumFractionDigits: digit,\n maximumFractionDigits: digit\n })\n}\n\nexport function splitEmails(emailString) {\n // eslint-disable-next-line no-useless-escape\n const nonEmailChars = /[^\\w |\\d |@ |. |_|+|-]|\\s/g\n const allEmailsArray = emailString.replace(nonEmailChars, '\\n').split('\\n')\n const filteredEmailsArray = allEmailsArray.filter(email => email.length !== 0)\n const emailObjectsArray = []\n filteredEmailsArray.forEach(email => {\n emailObjectsArray.push({ email, status: null })\n })\n return emailObjectsArray\n}\n\nexport function sortArray(array, sortParameter, how, toString) {\n const arrayCopy = Array.from(array)\n if (how === 'ascending') {\n let ascSortedArray\n if (toString) {\n ascSortedArray = arrayCopy.sort(function (a, b) {\n if (a[sortParameter].toString().toLowerCase() < b[sortParameter].toString().toLowerCase()) {\n return -1\n }\n if (a[sortParameter].toString().toLowerCase() > b[sortParameter].toString().toLowerCase()) {\n return 1\n }\n return 0\n })\n } else {\n ascSortedArray = arrayCopy.sort(function (a, b) {\n if (a[sortParameter] < b[sortParameter]) {\n return -1\n }\n if (a[sortParameter] > b[sortParameter]) {\n return 1\n }\n return 0\n })\n }\n\n return ascSortedArray\n } else if (how === 'descending') {\n let descSortedArray\n if (toString) {\n descSortedArray = arrayCopy.sort(function (a, b) {\n if (a[sortParameter].toString().toUpperCase() > b[sortParameter].toString().toUpperCase()) {\n return -1\n }\n if (a[sortParameter].toString().toUpperCase() < b[sortParameter].toString().toUpperCase()) {\n return 1\n }\n return 0\n })\n } else {\n descSortedArray = arrayCopy.sort(function (a, b) {\n if (a[sortParameter] > b[sortParameter]) {\n return -1\n }\n if (a[sortParameter] < b[sortParameter]) {\n return 1\n }\n return 0\n })\n }\n return descSortedArray\n }\n}\n\nexport function sortDateArray(array, sortParameter, how) {\n const arrayCopy = Array.from(array)\n const ascSortedArray = arrayCopy.sort((a, b) => {\n if (how === 'ascending') {\n return new Date(a[sortParameter]) - new Date(b[sortParameter])\n } else {\n return new Date(b[sortParameter]) - new Date(a[sortParameter])\n }\n })\n return ascSortedArray\n}\n\n// allow the following routes without Auth\nexport const publicNames = [\n 'callback',\n 'invitation-index',\n 'invitation-home',\n 'signup-index',\n 'signup-home',\n 'signup-options',\n 'signup-success',\n 'trial',\n 'trial-provider',\n 'invitation-password',\n 'login',\n 'to-login'\n]\n\nexport function parseURL(urlString) {\n const url = {}\n if (urlString.includes('/org/')) {\n const org = urlString.match(/\\/org\\/\\d+/g)[0].match(/\\d+/g)[0]\n url.oid = parseInt(org, 10)\n }\n if (urlString.includes('/space/')) {\n const space = urlString.match(/\\/space\\/\\d+/g)[0].match(/\\d+/g)[0]\n url.sid = parseInt(space, 10)\n }\n if (urlString.includes('/instance/')) {\n const iid = urlString.match(/\\/instance\\/\\d+/g)[0].match(/\\d+/g)[0]\n url.iid = parseInt(iid, 10)\n }\n if (urlString.includes('/snapshot/')) {\n const snid = urlString.match(/\\/snapshot\\/\\d+/g)[0].match(/\\d+/g)[0]\n url.snid = parseInt(snid, 10)\n }\n return url\n}\n\nexport function defaultAccountType(email) {\n email = email || ''\n\n const switchSuffixes = [\n 'usi.ch',\n 'unige.ch',\n 'uzh.ch',\n 'epfl.ch',\n 'unil.ch',\n 'unilu.ch',\n 'unibas.ch',\n 'unibe.ch',\n 'unine.ch',\n 'unisg.ch',\n 'ethz.zh',\n 'unifr.ch'\n ]\n if (\n switchSuffixes.some(s => {\n return email.endsWith(s)\n })\n ) {\n return 'SWITCH'\n } else {\n return null\n }\n}\n\nexport function humanFileSize(bytes, si = true) {\n if (bytes == null) {\n return ''\n }\n\n const thresh = si ? 1000 : 1024\n if (Math.abs(bytes) < thresh) {\n return bytes + ' B'\n }\n const units = si ? ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] : ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']\n let u = -1\n do {\n bytes /= thresh\n ++u\n } while (Math.abs(bytes) >= thresh && u < units.length - 1)\n return bytes.toFixed(1) + ' ' + units[u]\n}\n\nexport function bytesToGB(bytes) {\n const gigabytes = bytes / (1000 * 1000 * 1000)\n if (bytes > 0 && gigabytes < 0.01) {\n return '0.01'\n }\n return gigabytes.toFixed(2)\n}\n\nexport function truncateText(text, maxLength) {\n if (text) {\n if (text.length <= maxLength) {\n return text\n } else {\n const truncatedText = text.substring(0, maxLength)\n return truncatedText + '...'\n }\n }\n}\n\nexport function isJson(str) {\n try {\n JSON.parse(str)\n } catch (e) {\n return false\n }\n return true\n}\n\nexport function getObjectValueByKey(objectName, objectValue) {\n return Object.keys(objectName).find(key => objectName[key] === objectValue)\n}\n\nexport function isDateGreaterThanToday(date) {\n const todayStringUTC = new Date().toUTCString()\n const todayStringISO = new Date(todayStringUTC).toISOString().replace(/Z$/, '')\n const todayDateUTC = new Date(todayStringISO)\n const comparisonDate = new Date(date.replace(/\\..*/, ''))\n if (comparisonDate > todayDateUTC) {\n return true\n } else {\n return false\n }\n}\n\nexport function isEditorRole(role) {\n if (role && role.toLowerCase().includes('editor')) {\n return true\n } else {\n return false\n }\n}\n\nexport function isViewerRole(role) {\n if (role && role.toLowerCase().includes('viewer')) {\n return true\n } else {\n return false\n }\n}\n\nexport function isManagerRole(role) {\n if (role && role.toLowerCase().includes('manager')) {\n return true\n } else {\n return false\n }\n}\n\nexport function isObserverRole(role) {\n if (role && role.toLowerCase().includes('observer')) {\n return true\n } else {\n return false\n }\n}\n\nexport function isFacultyRole(role) {\n if (role && role.toLowerCase().includes('faculty')) {\n return true\n } else {\n return false\n }\n}\n\nexport function isAdminRole(role) {\n if (role && role.toLowerCase().includes('space_admin')) {\n return true\n } else {\n return false\n }\n}\n\nexport function isDistributedInstance(instanceName) {\n if (instanceName && instanceName.toLowerCase() === 'distributed') {\n return true\n } else {\n return false\n }\n}\n\nexport function isMasterInstance(instanceName) {\n if (instanceName && instanceName.toLowerCase() === 'master') {\n return true\n } else {\n return false\n }\n}\n\nexport function isMasterOrDistributedInstance(instanceName) {\n if (instanceName && (instanceName.toLowerCase() === 'master' || instanceName.toLowerCase() === 'distributed')) {\n return true\n } else {\n return false\n }\n}\n\nexport function isCurrentState(snaphotName) {\n if (snaphotName && snaphotName.toLowerCase() === 'development') {\n return true\n } else {\n return false\n }\n}\n\nexport function calculateDuration(date2, date1) {\n if (date2 && date1) {\n const dt1 = new Date(date1)\n const dt2 = new Date(date2)\n const diff = (dt2.getTime() - dt1.getTime()) / 1000\n if (diff < 60) {\n return Math.abs(Math.round(diff)) + ' sec'\n } else if (diff < 3599) {\n return Math.round((diff / 60) * 100) / 100 + ' min'\n } else {\n return Math.round((diff / 3600) * 100) / 100 + ' hr'\n }\n } else {\n return '-'\n }\n}\n\nexport function calculateDateDifferenceInDays(firstDateString, secondDateString) {\n const date1 = new Date(firstDateString)\n const date2 = new Date(secondDateString)\n const diffferenceInTime = date2.getTime() - date1.getTime()\n const differenceInDays = Math.round(diffferenceInTime / (1000 * 3600 * 24))\n return differenceInDays\n}\n\nexport function roundNumber(number, decimalToRoundTo) {\n return parseInt(number, 20) === number ? number : parseFloat(number.toFixed(decimalToRoundTo))\n}\n\nexport function getDateRangeArray(start, end) {\n const startDate = new Date(start)\n const datesArray = []\n // eslint-disable-next-line no-unmodified-loop-condition\n while (startDate <= end) {\n datesArray.push(new Date(startDate))\n startDate.setDate(startDate.getDate() + 1)\n }\n const formatedDates = datesArray.map(v => v.toISOString().slice(0, 10))\n return formatedDates\n}\n\nexport function areDatesInOrder(datesString) {\n const firstDate = new Date(datesString.split('to')[0])\n const secondDate = new Date(datesString.split('to')[1])\n if (firstDate > secondDate) {\n return false\n } else {\n return true\n }\n}\n\nexport function calculatePoint(i, intervalSize, colorRangeInfo) {\n const { colorStart, colorEnd, useEndAsStart } = colorRangeInfo\n return useEndAsStart ? colorEnd - i * intervalSize : colorStart + i * intervalSize\n}\n\n/* Must use an interpolated color scale, which has a range of [0, 1] */\nexport function interpolateColors(dataLength, colorScale, colorRangeInfo) {\n const { colorStart, colorEnd } = colorRangeInfo\n const colorRange = colorEnd - colorStart\n const intervalSize = colorRange / dataLength\n let i, colorPoint\n const colorArray = []\n\n for (i = 0; i < dataLength; i++) {\n colorPoint = calculatePoint(i, intervalSize, colorRangeInfo)\n colorArray.push(colorScale(colorPoint))\n }\n\n return colorArray\n}\n\nexport function dateTimeConcat(date, time) {\n if (date && time) {\n const datetime = `${date} ${time}`\n const UTCDatetime = new Date(datetime).toISOString()\n return UTCDatetime\n }\n return ''\n}\n\nexport function isAllNull(arr) {\n return arr.every(element => element === null)\n}\n\nexport function randomString(len) {\n const characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'\n let randomString = ''\n while (len >= 0) {\n const num = Math.floor(Math.random() * characters.length)\n randomString += characters[num]\n len--\n }\n return randomString\n}\n\nexport function truncateMid(text, length) {\n return text.substr(0, length) + '...' + text.substr(text.length - length, text.length)\n}\n\nexport const ipcOptions = [\n { text: 'Nowhere', value: 'none' },\n { text: 'Same instance', value: 'instance' },\n { text: 'Same space', value: 'space' },\n { text: 'Same organization', value: 'org' }\n]\n","import Enum from 'enum'\n\nexport const enumsData = {\n data() {\n return {\n tableUserModes: {\n NONE: 0, // (no access to snowflake)\n SERVICE: 1, // (\"service mode\" on UI and docs)\n USER: 2, // (\"user mode\" on UI and docs)\n LEGACY: 3 // (\"legacy user mode\" on UI ad docs)\n },\n spaceTypes: {\n EDUCATION_SPACE: 1,\n RESEARCH_SPACE: 2,\n VENDOR_SPACE: 0,\n KNOWLEDGE_BASE_SPACE: 3\n },\n spaceVisibilityCodes: {\n PUBLIC_SPACE: 0,\n AFFILIATE_ONLY_SPACE: 1,\n FACULTY_ONLY_SPACE: 2,\n PRIVATE_SPACE: 3\n },\n spaceStatus: {\n WAKING: 'WAKING',\n AWAKE: 'AWAKE',\n RESTED: 'RESTED',\n RESTING: 'RESTING',\n PRE_RESTING: 'PRE_RESTING'\n },\n nuvolosObjectTypes: {\n FILE: 'file',\n FOLDER: 'folder',\n TABLE: 'table',\n COLUMN: 'column',\n APPLICATION: 'application',\n APPLICATIONS: 'applications',\n SNAPSHOT: 'snapshot',\n INSTANCE: 'instance',\n SPACE: 'space',\n ORGANIZATION: 'organization'\n },\n userWorkAreas: {\n WORKSPACE: 'workspace',\n PERSONAL: 'personal'\n },\n roleTypes: {\n ORG_MANAGER: 'MANAGER',\n ORG_FACULTY: 'FACULTY',\n ORG_MEMBER: 'MEMBER',\n SPACE_ADMIN: 'SPACE_ADMIN',\n SPACE_MEMBER: 'None',\n INSTANCE_EDITOR: 'EDITOR',\n INSTANCE_OBSERVER: 'OBSERVER',\n INSTANCE_VIEWER: 'VIEWER'\n },\n instanceFixedNames: {\n MASTER_INSTANCE: 'Master',\n DISTRIBUTED_INSTANCE: 'Distributed'\n },\n orgTokenScopes: {\n MANAGER: 0,\n FACULTY: 10,\n MEMBER: 30\n },\n orgTokenTypes: {\n XPRESSFEED: 0\n },\n folderTypesLabels: {\n WORKSPACE_FILES: 'files',\n PERSONAL_FILES: 'home',\n LIBRARY_FILES: 'lib'\n },\n taskStatusTypes: new Enum({\n REJECTED: 0,\n CREATED: 1,\n QUEUED: 2,\n RUNNING: 3,\n COMPLETED: 4,\n FAILED: 5,\n ARCHIVED: 6,\n CONTAINS_ERRORS: 7,\n CANCELLED: 8\n }),\n distributionReasons: {\n MATERIAL_SHARING: 'DISTRIBUTION',\n ASSIGNMENT: 'ASSIGNMENT'\n },\n trialTiers: {\n FREE: 0,\n PAID: 10\n },\n tours: {\n PRESTART_MINIMUM_INSTANCE_COUNT: 20\n },\n newSpace: {\n ROUTES_BY_TYPE: ['home-add-dataset', 'home-add-class', 'home-add-research-project']\n },\n secretLevels: { 0: 'User', 1: 'Application', 2: 'Space', 3: 'Organization' },\n // This is Luxon's Math format or null\n // https://moment.github.io/luxon/#/math?id=time-math\n cookiePopupInterval: { month: 6 }\n }\n }\n}\n","import Vue from 'vue'\nimport createAuth0Client from '@auth0/auth0-spa-js'\n\n/** Define a default action to perform after authentication */\n\nconst DEFAULT_REDIRECT_CALLBACK = () => window.history.replaceState({}, document.title, window.location.pathname)\n\nlet instance\n\n/** Returns the current instance of the SDK */\n\nexport const getInstance = () => instance\n\n/** Creates an instance of the Auth0 SDK. If one has already been created, it returns that instance */\n\nexport const useAuth0 = ({ onRedirectCallback = DEFAULT_REDIRECT_CALLBACK, redirectUri = window.location.origin + '/login', ...options }) => {\n if (instance) return instance\n\n // The 'instance' is simply a Vue object\n instance = new Vue({\n data() {\n return {\n loading: true,\n isAuthenticated: false,\n user: {},\n auth0Client: null,\n popupOpen: false,\n error: null\n }\n },\n methods: {\n /** Authenticates the user using a popup window */\n\n async loginWithPopup(o) {\n this.popupOpen = true\n\n try {\n await this.auth0Client.loginWithPopup(o)\n } catch (e) {\n // eslint-disable-next-line\n console.error(e)\n } finally {\n this.popupOpen = false\n }\n\n this.user = await this.auth0Client.getUser()\n this.isAuthenticated = true\n },\n /** Handles the callback when logging in using a redirect */\n\n async handleRedirectCallback() {\n this.loading = true\n try {\n await this.auth0Client.handleRedirectCallback()\n this.user = await this.auth0Client.getUser()\n this.isAuthenticated = true\n } catch (e) {\n console.log(e)\n this.error = e\n } finally {\n this.loading = false\n }\n },\n /** Authenticates the user using the redirect method */\n\n loginWithRedirect(o) {\n return this.auth0Client.loginWithRedirect(o)\n },\n /** Returns all the claims present in the ID token */\n\n getIdTokenClaims(o) {\n return this.auth0Client.getIdTokenClaims(o)\n },\n /** Returns the access token. If the token is invalid or missing, a new one is retrieved */\n\n getTokenSilently(o) {\n return this.auth0Client.getTokenSilently(o)\n },\n /** Gets the access token using a popup window */\n\n getTokenWithPopup(o) {\n return this.auth0Client.getTokenWithPopup(o)\n },\n /** Logs the user out and removes their session on the authorization server */\n\n logout(targetQuery = null) {\n window.Intercom?.('shutdown')\n let returnTo = window.location.origin + '/login'\n if (targetQuery) {\n returnTo += '?logoutTarget=' + targetQuery\n }\n return this.auth0Client.logout({ returnTo })\n }\n },\n\n /** Use this lifecycle method to instantiate the SDK client */\n async created() {\n // Create a new instance of the SDK client using members of the given options object\n this.auth0Client = await createAuth0Client({\n domain: window.appConfig?.VUE_APP_AUTH0_DOMAIN,\n client_id: window.appConfig?.VUE_APP_AUTH0_CLIENT_ID,\n audience: window.appConfig?.VUE_APP_AUTH0_AUDIENCE,\n redirect_uri: redirectUri\n })\n\n try {\n // If the user is returning to the app after authentication..\n if (window.location.search.includes('code=') && window.location.search.includes('state=')) {\n // handle the redirect and retrieve tokens\n const { appState } = await this.auth0Client.handleRedirectCallback()\n this.error = null\n // Notify subscribers that the redirect callback has happened, passing the appState\n // (useful for retrieving any pre-authentication state)\n onRedirectCallback(appState)\n }\n } catch (e) {\n console.log(e)\n this.error = e\n } finally {\n // Initialize the internal authentication state\n this.user = await this.auth0Client.getUser()\n this.isAuthenticated = await this.auth0Client.isAuthenticated()\n\n this.loading = false\n }\n }\n })\n\n return instance\n}\n\n// Create a simple Vue plugin to expose the wrapper object throughout the application\nexport const Auth0Plugin = {\n install(Vue, options) {\n Vue.prototype.$auth = useAuth0(options)\n }\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('svg',{staticStyle:{\"enable-background\":\"new 0 0 24 24\"},attrs:{\"version\":\"1.1\",\"id\":\"Layer_1\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 24 24\",\"xml:space\":\"preserve\"}},[_c('path',{staticStyle:{\"fill\":\"#434955\"},attrs:{\"d\":\"M8,14c-0.5499997,0-1.020833-0.1958342-1.4124999-0.5875006S6,12.5500002,6,12\\n\\ts0.1958332-1.020833,0.5875001-1.4125004S7.4500003,10,8,10s1.020834,0.1958323,1.4125004,0.5874996S10,11.4499998,10,12\\n\\ts-0.1958332,1.020833-0.5874996,1.4124994S8.5500002,14,8,14z M16,14c-0.5500002,0-1.020833-0.1958342-1.4125004-0.5875006\\n\\tC14.1958332,13.020833,14,12.5500002,14,12s0.1958332-1.020833,0.5874996-1.4125004C14.979167,10.1958323,15.4499998,10,16,10\\n\\tc0.5499992,0,1.020834,0.1958323,1.4125004,0.5874996S18,11.4499998,18,12s-0.1958332,1.020833-0.5874996,1.4124994\\n\\tS16.5499992,14,16,14z\"}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./IconUnixTraversalUp.vue?vue&type=template&id=4a8b36bf&\"\nvar script = {}\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 '@mdi/font/css/materialdesignicons.css'\nimport Vue from 'vue'\nimport Vuetify from 'vuetify/lib'\nimport IconUnixTraversalUp from '@/components/IconUnixTraversalUp.vue'\n\nVue.use(Vuetify)\n\nexport default new Vuetify({\n icons: {\n iconfont: 'mdi',\n values: {\n dropdown: 'mdi-chevron-down',\n unixTraversalUp: {\n component: IconUnixTraversalUp\n }\n }\n },\n theme: {\n themes: {\n light: {\n primary: '#3381ff',\n secondary: '#606060',\n anchor: '#3381ff',\n accent: '#007891',\n error: '#f44336',\n warning: '#ff5722',\n info: '#1186D9',\n success: '#11CF82'\n },\n dark: {\n primary: '#114ECF',\n secondary: '#19A9C2',\n accent: '#007891',\n error: '#f44336',\n warning: '#ff5722',\n info: '#1186D9',\n success: '#11CF82'\n }\n },\n options: {\n customProperties: true\n }\n }\n})\n","const TheHomeMain = () => import('../views/TheHomeMain')\nconst TheHomeDashboard = () => import('../views/TheHomeDashboard')\nconst TheHomeAddEducationSpace = () => import('../views/TheHomeAddEducationSpace')\nconst TheHomeAddResearchSpace = () => import('../views/TheHomeAddResearchSpace')\nconst TheHomeAddDatasetSpace = () => import('../views/TheHomeAddDatasetSpace')\nconst TheHomeOrganizationUserManagement = () => import('../views/TheHomeOrganizationUserManagement')\nconst TheHomeOrganizationConfig = () => import('../views/TheHomeOrganizationConfig')\nconst TheHomeOrganizationTokens = () => import('@/modules/organization/views/TheOrgTokens')\nconst TheHomeEducationSpaceList = () => import('../views/TheHomeEducationSpaceList')\nconst TheHomeResearchSpaceList = () => import('../views/TheHomeResearchSpaceList')\nconst TheHomeDatasetSpaceList = () => import('../views/TheHomeDatasetSpaceList')\nconst Steppers = () => import('@/components/Steppers')\n\nexport default [\n {\n path: '/org/:oid',\n name: 'home-main',\n components: {\n default: TheHomeMain\n },\n children: [\n {\n path: 'dashboard',\n name: 'home-dashboard',\n components: {\n default: TheHomeDashboard\n }\n },\n {\n path: 'education-spaces',\n name: 'home-education-spaces',\n components: {\n default: TheHomeEducationSpaceList\n }\n },\n {\n path: 'research-spaces',\n name: 'home-research-spaces',\n components: {\n default: TheHomeResearchSpaceList\n }\n },\n {\n path: 'dataset-spaces',\n name: 'home-dataset-spaces',\n components: {\n default: TheHomeDatasetSpaceList\n }\n },\n {\n path: 'config',\n name: 'home-org-config',\n components: {\n default: TheHomeOrganizationConfig\n }\n },\n {\n path: 'users',\n name: 'home-org-users',\n components: {\n default: TheHomeOrganizationUserManagement\n }\n },\n {\n path: 'tokens',\n name: 'home-org-tokens',\n components: {\n default: TheHomeOrganizationTokens\n }\n },\n {\n path: 'education-spaces/add-class',\n name: 'home-add-class',\n components: {\n default: TheHomeAddEducationSpace,\n notifications: Steppers\n }\n },\n {\n path: 'research-spaces/add-research-project',\n name: 'home-add-research-project',\n components: {\n default: TheHomeAddResearchSpace,\n notifications: Steppers\n }\n },\n {\n path: 'dataset-spaces/add-dataset',\n name: 'home-add-dataset',\n components: {\n default: TheHomeAddDatasetSpace,\n notifications: Steppers\n }\n }\n ]\n }\n]\n","// Snapshot files\nconst TheSnapshotMain = () => import('../views/TheSnapshotMain')\nconst TheSnapshotTableTabset = () => import('../views/TheSnapshotTableTabset')\nconst TheSnapshotApplist = () => import('../views/TheSnapshotAppList')\nconst TheSnapshotImagelist = () => import('../views/TheSnapshotImageList')\nconst TheSnapshotAddSnapshot = () => import('../views/TheSnapshotAddSnapshot')\nconst TheSnapshotFileDiff = () => import('../views/TheSnapshotFileDiff')\nconst TheSnapshotDistribute = () => import('../views/TheSnapshotDistribute')\nconst TheSnapshotOverview = () => import('../views/TheSnapshotOverview.vue')\nconst Steppers = () => import('@/components/Steppers')\nconst TheSnapshotSideBar = () => import('../components/TheSnapshotSideBar.vue')\nconst TheSnapshotAddAppFinalHint = () => import('../views/TheSnapshotAddAppFinalHint')\nconst TheSnapshotDistributions = () => import('../views/TheSnapshotDistributions')\nconst TheSnapshotAssignments = () => import('../views/TheSnapshotAssignments')\nconst Assignment = () => import('../views/Assignment')\nconst VimeoVideos = () => import('../views/VimeoVideos')\nconst AppStore = () => import('../views/AppStore')\nconst AppScale = () => import('../views/AppScale')\n\n// Space files\nconst TheSpaceDelete = () => import('@/modules/space/views/TheSpaceDelete')\nconst TheSpaceUserManagement = () => import('@/modules/space/views/TheSpaceUserManagement')\nconst TheSpaceConfiguration = () => import('@/modules/space/views/TheSpaceConfiguration.vue')\n// Instance files\nconst TheInstanceSnapshotList = () => import('@/modules/instance/views/TheInstanceSnapshotList')\n\nexport default [\n {\n path: '/org/:oid/space/:sid/instance/:iid/snapshot/:snid',\n name: 'snapshot-main',\n components: {\n default: TheSnapshotMain,\n 'permanent-sidebar': TheSnapshotSideBar\n },\n children: [\n {\n path: 'overview',\n name: 'snapshot-overview',\n components: {\n default: TheSnapshotOverview\n }\n },\n {\n path: 'tables',\n name: 'snapshot-tables',\n components: {\n default: TheSnapshotTableTabset\n }\n },\n {\n path: 'manage-snapshots/add-snapshot',\n name: 'snapshot-add-snapshot',\n components: {\n default: TheSnapshotAddSnapshot\n }\n },\n {\n path: `files/:fileArea/:localPath*`,\n name: 'snapshot-files'\n },\n {\n path: `files`,\n redirect: `files/files`\n },\n {\n path: 'file-diff/:fid',\n name: 'snapshot-file-diff',\n components: {\n default: TheSnapshotFileDiff\n }\n },\n {\n path: 'applications',\n name: 'snapshot-applications',\n components: {\n default: TheSnapshotApplist\n }\n },\n {\n path: 'images',\n name: 'snapshot-images',\n components: {\n default: TheSnapshotImagelist\n }\n },\n {\n path: 'distributions',\n name: 'snapshot-distributions',\n components: {\n default: TheSnapshotDistributions\n }\n },\n {\n path: 'assignments',\n name: 'snapshot-assignments',\n components: {\n default: TheSnapshotAssignments\n }\n },\n {\n path: 'assignment/:bid',\n name: 'assignment',\n components: {\n default: Assignment\n },\n children: [\n {\n path: `handin/:hid/files/:localPath*`,\n name: 'handin'\n },\n {\n path: `handback/:hid/files/:localPath*`,\n name: 'handback'\n }\n ]\n },\n {\n path: 'vimeo-videos',\n name: 'vimeo-videos',\n component: VimeoVideos\n },\n {\n path: 'application/:aid/scale',\n name: 'application-scale',\n component: AppScale\n },\n {\n path: 'applications/add',\n name: 'snapshot-applications-add',\n components: {\n default: AppStore,\n notifications: Steppers\n }\n },\n {\n path: 'applications/appstore',\n name: 'appstore',\n components: {\n default: AppStore\n }\n },\n {\n path: 'distribute',\n name: 'snapshot-distribute',\n components: {\n default: TheSnapshotDistribute\n }\n },\n {\n path: 'addFiles',\n name: 'snapshot-add-files-hint',\n components: {\n default: TheSnapshotAddAppFinalHint,\n notifications: Steppers\n }\n },\n {\n path: 'manage/space-user-management',\n name: 'space-user-management',\n components: {\n default: TheSpaceUserManagement\n }\n },\n {\n path: 'manage/space-delete',\n name: 'space-delete',\n components: {\n default: TheSpaceDelete\n }\n },\n {\n path: 'manage/space-configuration',\n name: 'space-configuration',\n components: {\n default: TheSpaceConfiguration\n }\n },\n {\n path: 'manage-snapshots/snapshots',\n name: 'instance-snapshots',\n components: {\n default: TheInstanceSnapshotList\n }\n },\n {\n path: 'application/:aid/:sessionId?',\n name: 'app-open',\n components: {\n 'permanent-sidebar': TheSnapshotSideBar\n }\n }\n ]\n }\n]\n","const InvitationIndex = () => import('../views/InvitationIndex.vue')\nconst InvitationAccept = () => import('../views/InvitationAccept.vue')\nconst TrialIndex = () => import('../views/TrialIndex.vue')\nconst SignupIndex = () => import('../views/SignupIndex.vue')\nconst SignupHome = () => import('../views/SignupHome.vue')\nconst SignupOptions = () => import('../views/SignupOptions.vue')\nconst SignupSuccess = () => import('../views/SignupSuccess.vue')\nconst TrialProvider = () => import('../views/TrialProvider.vue')\nconst SignupProvider = () => import('../views/SignupProvider.vue')\nconst InvitationPassword = () => import('../views/InvitationPassword.vue')\nconst InvitationHome = () => import('../views/InvitationHome.vue')\nconst InvitationAuthenticated = () => import('../views/InvitationAuthenticated.vue')\nconst InvitationProvider = () => import('../views/InvitationProvider.vue')\nconst InvitationToLogin = () => import('../views/InvitationToLogin.vue')\n\nexport default [\n {\n path: '/invitations/review/:invid',\n name: 'invitation-index',\n components: {\n default: InvitationIndex\n },\n children: [\n {\n path: '/',\n name: 'invitation-home',\n components: {\n default: InvitationHome\n }\n },\n {\n path: 'authenticated',\n name: 'invitation-authenticated',\n components: {\n default: InvitationAuthenticated\n }\n }\n ]\n },\n {\n path: 'to-login',\n name: 'to-login',\n components: {\n default: InvitationToLogin\n }\n },\n {\n path: '/invitations/review/:invid/password',\n name: 'invitation-password',\n components: {\n default: InvitationPassword\n }\n },\n {\n path: '/invitations/review/:invid/:provider',\n name: 'invitation-provider',\n components: {\n default: InvitationProvider\n }\n },\n {\n path: '/invitations/accept/:invid/',\n name: 'invitation-accept',\n components: {\n default: InvitationAccept\n }\n },\n {\n path: '/enroll/:space/:token',\n name: 'signup-index',\n components: {\n default: SignupIndex\n },\n children: [\n {\n path: '/',\n name: 'signup-home',\n components: {\n default: SignupHome\n }\n },\n {\n path: 'options',\n name: 'signup-options',\n components: {\n default: SignupOptions\n }\n }\n ]\n },\n {\n path: '/enroll/:space/:token/success',\n name: 'signup-success',\n components: {\n default: SignupSuccess\n }\n },\n {\n path: '/enroll/:space/:token/:provider',\n name: 'signup-provider',\n components: {\n default: SignupProvider\n }\n },\n {\n path: '/trials/:token',\n name: 'trial',\n components: {\n default: TrialIndex\n }\n },\n {\n path: '/trials/:token/:provider',\n name: 'trial-provider',\n components: {\n default: TrialProvider\n }\n }\n]\n","const TheUserMain = () => import('../views/TheUserMain')\nconst TheUserTasks = () => import('../views/TheUserTasks.vue')\nconst TheUserRequests = () => import('../views/TheUserRequests.vue')\nconst TheUserSettings = () => import('../views/TheUserSettings.vue')\nconst TheUserResourcesAndUsage = () => import('../views/TheUserResourcesAndUsage.vue')\nconst MonitoringDashboard = () => import('../views/MonitoringDashboard.vue')\nconst TheUserProfile = () => import('../views/TheUserProfile')\nconst TheUserSSHKeys = () => import('../views/TheUserSSHKeys')\nconst TheUserSecrets = () => import('../views/TheUserSecrets')\nconst TheUserEnvVars = () => import('../views/TheUserEnvVars')\nconst TheUserSnowflakeTokens = () => import('../views/TheUserSnowflakeTokens')\nconst TheUserDropboxLink = () => import('../views/TheUserDropboxLink')\nconst TheUserApiAccess = () => import('../views/TheUserApiAccess')\n\nexport default [\n {\n path: '/user',\n name: 'user-main',\n components: {\n default: TheUserMain\n },\n children: [\n {\n path: 'user-tasks',\n name: 'user-tasks',\n components: {\n default: TheUserTasks\n }\n },\n {\n path: 'user-requests',\n name: 'user-requests',\n components: {\n default: TheUserRequests\n }\n },\n {\n path: 'resources',\n name: 'user-resources',\n components: {\n default: TheUserResourcesAndUsage\n }\n },\n {\n path: 'reporting-dashboard',\n name: 'reporting-dashboard',\n components: {\n default: MonitoringDashboard\n }\n },\n {\n path: 'settings',\n name: 'user-settings',\n components: {\n default: TheUserSettings\n },\n children: [\n {\n path: 'profile',\n name: 'user-profile',\n components: {\n default: TheUserProfile\n }\n },\n {\n path: 'ssh',\n name: 'user-ssh',\n components: {\n default: TheUserSSHKeys\n }\n },\n {\n path: 'secrets',\n name: 'user-secrets',\n components: {\n default: TheUserSecrets\n }\n },\n {\n path: 'env-vars',\n name: 'user-env-vars',\n components: {\n default: TheUserEnvVars\n }\n },\n {\n path: 'tables',\n name: 'user-tables',\n components: {\n default: TheUserSnowflakeTokens\n }\n },\n {\n path: 'dropbox',\n name: 'user-dropbox',\n components: {\n default: TheUserDropboxLink\n }\n },\n {\n path: 'api-access',\n name: 'user-api-access',\n components: {\n default: TheUserApiAccess\n }\n }\n ]\n }\n ]\n }\n]\n","const TheAdminMain = () => import('../views/TheAdminMain')\nconst TheAdminOverview = () => import('../views/TheAdminOverview')\n\nexport default [\n {\n path: '/',\n name: 'admin-main',\n components: {\n default: TheAdminMain\n },\n children: [\n {\n path: '/admin',\n name: 'admin-overview',\n components: {\n default: TheAdminOverview\n }\n }\n ]\n }\n]\n","import Vue from 'vue'\nimport Router from 'vue-router'\nimport { getInstance } from './auth/auth'\n\nimport homeRoutes from './modules/home/routes'\nimport snapshotRoutes from './modules/snapshot/routes'\nimport invitationRoutes from './modules/invitations/routes'\nimport userRoutes from './modules/user/routes'\nimport adminRoutes from './modules/admin/routes'\nimport { publicNames } from './utils'\nconst TheLoginPage = () => import('./views/TheLoginPage.vue')\nconst FourOFour = () => import('@/views/The404')\nconst TheLoginLandingPage = () => import('@/views/TheLoginLandingPage.vue')\n\nVue.use(Router)\n\nconst baseRoutes = [\n {\n path: '/',\n name: 'welcome',\n components: {\n default: TheLoginLandingPage\n }\n },\n {\n path: '/login',\n name: 'login',\n components: {\n default: TheLoginPage\n }\n },\n { path: '/welcome', redirect: '/' }\n]\n\nconst routes = baseRoutes\n .concat(homeRoutes)\n .concat(snapshotRoutes)\n .concat(invitationRoutes)\n .concat(userRoutes)\n .concat(adminRoutes)\n .concat([\n {\n path: '*',\n name: 'notfound',\n component: FourOFour\n }\n ])\n\nconst router = new Router({\n mode: 'history',\n routes\n})\n\nrouter.beforeEach((to, from, next) => {\n // allow access to root, callback and invitaitons, otherwise require user being authenticated\n if (publicNames.indexOf(to.name) > -1 || getInstance().isAuthenticated) {\n return next()\n }\n router.push({ name: 'login', query: { ...to.query, targetUrl: to.fullPath } })\n})\n\nexport default router\n","import axios from 'axios'\nimport { getInstance } from './auth/auth'\nimport LogRocket from 'logrocket'\nimport axiosRetry from 'axios-retry'\nimport store from './store'\nimport regionsMixin from './mixins/regions'\n\nlet baseURL = ''\nif (window.appConfig?.VUE_APP_ENV === 'production') {\n baseURL = window.appConfig?.VUE_APP_BACKEND_URL\n} else {\n baseURL = localStorage.getItem('nvBaseUrl')\n if (!baseURL) {\n baseURL = window.appConfig?.VUE_APP_BACKEND_URL\n }\n}\n\nconst $axios = axios.create({\n baseURL,\n timeout: 300000,\n headers: { 'Content-Type': 'application/json' }\n})\n\naxiosRetry($axios, {\n retries: 2,\n retryDelay: retryCount => {\n return retryCount * 1000\n }\n})\n\n// Request Interceptor\n$axios.interceptors.request.use(\n async config => {\n if (getInstance().isAuthenticated) {\n const accessToken = await getInstance().getTokenSilently()\n config.headers.Authorization = `Bearer ${accessToken}`\n }\n config.metadata = { startTime: new Date() }\n return config\n },\n error => {\n Promise.reject(error)\n }\n)\n\n$axios.interceptors.response.use(\n function (response) {\n const metadata = response.config.metadata\n metadata.endTime = new Date()\n response.duration = metadata.endTime - metadata.startTime\n if (response.duration > response.headers['x-runtime-ms'] * 10) {\n const info = {\n endpoint: response.request.responseURL,\n method: response.config.method,\n status: response.status,\n feStart: metadata.startTime,\n feRuntime: response.duration,\n beRuntime: response.headers['x-runtime-ms']\n }\n console.warn(`${response.request.responseURL.split('/').pop()}: `, info)\n LogRocket.captureException(new Error('Long running request.'), {\n extra: info\n })\n }\n return response\n },\n function (error) {\n if (error.response) {\n const { status } = error.response\n if (error.response.data && error.response.data.code === 'user_disabled') {\n store.dispatch('hideSnackBar')\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Deactivated account',\n dialogText: 'You account has been deactivated. You can request reactivation of your account at support@nuvolos.cloud.',\n dialogAction: ['logout']\n })\n }\n if (status === 401 || (error.response.data && error.response.data.code === 'token_expired')) {\n if (!(error.response.data && error.response.data.code === 'vpn_credentials_missing')) {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Your session has ended!',\n dialogText: 'Your session has expired, please reload the page.',\n dialogAction: ['reload']\n })\n }\n }\n if (error.response.data && error.response.data.code === 'instance_missing') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Unavailable data',\n dialogText: 'This instance does not exist or it has been deleted.',\n dialogAction: ['returnToWelcomePage']\n })\n }\n if (error.response.data && error.response.data.code === 'quick_detailed_snapshot_limit_reached') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Snapshot limit reached',\n dialogText:\n 'You have reached the maximum number of on-demand snapshots. Please delete snapshots that are no longer needed. Auto snapshots do not count against the limit.',\n dialogAction: ['dismiss']\n })\n }\n if (error.response.data && error.response.data.code === 'already_accepting') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Accepting invitation',\n dialogText: 'This invitation has already been accepted, please continue to wait a bit and reload the page after 1-2 minutes.',\n dialogAction: ['reload']\n })\n }\n if (error.response.data && error.response.data.code === 'already_registering') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Registering account',\n dialogText:\n 'Registration for this invitation has already been started, please continue to wait a bit and reload the page after 1-2 minutes.',\n dialogAction: ['reload']\n })\n }\n if (error.response.data && (error.response.data.code === 'invitation_has_expired' || error.response.data.code === 'invitation_revoked')) {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Invitation not valid!',\n dialogText: 'This invitation has expired or has been revoked.',\n dialogAction: ['dismiss']\n })\n }\n if (error.response.data && error.response.data.code === 'unidentifiable_instance_request') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Unavailable data',\n dialogText: 'This instance does not exist or it has been deleted.',\n dialogAction: ['returnToWelcomePage']\n })\n }\n if (error.response.data && error.response.data.code === 'space_missing') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Unavailable data',\n dialogText: 'This space does not exist or it has been deleted.',\n dialogAction: ['returnToWelcomePage']\n })\n }\n if (error.response.data && error.response.data.code === 'org_missing') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Unavailable data',\n dialogText: 'This organization does not exist or it has been deleted.',\n dialogAction: ['returnToWelcomePage']\n })\n }\n if (error.response.data && error.response.data.code === 'email_already_registered_error') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Existing account',\n dialogText: 'An account already exists with this email address. Please sign in with the existing account to accept your invitation.',\n dialogAction: ['dismiss']\n })\n }\n if (error.response.data && error.response.data.code === 'concurrency_limit_reached') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Application concurrency limit reached',\n dialogText: 'Contact one of your lecturers/TAs that the concurrency limit has been exhausted in the course.',\n dialogAction: ['returnToWelcomePage']\n })\n }\n if (error.response.data && error.response.data.code === 'application_deleted') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Application deleted / moved',\n dialogText: 'This application was deleted (or an older version restored), if accessing from a bookmark, please update it.',\n dialogAction: ['returnToWelcomePage']\n })\n }\n if (error.response.data && error.response.data.code === 'insufficient_org_role') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Permission denied',\n dialogText: 'You do not have permission for this action, please check if you have the right URL.',\n dialogAction: ['returnToWelcomePage']\n })\n }\n if (error.response.data && error.response.data.code === 'insufficient_instance_role') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Permission denied',\n dialogText: 'You do not have permission for this action, please check if you have the right URL.',\n dialogAction: ['returnToWelcomePage']\n })\n }\n if (error.response.data && error.response.data.code === 'application_missing') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Application not found',\n dialogText: 'This application does not seem to exist, please check the URL.',\n dialogAction: ['returnToWelcomePage']\n })\n }\n if (error.response.data && /space.*_in_.*/.test(error.response.data.code)) {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Space in different region',\n dialogText: 'This space is in a different region, redirecting to it shortly. You might be required to sign in again.',\n dialogAction: ['dismiss']\n })\n const regionCodeFromErrorMessage = error.response.data.code.replace(/space.*_in_(.*)/, '$1')\n setTimeout(() => {\n document.location = regionsMixin.methods.changeRegionURL(regionCodeFromErrorMessage)\n }, 5000)\n }\n if (error.response.data && /space_.*_migrating/.test(error.response.data.code)) {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Space is migrating',\n dialogText:\n 'This space is in the process of being migrated to a different region and is currently not accessible. Please check back a bit later.',\n dialogAction: ['returnToWelcomePage']\n })\n }\n if (error.response.data && error.response.data.code === 'max_members_reached') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Max members reached',\n dialogText: 'Trial has already reached the max user count, signup is not allowed.',\n dialogAction: ['returnToWelcomePage']\n })\n }\n if (error.response.data && error.response.data.code === 'restoring_snapshot') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Snapshot being restored',\n dialogText: 'A snapshot restore operation is in progress, please wait for it to finish, before continuing.',\n dialogAction: ['returnToWelcomePage']\n })\n }\n if (error.response.data && error.response.data.code === 'max_spaces_reached') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Max spaces reached',\n dialogText: 'Trial has already reached max space count, new space creation is not allowed.',\n dialogAction: ['returnToWelcomePage']\n })\n }\n if (error.response.data && error.response.data.code === 'trial_ended') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Trial ended',\n dialogText: 'The trial end date has passed.',\n dialogAction: ['returnToWelcomePage']\n })\n }\n if (error.response.data && error.response.data.code === 'instance_archived') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Application start failed',\n dialogText: 'The instance of this application is in an archived state, please restore a snapshot first to use applications.',\n dialogAction: ['toInstanceSnapshots']\n })\n }\n if (error.response.data && error.response.data.code === 'max_quota_reached') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Application start failed',\n dialogText:\n 'You are very near to exhaust your file storage quota, therefore the application could not be started. Please remove some files to free up space or request a quota increase via Intercom.',\n dialogAction: ['toSnapshotFiles']\n })\n }\n if (error.response.data && error.response.data.code === 'user_concurrency_limit_reached') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Maximum number of applications running reached!',\n dialogText:\n 'You have reached the maximal number of concurrent applications allowed (5). Please stop running applications before starting new ones.',\n dialogAction: ['returnToWelcomePage']\n })\n }\n\n if (error.response.data && error.response.data.code === 'vimeo_not_enabled_org') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Video library not enabled!',\n dialogText: 'Video library upload is not enabled for your organization, please ask us to enable it for you.',\n dialogAction: ['dismiss']\n })\n }\n\n if (error.response.data && error.response.data.code === 'vimeo_not_enabled_space') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Video library not enabled!',\n dialogText: 'Video library upload is not enabled in your space. Please go to space configuration and enable video library upload.',\n dialogAction: ['dismiss']\n })\n }\n\n if (error.response.data && error.response.data.code === 'startup_too_soon') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: 'Wrong scheduled startup time!',\n dialogText: 'Creating scheduled startup is not allowed because the selected time is in less than half an hour.',\n dialogAction: ['close']\n })\n }\n\n if (error.response.data && error.response.data.code === 'maximum_allowed_schedules_reached') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: \"Can't add new schedule!\",\n dialogText: 'Your space has reached the maximum number of allowed scheduled startups (20).',\n dialogAction: ['close']\n })\n }\n\n if (error.response.data && error.response.data.code === 'app_limit_reached') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: \"Can't add new app!\",\n dialogText: error.response.data.description,\n dialogAction: ['close']\n })\n }\n if (error.response.data && error.response.data.code === 'instance_limit_reached') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: \"Can't create new instance!\",\n dialogText: error.response.data.description,\n dialogAction: ['close']\n })\n }\n if (error.response.data && error.response.data.code === 'ssh_token_limit_reached') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: \"Can't add new ssh token!\",\n dialogText: error.response.data.description,\n dialogAction: ['close']\n })\n }\n if (error.response.data && error.response.data.code === 'space_limit_reached') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: \"Can't create new space!\",\n dialogText: error.response.data.description,\n dialogAction: ['close']\n })\n }\n if (error.response.data && error.response.data.code === 'snapshot_rate_limit_error') {\n store.dispatch('showGlobalDialog', {\n dialogTitle: \"Can't create new snapshot!\",\n dialogText: 'A snapshot is already being created, please wait for it to finish. You can check your task manager for running tasks.',\n dialogAction: ['close']\n })\n }\n if (error.response.data && error.response.data.code === 'app_already_started') {\n store.dispatch('showGlobalDialog', {\n dialogText: 'App already started.',\n dialogTitle: 'Application start failed',\n dialogAction: ['returnToWelcomePage']\n })\n }\n if (error.response.data && error.response.data.code === 'space_doesnt_have_tables') {\n store.dispatch('showGlobalDialog', {\n dialogText: 'Tables feature must be enabled in the space before this application can be used.',\n dialogTitle: 'Application start failed',\n dialogAction: ['returnToWelcomePage']\n })\n }\n if (error.response.data && error.response.data.code === 'no_ncu_hours_for_contract') {\n store.dispatch('showGlobalDialog', {\n dialogText: 'The resource pool this application belongs to, does not have enough NCU hours to start the app.',\n dialogTitle: 'Application start failed',\n dialogAction: ['contactSupport', 'returnToWelcomePage']\n })\n }\n if (error.response.data && error.response.data.code === 'user_trial_expired') {\n store.dispatch('showGlobalDialog', {\n dialogText: 'Your trial is up, cannot start applications anymore.',\n dialogTitle: 'Trial expired',\n dialogAction: ['contactSupport', 'returnToWelcomePage']\n })\n }\n }\n return Promise.reject(error)\n }\n)\n\nexport default $axios\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-app',{ref:\"app\",staticStyle:{\"background-color\":\"#fff\"},attrs:{\"id\":\"inspire\"}},[(\n ![\n 'app-open',\n 'login',\n 'to-login',\n 'signup-index',\n 'signup-home',\n 'signup-options',\n 'signup-provider',\n 'signup-success',\n 'invitation-index',\n 'invitation-password',\n 'invitation-home',\n 'invitation-accept',\n 'invitation-provider',\n 'invitation-authenticated',\n 'trial',\n 'trial-provider'\n ].includes(_vm.$route.name)\n )?_c('TheToolbar'):_vm._e(),_c('router-view',{attrs:{\"name\":\"permanent-sidebar\"}}),_c('v-main',{staticClass:\"intercom-padding\",style:(_vm.$route.params.aid !== 'undefined' ? 'overflow-y: hidden' : '')},[_c('transition',{attrs:{\"name\":\"fadeonly\",\"mode\":\"out-in\"}},[_c('router-view')],1)],1),_c('v-snackbar',{attrs:{\"text\":\"\",\"value\":_vm.$store.state['snackBar'],\"timeout\":-1,\"elevation\":\"1\"}},[_c('div',{staticClass:\"d-flex align-center\"},[_c('v-icon',{staticClass:\"mr-3\",attrs:{\"color\":_vm.snackBarIcon === 'check_circle' ? 'success' : _vm.snackBarIcon === 'error' ? 'error' : 'info'}},[_vm._v(\" \"+_vm._s(_vm.snackBarIcon)+\" \")]),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.snackBarText)}}),_c('v-spacer'),_c('v-btn',{staticClass:\"font-weight-bold ml-5\",attrs:{\"text\":_vm.snackBarIcon !== 'cookie',\"color\":\"secondary\"},on:{\"click\":function($event){return _vm.$store.dispatch('hideSnackBar')}}},[_vm._v(\" \"+_vm._s(_vm.snackBarLabel || 'Close')+\" \")])],1)]),_c('GlobalDialog'),_c('v-snackbar',{attrs:{\"color\":\"primary\",\"vertical\":true,\"timeout\":_vm.forcePWAUpdate ? 0 : 10000},scopedSlots:_vm._u([{key:\"action\",fn:function({ attrs }){return [_c('v-btn',_vm._b({attrs:{\"text\":\"\"},on:{\"click\":_vm.update}},'v-btn',attrs,false),[_vm._v(\"Update\")])]}}]),model:{value:(_vm.showUpdatePwa),callback:function ($$v) {_vm.showUpdatePwa=$$v},expression:\"showUpdatePwa\"}},[(!_vm.forcePWAUpdate)?_c('span',[_vm._v(\"A new version of Nuvolos is available. Update?\")]):_c('span',[_vm._v(\"Your Nuvolos version requires updating!\")])]),_c('div',{staticClass:\"shepherd-backdrop\"})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import LogRocket from 'logrocket'\n\nexport function initLogRocketSession() {\n LogRocket.init('unkwc1/nuvolos', {\n network: {\n requestSanitizer: request => {\n // do not store app password\n if (request.url.toLowerCase().indexOf('start_app') !== -1) {\n if (request.body) {\n const body = JSON.parse(request.body)\n if (body.app_pwd) {\n body.app_pwd = 'redacted'\n request.body = JSON.stringify(body)\n }\n }\n }\n if (request.url.toLowerCase().indexOf('register_with_invitation') !== -1) {\n if (request.body) {\n const body = JSON.parse(request.body)\n if (body.password) {\n body.password = 'redacted'\n request.body = JSON.stringify(body)\n }\n }\n }\n\n return request\n }\n }\n })\n}\n\nexport function identifySession(to) {\n const id = to.uid\n LogRocket.identify(id)\n}\n","import { DateTime } from 'luxon'\n\nexport const displayCookiePopup = interval => {\n // Show popup only once per session\n if (sessionStorage.getItem('nvPopupShown')) return\n\n const popupShownLastTime = localStorage.getItem('nvLastPopup')\n const shownLast = DateTime.fromISO(popupShownLastTime)\n if (!interval && shownLast.isValid) return false\n\n const now = DateTime.now()\n const shownNext = DateTime.fromISO(shownLast).plus(interval)\n if (!shownNext.isValid) return true\n\n const show = now > shownNext\n return show\n}\n","\n \n \n \n \n \n \n \n \n \n \n
\n {{ snackBarIcon }}\n \n
\n
\n
\n {{ snackBarLabel || 'Close' }}\n \n
\n \n \n \n A new version of Nuvolos is available. Update?\n Your Nuvolos version requires updating!\n \n Update\n \n \n \n \n\n\n\n\n\n\n\n","import mod from \"-!../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??ref--13-1!../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=js&\"; export default mod; export * from \"-!../node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??ref--13-1!../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=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=1fee4e08&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=1fee4e08&prod&lang=scss&\"\nimport style1 from \"./App.vue?vue&type=style&index=1&id=1fee4e08&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 \"1fee4e08\",\n null\n \n)\n\nexport default component.exports","// Vue.js Filters\n// https://vuejs.org/v2/guide/filters.html\n\nimport Vue from 'vue'\n\nconst filters = {\n formatTimestamp(timestamp) {\n const datetime = new Date(timestamp)\n return datetime.toLocaleTimeString('en-US')\n }\n}\n\n// Register All Filters on import\nObject.keys(filters).forEach(function (filterName) {\n Vue.filter(filterName, filters[filterName])\n})\n","import { Workbox } from 'workbox-window'\n\nlet wb\nif ('serviceWorker' in navigator) {\n wb = new Workbox(`${window.location.origin}/service-worker.js`)\n wb.addEventListener('controlling', () => {\n window.location.reload()\n })\n wb.register()\n} else {\n wb = null\n}\nexport default wb\n","// src/plugins/auth.js\n\nimport $axios from '../backend'\n\nexport default {\n install(Vue) {\n Vue.prototype.$axios = $axios\n }\n}\n","import Vue from 'vue'\nimport vuetify from './plugins/vuetify'\nimport App from './App.vue'\nimport VueClipboard from 'vue-clipboard2'\nimport router from './router'\nimport store from './store'\nimport './filters'\nimport AsyncComputed from 'vue-async-computed'\nimport VueMask from 'v-mask'\nimport { DateTime, Duration } from 'luxon'\nimport VueKatex from 'vue-katex'\nimport { isError, isProduction } from '@/helpers'\n\nimport { sync } from 'vuex-router-sync' // done. Returns an unsync callback fn\n\n// Import the plugin here\nimport { Auth0Plugin } from './auth/auth'\nimport axiosPlugin from './plugins/backend'\n\nimport wb from './registerServiceWorker'\nVue.prototype.$workbox = wb\n\nsync(store, router)\n\n// Install the authentication plugin here\nVue.use(Auth0Plugin, {\n onRedirectCallback: appState => {\n if (appState && appState.targetUrl) {\n router.push({ name: 'login', query: { targetUrl: appState.targetUrl } })\n }\n }\n})\n\nconst plugins = {\n install() {\n Vue.isError = isError\n Vue.isProduction = isProduction\n Vue.appConfig = window.appConfig\n Vue.prototype.$isError = isError\n Vue.prototype.$isProduction = isProduction\n Vue.prototype.$appConfig = window.appConfig\n }\n}\nVue.use(plugins)\n\n// Use async computed\nVue.use(AsyncComputed)\n\nVue.use(axiosPlugin)\n\n// Use vue ClipBoard\nVueClipboard.config.autoSetContainer = true\nVue.use(VueClipboard)\n\nVue.use(VueMask)\n\nVue.use(VueKatex, {\n globalOptions: {\n delimiters: [\n { left: '$$', right: '$$', display: true },\n { left: '\\\\(', right: '\\\\)', display: false },\n { left: '\\\\begin{equation}', right: '\\\\end{equation}', display: true },\n { left: '\\\\begin{equation*}', right: '\\\\end{equation*}', display: true },\n { left: '\\\\begin{align}', right: '\\\\end{align}', display: true },\n { left: '\\\\begin{align*}', right: '\\\\end{align*}', display: true },\n { left: '\\\\begin{alignat}', right: '\\\\end{alignat}', display: true },\n { left: '\\\\begin{gather}', right: '\\\\end{gather}', display: true },\n { left: '\\\\begin{CD}', right: '\\\\end{CD}', display: true },\n { left: '\\\\[', right: '\\\\]', display: true },\n { left: '$\\\\displaystyle', right: '$', display: true },\n { left: '$', right: '$', display: false }\n ],\n strict: 'warn',\n throwOnError: false,\n preProcess(str) {\n const s = str.replaceAll('\\\\\\n', '\\\\\\\\\\n')\n return s\n }\n }\n})\n\nVue.config.productionTip = false\n\nVue.filter('dateTimeToHuman', function (value) {\n if (!value) return\n const dt = DateTime.fromISO(value)\n if (!dt.isValid) {\n return 'Invalid date'\n }\n return dt.toFormat(window.appConfig?.VUE_APP_DATETIMEFORMAT)\n})\n\nVue.filter('dateToHuman', function (value) {\n const dt = DateTime.fromISO(value)\n if (!dt.isValid) {\n return 'Invalid date'\n }\n return dt.toFormat(window.appConfig?.VUE_APP_DAYFORMAT)\n})\n\nVue.filter('durationToHuman', function (seconds) {\n const dur = Duration.fromObject({ seconds })\n if (!dur.isValid) {\n return 'Invalid duration'\n }\n return dur.toFormat(window.appConfig?.VUE_APP_DURATIONFORMAT)\n})\n\nnew Vue({\n router,\n store,\n vuetify,\n render: h => h(App)\n}).$mount('#app')\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!./App.vue?vue&type=style&index=0&id=1fee4e08&prod&lang=scss&\"","import $axios from './backend.js'\n\nexport async function delay(ms) {\n return await new Promise(resolve => setTimeout(resolve, ms))\n}\n\nexport function fetchAppStartupSchedules({ sid, all }) {\n let apiString = `/spaces/${sid}/startup_schedules`\n if (all) {\n apiString += `?all_schedules=true`\n }\n return $axios.get(apiString)\n}\n\nexport function setAppStartupSchedule({ sid, aoid, startupTime, nodePool, stopAfterMinutes }) {\n const body = { aoid, startup_time: startupTime, node_pool: nodePool, stop_after_minutes: stopAfterMinutes }\n return $axios.post(`/spaces/${sid}/schedule_startup`, body)\n}\n\nexport function updateAppStartupSchedule({ ssid, startupTime, nodePool, stopAfterMinutes }) {\n const body = { startup_time: startupTime, node_pool: nodePool }\n if (nodePool) {\n body.stop_after_minutes = stopAfterMinutes\n }\n return $axios.patch(`/startup_schedules/${ssid}`, body)\n}\n\nexport function deleteAppStartupSchedule(ssid) {\n return $axios.delete(`/startup_schedules/${ssid}`)\n}\n\nexport async function fetchTask(taskId) {\n try {\n let task = await $axios.get(`/tasks/${taskId}`)\n while (!task.data.finished) {\n await delay(2000)\n task = await $axios.get(`/tasks/${taskId}`)\n }\n return task\n } catch (error) {\n return error\n }\n}\n\nexport function enableVimeoForSpace(sid) {\n return $axios.patch(`/spaces/${sid}`, { vimeo_enabled: true })\n}\n\nexport function fetchVimeoVideos(sid) {\n return $axios.get(`/spaces/${sid}/videos`)\n}\n","import { isProduction } from '@/helpers'\n\nconst regions = [\n {\n code: 'IONOS_FRANKFURT',\n domainPrefix: '',\n enum: 0,\n production: true\n },\n {\n code: 'AZ_EU_WEST',\n domainPrefix: 'az.',\n enum: 1,\n production: true\n },\n {\n code: 'IONOS_FRANKFURT_staging',\n domainPrefix: 'staging.',\n enum: 0\n },\n {\n code: 'AZ_EU_WEST_staging',\n domainPrefix: isProduction() ? 'az-staging.' : 'app-dev.',\n enum: 1\n }\n]\n\nconst regionsMixin = {\n methods: {\n changeRegionURL(newRegionCode, oldURL) {\n const newRegion = regions.filter(r => r.code === newRegionCode)\n if (newRegion.length) {\n const urlToReplace = oldURL || location.href\n return urlToReplace.replace(location.origin, 'https://' + newRegion[0].domainPrefix + 'nuvolos.cloud')\n }\n return location.origin\n },\n getCurrentRegionEnum() {\n const cr = regions.filter(e => location.origin.match('https://' + e.domainPrefix + 'nuvolos.cloud'))\n if (cr.length) {\n return cr[0].enum\n }\n return 0\n },\n getRegionCodeFromEnum(enumVal) {\n const region = regions.filter(r => r.enum.toString() === enumVal.toString() && r.production === this.getIsProduction())\n if (region.length) {\n return region[0].code\n }\n return regions[0].code\n },\n getIsProduction() {\n const currentRegion = regions.filter(e => location.origin.match('https://' + e.domainPrefix + 'nuvolos.cloud'))\n return currentRegion.length && currentRegion[0].production\n }\n }\n}\n\nexport default regionsMixin\n","export default {\n methods: {\n async install() {\n const ret = await window.deferredPrompt.prompt()\n if (ret.outcome === 'accepted') {\n window.setTimeout(() => {\n window.moveTo(0, 0)\n window.resizeTo(window.screen.availWidth, window.screen.availHeight)\n }, 250)\n }\n },\n isPWA() {\n return window.matchMedia('(display-mode: standalone)').matches\n }\n }\n}\n","const tourStore = {\n namespaced: true,\n state: {\n stageTourStarted: false,\n stageAppTourStarted: false,\n stageTableTourStarted: false\n },\n mutations: {\n stageTourStarted: function (state, val) {\n state.stageTourStarted = val\n },\n stageAppTourStarted: function (state, val) {\n state.stageAppTourStarted = val\n },\n stageTableTourStarted: function (state, val) {\n state.stageTableTourStarted = val\n }\n },\n actions: {},\n getters: {}\n}\n\nexport default tourStore\n","import $axios from '@/backend.js'\nimport router from '@/router'\nimport { sortArray, isManagerRole, isFacultyRole, isAdminRole } from '@/utils'\nconst orgStore = {\n namespaced: true,\n state: {\n orgUsers: [],\n orgTokens: [],\n orgInvitations: [],\n spacesWithPrimarySnapshots: [],\n fetchingSpaces: false,\n fetchingOrgUsers: false,\n fetchingOrgTokens: false,\n fetchingOrgInvitations: false,\n fetchingInvitations: false,\n educationSpaces: [],\n researchSpaces: [],\n datasetSpaces: [],\n recentEducationSpaces: [],\n recentResearchSpaces: [],\n recentDatasetSpaces: []\n },\n mutations: {\n setUsers: function (state, users) {\n state.orgUsers = users\n },\n setOrgInvitations: function (state, invitations) {\n state.orgInvitations = invitations\n },\n setTokens: function (state, tokens) {\n state.orgTokens = tokens\n },\n setFetching: function (state, { fetchingObject, fetchingStatus }) {\n if (fetchingObject === 'orgSpaces') {\n state.fetchingSpaces = fetchingStatus\n } else if (fetchingObject === 'orgInvitations') {\n state.fetchingOrgInvitations = fetchingStatus\n } else if (fetchingObject === 'orgUsers') {\n state.fetchingOrgUsers = fetchingStatus\n } else if (fetchingObject === 'orgTokens') {\n state.fetchingOrgTokens = fetchingStatus\n }\n },\n setSpacePrimarySnapshots: function (state, snapshotData) {\n const orgSpaces = snapshotData.filter(space => space.lock_mode_name !== 'DELETING')\n const dataSpaces = orgSpaces.filter(space => space.space_type === 0)\n const eduSpaces = orgSpaces.filter(space => space.space_type === 1)\n const resSpaces = orgSpaces.filter(space => space.space_type === 2)\n state.spacesWithPrimarySnapshots = orgSpaces\n state.educationSpaces = sortArray(eduSpaces, 'space_long_id', 'ascending', true)\n state.researchSpaces = sortArray(resSpaces, 'space_long_id', 'ascending', true)\n state.datasetSpaces = sortArray(dataSpaces, 'space_long_id', 'ascending', true)\n state.recentEducationSpaces = sortArray(eduSpaces, 'sid', 'descending', false).slice(0, 3)\n state.recentResearchSpaces = sortArray(resSpaces, 'sid', 'descending', false).slice(0, 3)\n state.recentDatasetSpaces = sortArray(dataSpaces, 'sid', 'descending', false).slice(0, 3)\n }\n },\n actions: {\n fetchOrgSpaces: function (context, oid) {\n context.commit('setFetching', { fetchingObject: 'orgSpaces', fetchingStatus: true })\n return $axios\n .get(`/orgs/${oid}/primary_snapshots`, { max_snapshots: 1 })\n .then(response => {\n context.commit('setSpacePrimarySnapshots', response.data)\n const userHasSpaceAdminRole = space => isAdminRole(space.space_role)\n if (response.data.some(userHasSpaceAdminRole)) {\n context.dispatch('userStore/fetchUserToApproveRequests', {}, { root: true })\n }\n })\n .catch(error => {\n if (error.response && error.response.data && error.response.data.code === 'conn_not_registered') {\n router.push({ name: 'welcome' })\n }\n })\n .finally(() => {\n context.commit('setFetching', { fetchingObject: 'orgSpaces', fetchingStatus: false })\n })\n },\n fetchOrgUsers: function (context, oid) {\n context.commit('setFetching', { fetchingObject: 'orgUsers', fetchingStatus: true })\n $axios\n .get(`/orgs/${oid}/list_users`)\n .then(function (response) {\n context.commit('setUsers', response.data)\n })\n .finally(() => {\n context.commit('setFetching', { fetchingObject: 'orgUsers', fetchingStatus: false })\n })\n },\n fetchOrgTokens: function (context, oid) {\n context.commit('setFetching', { fetchingObject: 'orgTokens', fetchingStatus: true })\n $axios\n .get(`/orgs/${oid}/org_tokens`)\n .then(function (response) {\n context.commit('setTokens', response.data)\n })\n .finally(() => {\n context.commit('setFetching', { fetchingObject: 'orgTokens', fetchingStatus: false })\n })\n },\n fetchOrgInvitations: function (context, oid) {\n context.commit('setFetching', { fetchingObject: 'orgInvitations', fetchingStatus: true })\n $axios\n .post(`/orgs/${oid}/invitations`, { children_instance_invitations: false, children_space_invitations: false })\n .then(function (response) {\n context.commit('setOrgInvitations', response.data)\n })\n .finally(() => {\n context.commit('setFetching', { fetchingObject: 'orgInvitations', fetchingStatus: false })\n })\n }\n },\n getters: {\n orgLongName: (state, getters, rootState) => {\n if (rootState.route.params.oid !== undefined) {\n const org = rootState.userOrgs.find(org => org.oid.toString() === rootState.route.params.oid.toString())\n if (org) {\n return org.long_id\n }\n }\n return ''\n },\n isOrgManager: (state, getters, rootState) => {\n if (rootState.currentOrgData) {\n const currentOrg = rootState.userOrgs.find(org => org.oid.toString() === rootState.currentOrgData.oid.toString())\n if (currentOrg && isManagerRole(currentOrg.role)) {\n return true\n }\n }\n return false\n },\n isOrgFaculty: (state, getters, rootState) => {\n if (rootState.currentOrgData) {\n const currentOrg = rootState.userOrgs.find(org => org.oid.toString() === rootState.currentOrgData.oid.toString())\n if (currentOrg && isFacultyRole(currentOrg.role)) {\n return true\n }\n }\n return false\n },\n orgTablesStatus: (state, getters, rootState) => {\n if (rootState.route.params.oid && rootState.userOrgs) {\n const currentOrg = rootState.userOrgs.find(org => org.oid.toString() === rootState.route.params.oid.toString())\n if (currentOrg) {\n return currentOrg.tables_enabled\n }\n }\n return null\n }\n }\n}\n\nexport default orgStore\n","const homeStore = {\n namespaced: true,\n state: {\n createSpaceAndApp: { operationSelected: false, step: 1, spaceType: '', skipAppCreation: false, lastStepCompleted: false }\n },\n mutations: {\n updateCreateSpaceAndApp: function (state, { operationSelectedVal, stepVal, skipAppCreationVal, lastStepCompletedVal, spaceTypeVal }) {\n if (operationSelectedVal !== null && operationSelectedVal !== undefined) {\n state.createSpaceAndApp.operationSelected = operationSelectedVal\n }\n if (stepVal !== null && stepVal !== undefined) {\n state.createSpaceAndApp.step = stepVal\n }\n if (skipAppCreationVal !== null && skipAppCreationVal !== undefined) {\n state.createSpaceAndApp.skipAppCreation = skipAppCreationVal\n }\n if (lastStepCompletedVal !== null && lastStepCompletedVal !== undefined) {\n state.createSpaceAndApp.lastStepCompleted = lastStepCompletedVal\n }\n if (spaceTypeVal !== null && spaceTypeVal !== undefined) {\n state.createSpaceAndApp.spaceType = spaceTypeVal\n }\n },\n resetCreateSpaceAndApp: function (state) {\n state.createSpaceAndApp.operationSelected = false\n state.createSpaceAndApp.lastStepCompleted = false\n state.createSpaceAndApp.step = 1\n state.createSpaceAndApp.spaceType = ''\n state.createSpaceAndApp.skipAppCreation = false\n }\n },\n actions: {\n updateCreateSpaceAndApp: function (context, { operationSelectedVal, stepVal, skipAppCreationVal, lastStepCompletedVal, spaceTypeVal }) {\n context.commit('updateCreateSpaceAndApp', {\n operationSelectedVal,\n stepVal,\n skipAppCreationVal,\n lastStepCompletedVal,\n spaceTypeVal\n })\n },\n resetCreateSpaceAndApp: function (context, newVal) {\n context.commit('resetCreateSpaceAndApp')\n }\n }\n}\n\nexport default homeStore\n","import $axios from '@/backend.js'\nimport { sortArray, isDistributedInstance, isAdminRole, isMasterOrDistributedInstance, randomString, isMasterInstance } from '@/utils'\nimport { enumsData } from '@/mixins/enums'\nimport LogRocket from 'logrocket'\nimport router from '@/router'\n\nconst getDefaultState = () => {\n return {\n currentSpace: null,\n spaceInstances: [],\n spaceUsers: [],\n spaceBundles: [],\n fetchingSpaceBundles: false,\n spaceInvitations: [],\n distributedInstanceId: null,\n fetchingInstances: false,\n invitationFromSnapshotView: false,\n fetchingSpaceUsers: null,\n fetchingSpaceInvitations: null,\n mappedResources: null,\n fetchingApplications: false,\n applicationFamilies: [],\n applicationVersions: []\n }\n}\nconst spaceStore = {\n namespaced: true,\n state: getDefaultState(),\n mutations: {\n setCurrentSpace(state, space) {\n state.currentSpace = space\n },\n resetSpaceState(state) {\n Object.assign(state, getDefaultState())\n },\n setInstances: function (state, instances) {\n state.spaceInstances = instances\n },\n setDistributedInstanceId: function (state, iid) {\n state.distributedInstanceId = iid\n },\n setUsers: function (state, users) {\n state.spaceUsers = users\n },\n setSpaceInvitations: function (state, invitations) {\n state.spaceInvitations = invitations\n },\n setSpaceBundles: function (state, bundles) {\n state.spaceBundles = bundles\n },\n setFetching: function (state, { fetchingObject, fetchingStatus }) {\n if (fetchingObject === 'instances') {\n state.fetchingInstances = fetchingStatus\n } else if (fetchingObject === 'spaceUsers') {\n state.fetchingSpaceUsers = fetchingStatus\n } else if (fetchingObject === 'spaceInvitations') {\n state.fetchingSpaceInvitations = fetchingStatus\n } else if (fetchingObject === 'spaceBundles') {\n state.fetchingSpaceBundles = fetchingStatus\n }\n },\n setMappedResources(state, data) {\n state.mappedResources = data\n },\n setApplicationFamilies: function (state, families) {\n state.applicationFamilies = families\n },\n setApplicationVersions: function (state, versions) {\n state.applicationVersions = versions\n },\n setFetchingApplications(state, val) {\n state.fetchingApplications = val\n }\n },\n actions: {\n resetSpaceState: function (context) {\n context.commit('resetSpaceState')\n },\n setDistributedInstanceId: function (context, instances) {\n if (instances.length) {\n const distributedInstance = instances.find(instance => isDistributedInstance(instance.short_id))\n if (distributedInstance) {\n context.commit('setDistributedInstanceId', distributedInstance.iid)\n }\n }\n },\n fetchSpaceInstances: function (context, sid) {\n if (context.getters.currentSpaceType === null) return\n context.commit('setFetching', { fetchingObject: 'instances', fetchingStatus: true })\n return $axios\n .get(`spaces/${sid}/instances`)\n .then(({ data }) => {\n const master = data.filter(instance => isMasterInstance(instance.long_id))\n const distributed = data.filter(instance => isDistributedInstance(instance.long_id))\n const nonMasterAndDistributed = data.filter(instance => !isMasterOrDistributedInstance(instance.long_id))\n const sortedNonMasterAndDistributed = sortArray(nonMasterAndDistributed, 'long_id', 'ascending', true)\n\n let finalInstanceList = null\n if (\n context.getters.currentSpaceType === enumsData.data().spaceTypes.VENDOR_SPACE ||\n context.getters.currentSpaceType === enumsData.data().spaceTypes.RESEARCH_SPACE\n ) {\n finalInstanceList = master.concat(sortedNonMasterAndDistributed)\n } else {\n finalInstanceList = master.concat(distributed).concat(sortedNonMasterAndDistributed)\n }\n\n context.commit('setInstances', finalInstanceList)\n context.dispatch('setDistributedInstanceId', finalInstanceList)\n })\n .finally(() => {\n context.commit('setFetching', { fetchingObject: 'instances', fetchingStatus: false })\n })\n },\n fetchSpaceUsers: function (context, sid) {\n context.commit('setFetching', { fetchingObject: 'spaceUsers', fetchingStatus: true })\n $axios\n .get(`/spaces/${sid}/list_all_users`)\n .then(function (response) {\n context.commit('setUsers', response.data)\n })\n .finally(() => {\n context.commit('setFetching', { fetchingObject: 'spaceUsers', fetchingStatus: false })\n })\n },\n async fetchCurrentSpace(context) {\n try {\n const { data } = await $axios.get(`/spaces/${router.currentRoute.params.sid}`)\n context.commit('setCurrentSpace', data)\n return data\n } catch (error) {\n context.commit(\n 'showSnackBar',\n {\n snackBarText: 'Failed to get space data!',\n snackBarTimeout: 5000,\n snackBarIcon: 'error'\n },\n { root: true }\n )\n return error\n }\n },\n fetchSpaceBundles: function (context, sid) {\n context.commit('setFetching', { fetchingObject: 'spaceBundles', fetchingStatus: true })\n $axios\n .get(`/space/${sid}/bundles?handins=true`)\n .then(function (response) {\n context.commit('setSpaceBundles', response.data)\n })\n .finally(() => {\n context.commit('setFetching', { fetchingObject: 'spaceBundles', fetchingStatus: false })\n })\n },\n fetchSpaceInvitations: function (context, sid) {\n context.commit('setFetching', { fetchingObject: 'spaceInvitations', fetchingStatus: true })\n $axios\n .post(`/spaces/${sid}/invitations_v2`, { children_instance_invitations: true })\n .then(function (response) {\n context.commit('setSpaceInvitations', response.data)\n })\n .finally(() => {\n context.commit('setFetching', { fetchingObject: 'spaceInvitations', fetchingStatus: false })\n })\n },\n fetchMappedResources(context, sid) {\n $axios.get(`/spaces/${sid}/resource_allocation`).then(response => {\n context.commit('setMappedResources', response.data)\n })\n },\n async fetchApplications(context, sid) {\n context.commit('setFetchingApplications', true)\n try {\n const fetchingFamilies = $axios.get(`/spaces/${sid}/image_families`)\n const fetchingVersions = $axios.get(`/spaces/${sid}/images_v2`)\n\n const [families, versions] = await Promise.all([fetchingFamilies, fetchingVersions])\n context.commit('setApplicationFamilies', families.data)\n context.commit('setApplicationVersions', versions.data)\n } catch (error) {\n console.log(error)\n } finally {\n context.commit('setFetchingApplications', false)\n }\n }\n },\n getters: {\n spaceLongNameById: (state, getters, rootState) => sid => {\n if (sid !== undefined && sid !== null) {\n const space = rootState.orgStore.spacesWithPrimarySnapshots.find(space => space.sid.toString() === sid.toString())\n if (space) {\n return space.space_long_id\n }\n }\n return null\n },\n spaceDescriptionById: (state, getters, rootState) => sid => {\n if (sid !== undefined && sid !== null) {\n const space = rootState.orgStore.spacesWithPrimarySnapshots.find(space => space.sid.toString() === sid.toString())\n if (space) {\n return space.space_description\n }\n }\n return 'No description available.'\n },\n spaceArchiveTimestampById: (state, getters, rootState) => sid => {\n if (sid !== undefined && sid !== null) {\n const space = rootState.orgStore.spacesWithPrimarySnapshots.find(space => space.sid.toString() === sid.toString())\n if (space) {\n return space.space_archival_timestamp\n }\n }\n return null\n },\n spaceArchivalDateById: (state, getters, rootState) => sid => {\n if (sid !== undefined && sid !== null) {\n const space = rootState.orgStore.spacesWithPrimarySnapshots.find(space => space.sid.toString() === sid.toString())\n if (space) {\n return space.space_archive_by_date\n }\n }\n return null\n },\n spaceCreationDateById: (state, getters, rootState) => sid => {\n if (sid !== undefined && sid !== null) {\n const space = rootState.orgStore.spacesWithPrimarySnapshots.find(space => space.sid.toString() === sid.toString())\n if (space) {\n return space.space_creation_timestamp\n }\n }\n return null\n },\n spaceArchivalDate: (state, getters, rootState) => {\n return getters.spaceArchivalDateById(rootState.route.params.sid)\n },\n spaceCreationDate: (state, getters, rootState) => {\n return getters.spaceCreationDateById(rootState.route.params.sid)\n },\n isSpaceArchived: (state, getters, rootState) => {\n if (getters.spaceArchiveTimestampById(rootState.route.params.sid)) {\n return true\n }\n return false\n },\n isSpaceAdmin: (state, getters, rootState) => {\n if (rootState.route.params.sid !== undefined && rootState.orgStore.spacesWithPrimarySnapshots) {\n const currentSpace = rootState.orgStore.spacesWithPrimarySnapshots.find(space => space.sid.toString() === rootState.route.params.sid.toString())\n if (currentSpace && isAdminRole(currentSpace.space_role)) {\n return true\n }\n }\n return false\n },\n currentSpaceType: (state, getters, rootState) => {\n if (rootState.route.params.sid !== undefined && rootState.orgStore.spacesWithPrimarySnapshots) {\n const space = rootState.orgStore.spacesWithPrimarySnapshots.find(space => space.sid.toString() === rootState.route.params.sid.toString())\n if (space) {\n return space.space_type\n }\n }\n return null\n },\n currentSpaceVisibility: (state, getters, rootState) => {\n if (rootState.route.params.sid !== undefined && rootState.orgStore.spacesWithPrimarySnapshots) {\n const space = rootState.orgStore.spacesWithPrimarySnapshots.find(space => space.sid.toString() === rootState.route.params.sid.toString())\n if (space) {\n return space.space_visibility_type\n }\n }\n return null\n },\n currentSpaceArchived: (state, getters, rootState) => {\n if (rootState.route.params.sid !== undefined && rootState.orgStore.spacesWithPrimarySnapshots.length) {\n const space = rootState.orgStore.spacesWithPrimarySnapshots.find(space => space.sid.toString() === rootState.route.params.sid.toString())\n if (space) {\n return space.space_archival_timestamp\n }\n }\n return null\n },\n currentSpaceData: (state, getters, rootState) => {\n if (rootState.route.params.sid && rootState.orgStore.spacesWithPrimarySnapshots) {\n const spaceData = rootState.orgStore.spacesWithPrimarySnapshots.find(space => space.sid.toString() === rootState.route.params.sid.toString())\n return spaceData\n } else {\n return null\n }\n },\n assignmentsExist(state) {\n const distributionBundles = state.spaceBundles.filter(bundle => bundle.bundle_type_name === enumsData.data().distributionReasons.ASSIGNMENT)\n if (distributionBundles.length) {\n return true\n }\n return false\n },\n privateInstances(state) {\n return state.spaceInstances.filter(instance => !isMasterOrDistributedInstance(instance.long_id))\n },\n isTrialSpace(state, getters) {\n return getters.currentSpaceData?.snapshot_location === 'AZFS_PREMIUM'\n },\n applicationTags(state) {\n const allTags = {}\n try {\n state.applicationVersions.forEach(version => {\n if (version.tags == null) return\n for (const [tagType, tagNames] of Object.entries(version.tags)) {\n const tagNamesArr = Array.isArray(tagNames) ? tagNames : [tagNames]\n tagNamesArr.forEach(tagName => {\n if (!allTags[`${tagType}:${tagName}`]) allTags[`${tagType}:${tagName}`] = []\n allTags[`${tagType}:${tagName}`].push(version.imid)\n })\n }\n })\n } catch (err) {\n LogRocket.captureMessage(`app image configuration error [${randomString(8)}]`, {\n extra: err.message\n })\n }\n return allTags\n },\n isSpaceRested(state, getters, rootState) {\n return state.currentSpace?.resting_state === enumsData.data().spaceStatus.RESTED\n },\n isSpacePreResting(state, getters, rootState) {\n return state.currentSpace?.resting_state === enumsData.data().spaceStatus.PRE_RESTING\n },\n isSpaceResting(state, getters, rootState) {\n return state.currentSpace?.resting_state === enumsData.data().spaceStatus.RESTING\n },\n isSpaceWaking(state, getters, rootState) {\n return state.currentSpace?.resting_state === enumsData.data().spaceStatus.WAKING\n },\n isSpaceInAnyRestState(state, getters, rootState) {\n return getters.isSpaceRested || getters.isSpacePreResting || getters.isSpaceWaking || getters.isSpaceResting\n },\n isSpaceInAnyRestStateExceptPreResting(state, getters, rootState) {\n return getters.isSpaceRested || getters.isSpaceWaking || getters.isSpaceResting\n }\n }\n}\nexport default spaceStore\n","import $axios from '@/backend.js'\nimport { sortArray, isEditorRole, isObserverRole, isDistributedInstance, isMasterInstance, isViewerRole } from '@/utils'\nimport { getInstance } from '@/auth/auth'\n\nconst getDefaultState = () => {\n return {\n instanceSnapshots: [],\n instanceUsers: [],\n canSelectAndDistributeSnapshot: false,\n fetchingSnapshots: false,\n snapshotPollingInterval: null\n }\n}\nconst instanceStore = {\n namespaced: true,\n state: getDefaultState(),\n mutations: {\n resetInstanceState(state) {\n if (state.snapshotPollingInterval) {\n clearInterval(state.snapshotPollingInterval)\n }\n Object.assign(state, getDefaultState())\n },\n setSnapshotPollingInterval: function (state, interval) {\n state.snapshotPollingInterval = interval\n },\n setSnapshots: function (state, snapshots) {\n state.instanceSnapshots = snapshots.filter(snapshot => snapshot.lock_mode_name !== 'DELETING')\n },\n setUsers: function (state, users) {\n state.instanceUsers = users\n },\n setFetching: function (state, newVal) {\n state.fetchingSnapshots = newVal\n }\n },\n actions: {\n resetInstanceState: function (context) {\n context.commit('resetInstanceState')\n },\n setSnapshotPollingInterval: function (context, iid) {\n context.commit(\n 'setSnapshotPollingInterval',\n setInterval(() => {\n if (getInstance().isAuthenticated) {\n context.dispatch('fetchSnapshots', iid)\n }\n }, 300000)\n )\n },\n fetchSnapshots: function (context, iid) {\n return $axios\n .get(`instances/${iid}/snapshots`)\n .then(function (response) {\n const sortByIdDesc = sortArray(response.data, 'snid', 'descending', false)\n context.commit('setSnapshots', sortByIdDesc)\n })\n .catch(error => {\n console.log(error)\n })\n },\n fetchInstanceSnapshots: function (context, iid) {\n context.commit('setFetching', true)\n return context.dispatch('fetchSnapshots', iid).finally(() => {\n context.commit('setFetching', false)\n })\n },\n fetchInstanceUsers: function (context, iid) {\n $axios.get(`/instances/${iid}/list_users`).then(function (response) {\n context.commit('setUsers', response.data)\n })\n },\n updateCreateAndInviteStep: function (context, newVal) {\n context.commit('updateCreateAndInviteStep', newVal)\n },\n resetCreateAndShareData: function (context) {\n context.commit('resetCreateAndShareData')\n }\n },\n getters: {\n currentInstanceDescription: (state, getters, rootState) => {\n if (rootState.route.params.iid !== undefined && rootState.spaceStore.spaceInstances.length) {\n const instance = rootState.spaceStore.spaceInstances.find(instance => instance.iid.toString() === rootState.route.params.iid.toString())\n if (instance) {\n return instance.description\n }\n }\n return 'No description available for this instance'\n },\n instanceLongNameById: (state, getters, rootState) => iid => {\n if (iid !== undefined && iid !== null && rootState.spaceStore.spaceInstances.length) {\n const instance = rootState.spaceStore.spaceInstances.find(instance => instance.iid.toString() === iid.toString())\n if (instance) {\n return instance.long_id\n }\n }\n return null\n },\n instanceRearchiveAfterTimestamp: (state, getters, rootState) => iid => {\n if (iid !== undefined && iid !== null && rootState.spaceStore.spaceInstances.length) {\n const instance = rootState.spaceStore.spaceInstances.find(instance => instance.iid.toString() === iid.toString())\n if (instance) {\n return instance.rearchive_after_timestamp\n }\n }\n return null\n },\n isInstanceEditor: (state, getters, rootState) => {\n if (rootState.route.params.iid !== undefined && rootState.spaceStore.spaceInstances.length) {\n const currentInstance = rootState.spaceStore.spaceInstances.find(instance => instance.iid.toString() === rootState.route.params.iid.toString())\n if (currentInstance && isEditorRole(currentInstance.role)) {\n return true\n }\n }\n return false\n },\n isInstanceViewer: (state, getters, rootState) => {\n if (rootState.route.params.iid !== undefined && rootState.spaceStore.spaceInstances.length) {\n const currentInstance = rootState.spaceStore.spaceInstances.find(instance => instance.iid.toString() === rootState.route.params.iid.toString())\n if (currentInstance && isViewerRole(currentInstance.role)) {\n return true\n }\n }\n return false\n },\n isInstanceArchived: (state, getters, rootState) => {\n if (rootState.route.params.iid !== undefined && rootState.spaceStore.spaceInstances.length) {\n const currentInstance = rootState.spaceStore.spaceInstances.find(instance => instance.iid.toString() === rootState.route.params.iid.toString())\n if (currentInstance.filesystem_prefix) {\n return false\n } else {\n return true\n }\n }\n return false\n },\n isInstanceObserver: (state, getters, rootState) => {\n if (rootState.route.params.iid !== undefined && rootState.spaceStore.spaceInstances.length) {\n const currentInstance = rootState.spaceStore.spaceInstances.find(instance => instance.iid.toString() === rootState.route.params.iid.toString())\n if (currentInstance && isObserverRole(currentInstance.role)) {\n return true\n }\n }\n return false\n },\n isDistributedInstance: (state, getters, rootState) => {\n if (rootState.route.params.iid && rootState.spaceStore.spaceInstances.length) {\n const distributedInstance = rootState.spaceStore.spaceInstances.find(\n instance => instance.iid.toString() === rootState.route.params.iid.toString()\n )\n if (distributedInstance && isDistributedInstance(distributedInstance.long_id)) {\n return true\n }\n }\n return false\n },\n isMasterInstance: (state, getters, rootState) => {\n if (rootState.route.params.iid && rootState.spaceStore.spaceInstances.length) {\n const masterInstance = rootState.spaceStore.spaceInstances.find(instance => instance.iid.toString() === rootState.route.params.iid.toString())\n if (masterInstance && isMasterInstance(masterInstance.long_id)) {\n return true\n }\n }\n return false\n },\n canDeleteInstanceOrEditFields: (state, getters, rootState) => {\n if (rootState.route.params.iid && rootState.spaceStore.spaceInstances.length) {\n const undeletableInstance = ['distributed', 'master']\n const filteredInstance = rootState.spaceStore.spaceInstances.find(instance => instance.iid.toString() === rootState.route.params.iid.toString())\n if (filteredInstance && undeletableInstance.indexOf(filteredInstance.short_id) > -1) {\n return false\n }\n }\n return false\n }\n }\n}\nexport default instanceStore\n","import $axios from '@/backend'\nimport Vue from 'vue'\nimport { sortArray, isCurrentState } from '@/utils'\n\nconst getDefaultState = () => {\n return {\n currentFiles: [],\n currentFolder: null,\n currentTables: [],\n currentColumns: [],\n previewColumnHeaders: [],\n previewData: [],\n selectedTableForPreview: null,\n filesFetching: false,\n tablesFetching: false,\n columnsFetching: false,\n previewFetching: false,\n applicationsFetching: false,\n applicationImageFetching: false,\n restoringSnapshot: false,\n pathArray: [''],\n currentTreeLevel: null,\n applications: [],\n fileAreaType: 'files',\n fileOpened: {},\n imageList: [],\n stagingObjects: { files: [], tables: [], applications: [] },\n lastUploadedFiles: [],\n showUploadSnackbar: false,\n currentFileUnderRevisionData: { fid: null, previousVersions: [] },\n fetchingFileVersions: false,\n snapshotQueries: [],\n queryPreviewData: { headers: [], tableData: [], sql: '', qid: null },\n latestQuery: null,\n fullQueryData: [],\n tablesPath: [],\n filePollingInterval: null,\n snapshotQuota: null,\n fetchingSnapshotQuota: false,\n canIncreaseQuota: false,\n exportedImages: [],\n exportedImagesFetching: false\n }\n}\nconst snapshotStore = {\n namespaced: true,\n state: getDefaultState(),\n mutations: {\n resetSnapshotState(state) {\n if (state.filePollingInterval) {\n clearInterval(state.filePollingInterval)\n }\n Object.assign(state, getDefaultState())\n },\n setCurrentFiles: function (state, currentFiles) {\n state.currentFiles = currentFiles\n },\n setCurrentFolder: function (state, currentFolder) {\n state.currentFolder = currentFolder\n },\n setSelectedTableForPreview(state, table) {\n state.selectedTableForPreview = table\n },\n clearCurrentFiles: function (state) {\n state.currentFiles = []\n },\n setFilesPollingInterval: function (state, interval) {\n state.filePollingInterval = interval\n },\n setSnapshotRestoreState(state, newVal) {\n state.restoringSnapshot = newVal\n },\n setFetchingFileVersions(state, newVal) {\n state.fetchingFileVersions = newVal\n },\n clearFilePollingInterval: function (state) {\n clearInterval(state.filePollingInterval)\n },\n emptyTableData: function (state, clearQueryData) {\n state.currentColumns = []\n state.previewColumnHeaders = []\n state.previewData = []\n state.queryPreviewData = { headers: [], tableData: [], sql: '', qid: null }\n if (clearQueryData) {\n state.fullQueryData = []\n }\n },\n setFullQueryData: function (state, queryFiles) {\n state.fullQueryData = queryFiles\n },\n setTablesPath: function (state, data) {\n state.tablesPath = data\n },\n setSnapshotQuotaData: function (state, newVal) {\n state.snapshotQuota = newVal\n },\n setCanIncreaseQuota: function (state, newVal) {\n state.canIncreaseQuota = newVal\n },\n setCurrentTables: function (state, currentTables) {\n state.currentTables = sortArray(currentTables, 'short_id', 'ascending', true)\n },\n setQueryPreviewData: function (state, { data, sql, qid }) {\n if (data.length) {\n state.queryPreviewData = { headers: Object.keys(data[0]), tableData: data, sql, qid }\n } else {\n state.queryPreviewData = { headers: [], tableData: data, sql, qid }\n }\n },\n setSnapshotQueries: function (state, queryData) {\n const sortBtQid = sortArray(queryData, 'qid', 'descending', false)\n state.snapshotQueries = sortBtQid\n state.latestQuery = sortBtQid[0]\n },\n setCurrentColumns: function (state, currentColumns) {\n const sortedCols = sortArray(currentColumns, 'cid', 'ascending', false)\n state.currentColumns = sortedCols\n },\n setCurrentFileUnderRevisionData: function (state, { fid, prevData }) {\n state.currentFileUnderRevisionData.fid = fid\n state.currentFileUnderRevisionData.previousVersions = prevData\n },\n setPreviewData: function (state, { keys, data }) {\n state.previewColumnHeaders = keys\n state.previewData = data\n },\n updateImageNamesList: function (state, imageList) {\n state.imageList = imageList\n },\n setPathArray: function (state, newVal) {\n state.pathArray = newVal\n },\n appendPathArray: function (state, dir) {\n state.pathArray.push(dir)\n },\n setTreeLevel: function (state, level) {\n state.pathArray.splice(level)\n if (!state.pathArray.length) {\n state.pathArray = ['']\n }\n state.currentTreeLevel = level\n },\n setApplications: function (state, apps) {\n state.applications = sortArray(apps, 'aid', 'descending', false)\n },\n setExportedImages: function (state, images) {\n state.exportedImages = sortArray(images, 'deid', 'descending', false)\n },\n setFetchingSnapshotQuota: function (state, val) {\n state.fetchingSnapshotQuota = val\n },\n setFetching: function (state, { fetchingType, val }) {\n if (fetchingType === 'files') {\n state.filesFetching = val\n } else if (fetchingType === 'tables') {\n state.tablesFetching = val\n } else if (fetchingType === 'columns') {\n state.columnsFetching = val\n } else if (fetchingType === 'preview') {\n state.previewFetching = val\n } else if (fetchingType === 'applicationImages') {\n state.applicationImageFetching = val\n } else if (fetchingType === 'applications') {\n state.applicationsFetching = val\n } else if (fetchingType === 'exportedImages') {\n state.exportedImagesFetching = val\n }\n },\n setFolderType: function (state, type) {\n state.fileAreaType = type\n },\n setOpenedFile: function (state, { aid, path }) {\n Vue.set(state.fileOpened, aid, path)\n },\n emptyStageInSessionStorage(state, snid) {\n const stage = JSON.parse(window.sessionStorage.getItem('stagedObjects'))\n delete stage[snid]\n window.sessionStorage.setItem('stagedObjects', JSON.stringify(stage))\n },\n setStagedObjectsFromStore(state, snid) {\n const stage = JSON.parse(window.sessionStorage.getItem('stagedObjects'))\n if (Object.keys(stage).includes(snid)) {\n state.stagingObjects.files = stage[snid].files\n state.stagingObjects.tables = stage[snid].tables\n state.stagingObjects.applications = stage[snid].applications\n }\n },\n updateStagedObjectedInStore(state, snid) {\n if (window.sessionStorage.getItem('stagedObjects')) {\n const stage = JSON.parse(window.sessionStorage.getItem('stagedObjects'))\n stage[snid] = state.stagingObjects\n window.sessionStorage.setItem('stagedObjects', JSON.stringify(stage))\n } else {\n window.sessionStorage.setItem('stagedObjects', JSON.stringify({ snid: state.stagingObjects }))\n }\n },\n updateStagingObjects: function (state, { itemType, newItems, updateMode }) {\n if (itemType === 'file') {\n if (updateMode === 'add') {\n const fids = state.stagingObjects.files.map(file => file.fid)\n newItems.forEach(file => {\n if (!fids.includes(file.fid)) {\n state.stagingObjects.files.push(file)\n }\n })\n } else if (updateMode === 'remove') {\n const fids = newItems.map(file => file.fid)\n const filteredArray = state.stagingObjects.files.filter(function (file) {\n return fids.indexOf(file.fid) < 0\n })\n state.stagingObjects.files = filteredArray\n }\n } else if (itemType === 'table') {\n if (updateMode === 'add') {\n const tids = state.stagingObjects.tables.map(table => table.tid)\n newItems.forEach(table => {\n if (!tids.includes(table.tid)) {\n state.stagingObjects.tables.push(table)\n }\n })\n } else if (updateMode === 'remove') {\n const tids = newItems.map(table => table.tid)\n const filteredArray = state.stagingObjects.tables.filter(function (table) {\n return tids.indexOf(table.tid) < 0\n })\n state.stagingObjects.tables = filteredArray\n }\n } else if (itemType === 'application') {\n if (updateMode === 'add') {\n const aids = state.stagingObjects.applications.map(application => application.aid)\n newItems.forEach(application => {\n if (!aids.includes(application.aid)) {\n state.stagingObjects.applications.push(application)\n }\n })\n } else if (updateMode === 'remove') {\n const aids = newItems.map(application => application.aid)\n const filteredArray = state.stagingObjects.applications.filter(function (application) {\n return aids.indexOf(application.aid) < 0\n })\n state.stagingObjects.applications = filteredArray\n }\n }\n },\n updateLastUploadedFiles: function (state, { newData, updateMode }) {\n if (updateMode === 'add') {\n state.lastUploadedFiles = state.lastUploadedFiles.concat(newData)\n } else if (updateMode === 'clear') {\n state.lastUploadedFiles = newData\n }\n },\n setShowUploadSnackbar: function (state, newVal) {\n state.showUploadSnackbar = newVal\n },\n clearStagingObjects: function (state, itemType) {\n if (itemType === 'files') {\n state.stagingObjects.files = []\n } else if (itemType === 'tables') {\n state.stagingObjects.tables = []\n } else if (itemType === 'applications') {\n state.stagingObjects.applications = []\n } else if (itemType === 'all') {\n state.stagingObjects.files = []\n state.stagingObjects.tables = []\n state.stagingObjects.applications = []\n }\n }\n },\n actions: {\n setPathArray: function (context, newVal) {\n context.commit('setPathArray', newVal)\n },\n setStagedObjectsFromStore: function (context, snid) {\n context.commit('setStagedObjectsFromStore', snid)\n },\n resetSnapshotState: function (context) {\n context.commit('resetSnapshotState')\n },\n async canIncreaseQuota(context, quota) {\n if (!context.rootGetters['spaceStore/isSpaceAdmin']) return\n if (quota.data.bytes_pcent < 50) return\n try {\n const { data } = await $axios.get(`/snapshots/${quota.snid}/can_increase_quota`)\n context.commit('setCanIncreaseQuota', data)\n } catch (error) {\n this.$store.dispatch('showSnackBar', {\n snackBarText: 'Failed to fetch storage quota increase data.',\n snackBarTimeout: 5000,\n snackBarIcon: 'error'\n })\n }\n },\n fetchSnapshotQuotaData: async function (context, snid) {\n context.commit('setFetchingSnapshotQuota', true)\n try {\n const { data } = await $axios.post(`snapshots/${snid}/quota_usage`)\n context.commit('setSnapshotQuotaData', data)\n context.dispatch('canIncreaseQuota', { data, snid })\n } catch (error) {\n context.commit('setSnapshotQuotaData', error)\n } finally {\n context.commit('setFetchingSnapshotQuota', false)\n }\n },\n fetchApplications(context, snid) {\n context.commit('setFetching', { fetchingType: 'applications', val: true })\n return $axios\n .get(`snapshots/${snid}/applications?deleting=true`)\n .then(function (response) {\n const extendedApps = response.data.map(app => {\n return app\n })\n context.commit('setApplications', extendedApps)\n })\n .finally(() => {\n context.commit('setFetching', { fetchingType: 'applications', val: false })\n })\n },\n fetchExportedImages: function (context, { snid, query = '' }) {\n context.commit('setFetching', { fetchingType: 'exportedImages', val: true })\n $axios\n .get(`/snapshots/${snid}/list_exports${query}`)\n .then(function (response) {\n context.commit('setExportedImages', response.data)\n })\n .finally(() => {\n context.commit('setFetching', { fetchingType: 'exportedImages', val: false })\n })\n },\n fetchQueries: function (context, snid) {\n return $axios.get(`snapshots/${snid}/queries`).then(function (response) {\n context.commit('setSnapshotQueries', response.data)\n })\n },\n setCurrentFileUnderRevisionData: async function (context, { fid }) {\n context.commit('setFetchingFileVersions', true)\n await $axios.get(`/files/${fid}/list_versions`).then(async response => {\n context.commit('setCurrentFileUnderRevisionData', { fid, prevData: response.data })\n })\n context.commit('setFetchingFileVersions', false)\n },\n setTablesPath: function (context, snid) {\n $axios.get(`/snapshots/${snid}/tables_path`).then(response => {\n context.commit('setTablesPath', response.data)\n })\n },\n fetchFullQueryData: function (context, qid) {\n return $axios\n .get(`/queries/${qid}`)\n .then(response => {\n context.commit('setFullQueryData', response.data)\n })\n .catch(() => {\n context.dispatch('showSnackBar', {\n snackBarText: 'Failed to fetch query data, try refreshing the page.',\n snackBarTimeout: 10000,\n snackBarIcon: 'error'\n })\n })\n },\n restoreSnapshotToCurrentState: function (context, { snid, createBackup }) {\n context.commit('setSnapshotRestoreState', true)\n $axios\n .put(`/snapshots/${snid}/restore_async`, { auto_backup: createBackup })\n .then(response => {\n context.dispatch(\n 'showGlobalDialog',\n {\n dialogTitle: 'Snapshot being restored',\n dialogText:\n 'Snapshot restoration has started, this might take a few minutes. You will also receive an email once the operation has finished.',\n dialogAction: ['dismiss', 'fetch', 'snapshots'],\n taskId: response.data.tkid\n },\n {\n root: true\n }\n )\n context.dispatch('instanceStore/fetchInstanceSnapshots', context.rootState.route.params.iid, {\n root: true\n })\n })\n .catch(() => {\n context.dispatch(\n 'showSnackBar',\n {\n snackBarText: 'Snapshot restoration failed!',\n snackBarTimeout: 10000,\n snackBarIcon: 'error'\n },\n {\n root: true\n }\n )\n })\n .finally(() => {\n context.commit('setSnapshotRestoreState', false)\n })\n },\n setQueryPreviewData: function (context, { data, sql, qid }) {\n context.commit('setQueryPreviewData', { data, sql, qid })\n },\n openDirectory: function (context, { nextDirectory }) {\n context.commit('appendPathArray', nextDirectory)\n },\n setTreeLevel: function (context, { snid, level }) {\n context.commit('setTreeLevel', level)\n },\n setFolderType: function (context, type) {\n context.commit('setFolderType', type)\n },\n fetchCurrentFilesWithHistory: function (context, url) {\n $axios\n .get(`${url}?status=true`)\n .then(response => {\n const files = response.data.filter(file => file.type !== 'broken_link')\n const currentFolder = files.splice(\n files.findIndex(file => file.type === 'folder' && file.short_id === '.'),\n 1\n )[0]\n const currentPath = context.state.pathArray.join('/').substr(1)\n if (\n files.length &&\n files[0].local_path === currentPath &&\n files[0].area === context.state.fileAreaType &&\n context.rootState.route.params.snid &&\n files[0].snid.toString() === context.rootState.route.params.snid.toString()\n ) {\n context.commit('setCurrentFiles', files)\n context.commit('setCurrentFolder', currentFolder)\n }\n })\n .catch(error => {\n console.log(error)\n context.dispatch('showSnackBar', { snackBarText: 'Fetching files failed, try reloading the page.', snackBarIcon: 'error' }, { root: true })\n })\n },\n fetchCurrentFiles(context, { id, route, setFetchingStatus }) {\n if (id && route) {\n context.commit('setFetching', { fetchingType: 'files', val: setFetchingStatus })\n if (!['handin', 'handback'].includes(route.name)) {\n context.dispatch('fetchSnapshotQuotaData', id)\n }\n context.dispatch('getUserInfo', null, { root: true }).finally(() => {\n if (context.rootState.userInfo && context.rootState.userInfo.is_active && context.rootState.userInfo.is_sysadmin !== undefined) {\n if (context.state.filePollingInterval !== null) {\n context.commit('clearFilePollingInterval')\n }\n if (route.params.localPath) {\n context.dispatch('setPathArray', route.params.localPath.split('/'))\n }\n const localPath = context.state.pathArray.join('/')\n\n let apiURL = ''\n let root = ''\n switch (route.name) {\n case 'handin':\n root = `/handin/${id}/fs/handin`\n break\n case 'handback':\n root = `/handin/${id}/fs/handback`\n break\n default:\n root = `/snapshots/${id}/fs/${context.state.fileAreaType}`\n break\n }\n apiURL = `${root}${localPath}`\n if (context.state.fileAreaType === 'home') {\n apiURL = `${root}_v2`\n if (localPath) apiURL = `${apiURL}${localPath}`\n }\n return $axios\n .get(apiURL)\n .then(response => {\n const files = response.data.filter(file => file.type !== 'broken_link')\n const currentFolder = files.splice(\n files.findIndex(file => file.type === 'folder' && file.short_id === '.'),\n 1\n )[0]\n context.commit('setCurrentFolder', currentFolder)\n context.commit('setCurrentFiles', files)\n context.commit('setFetching', { fetchingType: 'files', val: false })\n if (!['handin', 'handback'].includes(route.name)) {\n context.dispatch('fetchCurrentFilesWithHistory', apiURL)\n }\n })\n .catch(error => {\n context.dispatch('clearCurrentFiles')\n context.commit('setFetching', { fetchingType: 'files', val: false })\n if (context.state.currentTreeLevel !== 0) {\n context.dispatch('setTreeLevel', { snid: id, level: 0 })\n context.dispatch('fetchCurrentFiles', { id, route, setFetchingStatus: true })\n }\n if (error.response.data.code === ('space_rested' || 'space_archived')) return\n if (context.getters.currentSnapshotData && context.getters.currentSnapshotData.filesystem_prefix) {\n context.dispatch('showSnackBar', { snackBarText: 'Files fetching failed', snackBarIcon: 'error' }, { root: true })\n }\n })\n }\n })\n }\n },\n clearCurrentFiles: function (context) {\n context.commit('clearCurrentFiles')\n },\n clearFilePollingInterval: function (context) {\n context.commit('clearFilePollingInterval')\n },\n updateLastUploadedFiles: function (context, { newData, updateMode }) {\n context.commit('updateLastUploadedFiles', { newData, updateMode })\n },\n setShowUploadSnackbar: function (context, newVal) {\n context.commit('setShowUploadSnackbar', newVal)\n },\n emptyTableData: function (context, clearQueryData) {\n context.commit('emptyTableData', clearQueryData)\n },\n fetchCurrentTables: function (context, snid) {\n context.commit('setFetching', { fetchingType: 'tables', val: true })\n $axios\n .get(`/snapshots/${snid}/ts/tables`)\n .then(response => {\n context.commit('setCurrentTables', response.data)\n context.commit('setFetching', { fetchingType: 'tables', val: false })\n })\n .catch(error => {\n if (!error.response || !error.response.data || error.response.data.code !== 'observer_instance_role') {\n context.dispatch(\n 'showSnackBar',\n { snackBarText: 'Failed to fetch table data, try refreshing the page.', snackBarIcon: 'error' },\n { root: true }\n )\n }\n context.commit('setFetching', { fetchingType: 'tables', val: false })\n })\n },\n fetchColumnAndPreviewData: function (context, { tid, tableName }) {\n context.dispatch('fetchTablePreviewData', tid)\n context.dispatch('fetchCurrentColumns', tid)\n context.commit('setSelectedTableForPreview', tableName)\n },\n fetchTablePreviewData: function (context, tid) {\n context.commit('setFetching', { fetchingType: 'preview', val: true })\n return $axios\n .get(`tables/${tid}/preview`)\n .then(response => {\n if (response.data.length) {\n const headers = Object.keys(response.data[0]).map(header => {\n return { text: header.toLowerCase(), align: 'left', value: header }\n })\n context.commit('setPreviewData', { keys: headers, data: response.data })\n } else {\n context.commit('setPreviewData', { keys: [], data: [] })\n }\n })\n .catch(() => {\n context.dispatch(\n 'showSnackBar',\n { snackBarText: 'Failed to fetch table preview data, try refreshing the page.', snackBarIcon: 'error' },\n { root: true }\n )\n })\n .finally(() => {\n context.commit('setFetching', { fetchingType: 'preview', val: false })\n })\n },\n fetchCurrentColumns: function (context, tid) {\n context.commit('setFetching', { fetchingType: 'columns', val: true })\n return $axios\n .get(`/tables/${tid}/columns`)\n .then(response => {\n context.commit('setCurrentColumns', response.data)\n })\n .catch(() => {\n context.dispatch(\n 'showSnackBar',\n { snackBarText: 'Failed to fetch table column data, try refreshing the page.', snackBarIcon: 'error' },\n { root: true }\n )\n })\n .finally(() => {\n context.commit('setFetching', { fetchingType: 'columns', val: false })\n })\n },\n fetchCurrentImages: function (context, sid) {\n context.commit('setFetching', { fetchingType: 'applicationImages', val: true })\n $axios\n .get(`/spaces/${sid}/images`)\n .then(response => {\n context.commit('updateImageNamesList', response.data)\n })\n .catch(error => {\n context.dispatch(\n 'showSnackBar',\n { snackBarText: 'Failed to fetch application data, try refreshing the page.', snackBarIcon: 'error' },\n { root: true }\n )\n console.log(error)\n })\n .finally(() => {\n context.commit('setFetching', { fetchingType: 'applicationImages', val: false })\n })\n },\n updateStagingObjects: function (context, { itemType, newItems, updateMode }) {\n const snid = context.rootState.route.params.snid.toString()\n context.commit('updateStagingObjects', { itemType, newItems, updateMode })\n context.commit('updateStagedObjectedInStore', snid)\n },\n clearStagingObjects: function (context, itemType) {\n const snid = context.rootState.route.params.snid.toString()\n context.commit('clearStagingObjects', itemType)\n if (itemType === 'all') {\n context.commit('emptyStageInSessionStorage', snid)\n } else {\n context.commit('updateStagedObjectedInStore', snid)\n }\n }\n },\n getters: {\n snapshotLongNameById: (state, getters, rootState) => snid => {\n if (snid !== undefined && snid !== null && rootState.instanceStore.instanceSnapshots.length) {\n const snapshot = rootState.instanceStore.instanceSnapshots.find(snapshot => snapshot.snid.toString() === snid.toString())\n if (snapshot && snapshot.long_id) {\n return snapshot.long_id\n }\n }\n return null\n },\n snapshotDescriptionById: (state, getters, rootState) => snid => {\n if (snid !== undefined && snid !== null && rootState.instanceStore.instanceSnapshots.length) {\n const snapshot = rootState.instanceStore.instanceSnapshots.find(snapshot => snapshot.snid.toString() === snid.toString())\n if (snapshot && snapshot.description) {\n return snapshot.description\n }\n }\n return null\n },\n snapshotFilesystemPrefixById: (state, getters, rootState) => snid => {\n if (snid !== undefined && snid !== null && rootState.instanceStore.instanceSnapshots.length) {\n const snapshot = rootState.instanceStore.instanceSnapshots.find(snapshot => snapshot.snid.toString() === snid.toString())\n if (snapshot && snapshot.filesystem_prefix) {\n return snapshot.filesystem_prefix\n }\n }\n return null\n },\n isColdStorage: (state, getters, rootState) => snid => {\n if (snid !== undefined && snid !== null && rootState.instanceStore.instanceSnapshots.length) {\n const snapshot = rootState.instanceStore.instanceSnapshots.find(snapshot => snapshot.snid.toString() === snid.toString())\n return snapshot.filesystem_prefix === null && snapshot.backup_location !== null\n }\n return false\n },\n isDevelopment: (state, getters, rootState) => {\n if (getters.developmentSnapshot && rootState.route.params.snid !== undefined) {\n return getters.developmentSnapshot.snid.toString() === rootState.route.params.snid.toString()\n } else {\n return false\n }\n },\n developmentSnapshot: (state, getters, rootState) => {\n if (rootState.instanceStore.instanceSnapshots) {\n return rootState.instanceStore.instanceSnapshots.filter(snapshot => isCurrentState(snapshot.short_id))[0]\n } else {\n return []\n }\n },\n currentSnapshotData: (state, getters, rootState) => {\n if (rootState.instanceStore.instanceSnapshots) {\n return rootState.instanceStore.instanceSnapshots.find(snapshot => snapshot.snid.toString() === rootState.route.params.snid.toString())\n } else {\n return {}\n }\n },\n nonDevelopmentSnapshots: (state, getters, rootState) => {\n if (rootState.instanceStore.instanceSnapshots) {\n return rootState.instanceStore.instanceSnapshots.filter(snapshot => !isCurrentState(snapshot.short_id))\n } else {\n return []\n }\n },\n currentFileLocalPath: state => {\n if (state.pathArray && state.pathArray.length > 1) {\n return state.pathArray.join('/')\n }\n },\n isStagingEmpty: state => {\n return !state.stagingObjects.files.length && !state.stagingObjects.tables.length && !state.stagingObjects.applications.length\n },\n appLongNameById: state => aid => {\n const apps = state.applications.filter(app => app.aid === parseInt(aid, 10))\n if (apps.length) {\n return apps[0].long_id\n }\n return null\n },\n tableShortNameById: state => tid => {\n const tables = state.currentTables.filter(table => table.tid === parseInt(tid, 10))\n if (tables.length) {\n return tables[0].short_id\n }\n return null\n }\n }\n}\n\nexport default snapshotStore\n","import $axios from '@/backend.js'\nimport { sortArray } from '@/utils'\nimport { getInstance } from '@/auth/auth'\nimport { fetchTask } from '@/apis'\nimport { sortBy } from 'lodash'\n\nconst appStore = {\n namespaced: true,\n state: {\n userApps: [],\n deploymentStatus: [],\n recentApps: [{}, {}, {}],\n appType: 'jupyter',\n fetchingApps: false,\n lastStartedSessionId: null,\n stoppedSessions: [],\n startingApp: false,\n asOfTime: 0,\n nodePools: null,\n fetchingNodePools: false\n },\n mutations: {\n setDeploymentStatus: function (state, { deployments, asOfTime }) {\n const appsSortedById = sortArray(\n deployments.filter(d => {\n return !state.stoppedSessions.includes(d)\n }),\n 'aid',\n 'descending',\n false\n )\n state.deploymentStatus = appsSortedById\n state.asOfTime = asOfTime\n },\n setUserApps: function (state, apps) {\n state.userApps = apps\n },\n setRecentApps: function (state, apps) {\n state.recentApps = apps\n },\n setNodePools: function (state, pools) {\n state.nodePools = pools\n },\n setAppType: function (state, appType) {\n state.appType = appType\n },\n setFetching: function (state, val) {\n state.fetchingApps = val\n },\n setFetchingNodePools: function (state, val) {\n state.fetchingNodePools = val\n },\n setLastStartedSessionId: function (state, sessionId) {\n state.lastStartedSessionId = sessionId\n },\n addStoppedSession: function (state, sessionId) {\n state.stoppedSessions.push(sessionId)\n const appsSortedById = sortArray(\n state.deploymentStatus.filter(d => {\n return !state.stoppedSessions.includes(d)\n }),\n 'aid',\n 'descending',\n false\n )\n state.deploymentStatus = appsSortedById\n },\n setStartingApp: function (state, starting) {\n state.startingApp = starting\n }\n },\n actions: {\n fetchAllUserApps: function (context, { iid, startFirstApp }) {\n return $axios.post('/applications/list', { iid }).then(response => {\n context.commit('setUserApps', response.data)\n if (startFirstApp) {\n context.dispatch('startApp', response.data[0].aid)\n }\n })\n },\n async fetchNodePools(context) {\n // Don't fetch nodepools if we already fetched\n if (Array.isArray(context.state.nodePools)) return\n\n context.commit('setFetchingNodePools', true)\n try {\n const { data } = await $axios.get('/applications/nodepools')\n context.commit('setNodePools', sortBy(data, ['credits_per_hour']))\n } catch (error) {\n context.commit('setNodePools', error)\n }\n context.commit('setFetchingNodePools', false)\n },\n fetchRecentApps: function (context, oid) {\n context.commit('setFetching', true)\n return $axios\n .post('/applications/really_quick', { oid })\n .then(response => {\n // loop over list and find minimal iid for each aoid\n const minIid = {}\n let i\n for (i = 0; i < response.data.length; i++) {\n const complexId = `${response.data[i].aoid}_${response.data[i].space_id}`\n if (response.data[i].instance_id < (minIid[complexId] || Infinity)) {\n minIid[complexId] = response.data[i].instance_id\n }\n }\n\n const recentApps = []\n for (i = 0; i < response.data.length; i++) {\n const complexId = `${response.data[i].aoid}_${response.data[i].space_id}`\n if (response.data[i].instance_id <= minIid[complexId]) {\n recentApps.push(response.data[i])\n }\n }\n context.commit('setRecentApps', recentApps)\n })\n .catch(error => {\n context.commit('setRecentApps', error)\n })\n .finally(() => {\n context.commit('setFetching', false)\n })\n },\n updateDeploymentStatus: function (context) {\n if (getInstance().isAuthenticated) {\n const asOfTime = new Date().getTime()\n return $axios\n .get('/proxy/app_status', {\n withCredentials: true,\n timeout: 60000,\n params: context.rootState.route.params.iid ? { iid: context.rootState.route.params.iid } : {}\n })\n .then(function (response) {\n if (asOfTime > context.state.asOfTime) {\n context.commit('setDeploymentStatus', { deployments: response.data, asOfTime })\n }\n })\n .catch(e => {\n if (!e.response) {\n context.dispatch(\n 'showSnackBar',\n {\n snackBarText: 'There appears to be a connectivity issue to Nuvolos, please try reloading the page.',\n snackBarIcon: 'error'\n },\n {\n root: true\n }\n )\n }\n })\n }\n },\n startApp: async function (context, { aid, appUsername, appPwd, dontWaitTask = false }) {\n if (context.state.startingApp) {\n context.dispatch(\n 'showGlobalDialog',\n {\n dialogTitle: 'Application is already being started',\n dialogText: 'An application is being started at the moment, please wait before starting another one.',\n dialogAction: ['dismiss']\n },\n {\n root: true\n }\n )\n return\n }\n context.commit('setStartingApp', true)\n // check if the app supports HiDPI\n const launchedApp = context.state.userApps.filter(a => {\n return a.aid.toString() === aid.toString()\n })\n\n if (launchedApp.length < 1) {\n context.dispatch(\n 'showGlobalDialog',\n {\n dialogTitle: 'Application not found',\n dialogText: 'This application does not seem to exist.',\n dialogAction: ['returnToWelcomePage']\n },\n {\n root: true\n }\n )\n }\n\n const scaleFactor =\n window.devicePixelRatio >= 1.25 &&\n (window.innerWidth - 65) * window.innerHeight <= 1440 * 900 &&\n launchedApp.length &&\n launchedApp[0].app_type.endsWith('-hidpi')\n ? 2\n : 1\n\n try {\n const response = await $axios.get(`/applications/${aid}/config`)\n const { shared } = response.data\n const { data } = await $axios.post(`/proxy/${aid}/start_app_async`, {\n dpi: 96 * scaleFactor,\n screen_width: (window.innerWidth - 65) * scaleFactor,\n screen_height: window.innerHeight * scaleFactor,\n app_username: appUsername || '',\n app_pwd: appPwd || '',\n shared: context.rootState.route.query.grading === undefined ? shared : false,\n mount_handback_to_files_for_hid: context.rootState.route.query.handback_hid,\n mount_handback_for_bid: context.rootState.route.query.handback_bid\n })\n\n // To remove pre_resting space state upon app start.\n this.dispatch('spaceStore/fetchCurrentSpace')\n\n if (dontWaitTask) {\n return data\n }\n\n const taskResult = await fetchTask(data.tkid)\n if (taskResult instanceof Error) {\n return taskResult\n } else {\n return taskResult.data.meta_data\n }\n } catch (error) {\n console.log('Unable to start app: ', error)\n return error\n } finally {\n context.dispatch('updateDeploymentStatus').then(() => {\n context.commit('setStartingApp', false)\n })\n }\n },\n stopApp: function (context, { aid, sessionId }) {\n if (!sessionId) {\n // get sessionId from first running session if undefined\n const a = context.state.deploymentStatus.find(d => {\n return d.aid.toString() === aid.toString()\n })\n if (a) {\n sessionId = a.session_id\n }\n }\n context.dispatch('showSnackBar', { snackBarText: 'Stopping application...', snackBarIcon: 'info', snackBarTimeout: 5000 }, { root: true })\n return $axios\n .post(`/proxy/${aid}/stop_app`, { session_id: sessionId || '' })\n .then(response => {\n if ((sessionId || '') === '') {\n window.setTimeout(() => {\n context.dispatch('updateDeploymentStatus')\n }, 1000)\n }\n if (sessionId) {\n context.commit('addStoppedSession', sessionId)\n }\n })\n .catch(function (error) {\n console.log(error)\n context.dispatch(\n 'showSnackBar',\n { snackBarText: 'Error stopping application. Please try again later.', snackBarTimeout: 10000 },\n { root: true }\n )\n })\n },\n setCurrentAppType: function (context, { iid, aid }) {\n return context.dispatch('fetchAllUserApps', { iid, startFirstApp: false }).then(() => {\n const launchedApp = context.state.userApps.filter(a => {\n return a.aid.toString() === aid.toString()\n })\n if (launchedApp && launchedApp.length) {\n context.commit('setAppType', launchedApp[0].app_type)\n }\n })\n }\n },\n getters: {\n runningDeployments: state => {\n return state.deploymentStatus.filter(d => {\n return d.replicas === d.available_replicas\n })\n },\n startingDeployments: state => {\n return state.deploymentStatus.filter(d => d.replicas > d.available_replicas)\n },\n stoppedApps: state => {\n if (state.userApps) {\n const runningAppsIds = state.deploymentStatus.map(app => app.aid)\n const stoppedApps = state.userApps.filter(app => !runningAppsIds.includes(app.aid.toString()))\n return stoppedApps\n } else {\n return []\n }\n },\n appStatus: state => aid => {\n const matchingDeployments = state.deploymentStatus.filter(d => {\n return d.aid.toString() === aid.toString()\n })\n if (matchingDeployments.length) {\n if (matchingDeployments[0].available_replicas > 0) {\n return 'running'\n } else {\n return 'starting'\n }\n } else {\n return 'stopped'\n }\n }\n }\n}\n\nexport default appStore\n","import $axios from '@/backend.js'\nimport { getInstance } from '@/auth/auth'\nimport { orderBy, get } from 'lodash'\n\nconst userStore = {\n namespaced: true,\n state: {\n sshKeys: [],\n snowflakeTokens: [],\n fetchingSSHKeys: false,\n isAccountManager: false,\n userTasks: [],\n fetchingAvailableResourcePools: false,\n availableResourcePools: [],\n defaultResourcePool: {},\n userRequests: { own: [], toApprove: [] },\n fetchingUserTasks: false,\n totalTasks: 0,\n runningTasks: 0,\n maxTaskPerPage: 0,\n fetchingUserOwnRequests: false,\n fetchingUserToApproveRequests: false,\n userTaskPollingInterval: null,\n selectedResourcePool: null,\n selectedResourcePoolHpcUsers: [],\n fetchingResourceDescription: false,\n fetchingResourceBalanceCurrentMonth: false,\n fetchingResourceBalance: false,\n fetchingResourceBalanceBreakdown: false,\n fetchingResourcePoolResources: false,\n fetchingResourcePoolUsers: false,\n fetchingResourcePoolHpcUsers: false,\n fetchingDefaultResourcePool: false,\n signupUserDetails: {},\n fetchingSnowflakeTokens: false,\n settingTableUserMode: false\n },\n mutations: {\n setSSHKeys: function (state, keys) {\n state.sshKeys = keys\n },\n setAccountManagerStatus(state, status) {\n state.isAccountManager = status\n },\n setSelectedResourcePool(state, newVal) {\n state.selectedResourcePool = Number(newVal)\n },\n setSelectedResourcePoolHpcUsers(state, newval) {\n state.selectedResourcePoolHpcUsers = newval\n },\n setFetchingSSHKeys(state, status) {\n state.fetchingSSHKeys = status\n },\n setResourcePoolUsersFetching(state, status) {\n state.fetchingResourcePoolUsers = status\n },\n setResourcePoolHpcUsersFetching(state, status) {\n state.fetchingResourcePoolHpcUsers = status\n },\n setResourcePoolResourcesFetching(state, status) {\n state.fetchingResourcePoolResources = status\n },\n setResourceDescriptionFetching(state, status) {\n state.fetchingResourceDescription = status\n },\n setResourceBalanceCurrentMonthFetching(state, status) {\n state.fetchingResourceBalanceCurrentMonth = status\n },\n setResourceBalanceFetching(state, status) {\n state.fetchingResourceBalance = status\n },\n setResourceBalanceBreakdownFetching(state, status) {\n state.fetchingResourceBalanceBreakdown = status\n },\n setSnowflakeTokens(state, tokens) {\n state.snowflakeTokens = tokens\n },\n setResourcePoolDataFetching(state, status) {\n state.fetchingAvailableResourcePools = status\n },\n setAvailableResourcePoolData(state, data) {\n state.availableResourcePools = orderBy(data, ['long_id'], ['asc'])\n },\n setResourcePoolFetching(state, status) {\n state.fetchingResourcePools = status\n },\n setDefaultResourcePool(state, data) {\n state.defaultResourcePool = data\n },\n setUserTasks: function (state, tasks) {\n state.userTasks = tasks\n },\n setUserOwnRequests: function (state, requests) {\n state.userRequests.own = requests\n },\n setUserToApproveRequests: function (state, requests) {\n state.userRequests.toApprove = requests\n },\n setFetchingUserTasks: function (state, status) {\n state.fetchingUserTasks = status\n },\n setTotalTasks: function (state, num) {\n state.totalTasks = num\n },\n setRunningTasks: function (state, num) {\n state.runningTasks = num\n },\n setMaxTaskPerPage: function (state, max) {\n state.maxTaskPerPage = max\n },\n setFetchingUserOwnRequests: function (state, status) {\n state.fetchingUserOwnRequests = status\n },\n setFetchingUserToApproveRequests: function (state, status) {\n state.fetchingUserToApproveRequests = status\n },\n setUserTaskPollingInterval: function (state, interval) {\n state.userTaskPollingInterval = interval\n },\n setSignupUserDetails: function (state, details) {\n state.signupUserDetails = details\n },\n setFetchingDefaultResourcePool: function (state, status) {\n state.fetchingDefaultResourcePool = status\n },\n setFetchingSnowflakeTokens(state, status) {\n state.fetchingSnowflakeTokens = status\n },\n setSettingTableUserMode(state, status) {\n state.settingTableUserMode = status\n }\n },\n actions: {\n fetchSSHKeys: function (context) {\n context.commit('setFetchingSSHKeys', true)\n $axios\n .get('tokens/ssh_keys')\n .then(response => {\n context.commit('setSSHKeys', response.data)\n })\n .finally(() => {\n context.commit('setFetchingSSHKeys', false)\n })\n },\n setResourcePoolUsersFetching: function (context, newVal) {\n context.commit('setResourcePoolUsersFetching', newVal)\n },\n setResourcePoolResourcesFetching: function (context, newVal) {\n context.commit('setResourcePoolResourcesFetching', newVal)\n },\n setResourceDescriptionFetching: function (context, newVal) {\n context.commit('setResourceDescriptionFetching', newVal)\n },\n setResourceBalanceCurrentMonthFetching: function (context, newVal) {\n context.commit('setResourceBalanceCurrentMonthFetching', newVal)\n },\n setResourceBalanceFetching: function (context, newVal) {\n context.commit('setResourceBalanceFetching', newVal)\n },\n setResourceBalanceBreakdownFetching: function (context, newVal) {\n context.commit('setResourceBalanceBreakdownFetching', newVal)\n },\n setSelectedResourcePool: function (context, newVal) {\n context.commit('setSelectedResourcePool', newVal)\n },\n setSignupUserDetails: function (context, newVal) {\n context.commit('setSignupUserDetails', newVal)\n },\n fetchAvailableResourcePoolData: function (context) {\n context.commit('setResourcePoolDataFetching', true)\n $axios\n .get(`/resource/available_rps`)\n .then(response => {\n context.commit('setAvailableResourcePoolData', response.data)\n context.commit('setSelectedResourcePool', get(response, 'data[0].rpid'))\n })\n .catch(() => {\n context.commit(\n 'showSnackBar',\n {\n snackBarText: 'Failed to fetch available resource pools.',\n snackBarTimeout: 5000,\n snackBarIcon: 'error'\n },\n { root: true }\n )\n })\n .finally(() => {\n context.commit('setResourcePoolDataFetching', false)\n })\n },\n async fetchDefaultResourcePool(context, oid) {\n context.commit('setFetchingDefaultResourcePool', true)\n try {\n const { data } = await $axios.get(`/orgs/${oid}/default_rp`)\n context.commit('setDefaultResourcePool', data)\n } catch (error) {}\n context.commit('setFetchingDefaultResourcePool', false)\n },\n async fetchSnowflakeTokens(context) {\n context.commit('setFetchingSnowflakeTokens', true)\n try {\n await $axios.get('tokens/snowflake_access').then(response => {\n context.commit('setSnowflakeTokens', response.data)\n })\n } catch (error) {\n // TODO: error handling\n }\n context.commit('setFetchingSnowflakeTokens', false)\n },\n fetchAccountManagerStatus: function (context) {\n $axios.get('/is_account_manager').then(response => {\n context.commit('setAccountManagerStatus', response.data)\n })\n },\n fetchResourcePoolHpcUsers: function (context, rpid) {\n context.commit('setResourcePoolHpcUsersFetching', true)\n $axios\n .get(`/resource/${rpid}/list_users`)\n .then(response => {\n context.commit('setSelectedResourcePoolHpcUsers', response.data)\n })\n .catch(() => {\n context.commit(\n 'showSnackBar',\n {\n snackBarText: 'Failed to fetch organization users.',\n snackBarTimeout: 5000,\n snackBarIcon: 'error'\n },\n { root: true }\n )\n })\n .finally(() => {\n context.commit('setResourcePoolHpcUsersFetching', false)\n })\n },\n fetchUserTasks: async function (context, params) {\n // itt kell az auth? Sztem nem....\n if (getInstance().isAuthenticated) {\n context.commit('setFetchingUserTasks', true)\n try {\n const metadata = await $axios.get(`/tasks/list?${new URLSearchParams(params)}&metadata=true`)\n context.commit('setTotalTasks', metadata.data.count)\n context.commit('setMaxTaskPerPage', metadata.data.max_per_page)\n const tasks = await $axios.get(`/tasks/list?${new URLSearchParams(params)}`)\n context.commit('setUserTasks', tasks.data)\n } catch (error) {\n context.commit(\n 'showSnackBar',\n {\n snackBarText: 'Failed to fetch user tasks.',\n snackBarTimeout: 5000,\n snackBarIcon: 'error'\n },\n { root: true }\n )\n } finally {\n context.commit('setFetchingUserTasks', false)\n }\n }\n },\n async fetchRunningUserTasks(context) {\n try {\n const { data } = await $axios.get(`/tasks/list?status=3&metadata=true`)\n context.commit('setRunningTasks', data.count)\n } catch (error) {\n context.commit('setRunningTasks', error)\n }\n },\n fetchUserOwnRequests: function (context) {\n if (getInstance().isAuthenticated) {\n context.commit('setFetchingUserOwnRequests', true)\n $axios\n .get('users/my_requests?valid=both')\n .then(response => {\n context.commit('setUserOwnRequests', response.data)\n })\n .finally(() => {\n context.commit('setFetchingUserOwnRequests', false)\n })\n }\n },\n fetchUserToApproveRequests: function (context) {\n if (getInstance().isAuthenticated) {\n context.commit('setFetchingUserToApproveRequests', true)\n $axios\n .get('users/requests_to_review?valid=both')\n .then(response => {\n context.commit('setUserToApproveRequests', response.data)\n })\n .finally(() => {\n context.commit('setFetchingUserToApproveRequests', false)\n })\n }\n },\n setUserTaskPollingInterval: function (context) {\n context.commit(\n 'setUserTaskPollingInterval',\n setInterval(() => {\n context.dispatch('fetchUserTasks')\n }, 120000)\n )\n },\n async setTableUserMode(context, mode) {\n context.commit('setSettingTableUserMode', true)\n try {\n await $axios.patch('/users/current', { sf_user_type: mode })\n context.dispatch('getUserInfo', null, { root: true })\n } catch (error) {\n context.commit(\n 'showSnackBar',\n {\n snackBarText: 'Failed to set user mode',\n snackBarTimeout: 10000,\n snackBarIcon: 'error'\n },\n { root: true }\n )\n }\n context.commit('setSettingTableUserMode', false)\n }\n },\n getters: {\n validRequests: state => {\n if (state.userRequests.toApprove.length) {\n return state.userRequests.toApprove.filter(request => request.valid === 'True')\n }\n return []\n },\n isResourcePoolManager: state => {\n if (state.availableResourcePools.length && state.selectedResourcePool) {\n return state.availableResourcePools.find(pool => pool.rpid.toString() === state.selectedResourcePool.toString()).is_rp_manager\n }\n return false\n }\n }\n}\n\nexport default userStore\n","import Vue from 'vue'\nimport Vuex from 'vuex'\nimport store from 'store'\nimport tourStore from './tourStore'\nimport orgStore from './modules/organization/store'\nimport homeStore from './modules/home/store'\nimport spaceStore from './modules/space/store'\nimport instanceStore from './modules/instance/store'\nimport snapshotStore from './modules/snapshot/store'\nimport appStore from './modules/application/store'\nimport userStore from './modules/user/store'\nimport $axios from './backend.js'\n\nVue.use(Vuex)\n\nexport default new Vuex.Store({\n state: {\n snackBar: false,\n snackBarText: 'default text',\n snackBarIcon: 'check_circle',\n snackBarLabel: 'Close',\n globalDialog: false,\n globalDialogTitle: '',\n globalDialogText: '',\n globalDialogAction: [],\n globalDialogTaskId: null,\n options: null,\n userOrgs: [],\n currentOrgUsers: [],\n fetchingOrgs: false,\n currentOrg: 0,\n currentOrgData: null,\n userInfo: null,\n userMetadata: null,\n snackBarTimer: null,\n openOrgSelectorDialog: false,\n fetchingUserInfo: false,\n trialInfo: null,\n bundleCreated: false,\n dimmedSidebar: false\n },\n mutations: {\n showSnackBar: function (state, { snackBarText, snackBarIcon, snackBarLabel, snackBarButtonOutline }) {\n state.snackBar = true\n state.snackBarText = snackBarText\n state.snackBarIcon = snackBarIcon\n state.snackBarLabel = snackBarLabel\n state.snackBarButtonOutline = snackBarButtonOutline\n },\n showGlobalDialog: function (state, { dialogTitle, dialogText, dialogAction, globalDialogTaskId, options }) {\n if (!Array.isArray(dialogAction)) {\n console.error('dialogActions should be an array')\n return\n }\n\n if (!state.globalDialog) {\n state.globalDialog = true\n state.globalDialogTitle = dialogTitle\n state.globalDialogText = dialogText\n state.globalDialogAction = dialogAction\n state.globalDialogTaskId = globalDialogTaskId\n state.options = options\n }\n },\n setSnackBarTimer: function (state, timer) {\n state.snackBarTimer = timer\n },\n resetSnackBarTimer: function (state) {\n if (state.snackBarTimer) {\n clearTimeout(state.snackBarTimer)\n }\n },\n setUserOrgs: function (state, userOrgs) {\n state.userOrgs = userOrgs\n },\n setFetching: function (state, val) {\n state.fetchingOrgs = val\n },\n setOpenOrgSelectorDialog: function (state, val) {\n state.openOrgSelectorDialog = val\n },\n setCurrentOrgData: function (state, newData) {\n state.currentOrgData = newData\n },\n hideSnackBar: function (state) {\n state.snackBar = false\n },\n hideGlobalDialog: function (state) {\n state.globalDialog = false\n state.globalDialogTaskId = null\n },\n setFetchingUserInfo: function (state, status) {\n state.fetchingUserInfo = status\n },\n setUserInfo: function (state, { userInfo, userMetadata }) {\n state.userInfo = userInfo\n state.userMetadata = userMetadata\n },\n setUserMetadata: function (state, properties) {\n try {\n $axios\n .patch('/users/metadata', {\n user_metadata: properties\n })\n .then(() => {\n state.userMetadata = { ...state.userMetadata, ...properties }\n })\n } catch (error) {\n return error\n }\n },\n setTrialInfo: function (state, trialInfo) {\n state.trialInfo = trialInfo\n },\n setBundleCreated: function (state, val) {\n state.bundleCreated = val\n },\n toggleSidebarBrightness(state) {\n state.dimmedSidebar = !state.dimmedSidebar\n }\n },\n actions: {\n showSnackBar: function (context, { snackBarTimeout, snackBarText, snackBarIcon, snackBarLabel }) {\n context.commit('resetSnackBarTimer')\n context.commit('showSnackBar', { snackBarText, snackBarIcon, snackBarLabel })\n context.commit(\n 'setSnackBarTimer',\n setTimeout(() => {\n context.commit('hideSnackBar')\n }, snackBarTimeout || 10000)\n )\n },\n showGlobalDialog: function (context, { dialogTitle, dialogText, dialogAction, taskId, options }) {\n context.commit('showGlobalDialog', { dialogTitle, dialogText, dialogAction, globalDialogTaskId: taskId, options })\n },\n hideSnackBar: function (context) {\n context.commit('hideSnackBar')\n },\n hideGlobalDialog: function (context) {\n context.commit('hideGlobalDialog')\n },\n fetchUserOrgs: function (context) {\n context.commit('setFetching', true)\n $axios\n .post('/orgs/find', {})\n .then(response => {\n let orgData\n const latestOrg = context.state.userMetadata?.latestOrg?.toString()\n const oids = response.data.map(org => org.oid.toString())\n if (context.state.currentOrgData && oids.includes(context.state.currentOrgData.oid.toString())) {\n orgData = context.state.currentOrgData\n } else if (latestOrg && oids.includes(latestOrg)) {\n const latestOrgData = response.data.filter(org => org.oid.toString() === latestOrg)\n orgData = latestOrgData.length ? latestOrgData[0] : response.data[0]\n } else {\n orgData = response.data[0]\n }\n context.commit('setCurrentOrgData', orgData)\n context.commit('setUserOrgs', response.data)\n })\n .finally(() => {\n context.commit('setFetching', false)\n })\n },\n setOpenOrgSelectorDialog: function (context, val) {\n context.commit('setOpenOrgSelectorDialog', val)\n },\n setCurrentOrgData: function (context, newData) {\n if (newData !== undefined) {\n if (context.state.userOrgs && context.state.userOrgs.length > 1 && !context.state.userMetadata?.latestOrg) {\n context.commit('setOpenOrgSelectorDialog', true)\n }\n context.commit('setCurrentOrgData', newData)\n context.commit('setUserMetadata', { latestOrg: newData.oid })\n }\n },\n getTrialInfo(context) {\n return $axios\n .get('/trials/current')\n .then(response => {\n context.commit('setTrialInfo', response.data)\n })\n .catch(error => {\n context.commit('setTrialInfo', null)\n return error\n })\n },\n getUserInfo: function (context) {\n context.commit('setFetchingUserInfo', true)\n return $axios\n .get('/users/current')\n .then(async response => {\n let userMetadata = null\n try {\n const { data } = await $axios.get('/users/metadata')\n userMetadata = data\n } catch (error) {\n context.commit('setUserInfo', { userInfo: null, userMetadata: null })\n }\n if (typeof response.data === 'object' && response.data.is_active) {\n context.commit('setUserInfo', { userInfo: response.data, userMetadata })\n if (response.data.email) {\n store.set('nvLastEmail', response.data.email)\n }\n } else if (context.state.route.params.invid === undefined) {\n context.commit('setUserInfo', { userInfo: null, userMetadata: null })\n }\n context.commit('setFetchingUserInfo', false)\n if (response.data && response.data.is_trial_user) {\n this.dispatch('getTrialInfo')\n }\n })\n .catch(error => {\n if (error.response) {\n // Request made and server responded\n console.log('ERROR RESPONSE(data):', error.response.data)\n console.log('ERROR RESPONSE(status):', error.response.status)\n console.log('ERROR RESPONSE(header):', error.response.headers)\n } else if (error.request) {\n // The request was made but no response was received\n console.log('ERROR REQUEST:', error.request)\n } else {\n // Something happened in setting up the request that triggered an Error\n console.log('ERROR ELSE:', error.message)\n }\n context.commit('setUserInfo', { userInfo: null, userMetadata: null })\n context.commit('setFetchingUserInfo', false)\n })\n }\n },\n modules: {\n orgStore,\n homeStore,\n spaceStore,\n instanceStore,\n snapshotStore,\n appStore,\n userStore,\n tourStore\n }\n})\n","import { mapState } from 'vuex'\nimport LogRocket from 'logrocket'\nimport { randomString } from '@/utils'\nimport { isProduction } from '@/helpers'\n\nexport const analyticsMixin = {\n computed: {\n ...mapState(['userMetadata']),\n isAnalyticsEnabled() {\n const userPreference = this.userMetadata?.analytics_opt_in || !('analytics_opt_in' in this.userMetadata)\n const override = window.localStorage.getItem('nvLogRocket') !== null\n return (userPreference && isProduction()) || override\n }\n },\n methods: {\n cleanUpData(data) {\n for (const key in data) {\n if (Array.isArray(data[key]) && data[key].length === 0) data[key] = 'None'\n }\n return data\n },\n sendAnalyticsEvent(eventName, eventData) {\n if (!this.isAnalyticsEnabled) return\n this.cleanUpData(eventData)\n LogRocket.track(eventName, eventData)\n },\n sendErrorEvent(eventName, eventData) {\n LogRocket.captureMessage(`${eventName} [${randomString(8)}]`, {\n extra: this.cleanUpData(eventData)\n })\n }\n }\n}\n","export function isError(obj) {\n return obj instanceof Error\n}\n\nexport function isProduction() {\n return window.appConfig?.VUE_APP_ENV === 'production'\n}\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!./App.vue?vue&type=style&index=1&id=1fee4e08&prod&scoped=true&lang=css&\""],"sourceRoot":""}