Changed to Redis Session; Further implemented FE
This commit is contained in:
1 parent
2550140811
commit
77cfaf35ed
39 files changed
+1399
-1197
No files matched your search
+3
-4
@@ -26,7 +26,6 @@ repositories {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
|
|
||||||
val jjwtVersion: String = "0.12.6";
|
|
||||||
val bcVersion: String = "1.78.1";
|
val bcVersion: String = "1.78.1";
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
@@ -34,15 +33,15 @@ dependencies {
|
|||||||
implementation("org.springframework.boot:spring-boot-starter-security")
|
implementation("org.springframework.boot:spring-boot-starter-security")
|
||||||
implementation("org.springframework.boot:spring-boot-starter-web")
|
implementation("org.springframework.boot:spring-boot-starter-web")
|
||||||
implementation("org.springframework.boot:spring-boot-starter-websocket")
|
implementation("org.springframework.boot:spring-boot-starter-websocket")
|
||||||
|
implementation("org.springframework.boot:spring-boot-docker-compose")
|
||||||
|
implementation("org.springframework.boot:spring-boot-starter-data-redis")
|
||||||
|
implementation("org.springframework.session:spring-session-data-redis")
|
||||||
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
|
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
|
||||||
implementation("org.jetbrains.kotlin:kotlin-reflect")
|
implementation("org.jetbrains.kotlin:kotlin-reflect")
|
||||||
implementation("io.jsonwebtoken:jjwt-api:$jjwtVersion")
|
|
||||||
implementation("org.bouncycastle:bcprov-jdk18on:$bcVersion")
|
implementation("org.bouncycastle:bcprov-jdk18on:$bcVersion")
|
||||||
compileOnly("org.projectlombok:lombok")
|
compileOnly("org.projectlombok:lombok")
|
||||||
developmentOnly("org.springframework.boot:spring-boot-devtools")
|
developmentOnly("org.springframework.boot:spring-boot-devtools")
|
||||||
runtimeOnly("org.postgresql:postgresql")
|
runtimeOnly("org.postgresql:postgresql")
|
||||||
runtimeOnly("io.jsonwebtoken:jjwt-impl:$jjwtVersion")
|
|
||||||
runtimeOnly("io.jsonwebtoken:jjwt-jackson:$jjwtVersion")
|
|
||||||
annotationProcessor("org.projectlombok:lombok")
|
annotationProcessor("org.projectlombok:lombok")
|
||||||
testImplementation("org.springframework.boot:spring-boot-starter-test")
|
testImplementation("org.springframework.boot:spring-boot-starter-test")
|
||||||
testImplementation("org.jetbrains.kotlin:kotlin-test-junit5")
|
testImplementation("org.jetbrains.kotlin:kotlin-test-junit5")
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
version: "3.1"
|
||||||
|
|
||||||
|
services:
|
||||||
|
redis:
|
||||||
|
image: "redis:alpine"
|
||||||
|
ports:
|
||||||
|
- "6379:6379"
|
||||||
@@ -4,9 +4,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties
|
|||||||
|
|
||||||
@ConfigurationProperties("application")
|
@ConfigurationProperties("application")
|
||||||
data class ApplicationProperties(
|
data class ApplicationProperties(
|
||||||
|
val test: Boolean,
|
||||||
val corsAllowedOrigins: List<String>,
|
val corsAllowedOrigins: List<String>,
|
||||||
val corsAllowedMethods: List<String>,
|
val corsAllowedMethods: List<String>,
|
||||||
val jwtCookieName: String,
|
|
||||||
val jwtExpirationMs: Long,
|
|
||||||
val jwtSecret: String,
|
|
||||||
)
|
)
|
||||||
@@ -2,21 +2,23 @@ package at.eisibaer.jbear2.endpoint
|
|||||||
|
|
||||||
import at.eisibaer.jbear2.dto.auth.LoginDto
|
import at.eisibaer.jbear2.dto.auth.LoginDto
|
||||||
import at.eisibaer.jbear2.dto.auth.LoginResponseDto
|
import at.eisibaer.jbear2.dto.auth.LoginResponseDto
|
||||||
import at.eisibaer.jbear2.model.Board
|
|
||||||
import at.eisibaer.jbear2.model.User
|
import at.eisibaer.jbear2.model.User
|
||||||
import at.eisibaer.jbear2.repository.UserRepository
|
import at.eisibaer.jbear2.repository.UserRepository
|
||||||
import at.eisibaer.jbear2.security.jwt.JwtUtils
|
import at.eisibaer.jbear2.security.UserDetailsImpl
|
||||||
import at.eisibaer.jbear2.security.userdetail.UserDetailsImpl
|
import at.eisibaer.jbear2.util.Constants.STR_SESSION_USER_KEY
|
||||||
|
import jakarta.servlet.http.HttpSession
|
||||||
import org.slf4j.Logger
|
import org.slf4j.Logger
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
import org.springframework.http.HttpHeaders
|
|
||||||
import org.springframework.http.ResponseCookie
|
|
||||||
import org.springframework.http.ResponseEntity
|
import org.springframework.http.ResponseEntity
|
||||||
import org.springframework.security.authentication.AuthenticationManager
|
import org.springframework.security.authentication.AuthenticationManager
|
||||||
|
import org.springframework.security.authentication.BadCredentialsException
|
||||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken
|
||||||
|
import org.springframework.security.core.Authentication
|
||||||
|
import org.springframework.security.core.AuthenticationException
|
||||||
import org.springframework.security.core.context.SecurityContextHolder
|
import org.springframework.security.core.context.SecurityContextHolder
|
||||||
import org.springframework.security.crypto.password.PasswordEncoder
|
import org.springframework.security.crypto.password.PasswordEncoder
|
||||||
import org.springframework.stereotype.Controller
|
import org.springframework.stereotype.Controller
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping
|
||||||
import org.springframework.web.bind.annotation.PostMapping
|
import org.springframework.web.bind.annotation.PostMapping
|
||||||
import org.springframework.web.bind.annotation.RequestBody
|
import org.springframework.web.bind.annotation.RequestBody
|
||||||
import org.springframework.web.bind.annotation.RequestMapping
|
import org.springframework.web.bind.annotation.RequestMapping
|
||||||
@@ -27,34 +29,27 @@ class AuthEndpoint(
|
|||||||
val authenticationManager: AuthenticationManager,
|
val authenticationManager: AuthenticationManager,
|
||||||
val userRepository: UserRepository,
|
val userRepository: UserRepository,
|
||||||
val encoder: PasswordEncoder,
|
val encoder: PasswordEncoder,
|
||||||
val jwtUtils: JwtUtils,
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
private val log: Logger = LoggerFactory.getLogger(AuthEndpoint::class.java);
|
private val log: Logger = LoggerFactory.getLogger(AuthEndpoint::class.java);
|
||||||
|
|
||||||
val strResponseSuccess: String = "Sending back success response";
|
val strResponseSuccess: String = "Sending back success response";
|
||||||
|
val strAlreadyLoggedIn: String = "User already logged in";
|
||||||
|
|
||||||
@PostMapping("/signup")
|
@PostMapping("/signup")
|
||||||
fun signupUser(@RequestBody loginDto: LoginDto): ResponseEntity<String>{
|
fun signupUser(@RequestBody loginDto: LoginDto, session: HttpSession): ResponseEntity<*>{
|
||||||
log.info("Endpoint singupUser called");
|
log.info("Endpoint signupUser called");
|
||||||
log.debug("signup Request with username: {}", loginDto.username);
|
log.debug("signup Request with username: {}", loginDto.username);
|
||||||
|
|
||||||
if( userRepository.existsByUsername(loginDto.username)){
|
if( userRepository.existsByUsername(loginDto.username)){
|
||||||
log.info("Username was already taken");
|
log.info("Username was already taken");
|
||||||
ResponseEntity.badRequest().body("Username already taken");
|
return ResponseEntity.badRequest().body("Username already taken");
|
||||||
}
|
}
|
||||||
|
|
||||||
val user = User(loginDto.username, encoder.encode( loginDto.password), ArrayList(), null, null );
|
val user = User(loginDto.username, encoder.encode( loginDto.password), ArrayList(), null, null );
|
||||||
|
|
||||||
userRepository.save(user);
|
userRepository.save(user);
|
||||||
|
|
||||||
log.info(strResponseSuccess);
|
|
||||||
return ResponseEntity.ok().body("User registered successfully");
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("/login")
|
|
||||||
fun loginUser(@RequestBody loginDto: LoginDto): ResponseEntity<LoginResponseDto>{
|
|
||||||
log.info("Endpoint loginUser called");
|
|
||||||
log.debug("login Request with username: {}", loginDto.username);
|
|
||||||
val authentication = authenticationManager.authenticate(
|
val authentication = authenticationManager.authenticate(
|
||||||
UsernamePasswordAuthenticationToken(
|
UsernamePasswordAuthenticationToken(
|
||||||
loginDto.username,
|
loginDto.username,
|
||||||
@@ -66,22 +61,77 @@ class AuthEndpoint(
|
|||||||
|
|
||||||
val userDetails: UserDetailsImpl = authentication.principal as UserDetailsImpl;
|
val userDetails: UserDetailsImpl = authentication.principal as UserDetailsImpl;
|
||||||
|
|
||||||
val jwtCookie = jwtUtils.generateJwtCookie(userDetails);
|
session.setAttribute(STR_SESSION_USER_KEY, userDetails);
|
||||||
|
|
||||||
|
log.info(strResponseSuccess);
|
||||||
|
return ResponseEntity.ok().body(LoginResponseDto(userDetails.username, userDetails.getProfilePictureFilename()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/login")
|
||||||
|
fun loginUser(@RequestBody loginDto: LoginDto, session: HttpSession): ResponseEntity<*>{
|
||||||
|
log.info("Endpoint loginUser called");
|
||||||
|
log.debug("login Request with username: {}", loginDto.username);
|
||||||
|
|
||||||
|
if( session.getAttribute(STR_SESSION_USER_KEY) != null ){
|
||||||
|
log.info(strAlreadyLoggedIn);
|
||||||
|
return ResponseEntity.badRequest().body(strAlreadyLoggedIn);
|
||||||
|
}
|
||||||
|
|
||||||
|
val authentication: Authentication;
|
||||||
|
try{
|
||||||
|
authentication = authenticationManager.authenticate(
|
||||||
|
UsernamePasswordAuthenticationToken(
|
||||||
|
loginDto.username,
|
||||||
|
loginDto.password
|
||||||
|
)
|
||||||
|
)
|
||||||
|
} catch (authenticationException: AuthenticationException ){
|
||||||
|
if( authenticationException is BadCredentialsException ){
|
||||||
|
log.debug("Login attempt with bad credentials for username: {}", loginDto.username);
|
||||||
|
return ResponseEntity.status(401).body(4011);
|
||||||
|
}
|
||||||
|
log.error("Error during authentication", authenticationException);
|
||||||
|
return ResponseEntity.status(401).body(4010);
|
||||||
|
}
|
||||||
|
|
||||||
|
SecurityContextHolder.getContext().authentication = authentication;
|
||||||
|
|
||||||
|
val userDetails: UserDetailsImpl = authentication.principal as UserDetailsImpl;
|
||||||
|
|
||||||
|
session.setAttribute(STR_SESSION_USER_KEY, userDetails);
|
||||||
|
|
||||||
log.info(strResponseSuccess);
|
log.info(strResponseSuccess);
|
||||||
return ResponseEntity.ok()
|
return ResponseEntity.ok()
|
||||||
.header( HttpHeaders.SET_COOKIE, jwtCookie.toString() )
|
|
||||||
.body( LoginResponseDto(userDetails.username, userDetails.getProfilePictureFilename()))
|
.body( LoginResponseDto(userDetails.username, userDetails.getProfilePictureFilename()))
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("signout")
|
@PostMapping("/logout")
|
||||||
fun logoutUser(): ResponseEntity<String>{
|
fun logoutUser(session: HttpSession): ResponseEntity<String>{
|
||||||
log.info("Endpoint logoutUser called");
|
log.info("Endpoint logoutUser called");
|
||||||
val cookie: ResponseCookie = jwtUtils.getCleanJwtCookie();
|
|
||||||
|
session.invalidate();
|
||||||
|
|
||||||
log.info(strResponseSuccess);
|
log.info(strResponseSuccess);
|
||||||
return ResponseEntity.ok()
|
return ResponseEntity.ok()
|
||||||
.header(HttpHeaders.SET_COOKIE, cookie.toString())
|
|
||||||
.body("Logged out");
|
.body("Logged out");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/status")
|
||||||
|
fun checkStatus(session: HttpSession): ResponseEntity<*>{
|
||||||
|
log.info("Endpoint checkStatus called");
|
||||||
|
|
||||||
|
return if( session.getAttribute(STR_SESSION_USER_KEY) != null ){
|
||||||
|
log.info(strAlreadyLoggedIn);
|
||||||
|
val sessionUser: UserDetailsImpl = session.getAttribute(STR_SESSION_USER_KEY) as UserDetailsImpl;
|
||||||
|
ResponseEntity
|
||||||
|
.ok()
|
||||||
|
.body( LoginResponseDto( sessionUser.username, sessionUser.getProfilePictureFilename() ) );
|
||||||
|
} else {
|
||||||
|
log.debug("No user logged in");
|
||||||
|
log.info(strResponseSuccess);
|
||||||
|
ResponseEntity
|
||||||
|
.status(401)
|
||||||
|
.body("No user logged in");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -20,4 +20,9 @@ class UserEndpoint {
|
|||||||
log.info("test Endpoint!");
|
log.info("test Endpoint!");
|
||||||
return ResponseEntity.ok(param1);
|
return ResponseEntity.ok(param1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/boards")
|
||||||
|
fun getBoards(){
|
||||||
|
TODO();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+9
-19
@@ -1,39 +1,33 @@
|
|||||||
package at.eisibaer.jbear2.security.jwt
|
package at.eisibaer.jbear2.security
|
||||||
|
|
||||||
|
import at.eisibaer.jbear2.util.Constants.STR_SESSION_USER_KEY
|
||||||
import jakarta.servlet.FilterChain
|
import jakarta.servlet.FilterChain
|
||||||
import jakarta.servlet.http.HttpServletRequest
|
import jakarta.servlet.http.HttpServletRequest
|
||||||
import jakarta.servlet.http.HttpServletResponse
|
import jakarta.servlet.http.HttpServletResponse
|
||||||
|
import jakarta.servlet.http.HttpSession
|
||||||
import org.slf4j.Logger
|
import org.slf4j.Logger
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken
|
||||||
import org.springframework.security.core.context.SecurityContextHolder
|
import org.springframework.security.core.context.SecurityContextHolder
|
||||||
import org.springframework.security.core.userdetails.UserDetails
|
|
||||||
import org.springframework.security.core.userdetails.UserDetailsService
|
|
||||||
import org.springframework.security.web.authentication.WebAuthenticationDetailsSource
|
import org.springframework.security.web.authentication.WebAuthenticationDetailsSource
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import org.springframework.web.filter.OncePerRequestFilter
|
import org.springframework.web.filter.OncePerRequestFilter
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
class AuthTokenFilter(
|
class AuthFilter: OncePerRequestFilter() {
|
||||||
private var jwtUtils: JwtUtils?,
|
|
||||||
private var userDetailService: UserDetailsService?,
|
|
||||||
): OncePerRequestFilter() {
|
|
||||||
|
|
||||||
val log: Logger = LoggerFactory.getLogger(AuthTokenFilter::class.java);
|
val log: Logger = LoggerFactory.getLogger(AuthFilter::class.java);
|
||||||
|
|
||||||
override fun doFilterInternal(
|
override fun doFilterInternal(
|
||||||
request: HttpServletRequest,
|
request: HttpServletRequest,
|
||||||
response: HttpServletResponse,
|
response: HttpServletResponse,
|
||||||
filterChain: FilterChain
|
filterChain: FilterChain
|
||||||
) {
|
) {
|
||||||
|
val session: HttpSession = request.session;
|
||||||
try{
|
try{
|
||||||
val jwt: String? = parseJwt(request);
|
val user: UserDetailsImpl? = session.getAttribute(STR_SESSION_USER_KEY) as UserDetailsImpl?;
|
||||||
if( jwt != null && jwtUtils!!.validateJwt(jwt) ){
|
if( user != null ){
|
||||||
val username: String = jwtUtils!!.getUserNameFromJwt(jwt);
|
val authentication = UsernamePasswordAuthenticationToken(user, null, emptyList());
|
||||||
|
|
||||||
val userDetails: UserDetails = userDetailService!!.loadUserByUsername( username );
|
|
||||||
|
|
||||||
val authentication = UsernamePasswordAuthenticationToken(userDetails, null, userDetails.authorities);
|
|
||||||
authentication.details = WebAuthenticationDetailsSource().buildDetails(request);
|
authentication.details = WebAuthenticationDetailsSource().buildDetails(request);
|
||||||
|
|
||||||
SecurityContextHolder.getContext().authentication = authentication;
|
SecurityContextHolder.getContext().authentication = authentication;
|
||||||
@@ -44,8 +38,4 @@ class AuthTokenFilter(
|
|||||||
filterChain.doFilter(request, response);
|
filterChain.doFilter(request, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun parseJwt(request: HttpServletRequest): String?{
|
|
||||||
return jwtUtils!!.getJwtFromCookies(request);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package at.eisibaer.jbear2.security
|
package at.eisibaer.jbear2.security
|
||||||
|
|
||||||
import at.eisibaer.jbear2.security.jwt.AuthTokenFilter
|
import at.eisibaer.jbear2.config.ApplicationProperties
|
||||||
import jakarta.servlet.FilterChain
|
import jakarta.servlet.FilterChain
|
||||||
import jakarta.servlet.ServletException
|
import jakarta.servlet.ServletException
|
||||||
import jakarta.servlet.http.HttpServletRequest
|
import jakarta.servlet.http.HttpServletRequest
|
||||||
@@ -14,8 +14,6 @@ import org.springframework.security.authentication.dao.DaoAuthenticationProvider
|
|||||||
import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration
|
import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration
|
||||||
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity
|
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity
|
||||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity
|
||||||
import org.springframework.security.config.annotation.web.configurers.SessionManagementConfigurer
|
|
||||||
import org.springframework.security.config.http.SessionCreationPolicy
|
|
||||||
import org.springframework.security.core.userdetails.UserDetailsService
|
import org.springframework.security.core.userdetails.UserDetailsService
|
||||||
import org.springframework.security.crypto.argon2.Argon2PasswordEncoder
|
import org.springframework.security.crypto.argon2.Argon2PasswordEncoder
|
||||||
import org.springframework.security.crypto.password.PasswordEncoder
|
import org.springframework.security.crypto.password.PasswordEncoder
|
||||||
@@ -32,33 +30,38 @@ import java.util.function.Supplier
|
|||||||
@EnableMethodSecurity
|
@EnableMethodSecurity
|
||||||
class SecurityConfiguration(
|
class SecurityConfiguration(
|
||||||
private val userDetailService: UserDetailsService,
|
private val userDetailService: UserDetailsService,
|
||||||
private val unauthorizedHandler: AuthTokenFilter,
|
private val unauthorizedHandler: AuthFilter,
|
||||||
|
private val applicationProperties: ApplicationProperties
|
||||||
) {
|
) {
|
||||||
|
|
||||||
final val log: Logger = LoggerFactory.getLogger(SecurityConfiguration::class.java);
|
final val log: Logger = LoggerFactory.getLogger(SecurityConfiguration::class.java);
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
fun securityFilterChain(httpSecurity: HttpSecurity): SecurityFilterChain {
|
fun securityFilterChain(httpSecurity: HttpSecurity): SecurityFilterChain {
|
||||||
return httpSecurity
|
return addCsrfConfig(httpSecurity)
|
||||||
.csrf { config ->
|
.authorizeHttpRequests { config ->
|
||||||
|
config
|
||||||
|
.requestMatchers("/api/auth/*").permitAll()
|
||||||
|
.requestMatchers("/api/user/**").authenticated()
|
||||||
|
.requestMatchers("/**").permitAll()
|
||||||
|
}
|
||||||
|
.authenticationProvider(authenticationProvider())
|
||||||
|
.addFilterBefore(unauthorizedHandler, UsernamePasswordAuthenticationFilter::class.java)
|
||||||
|
.build()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun addCsrfConfig(httpSecurity: HttpSecurity): HttpSecurity{
|
||||||
|
if( applicationProperties.test ){
|
||||||
|
httpSecurity.csrf{ config -> config.disable()};
|
||||||
|
} else {
|
||||||
|
httpSecurity.csrf { config ->
|
||||||
config
|
config
|
||||||
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
|
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
|
||||||
.csrfTokenRequestHandler(SpaCsrfTokenRequestHandler())
|
.csrfTokenRequestHandler(SpaCsrfTokenRequestHandler())
|
||||||
}
|
}
|
||||||
.addFilterAfter(CsrfCookieFilter(), BasicAuthenticationFilter::class.java)
|
.addFilterAfter(CsrfCookieFilter(), BasicAuthenticationFilter::class.java)
|
||||||
.authorizeHttpRequests { config ->
|
|
||||||
config
|
|
||||||
.requestMatchers("/api/auth/*").permitAll()
|
|
||||||
.requestMatchers("/api/**").authenticated()
|
|
||||||
.requestMatchers("/profile").authenticated()
|
|
||||||
.requestMatchers("/**").permitAll()
|
|
||||||
}
|
}
|
||||||
.sessionManagement { config: SessionManagementConfigurer<HttpSecurity?> ->
|
return httpSecurity;
|
||||||
config.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
|
|
||||||
}
|
|
||||||
.authenticationProvider(authenticationProvider())
|
|
||||||
.addFilterBefore(unauthorizedHandler, UsernamePasswordAuthenticationFilter::class.java)
|
|
||||||
.build()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class SpaCsrfTokenRequestHandler : CsrfTokenRequestAttributeHandler() {
|
class SpaCsrfTokenRequestHandler : CsrfTokenRequestAttributeHandler() {
|
||||||
@@ -94,7 +97,6 @@ class SecurityConfiguration(
|
|||||||
}
|
}
|
||||||
|
|
||||||
class CsrfCookieFilter : OncePerRequestFilter() {
|
class CsrfCookieFilter : OncePerRequestFilter() {
|
||||||
|
|
||||||
@Throws(ServletException::class, IOException::class)
|
@Throws(ServletException::class, IOException::class)
|
||||||
override fun doFilterInternal(request: HttpServletRequest, response: HttpServletResponse, filterChain: FilterChain) {
|
override fun doFilterInternal(request: HttpServletRequest, response: HttpServletResponse, filterChain: FilterChain) {
|
||||||
val csrfToken = request.getAttribute("_csrf") as CsrfToken
|
val csrfToken = request.getAttribute("_csrf") as CsrfToken
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package at.eisibaer.jbear2.security.userdetail
|
package at.eisibaer.jbear2.security
|
||||||
|
|
||||||
import at.eisibaer.jbear2.repository.UserRepository
|
import at.eisibaer.jbear2.repository.UserRepository
|
||||||
import at.eisibaer.jbear2.model.User
|
import at.eisibaer.jbear2.model.User
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package at.eisibaer.jbear2.security.userdetail
|
package at.eisibaer.jbear2.security
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore
|
import com.fasterxml.jackson.annotation.JsonIgnore
|
||||||
import lombok.Data
|
import lombok.Data
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
package at.eisibaer.jbear2.security.jwt
|
|
||||||
|
|
||||||
import jakarta.servlet.http.HttpServletRequest
|
|
||||||
import jakarta.servlet.http.HttpServletResponse
|
|
||||||
import org.slf4j.Logger
|
|
||||||
import org.slf4j.LoggerFactory
|
|
||||||
import org.springframework.security.core.AuthenticationException
|
|
||||||
import org.springframework.security.web.AuthenticationEntryPoint
|
|
||||||
|
|
||||||
class AuthEntryPointJwt: AuthenticationEntryPoint {
|
|
||||||
|
|
||||||
val log: Logger = LoggerFactory.getLogger(AuthEntryPointJwt::class.java);
|
|
||||||
|
|
||||||
override fun commence(
|
|
||||||
request: HttpServletRequest?,
|
|
||||||
response: HttpServletResponse?,
|
|
||||||
authException: AuthenticationException?
|
|
||||||
) {
|
|
||||||
log.error("Unauthorized error: {}", authException?.message);
|
|
||||||
response?.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Error: Unauthorized");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,75 +0,0 @@
|
|||||||
package at.eisibaer.jbear2.security.jwt
|
|
||||||
|
|
||||||
import at.eisibaer.jbear2.config.ApplicationProperties
|
|
||||||
import at.eisibaer.jbear2.security.userdetail.UserDetailsImpl
|
|
||||||
import io.jsonwebtoken.JwtException
|
|
||||||
import io.jsonwebtoken.Jwts
|
|
||||||
import io.jsonwebtoken.UnsupportedJwtException
|
|
||||||
import io.jsonwebtoken.io.Decoders
|
|
||||||
import io.jsonwebtoken.security.Keys
|
|
||||||
import jakarta.servlet.http.HttpServletRequest
|
|
||||||
import org.slf4j.Logger
|
|
||||||
import org.slf4j.LoggerFactory
|
|
||||||
import org.springframework.http.ResponseCookie
|
|
||||||
import org.springframework.stereotype.Component
|
|
||||||
import org.springframework.web.util.WebUtils
|
|
||||||
import java.util.Date
|
|
||||||
import javax.crypto.SecretKey
|
|
||||||
|
|
||||||
@Component
|
|
||||||
class JwtUtils(
|
|
||||||
private val applicationProperties: ApplicationProperties
|
|
||||||
) {
|
|
||||||
|
|
||||||
private val log: Logger = LoggerFactory.getLogger(JwtUtils::class.java);
|
|
||||||
|
|
||||||
fun getJwtFromCookies(request: HttpServletRequest): String?{
|
|
||||||
return WebUtils.getCookie(request, applicationProperties.jwtCookieName)?.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
fun generateJwtCookie(userPrincipal: UserDetailsImpl): ResponseCookie{
|
|
||||||
val jwt: String = generateTokenFromUsername(userPrincipal.username)
|
|
||||||
return ResponseCookie.from(applicationProperties.jwtCookieName, jwt)
|
|
||||||
.path("/api")
|
|
||||||
.maxAge(applicationProperties.jwtExpirationMs/1000)
|
|
||||||
.httpOnly(true)
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getCleanJwtCookie(): ResponseCookie {
|
|
||||||
return ResponseCookie.from(applicationProperties.jwtCookieName, "")
|
|
||||||
.path("/api")
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getUserNameFromJwt(token: String): String{
|
|
||||||
return Jwts.parser().verifyWith(key()).build().parseSignedClaims(token).payload.subject;
|
|
||||||
}
|
|
||||||
|
|
||||||
fun key(): SecretKey{
|
|
||||||
return Keys.hmacShaKeyFor(Decoders.BASE64.decode(applicationProperties.jwtSecret));
|
|
||||||
}
|
|
||||||
|
|
||||||
fun generateTokenFromUsername(username: String): String{
|
|
||||||
return Jwts.builder()
|
|
||||||
.subject(username)
|
|
||||||
.issuedAt(Date())
|
|
||||||
.expiration(Date(Date().time + applicationProperties.jwtExpirationMs))
|
|
||||||
.signWith(key())
|
|
||||||
.compact();
|
|
||||||
}
|
|
||||||
|
|
||||||
fun validateJwt(authToken: String): Boolean{
|
|
||||||
try {
|
|
||||||
Jwts.parser().verifyWith(key()).build().parseSignedClaims(authToken);
|
|
||||||
return true;
|
|
||||||
} catch (e: UnsupportedJwtException) {
|
|
||||||
log.error("UnsupportedJwtException {}", e.message);
|
|
||||||
} catch (e: IllegalArgumentException) {
|
|
||||||
log.error("IllegalArgumentException {}", e.message);
|
|
||||||
} catch (e: JwtException) {
|
|
||||||
log.error("JwtException {}", e.message);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package at.eisibaer.jbear2.util
|
||||||
|
|
||||||
|
object Constants {
|
||||||
|
const val STR_SESSION_USER_KEY = "user"
|
||||||
|
}
|
||||||
@@ -1,13 +1,14 @@
|
|||||||
logging:
|
logging:
|
||||||
level:
|
level:
|
||||||
org:
|
at:
|
||||||
springframework:
|
eisibaer:
|
||||||
security: "DEBUG"
|
jbear2: "DEBUG"
|
||||||
spring:
|
spring:
|
||||||
datasource:
|
datasource:
|
||||||
url: jdbc:postgresql://localhost:5499/jeobeardy?currentSchema=jeobeardy-app
|
url: jdbc:postgresql://${PG_HOST}:${PG_PORT}/jeobeardy?currentSchema=jeobeardy-app
|
||||||
username: ${PG_USER}
|
username: ${PG_USER}
|
||||||
password: ${PG_PASSWORD}
|
password: ${PG_PASSWORD}
|
||||||
|
|
||||||
application:
|
application:
|
||||||
|
test: true
|
||||||
cors-allowed-origins: [ "http://localhost:5173/" ]
|
cors-allowed-origins: [ "http://localhost:5173/" ]
|
||||||
@@ -1,8 +1,9 @@
|
|||||||
spring:
|
spring:
|
||||||
datasource:
|
datasource:
|
||||||
url: jdbc:postgresql://localhost:5499/jeobeardy?currentSchema=jeobeardy-app
|
url: jdbc:postgresql://${PG_HOST}:${PG_PORT}/jeobeardy?currentSchema=jeobeardy-app
|
||||||
username: ${PG_USER}
|
username: ${PG_USER}
|
||||||
password: ${PG_PASSWORD}
|
password: ${PG_PASSWORD}
|
||||||
|
|
||||||
application:
|
application:
|
||||||
|
test: false
|
||||||
cors-allowed-origins: []
|
cors-allowed-origins: []
|
||||||
@@ -11,6 +11,9 @@ spring:
|
|||||||
dialect: org.hibernate.dialect.PostgreSQLDialect
|
dialect: org.hibernate.dialect.PostgreSQLDialect
|
||||||
default-schema: jeobeardy-app
|
default-schema: jeobeardy-app
|
||||||
open-in-view: false
|
open-in-view: false
|
||||||
|
docker:
|
||||||
|
compose:
|
||||||
|
lifecycle-management: start-only
|
||||||
|
|
||||||
server:
|
server:
|
||||||
address: localhost
|
address: localhost
|
||||||
@@ -18,6 +21,3 @@ server:
|
|||||||
|
|
||||||
application:
|
application:
|
||||||
cors-allowed-methods: ["GET", "POST", "DELETE", "OPTIONS"]
|
cors-allowed-methods: ["GET", "POST", "DELETE", "OPTIONS"]
|
||||||
jwt-cookie-name: "user_jwt"
|
|
||||||
jwt-expiration-ms: 86400000 #1000 * 60 * 60 * 24 = 1 day
|
|
||||||
jwt-secret: ${JWT_SECRET}
|
|
||||||
@@ -1,813 +0,0 @@
|
|||||||
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(s){if(s.ep)return;s.ep=!0;const i=n(s);fetch(s.href,i)}})();/**
|
|
||||||
* @vue/shared v3.4.29
|
|
||||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
||||||
* @license MIT
|
|
||||||
**//*! #__NO_SIDE_EFFECTS__ */function Fl(e,t){const n=new Set(e.split(","));return r=>n.has(r)}const ke={},Mr=[],Ct=()=>{},h_=()=>!1,go=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),jl=e=>e.startsWith("onUpdate:"),Ze=Object.assign,Ul=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},p_=Object.prototype.hasOwnProperty,we=(e,t)=>p_.call(e,t),ce=Array.isArray,Fr=e=>_o(e)==="[object Map]",mm=e=>_o(e)==="[object Set]",he=e=>typeof e=="function",Ge=e=>typeof e=="string",br=e=>typeof e=="symbol",Fe=e=>e!==null&&typeof e=="object",hm=e=>(Fe(e)||he(e))&&he(e.then)&&he(e.catch),pm=Object.prototype.toString,_o=e=>pm.call(e),g_=e=>_o(e).slice(8,-1),gm=e=>_o(e)==="[object Object]",Hl=e=>Ge(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Es=Fl(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),vo=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},__=/-(\w)/g,Xt=vo(e=>e.replace(__,(t,n)=>n?n.toUpperCase():"")),v_=/\B([A-Z])/g,rs=vo(e=>e.replace(v_,"-$1").toLowerCase()),bo=vo(e=>e.charAt(0).toUpperCase()+e.slice(1)),Qo=vo(e=>e?`on${bo(e)}`:""),Rn=(e,t)=>!Object.is(e,t),Di=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},_m=(e,t,n,r=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},Fa=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let tu;const vm=()=>tu||(tu=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Zn(e){if(ce(e)){const t={};for(let n=0;n<e.length;n++){const r=e[n],s=Ge(r)?w_(r):Zn(r);if(s)for(const i in s)t[i]=s[i]}return t}else if(Ge(e)||Fe(e))return e}const b_=/;(?![^(]*\))/g,y_=/:([^]+)/,E_=/\/\*[^]*?\*\//g;function w_(e){const t={};return e.replace(E_,"").split(b_).forEach(n=>{if(n){const r=n.split(y_);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Nt(e){let t="";if(Ge(e))t=e;else if(ce(e))for(let n=0;n<e.length;n++){const r=Nt(e[n]);r&&(t+=r+" ")}else if(Fe(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const A_="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",T_=Fl(A_);function bm(e){return!!e||e===""}const ue=e=>Ge(e)?e:e==null?"":ce(e)||Fe(e)&&(e.toString===pm||!he(e.toString))?JSON.stringify(e,ym,2):String(e),ym=(e,t)=>t&&t.__v_isRef?ym(e,t.value):Fr(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],i)=>(n[Zo(r,i)+" =>"]=s,n),{})}:mm(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Zo(n))}:br(t)?Zo(t):Fe(t)&&!ce(t)&&!gm(t)?String(t):t,Zo=(e,t="")=>{var n;return br(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/**
|
|
||||||
* @vue/reactivity v3.4.29
|
|
||||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
||||||
* @license MIT
|
|
||||||
**/let yt;class Em{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=yt,!t&&yt&&(this.index=(yt.scopes||(yt.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=yt;try{return yt=this,t()}finally{yt=n}}}on(){yt=this}off(){yt=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n<r;n++)this.effects[n].stop();for(n=0,r=this.cleanups.length;n<r;n++)this.cleanups[n]();if(this.scopes)for(n=0,r=this.scopes.length;n<r;n++)this.scopes[n].stop(!0);if(!this.detached&&this.parent&&!t){const s=this.parent.scopes.pop();s&&s!==this&&(this.parent.scopes[this.index]=s,s.index=this.index)}this.parent=void 0,this._active=!1}}}function Vl(e){return new Em(e)}function O_(e,t=yt){t&&t.active&&t.effects.push(e)}function wm(){return yt}function S_(e){yt&&yt.cleanups.push(e)}let ar;class Bl{constructor(t,n,r,s){this.fn=t,this.trigger=n,this.scheduler=r,this.active=!0,this.deps=[],this._dirtyLevel=5,this._trackId=0,this._runnings=0,this._shouldSchedule=!1,this._depsLength=0,O_(this,s)}get dirty(){if(this._dirtyLevel===2)return!1;if(this._dirtyLevel===3||this._dirtyLevel===4){this._dirtyLevel=1,Un();for(let t=0;t<this._depsLength;t++){const n=this.deps[t];if(n.computed){if(n.computed.effect._dirtyLevel===2)return!0;if(C_(n.computed),this._dirtyLevel>=5)break}}this._dirtyLevel===1&&(this._dirtyLevel=0),Hn()}return this._dirtyLevel>=5}set dirty(t){this._dirtyLevel=t?5:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Ln,n=ar;try{return Ln=!0,ar=this,this._runnings++,nu(this),this.fn()}finally{ru(this),this._runnings--,ar=n,Ln=t}}stop(){this.active&&(nu(this),ru(this),this.onStop&&this.onStop(),this.active=!1)}}function C_(e){return e.value}function nu(e){e._trackId++,e._depsLength=0}function ru(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t<e.deps.length;t++)Am(e.deps[t],e);e.deps.length=e._depsLength}}function Am(e,t){const n=e.get(t);n!==void 0&&t._trackId!==n&&(e.delete(t),e.size===0&&e.cleanup())}let Ln=!0,ja=0;const Tm=[];function Un(){Tm.push(Ln),Ln=!1}function Hn(){const e=Tm.pop();Ln=e===void 0?!0:e}function Wl(){ja++}function Yl(){for(ja--;!ja&&Ua.length;)Ua.shift()()}function Om(e,t,n){if(t.get(e)!==e._trackId){t.set(e,e._trackId);const r=e.deps[e._depsLength];r!==t?(r&&Am(r,e),e.deps[e._depsLength++]=t):e._depsLength++}}const Ua=[];function Sm(e,t,n){Wl();for(const r of e.keys()){if(!e.computed&&r.computed&&e.get(r)===r._trackId&&r._runnings>0){r._dirtyLevel=2;continue}let s;r._dirtyLevel<t&&(s??(s=e.get(r)===r._trackId))&&(r._shouldSchedule||(r._shouldSchedule=r._dirtyLevel===0),r.computed&&r._dirtyLevel===2&&(r._shouldSchedule=!0),r._dirtyLevel=t),r._shouldSchedule&&(s??(s=e.get(r)===r._trackId))&&(r.trigger(),(!r._runnings||r.allowRecurse)&&r._dirtyLevel!==3&&(r._shouldSchedule=!1,r.scheduler&&Ua.push(r.scheduler)))}Yl()}const Cm=(e,t)=>{const n=new Map;return n.cleanup=e,n.computed=t,n},Xi=new WeakMap,lr=Symbol(""),Ha=Symbol("");function _t(e,t,n){if(Ln&&ar){let r=Xi.get(e);r||Xi.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=Cm(()=>r.delete(n))),Om(ar,s)}}function on(e,t,n,r,s,i){const o=Xi.get(e);if(!o)return;let a=[];if(t==="clear")a=[...o.values()];else if(n==="length"&&ce(e)){const l=Number(r);o.forEach((u,c)=>{(c==="length"||!br(c)&&c>=l)&&a.push(u)})}else switch(n!==void 0&&a.push(o.get(n)),t){case"add":ce(e)?Hl(n)&&a.push(o.get("length")):(a.push(o.get(lr)),Fr(e)&&a.push(o.get(Ha)));break;case"delete":ce(e)||(a.push(o.get(lr)),Fr(e)&&a.push(o.get(Ha)));break;case"set":Fr(e)&&a.push(o.get(lr));break}Wl();for(const l of a)l&&Sm(l,5);Yl()}function N_(e,t){const n=Xi.get(e);return n&&n.get(t)}const L_=Fl("__proto__,__v_isRef,__isVue"),Nm=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(br)),su=I_();function I_(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=Ae(this);for(let i=0,o=this.length;i<o;i++)_t(r,"get",i+"");const s=r[t](...n);return s===-1||s===!1?r[t](...n.map(Ae)):s}}),["push","pop","shift","unshift","splice"].forEach(t=>{e[t]=function(...n){Un(),Wl();const r=Ae(this)[t].apply(this,n);return Yl(),Hn(),r}}),e}function P_(e){br(e)||(e=String(e));const t=Ae(this);return _t(t,"has",e),t.hasOwnProperty(e)}class Lm{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const s=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return i;if(n==="__v_raw")return r===(s?i?W_:xm:i?Rm:Pm).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const o=ce(t);if(!s){if(o&&we(su,n))return Reflect.get(su,n,r);if(n==="hasOwnProperty")return P_}const a=Reflect.get(t,n,r);return(br(n)?Nm.has(n):L_(n))||(s||_t(t,"get",n),i)?a:He(a)?o&&Hl(n)?a:a.value:Fe(a)?s?$m(a):Vn(a):a}}class Im extends Lm{constructor(t=!1){super(!1,t)}set(t,n,r,s){let i=t[n];if(!this._isShallow){const l=Vr(i);if(!Ji(rLine truncated
|
|
||||||
* @vue/runtime-core v3.4.29
|
|
||||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
||||||
* @license MIT
|
|
||||||
**/function Pn(e,t,n,r){try{return r?e(...r):e()}catch(s){Eo(s,t,n)}}function Mt(e,t,n,r){if(he(e)){const s=Pn(e,t,n,r);return s&&hm(s)&&s.catch(i=>{Eo(i,t,n)}),s}if(ce(e)){const s=[];for(let i=0;i<e.length;i++)s.push(Mt(e[i],t,n,r));return s}}function Eo(e,t,n,r=!0){const s=t?t.vnode:null;if(t){let i=t.parent;const o=t.proxy,a=`https://vuejs.org/error-reference/#runtime-${n}`;for(;i;){const u=i.ec;if(u){for(let c=0;c<u.length;c++)if(u[c](e,o,a)===!1)return}i=i.parent}const l=t.appContext.config.errorHandler;if(l){Un(),Pn(l,null,10,[e,o,a]),Hn();return}}Z_(e,n,s,r)}function Z_(e,t,n,r=!0){console.error(e)}let Ds=!1,Va=!1;const rt=[];let Yt=0;const jr=[];let An=null,Qn=0;const Hm=Promise.resolve();let Ql=null;function Ms(e){const t=Ql||Hm;return e?t.then(this?e.bind(this):e):t}function ev(e){let t=Yt+1,n=rt.length;for(;t<n;){const r=t+n>>>1,s=rt[r],i=Fs(s);i<e||i===e&&s.pre?t=r+1:n=r}return t}function Zl(e){(!rt.length||!rt.includes(e,Ds&&e.allowRecurse?Yt+1:Yt))&&(e.id==null?rt.push(e):rt.splice(ev(e.id),0,e),Vm())}function Vm(){!Ds&&!Va&&(Va=!0,Ql=Hm.then(Wm))}function tv(e){const t=rt.indexOf(e);t>Yt&&rt.splice(t,1)}function nv(e){ce(e)?jr.push(...e):(!An||!An.includes(e,e.allowRecurse?Qn+1:Qn))&&jr.push(e),Vm()}function cu(e,t,n=Ds?Yt+1:0){for(;n<rt.length;n++){const r=rt[n];if(r&&r.pre){if(e&&r.id!==e.uid)continue;rt.splice(n,1),n--,r()}}}function Bm(e){if(jr.length){const t=[...new Set(jr)].sort((n,r)=>Fs(n)-Fs(r));if(jr.length=0,An){An.push(...t);return}for(An=t,Qn=0;Qn<An.length;Qn++){const n=An[Qn];n.active!==!1&&n()}An=null,Qn=0}}const Fs=e=>e.id==null?1/0:e.id,rv=(e,t)=>{const n=Fs(e)-Fs(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Wm(e){Va=!1,Ds=!0,rt.sort(rv);try{for(Yt=0;Yt<rt.length;Yt++){const t=rt[Yt];t&&t.active!==!1&&Pn(t,null,14)}}finally{Yt=0,rt.length=0,Bm(),Ds=!1,Ql=null,(rt.length||jr.length)&&Wm()}}function sv(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||ke;let s=n;const i=t.startsWith("update:"),o=i&&t.slice(7);if(o&&o in r){const c=`${o==="modelValue"?"model":o}Modifiers`,{number:f,trim:d}=r[c]||ke;d&&(s=n.map(m=>Ge(m)?m.trim():m)),f&&(s=n.map(Fa))}let a,l=r[a=Qo(t)]||r[a=Qo(Xt(t))];!l&&i&&(l=r[a=Qo(rs(t))]),l&&Mt(l,e,6,s);const u=r[a+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,Mt(u,e,6,s)}}function Ym(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const i=e.emits;let o={},a=!1;if(!he(e)){const l=u=>{const c=Ym(u,t,!0);c&&(a=!0,Ze(o,c))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!i&&!a?(Fe(e)&&r.set(e,null),null):(ce(i)?i.forEach(l=>o[l]=null):Ze(o,i),Fe(e)&&r.set(e,o),o)}function wo(e,t){return!e||!go(t)?!1:(t=t.slice(2).replace(/Once$/,""),we(e,t[0].toLowerCase()+t.slice(1))||we(e,rs(t))||we(e,t))}let ct=null,Ao=null;function Qi(e){const t=ct;return ct=e,Ao=e&&e.type.__scopeId||null,t}function iv(e){Ao=e}function ov(){Ao=null}function er(e,t=ct,n){if(!t||e._n)return e;const r=(...s)=>{r._d&&Eu(-1);const i=Qi(t);let o;try{o=e(...s)}finally{Qi(i),r._d&&Eu(1)}return o};return r._n=!0,r._c=!0,r._d=!0,r}function ea(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[i],slots:o,attrs:a,emit:l,render:u,renderCache:c,props:f,data:d,setupState:m,ctx:p,inheritAttrs:v}=e,y=Qi(e);let w,S;try{if(n.shapeFlag&4){const A=s||r,C=A;w=Wt(u.call(C,A,c,f,m,d,p)),S=a}else{const A=t;w=Wt(A.length>1?A(f,{attrs:a,slots:o,emit:l}):A(f,null)),S=t.props?a:av(a)}}catch(A){Ts.length=0,Eo(A,e,1),w=ye(dr)}let E=w;if(S&&v!==!1){const A=Object.keys(S),{shapeFlag:C}=E;A.length&&C&7&&(i&&A.some(jl)&&(S=lv(S,i)),E=Br(E,S,!1,!0))}return n.dirs&&(E=Br(E,null,!1,!0),E.dirs=E.dirs?E.dirs.concat(n.dirs):n.dirs),n.transition&&(E.transition=n.transition),w=E,Qi(y),w}const av=e=>{let t;for(const n in e)(n==="class"||n==="style"||go(n))&&((t||(t={}))[n]=e[n]);return t},lv=(e,t)=>{const n={};for(const r in e)(!jl(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function cv(e,t,n){const{props:r,children:s,component:i}=e,{props:o,children:a,patchFlag:l}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?uu(r,o,u):!!o;if(l&8){const c=t.dynamicProps;for(let f=0;f<c.length;f++){const d=c[f];if(o[d]!==r[d]&&!wo(u,d))return!0}}}else return(s||a)&&(!a||!a.$stable)?!0:r===o?!1:r?o?uu(r,o,u):!0:!!o;return!1}function uu(e,t,n){const r=Object.keys(t);if(r.length!==Object.keys(e).length)return!0;for(let s=0;s<r.length;s++){const i=r[s];if(t[i]!==e[i]&&!wo(n,i))return!0}return!1}function uv({vnode:e,parent:t},n){for(;t;){const r=t.subTree;if(r.suspense&&r.suspense.activeBranch===e&&(r.el=e.el),r===e)(e=t.vnode).el=n,t=t.parent;else break}}const fv="components";function ec(e,t){return mv(fv,e,!0,t)||e}const dv=Symbol.for("v-ndc");function mv(e,t,n=!0,r=!1){const s=ct||Je;if(s){const i=s.type;{const a=sb(i,!1);if(a&&(a===t||a===Xt(t)||a===bo(Xt(t))))return i}const o=fu(s[e]||i[e],t)||fu(s.appContext[e],t);return!o&&r?i:o}}f
Line truncated
|
|
||||||
* @vue/runtime-dom v3.4.29
|
|
||||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
||||||
* @license MIT
|
|
||||||
**/const ab="http://www.w3.org/2000/svg",lb="http://www.w3.org/1998/Math/MathML",nn=typeof document<"u"?document:null,Ou=nn&&nn.createElement("template"),cb={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?nn.createElementNS(ab,e):t==="mathml"?nn.createElementNS(lb,e):n?nn.createElement(e,{is:n}):nn.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>nn.createTextNode(e),createComment:e=>nn.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>nn.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,i){const o=n?n.previousSibling:t.lastChild;if(s&&(s===i||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===i||!(s=s.nextSibling)););else{Ou.innerHTML=r==="svg"?`<svg>${e}</svg>`:r==="mathml"?`<math>${e}</math>`:e;const a=Ou.content;if(r==="svg"||r==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ub=Symbol("_vtc");function fb(e,t,n){const r=e[ub];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Su=Symbol("_vod"),db=Symbol("_vsh"),mb=Symbol(""),hb=/(^|;)\s*display\s*:/;function pb(e,t,n){const r=e.style,s=Ge(n);let i=!1;if(n&&!s){if(t)if(Ge(t))for(const o of t.split(";")){const a=o.slice(0,o.indexOf(":")).trim();n[a]==null&&Ui(r,a,"")}else for(const o in t)n[o]==null&&Ui(r,o,"");for(const o in n)o==="display"&&(i=!0),Ui(r,o,n[o])}else if(s){if(t!==n){const o=r[mb];o&&(n+=";"+o),r.cssText=n,i=hb.test(n)}}else t&&e.removeAttribute("style");Su in e&&(e[Su]=i?r.display:"",e[db]&&(r.display="none"))}const Cu=/\s*!important$/;function Ui(e,t,n){if(ce(n))n.forEach(r=>Ui(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=gb(e,t);Cu.test(n)?e.setProperty(rs(r),n.replace(Cu,""),"important"):e[r]=n}}const Nu=["Webkit","Moz","ms"],sa={};function gb(e,t){const n=sa[t];if(n)return n;let r=Xt(t);if(r!=="filter"&&r in e)return sa[t]=r;r=bo(r);for(let s=0;s<Nu.length;s++){const i=Nu[s]+r;if(i in e)return sa[t]=i}return t}const Lu="http://www.w3.org/1999/xlink";function Iu(e,t,n,r,s,i=T_(t)){r&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(Lu,t.slice(6,t.length)):e.setAttributeNS(Lu,t,n):n==null||i&&!bm(n)?e.removeAttribute(t):e.setAttribute(t,i?"":String(n))}function _b(e,t,n,r,s,i,o){if(t==="innerHTML"||t==="textContent"){r&&o(r,s,i),e[t]=n??"";return}const a=e.tagName;if(t==="value"&&a!=="PROGRESS"&&!a.includes("-")){const u=a==="OPTION"?e.getAttribute("value")||"":e.value,c=n==null?"":String(n);(u!==c||!("_value"in e))&&(e.value=c),n==null&&e.removeAttribute(t),e._value=n;return}let l=!1;if(n===""||n==null){const u=typeof e[t];u==="boolean"?n=bm(n):n==null&&u==="string"?(n="",l=!0):u==="number"&&(n=0,l=!0)}try{e[t]=n}catch{}l&&e.removeAttribute(t)}function Cr(e,t,n,r){e.addEventListener(t,n,r)}function vb(e,t,n,r){e.removeEventListener(t,n,r)}const Pu=Symbol("_vei");function bb(e,t,n,r,s=null){const i=e[Pu]||(e[Pu]={}),o=i[t];if(r&&o)o.value=r;else{const[a,l]=yb(t);if(r){const u=i[t]=Ab(r,s);Cr(e,a,u,l)}else o&&(vb(e,a,o,l),i[t]=void 0)}}const Ru=/(?:Once|Passive|Capture)$/;function yb(e){let t;if(Ru.test(e)){t={};let r;for(;r=e.match(Ru);)e=e.slice(0,e.length-r[0].length),t[r[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):rs(e.slice(2)),t]}let ia=0;const Eb=Promise.resolve(),wb=()=>ia||(Eb.then(()=>ia=0),ia=Date.now());function Ab(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Mt(Tb(r,n.value),t,5,[r])};return n.value=e,n.attached=wb(),n}function Tb(e,t){if(ce(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const xu=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Ob=(e,t,n,r,s,i,o,a,l)=>{const u=s==="svg";t==="class"?fb(e,r,u):t==="style"?pb(e,n,r):go(t)?jl(t)||bb(e,t,n,r,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Sb(e,t,r,u))?(_b(e,t,r,i,o,a,l),(t==="value"||t==="checked"||t==="selected")&&Iu(e,t,r,u,o,t!=="value")):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Iu(e,t,r,u))};function Sb(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&xu(t)&&he(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return xu(t)&&Ge(n)?!1:t in e}const ku=e=>{const t=e.props["onUpdate:modelValue"]||!1;return ce(t)?n=>Di(t,n):t};function Cb(e){e.target.composing=!0}fun
Line truncated
|
|
||||||
* pinia v2.1.7
|
|
||||||
* (c) 2023 Eduardo San Martin Morote
|
|
||||||
* @license MIT
|
|
||||||
*/let ph;const No=e=>ph=e,gh=Symbol();function Xa(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var Ss;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Ss||(Ss={}));function kb(){const e=Vl(!0),t=e.run(()=>ge({}));let n=[],r=[];const s=ql({install(i){No(s),s._a=i,i.provide(gh,s),i.config.globalProperties.$pinia=s,r.forEach(o=>n.push(o)),r=[]},use(i){return!this._a&&!xb?r.push(i):n.push(i),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return s}const _h=()=>{};function Mu(e,t,n,r=_h){e.push(t);const s=()=>{const i=e.indexOf(t);i>-1&&(e.splice(i,1),r())};return!n&&wm()&&S_(s),s}function Tr(e,...t){e.slice().forEach(n=>{n(...t)})}const $b=e=>e();function Ja(e,t){e instanceof Map&&t instanceof Map&&t.forEach((n,r)=>e.set(r,n)),e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const r=t[n],s=e[n];Xa(s)&&Xa(r)&&e.hasOwnProperty(n)&&!He(r)&&!In(r)?e[n]=Ja(s,r):e[n]=r}return e}const Db=Symbol();function Mb(e){return!Xa(e)||!e.hasOwnProperty(Db)}const{assign:wn}=Object;function Fb(e){return!!(He(e)&&e.effect)}function jb(e,t,n,r){const{state:s,actions:i,getters:o}=t,a=n.state.value[e];let l;function u(){a||(n.state.value[e]=s?s():{});const c=X_(n.state.value[e]);return wn(c,i,Object.keys(o||{}).reduce((f,d)=>(f[d]=ql(ne(()=>{No(n);const m=n._s.get(e);return o[d].call(m,m)})),f),{}))}return l=vh(e,u,t,n,r,!0),l}function vh(e,t,n={},r,s,i){let o;const a=wn({actions:{}},n),l={deep:!0};let u,c,f=[],d=[],m;const p=r.state.value[e];!i&&!p&&(r.state.value[e]={}),ge({});let v;function y($){let P;u=c=!1,typeof $=="function"?($(r.state.value[e]),P={type:Ss.patchFunction,storeId:e,events:m}):(Ja(r.state.value[e],$),P={type:Ss.patchObject,payload:$,storeId:e,events:m});const q=v=Symbol();Ms().then(()=>{v===q&&(u=!0)}),c=!0,Tr(f,P,r.state.value[e])}const w=i?function(){const{state:P}=n,q=P?P():{};this.$patch(ie=>{wn(ie,q)})}:_h;function S(){o.stop(),f=[],d=[],r._s.delete(e)}function E($,P){return function(){No(r);const q=Array.from(arguments),ie=[],Q=[];function le(ee){ie.push(ee)}function je(ee){Q.push(ee)}Tr(d,{args:q,name:$,store:C,after:le,onError:je});let Ce;try{Ce=P.apply(this&&this.$id===e?this:C,q)}catch(ee){throw Tr(Q,ee),ee}return Ce instanceof Promise?Ce.then(ee=>(Tr(ie,ee),ee)).catch(ee=>(Tr(Q,ee),Promise.reject(ee))):(Tr(ie,Ce),Ce)}}const A={_p:r,$id:e,$onAction:Mu.bind(null,d),$patch:y,$reset:w,$subscribe($,P={}){const q=Mu(f,$,P.detached,()=>ie()),ie=o.run(()=>it(()=>r.state.value[e],Q=>{(P.flush==="sync"?c:u)&&$({storeId:e,type:Ss.direct,events:m},Q)},wn({},l,P)));return q},$dispose:S},C=Vn(A);r._s.set(e,C);const I=(r._a&&r._a.runWithContext||$b)(()=>r._e.run(()=>(o=Vl()).run(t)));for(const $ in I){const P=I[$];if(He(P)&&!Fb(P)||In(P))i||(p&&Mb(P)&&(He(P)?P.value=p[$]:Ja(P,p[$])),r.state.value[e][$]=P);else if(typeof P=="function"){const q=E($,P);I[$]=q,a.actions[$]=P}}return wn(C,I),wn(Ae(C),I),Object.defineProperty(C,"$state",{get:()=>r.state.value[e],set:$=>{y(P=>{wn(P,$)})}}),r._p.forEach($=>{wn(C,o.run(()=>$({store:C,app:r._a,pinia:r,options:a})))}),p&&i&&n.hydrate&&n.hydrate(C.$state,p),u=!0,c=!0,C}function Ub(e,t,n){let r,s;const i=typeof t=="function";r=e,s=i?n:t;function o(a,l){const u=Iv();return a=a||(u?st(gh,null):null),a&&No(a),a=ph,a._s.has(r)||(i?vh(r,t,s,a):jb(r,s,a)),a._s.get(r)}return o.$id=r,o}/*!
|
|
||||||
* shared v9.13.1
|
|
||||||
* (c) 2024 kazuya kawaguchi
|
|
||||||
* Released under the MIT License.
|
|
||||||
*/const to=typeof window<"u",Bn=(e,t=!1)=>t?Symbol.for(e):Symbol(e),Hb=(e,t,n)=>Vb({l:e,k:t,s:n}),Vb=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),Ke=e=>typeof e=="number"&&isFinite(e),Bb=e=>yh(e)==="[object Date]",xn=e=>yh(e)==="[object RegExp]",Lo=e=>fe(e)&&Object.keys(e).length===0,tt=Object.assign;let Fu;const rn=()=>Fu||(Fu=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ju(e){return e.replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}const Wb=Object.prototype.hasOwnProperty;function no(e,t){return Wb.call(e,t)}const De=Array.isArray,Re=e=>typeof e=="function",G=e=>typeof e=="string",ve=e=>typeof e=="boolean",Se=e=>e!==null&&typeof e=="object",Yb=e=>Se(e)&&Re(e.then)&&Re(e.catch),bh=Object.prototype.toString,yh=e=>bh.call(e),fe=e=>{if(!Se(e))return!1;const t=Object.getPrototypeOf(e);return t===null||t.constructor===Object},Kb=e=>e==null?"":De(e)||fe(e)&&e.toString===bh?JSON.stringify(e,null,2):String(e);function zb(e,t=""){return e.reduce((n,r,s)=>s===0?n+r:n+t+r,"")}function Io(e){let t=e;return()=>++t}function Gb(e,t){typeof console<"u"&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}const bi=e=>!Se(e)||De(e);function Hi(e,t){if(bi(e)||bi(t))throw new Error("Invalid value");const n=[{src:e,des:t}];for(;n.length;){const{src:r,des:s}=n.pop();Object.keys(r).forEach(i=>{bi(r[i])||bi(s[i])?s[i]=r[i]:n.push({src:r[i],des:s[i]})})}}/*!
|
|
||||||
* message-compiler v9.13.1
|
|
||||||
* (c) 2024 kazuya kawaguchi
|
|
||||||
* Released under the MIT License.
|
|
||||||
*/function qb(e,t,n){return{line:e,column:t,offset:n}}function ro(e,t,n){return{start:e,end:t}}const Xb=/\{([0-9a-zA-Z]+)\}/g;function Eh(e,...t){return t.length===1&&Jb(t[0])&&(t=t[0]),(!t||!t.hasOwnProperty)&&(t={}),e.replace(Xb,(n,r)=>t.hasOwnProperty(r)?t[r]:"")}const wh=Object.assign,Uu=e=>typeof e=="string",Jb=e=>e!==null&&typeof e=="object";function Ah(e,t=""){return e.reduce((n,r,s)=>s===0?n+r:n+t+r,"")}const oc={USE_MODULO_SYNTAX:1,__EXTEND_POINT__:2},Qb={[oc.USE_MODULO_SYNTAX]:"Use modulo before '{{0}}'."};function Zb(e,t,...n){const r=Eh(Qb[e],...n||[]),s={message:String(r),code:e};return t&&(s.location=t),s}const oe={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16,__EXTEND_POINT__:17},ey={[oe.EXPECTED_TOKEN]:"Expected token: '{0}'",[oe.INVALID_TOKEN_IN_PLACEHOLDER]:"Invalid token in placeholder: '{0}'",[oe.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]:"Unterminated single quote in placeholder",[oe.UNKNOWN_ESCAPE_SEQUENCE]:"Unknown escape sequence: \\{0}",[oe.INVALID_UNICODE_ESCAPE_SEQUENCE]:"Invalid unicode escape sequence: {0}",[oe.UNBALANCED_CLOSING_BRACE]:"Unbalanced closing brace",[oe.UNTERMINATED_CLOSING_BRACE]:"Unterminated closing brace",[oe.EMPTY_PLACEHOLDER]:"Empty placeholder",[oe.NOT_ALLOW_NEST_PLACEHOLDER]:"Not allowed nest placeholder",[oe.INVALID_LINKED_FORMAT]:"Invalid linked format",[oe.MUST_HAVE_MESSAGES_IN_PLURAL]:"Plural must have messages",[oe.UNEXPECTED_EMPTY_LINKED_MODIFIER]:"Unexpected empty linked modifier",[oe.UNEXPECTED_EMPTY_LINKED_KEY]:"Unexpected empty linked key",[oe.UNEXPECTED_LEXICAL_ANALYSIS]:"Unexpected lexical analysis in token: '{0}'",[oe.UNHANDLED_CODEGEN_NODE_TYPE]:"unhandled codegen node type: '{0}'",[oe.UNHANDLED_MINIFIER_NODE_TYPE]:"unhandled mimifier node type: '{0}'"};function is(e,t,n={}){const{domain:r,messages:s,args:i}=n,o=Eh((s||ey)[e]||"",...i||[]),a=new SyntaxError(String(o));return a.code=e,t&&(a.location=t),a.domain=r,a}function ty(e){throw e}const Zt=" ",ny="\r",at=`
|
|
||||||
`,ry="\u2028",sy="\u2029";function iy(e){const t=e;let n=0,r=1,s=1,i=0;const o=I=>t[I]===ny&&t[I+1]===at,a=I=>t[I]===at,l=I=>t[I]===sy,u=I=>t[I]===ry,c=I=>o(I)||a(I)||l(I)||u(I),f=()=>n,d=()=>r,m=()=>s,p=()=>i,v=I=>o(I)||l(I)||u(I)?at:t[I],y=()=>v(n),w=()=>v(n+i);function S(){return i=0,c(n)&&(r++,s=0),o(n)&&n++,n++,s++,t[n]}function E(){return o(n+i)&&i++,i++,t[n+i]}function A(){n=0,r=1,s=1,i=0}function C(I=0){i=I}function O(){const I=n+i;for(;I!==n;)S();i=0}return{index:f,line:d,column:m,peekOffset:p,charAt:v,currentChar:y,currentPeek:w,next:S,peek:E,reset:A,resetPeek:C,skipToPeek:O}}const _n=void 0,oy=".",Hu="'",ay="tokenizer";function ly(e,t={}){const n=t.location!==!1,r=iy(e),s=()=>r.index(),i=()=>qb(r.line(),r.column(),r.index()),o=i(),a=s(),l={currentType:14,offset:a,startLoc:o,endLoc:o,lastType:14,lastOffset:a,lastStartLoc:o,lastEndLoc:o,braceNest:0,inLinked:!1,text:""},u=()=>l,{onError:c}=t;function f(h,_,T,...M){const K=u();if(_.column+=T,_.offset+=T,c){const U=n?ro(K.startLoc,_):null,L=is(h,U,{domain:ay,args:M});c(L)}}function d(h,_,T){h.endLoc=i(),h.currentType=_;const M={type:_};return n&&(M.loc=ro(h.startLoc,h.endLoc)),T!=null&&(M.value=T),M}const m=h=>d(h,14);function p(h,_){return h.currentChar()===_?(h.next(),_):(f(oe.EXPECTED_TOKEN,i(),0,_),"")}function v(h){let _="";for(;h.currentPeek()===Zt||h.currentPeek()===at;)_+=h.currentPeek(),h.peek();return _}function y(h){const _=v(h);return h.skipToPeek(),_}function w(h){if(h===_n)return!1;const _=h.charCodeAt(0);return _>=97&&_<=122||_>=65&&_<=90||_===95}function S(h){if(h===_n)return!1;const _=h.charCodeAt(0);return _>=48&&_<=57}function E(h,_){const{currentType:T}=_;if(T!==2)return!1;v(h);const M=w(h.currentPeek());return h.resetPeek(),M}function A(h,_){const{currentType:T}=_;if(T!==2)return!1;v(h);const M=h.currentPeek()==="-"?h.peek():h.currentPeek(),K=S(M);return h.resetPeek(),K}function C(h,_){const{currentType:T}=_;if(T!==2)return!1;v(h);const M=h.currentPeek()===Hu;return h.resetPeek(),M}function O(h,_){const{currentType:T}=_;if(T!==8)return!1;v(h);const M=h.currentPeek()===".";return h.resetPeek(),M}function I(h,_){const{currentType:T}=_;if(T!==9)return!1;v(h);const M=w(h.currentPeek());return h.resetPeek(),M}function $(h,_){const{currentType:T}=_;if(!(T===8||T===12))return!1;v(h);const M=h.currentPeek()===":";return h.resetPeek(),M}function P(h,_){const{currentType:T}=_;if(T!==10)return!1;const M=()=>{const U=h.currentPeek();return U==="{"?w(h.peek()):U==="@"||U==="%"||U==="|"||U===":"||U==="."||U===Zt||!U?!1:U===at?(h.peek(),M()):Q(h,!1)},K=M();return h.resetPeek(),K}function q(h){v(h);const _=h.currentPeek()==="|";return h.resetPeek(),_}function ie(h){const _=v(h),T=h.currentPeek()==="%"&&h.peek()==="{";return h.resetPeek(),{isModulo:T,hasSpace:_.length>0}}function Q(h,_=!0){const T=(K=!1,U="",L=!1)=>{const R=h.currentPeek();return R==="{"?U==="%"?!1:K:R==="@"||!R?U==="%"?!0:K:R==="%"?(h.peek(),T(K,"%",!0)):R==="|"?U==="%"||L?!0:!(U===Zt||U===at):R===Zt?(h.peek(),T(!0,Zt,L)):R===at?(h.peek(),T(!0,at,L)):!0},M=T();return _&&h.resetPeek(),M}function le(h,_){const T=h.currentChar();return T===_n?_n:_(T)?(h.next(),T):null}function je(h){const _=h.charCodeAt(0);return _>=97&&_<=122||_>=65&&_<=90||_>=48&&_<=57||_===95||_===36}function Ce(h){return le(h,je)}function ee(h){const _=h.charCodeAt(0);return _>=97&&_<=122||_>=65&&_<=90||_>=48&&_<=57||_===95||_===36||_===45}function ae(h){return le(h,ee)}function de(h){const _=h.charCodeAt(0);return _>=48&&_<=57}function xe(h){return le(h,de)}function pe(h){const _=h.charCodeAt(0);return _>=48&&_<=57||_>=65&&_<=70||_>=97&&_<=102}function Ee(h){return le(h,pe)}function be(h){let _="",T="";for(;_=xe(h);)T+=_;return T}function et(h){y(h);const _=h.currentChar();return _!=="%"&&f(oe.EXPECTED_TOKEN,i(),0,_),h.next(),"%"}function Be(h){let _="";for(;;){const T=h.currentChar();if(T==="{"||T==="}"||T==="@"||T==="|"||!T)break;if(T==="%")if(Q(h))_+=T,h.next();else break;else if(T===Zt||T===at)if(Q(h))_+=T,h.next();else{if(q(h))break;_+=T,h.next()}else _+=T,h.next()}return _}function We(h){y(h);let _="",T="";for(;_=ae(h);)T+=_;return h.currentChar()===_n&&f(oe.UNTERMINATED_CLOSING_BRACE,i(),0),T}function Le(h){y(h);let _="";return h.currentChar()==="-"?(h.next(),_+=`-${be(h)}`):_+=be(h),h.currentChar()===_n&&f(oe.UNTERMINATED_CLOSING_BRACE,i(),0),_}function F(h){return h!==Hu&&h!==at}function Y(h){y(h),p(h,"'");let _="",T="";for(;_=le(h,F);)_==="\\"?T+=W(h):T+=_;const M=h.currentChar();return M===at||M===_n?(f(oe.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,i(),0),M===at&&(h.next(),p(h,"'")),T):(p(h,"'"),T)}function W(h){const _=h.currentChar();switch(_){case"\\":case"'":return h.next(),`\\${_}`;case"u":return J(h,_,4);case"U":return J(h,_,6);default:return f(oe.UNKNOWN_ESCAPE_SEQUENCE,i(),0,_),""}}function J(h,_,T){p(h,_);let M="";for(let K=0;K<T;K++){const U=Ee(h);if(!U){f(oe.INVALID_UNICODE_ESCAPE_SEQUENCE,i(),0,`\\${_}${M}${h.currentChar()}`);break}M+=U}return`\\${_}${M}`}function _e(h){return h!=="{"&&h!=
Line truncated
|
|
||||||
`,o=t.needIndent?t.needIndent:n!=="arrow",a=e.helpers||[],l=vy(e,{mode:n,filename:r,sourceMap:s,breakLineCode:i,needIndent:o});l.push(n==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),l.indent(o),a.length>0&&(l.push(`const { ${Ah(a.map(f=>`${f}: _${f}`),", ")} } = ctx`),l.newline()),l.push("return "),Yr(l,e),l.deindent(o),l.push("}"),delete e.helpers;const{code:u,map:c}=l.context();return{ast:e,code:u,map:c?c.toJSON():void 0}};function Ty(e,t={}){const n=wh({},t),r=!!n.jit,s=!!n.minify,i=n.optimize==null?!0:n.optimize,a=dy(n).parse(e);return r?(i&&py(a),s&&Nr(a),{ast:a,code:""}):(hy(a,n),Ay(a,n))}/*!
|
|
||||||
* core-base v9.13.1
|
|
||||||
* (c) 2024 kazuya kawaguchi
|
|
||||||
* Released under the MIT License.
|
|
||||||
*/function Oy(){typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(rn().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(rn().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(rn().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}const Wn=[];Wn[0]={w:[0],i:[3,0],"[":[4],o:[7]};Wn[1]={w:[1],".":[2],"[":[4],o:[7]};Wn[2]={w:[2],i:[3,0],0:[3,0]};Wn[3]={i:[3,0],0:[3,0],w:[1,1],".":[2,1],"[":[4,1],o:[7,1]};Wn[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],o:8,l:[4,0]};Wn[5]={"'":[4,0],o:8,l:[5,0]};Wn[6]={'"':[4,0],o:8,l:[6,0]};const Sy=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function Cy(e){return Sy.test(e)}function Ny(e){const t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===n&&(t===34||t===39)?e.slice(1,-1):e}function Ly(e){if(e==null)return"o";switch(e.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return e;case 95:case 36:case 45:return"i";case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"w"}return"i"}function Iy(e){const t=e.trim();return e.charAt(0)==="0"&&isNaN(parseInt(e))?!1:Cy(t)?Ny(t):"*"+t}function Py(e){const t=[];let n=-1,r=0,s=0,i,o,a,l,u,c,f;const d=[];d[0]=()=>{o===void 0?o=a:o+=a},d[1]=()=>{o!==void 0&&(t.push(o),o=void 0)},d[2]=()=>{d[0](),s++},d[3]=()=>{if(s>0)s--,r=4,d[0]();else{if(s=0,o===void 0||(o=Iy(o),o===!1))return!1;d[1]()}};function m(){const p=e[n+1];if(r===5&&p==="'"||r===6&&p==='"')return n++,a="\\"+p,d[0](),!0}for(;r!==null;)if(n++,i=e[n],!(i==="\\"&&m())){if(l=Ly(i),f=Wn[r],u=f[l]||f.l||8,u===8||(r=u[0],u[1]!==void 0&&(c=d[u[1]],c&&(a=i,c()===!1))))return;if(r===7)return t}}const Wu=new Map;function Ry(e,t){return Se(e)?e[t]:null}function xy(e,t){if(!Se(e))return null;let n=Wu.get(t);if(n||(n=Py(t),n&&Wu.set(t,n)),!n)return null;const r=n.length;let s=e,i=0;for(;i<r;){const o=s[n[i]];if(o===void 0||Re(s))return null;s=o,i++}return s}const ky=e=>e,$y=e=>"",Dy="text",My=e=>e.length===0?"":zb(e),Fy=Kb;function Yu(e,t){return e=Math.abs(e),t===2?e?e>1?1:0:1:e?Math.min(e,2):0}function jy(e){const t=Ke(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(Ke(e.named.count)||Ke(e.named.n))?Ke(e.named.count)?e.named.count:Ke(e.named.n)?e.named.n:t:t}function Uy(e,t){t.count||(t.count=e),t.n||(t.n=e)}function Hy(e={}){const t=e.locale,n=jy(e),r=Se(e.pluralRules)&&G(t)&&Re(e.pluralRules[t])?e.pluralRules[t]:Yu,s=Se(e.pluralRules)&&G(t)&&Re(e.pluralRules[t])?Yu:void 0,i=w=>w[r(n,w.length,s)],o=e.list||[],a=w=>o[w],l=e.named||{};Ke(e.pluralIndex)&&Uy(n,l);const u=w=>l[w];function c(w){const S=Re(e.messages)?e.messages(w):Se(e.messages)?e.messages[w]:!1;return S||(e.parent?e.parent.message(w):$y)}const f=w=>e.modifiers?e.modifiers[w]:ky,d=fe(e.processor)&&Re(e.processor.normalize)?e.processor.normalize:My,m=fe(e.processor)&&Re(e.processor.interpolate)?e.processor.interpolate:Fy,p=fe(e.processor)&&G(e.processor.type)?e.processor.type:Dy,y={list:a,named:u,plural:i,linked:(w,...S)=>{const[E,A]=S;let C="text",O="";S.length===1?Se(E)?(O=E.modifier||O,C=E.type||C):G(E)&&(O=E||O):S.length===2&&(G(E)&&(O=E||O),G(A)&&(C=A||C));const I=c(w)(y),$=C==="vnode"&&De(I)&&O?I[0]:I;return O?f(O)($,C):$},message:c,type:p,interpolate:m,normalize:d,values:tt({},o,l)};return y}let Us=null;function Vy(e){Us=e}function By(e,t,n){Us&&Us.emit("i18n:init",{timestamp:Date.now(),i18n:e,version:t,meta:n})}const Wy=Yy("function:translate");function Yy(e){return t=>Us&&Us.emit(e,t)}const Th=oc.__EXTEND_POINT__,Xn=Io(Th),Ky={NOT_FOUND_KEY:Th,FALLBACK_TO_TRANSLATE:Xn(),CANNOT_FORMAT_NUMBER:Xn(),FALLBACK_TO_NUMBER_FORMAT:Xn(),CANNOT_FORMAT_DATE:Xn(),FALLBACK_TO_DATE_FORMAT:Xn(),EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:Xn(),__EXTEND_POINT__:Xn()},Oh=oe.__EXTEND_POINT__,Jn=Io(Oh),$t={INVALID_ARGUMENT:Oh,INVALID_DATE_ARGUMENT:Jn(),INVALID_ISO_DATE_ARGUMENT:Jn(),NOT_SUPPORT_NON_STRING_MESSAGE:Jn(),NOT_SUPPORT_LOCALE_PROMISE_VALUE:Jn(),NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:Jn(),NOT_SUPPORT_LOCALE_TYPE:Jn(),__EXTEND_POINT__:Jn()};function Kt(e){return is(e,null,void 0)}function lc(e,t){return t.locale!=null?Ku(t.locale):Ku(e.locale)}let aa;function Ku(e){if(G(e))return e;if(Re(e)){if(e.resolvedOnce&&aa!=null)return aa;if(e.constructor.name==="Function"){const t=e();if(Yb(t))throw Kt($t.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return aa=t}else throw Kt($t.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw Kt($t.NOT_SUPPORT_LOCALE_TYPE)}function zy(e,t,n){return[...new Set([n,...De(t)?t:Se(t)?Object.keys(t):G(t)?[t]:[n]])]}function Sh(e,t,n){const r=G(n)?n:Kr,s=e;s.__localeChainCache||(s.__localeChainCache=new Map);let i=s.__localeChainCache.get(r);if(!i){i=[];let o=[n];for(;De(o);)o=zu(i,o,t);const a=De(t)||!fe(t)?t:t.default?t.default:null;o=G(a)?[a]:a,De(o)&&zu(i,o,!1),s.__localeChainCache.set(r,i)}return i}function zu(e,t,n){let r=!0;for(let s=0;s<t.length&&ve(r);s++){const i=t[s];G(i)&&(r=Gy(e,t[s],n))}return r}function Gy(e,t,n){let r;const s=t.split("-");do{const i=s.join("-");r=qy(e,i,n),s.splice(-1,1)}while(s.length&&r===!0);return r}function qy(e,t,n){let rLine truncated
|
|
||||||
* vue-i18n v9.13.1
|
|
||||||
* (c) 2024 kazuya kawaguchi
|
|
||||||
* Released under the MIT License.
|
|
||||||
*/const mE="9.13.1";function hE(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(rn().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(rn().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(rn().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(rn().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(rn().__INTLIFY_PROD_DEVTOOLS__=!1)}const Fh=Ky.__EXTEND_POINT__,en=Io(Fh);en(),en(),en(),en(),en(),en(),en(),en(),en();const jh=$t.__EXTEND_POINT__,dt=Io(jh),ze={UNEXPECTED_RETURN_TYPE:jh,INVALID_ARGUMENT:dt(),MUST_BE_CALL_SETUP_TOP:dt(),NOT_INSTALLED:dt(),NOT_AVAILABLE_IN_LEGACY_MODE:dt(),REQUIRED_VALUE:dt(),INVALID_VALUE:dt(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:dt(),NOT_INSTALLED_WITH_PROVIDE:dt(),UNEXPECTED_ERROR:dt(),NOT_COMPATIBLE_LEGACY_VUE_I18N:dt(),BRIDGE_SUPPORT_VUE_2_ONLY:dt(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:dt(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:dt(),__EXTEND_POINT__:dt()};function Qe(e,...t){return is(e,null,void 0)}const nl=Bn("__translateVNode"),rl=Bn("__datetimeParts"),sl=Bn("__numberParts"),Uh=Bn("__setPluralRules"),Hh=Bn("__injectWithOption"),il=Bn("__dispose");function Hs(e){if(!Se(e))return e;for(const t in e)if(no(e,t))if(!t.includes("."))Se(e[t])&&Hs(e[t]);else{const n=t.split("."),r=n.length-1;let s=e,i=!1;for(let o=0;o<r;o++){if(n[o]in s||(s[n[o]]={}),!Se(s[n[o]])){i=!0;break}s=s[n[o]]}i||(s[n[r]]=e[t],delete e[t]),Se(s[n[r]])&&Hs(s[n[r]])}return e}function Ro(e,t){const{messages:n,__i18n:r,messageResolver:s,flatJson:i}=t,o=fe(n)?n:De(r)?{}:{[e]:{}};if(De(r)&&r.forEach(a=>{if("locale"in a&&"resource"in a){const{locale:l,resource:u}=a;l?(o[l]=o[l]||{},Hi(u,o[l])):Hi(u,o)}else G(a)&&Hi(JSON.parse(a),o)}),s==null&&i)for(const a in o)no(o,a)&&Hs(o[a]);return o}function Vh(e){return e.type}function Bh(e,t,n){let r=Se(t.messages)?t.messages:{};"__i18nGlobal"in n&&(r=Ro(e.locale.value,{messages:r,__i18n:n.__i18nGlobal}));const s=Object.keys(r);s.length&&s.forEach(i=>{e.mergeLocaleMessage(i,r[i])});{if(Se(t.datetimeFormats)){const i=Object.keys(t.datetimeFormats);i.length&&i.forEach(o=>{e.mergeDateTimeFormat(o,t.datetimeFormats[o])})}if(Se(t.numberFormats)){const i=Object.keys(t.numberFormats);i.length&&i.forEach(o=>{e.mergeNumberFormat(o,t.numberFormats[o])})}}}function af(e){return ye(Js,null,e,0)}const lf="__INTLIFY_META__",cf=()=>[],pE=()=>!1;let uf=0;function ff(e){return(t,n,r,s)=>e(n,r,Wr()||void 0,s)}const gE=()=>{const e=Wr();let t=null;return e&&(t=Vh(e)[lf])?{[lf]:t}:null};function uc(e={},t){const{__root:n,__injectWithOption:r}=e,s=n===void 0,i=e.flatJson,o=to?ge:Jl,a=!!e.translateExistCompatible;let l=ve(e.inheritLocale)?e.inheritLocale:!0;const u=o(n&&l?n.locale.value:G(e.locale)?e.locale:Kr),c=o(n&&l?n.fallbackLocale.value:G(e.fallbackLocale)||De(e.fallbackLocale)||fe(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:u.value),f=o(Ro(u.value,e)),d=o(fe(e.datetimeFormats)?e.datetimeFormats:{[u.value]:{}}),m=o(fe(e.numberFormats)?e.numberFormats:{[u.value]:{}});let p=n?n.missingWarn:ve(e.missingWarn)||xn(e.missingWarn)?e.missingWarn:!0,v=n?n.fallbackWarn:ve(e.fallbackWarn)||xn(e.fallbackWarn)?e.fallbackWarn:!0,y=n?n.fallbackRoot:ve(e.fallbackRoot)?e.fallbackRoot:!0,w=!!e.fallbackFormat,S=Re(e.missing)?e.missing:null,E=Re(e.missing)?ff(e.missing):null,A=Re(e.postTranslation)?e.postTranslation:null,C=n?n.warnHtmlMessage:ve(e.warnHtmlMessage)?e.warnHtmlMessage:!0,O=!!e.escapeParameter;const I=n?n.modifiers:fe(e.modifiers)?e.modifiers:{};let $=e.pluralRules||n&&n.pluralRules,P;P=(()=>{s&&Ju(null);const L={version:mE,locale:u.value,fallbackLocale:c.value,messages:f.value,modifiers:I,pluralRules:$,missing:E===null?void 0:E,missingWarn:p,fallbackWarn:v,fallbackFormat:w,unresolving:!0,postTranslation:A===null?void 0:A,warnHtmlMessage:C,escapeParameter:O,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};L.datetimeFormats=d.value,L.numberFormats=m.value,L.__datetimeFormatters=fe(P)?P.__datetimeFormatters:void 0,L.__numberFormatters=fe(P)?P.__numberFormatters:void 0;const R=rE(L);return s&&Ju(R),R})(),hs(P,u.value,c.value);function ie(){return[u.value,c.value,f.value,d.value,m.value]}const Q=ne({get:()=>u.value,set:L=>{u.value=L,P.locale=u.value}}),le=ne({get:()=>c.value,set:L=>{c.value=L,P.fallbackLocale=c.value,hs(P,u.value,L)}}),je=ne(()=>f.value),Ce=ne(()=>d.value),ee=ne(()=>m.value);function ae(){return Re(A)?A:null}function de(L){A=L,P.postTranslation=L}function xe(){return S}function pe(L){L!==null&&(E=ff(L)),S=L,P.missing=E}const Ee=(L,R,te,se,Pe,nt)=>{ie();let vt;try{__INTLIFY_PROD_DEVTOOLS__,s||(P.fallbackContext=n?nE():void 0),vt=L(P)}finally{__INTLIFY_PROD_DEVTOOLS__,s||(P.fallbackContext=void 0)}if(te!=="translate exists"&&Ke(vt)&&vt===Po||te==="translate exists"&&!vt){const[di,Ar]=R();return n&&y?se(n):Pe(di)}else{if(nt(vt))return vt;throw Qe(ze.UNEXPECTED_RETURN_TYPE)}};function be(...L){return Ee(RLine truncated
|
|
||||||
* vue-router v4.3.3
|
|
||||||
* (c) 2024 Eduardo San Martin Morote
|
|
||||||
* @license MIT
|
|
||||||
*/const Lr=typeof document<"u";function jE(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const Ne=Object.assign;function ca(e,t){const n={};for(const r in t){const s=t[r];n[r]=jt(s)?s.map(e):e(s)}return n}const Cs=()=>{},jt=Array.isArray,Kh=/#/g,UE=/&/g,HE=/\//g,VE=/=/g,BE=/\?/g,zh=/\+/g,WE=/%5B/g,YE=/%5D/g,Gh=/%5E/g,KE=/%60/g,qh=/%7B/g,zE=/%7C/g,Xh=/%7D/g,GE=/%20/g;function dc(e){return encodeURI(""+e).replace(zE,"|").replace(WE,"[").replace(YE,"]")}function qE(e){return dc(e).replace(qh,"{").replace(Xh,"}").replace(Gh,"^")}function al(e){return dc(e).replace(zh,"%2B").replace(GE,"+").replace(Kh,"%23").replace(UE,"%26").replace(KE,"`").replace(qh,"{").replace(Xh,"}").replace(Gh,"^")}function XE(e){return al(e).replace(VE,"%3D")}function JE(e){return dc(e).replace(Kh,"%23").replace(BE,"%3F")}function QE(e){return e==null?"":JE(e).replace(HE,"%2F")}function Vs(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const ZE=/\/$/,e1=e=>e.replace(ZE,"");function ua(e,t,n="/"){let r,s={},i="",o="";const a=t.indexOf("#");let l=t.indexOf("?");return a<l&&a>=0&&(l=-1),l>-1&&(r=t.slice(0,l),i=t.slice(l+1,a>-1?a:t.length),s=e(i)),a>-1&&(r=r||t.slice(0,a),o=t.slice(a,t.length)),r=s1(r??t,n),{fullPath:r+(i&&"?")+i+o,path:r,query:s,hash:Vs(o)}}function t1(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function bf(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function n1(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&Gr(t.matched[r],n.matched[s])&&Jh(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Gr(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Jh(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!r1(e[n],t[n]))return!1;return!0}function r1(e,t){return jt(e)?yf(e,t):jt(t)?yf(t,e):e===t}function yf(e,t){return jt(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function s1(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let i=n.length-1,o,a;for(o=0;o<r.length;o++)if(a=r[o],a!==".")if(a==="..")i>1&&i--;else break;return n.slice(0,i).join("/")+"/"+r.slice(o).join("/")}var Bs;(function(e){e.pop="pop",e.push="push"})(Bs||(Bs={}));var Ns;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Ns||(Ns={}));function i1(e){if(!e)if(Lr){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),e1(e)}const o1=/^[^#]+#/;function a1(e,t){return e.replace(o1,"#")+t}function l1(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const xo=()=>({left:window.scrollX,top:window.scrollY});function c1(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=l1(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Ef(e,t){return(history.state?history.state.position-t:-1)+e}const ll=new Map;function u1(e,t){ll.set(e,t)}function f1(e){const t=ll.get(e);return ll.delete(e),t}let d1=()=>location.protocol+"//"+location.host;function Qh(e,t){const{pathname:n,search:r,hash:s}=t,i=e.indexOf("#");if(i>-1){let a=s.includes(e.slice(i))?e.slice(i).length:1,l=s.slice(a);return l[0]!=="/"&&(l="/"+l),bf(l,"")}return bf(n,e)+r+s}function m1(e,t,n,r){let s=[],i=[],o=null;const a=({state:d})=>{const m=Qh(e,location),p=n.value,v=t.value;let y=0;if(d){if(n.value=m,t.value=d,o&&o===p){o=null;return}y=v?d.position-v.position:0}else r(m);s.forEach(w=>{w(n.value,p,{delta:y,type:Bs.pop,direction:y?y>0?Ns.forward:Ns.back:Ns.unknown})})};function l(){o=n.value}function u(d){s.push(d);const m=()=>{const p=s.indexOf(d);p>-1&&s.splice(p,1)};return i.push(m),m}function c(){const{history:d}=window;d.state&&d.replaceState(Ne({},d.state,{scroll:xo()}),"")}function f(){for(const d of i)d();i=[],window.removeEventListener("popstate",a),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",a),window.addEventListener("beforeunload",c,{passive:!0}),{pauseListeners:l,listen:u,destroy:f}}function wf(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?xo():null}}function h1(e){const{history:t,location:n}=window,r={value:Qh(e,n)},s={value:t.state};s.value||i(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(l,u,c){const f=e.indexOf("#"),d=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+l:d1()+e+l;try{t[c?"replaceState":"pushState"](u,"",d),s.value=u}catch(m){console.error(m),n[c?"replace":"assignLine truncated
|
|
||||||
* Bootstrap v5.3.3 (https://getbootstrap.com/)
|
|
||||||
* Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
||||||
*/const bn=new Map,ma={set(e,t,n){bn.has(e)||bn.set(e,new Map);const r=bn.get(e);if(!r.has(t)&&r.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(r.keys())[0]}.`);return}r.set(t,n)},get(e,t){return bn.has(e)&&bn.get(e).get(t)||null},remove(e,t){if(!bn.has(e))return;const n=bn.get(e);n.delete(t),n.size===0&&bn.delete(e)}},sw=1e6,iw=1e3,ml="transitionend",Lp=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(t,n)=>`#${CSS.escape(n)}`)),e),ow=e=>e==null?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),aw=e=>{do e+=Math.floor(Math.random()*sw);while(document.getElementById(e));return e},lw=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const r=Number.parseFloat(t),s=Number.parseFloat(n);return!r&&!s?0:(t=t.split(",")[0],n=n.split(",")[0],(Number.parseFloat(t)+Number.parseFloat(n))*iw)},Ip=e=>{e.dispatchEvent(new Event(ml))},an=e=>!e||typeof e!="object"?!1:(typeof e.jquery<"u"&&(e=e[0]),typeof e.nodeType<"u"),kn=e=>an(e)?e.jquery?e[0]:e:typeof e=="string"&&e.length>0?document.querySelector(Lp(e)):null,as=e=>{if(!an(e)||e.getClientRects().length===0)return!1;const t=getComputedStyle(e).getPropertyValue("visibility")==="visible",n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const r=e.closest("summary");if(r&&r.parentNode!==n||r===null)return!1}return t},$n=e=>!e||e.nodeType!==Node.ELEMENT_NODE||e.classList.contains("disabled")?!0:typeof e.disabled<"u"?e.disabled:e.hasAttribute("disabled")&&e.getAttribute("disabled")!=="false",Pp=e=>{if(!document.documentElement.attachShadow)return null;if(typeof e.getRootNode=="function"){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?Pp(e.parentNode):null},io=()=>{},ti=e=>{e.offsetHeight},Rp=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,ha=[],cw=e=>{document.readyState==="loading"?(ha.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of ha)t()}),ha.push(e)):e()},It=()=>document.documentElement.dir==="rtl",Rt=e=>{cw(()=>{const t=Rp();if(t){const n=e.NAME,r=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=()=>(t.fn[n]=r,e.jQueryInterface)}})},pt=(e,t=[],n=e)=>typeof e=="function"?e(...t):n,xp=(e,t,n=!0)=>{if(!n){pt(e);return}const s=lw(t)+5;let i=!1;const o=({target:a})=>{a===t&&(i=!0,t.removeEventListener(ml,o),pt(e))};t.addEventListener(ml,o),setTimeout(()=>{i||Ip(t)},s)},Nc=(e,t,n,r)=>{const s=e.length;let i=e.indexOf(t);return i===-1?!n&&r?e[s-1]:e[0]:(i+=n?1:-1,r&&(i=(i+s)%s),e[Math.max(0,Math.min(i,s-1))])},uw=/[^.]*(?=\..*)\.|.*/,fw=/\..*/,dw=/::\d+$/,pa={};let Yf=1;const kp={mouseenter:"mouseover",mouseleave:"mouseout"},mw=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function $p(e,t){return t&&`${t}::${Yf++}`||e.uidEvent||Yf++}function Dp(e){const t=$p(e);return e.uidEvent=t,pa[t]=pa[t]||{},pa[t]}function hw(e,t){return function n(r){return Lc(r,{delegateTarget:e}),n.oneOff&&H.off(e,r.type,t),t.apply(e,[r])}}function pw(e,t,n){return function r(s){const i=e.querySelectorAll(t);for(let{target:o}=s;o&&o!==this;o=o.parentNode)for(const a of i)if(a===o)return Lc(s,{delegateTarget:o}),r.oneOff&&H.off(e,s.type,t,n),n.apply(o,[s])}}function Mp(e,t,n=null){return Object.values(e).find(r=>r.callable===t&&r.delegationSelector===n)}function Fp(e,t,n){const r=typeof t=="string",s=r?n:t||n;let i=jp(e);return mw.has(i)||(i=e),[r,s,i]}function Kf(e,t,n,r,s){if(typeof t!="string"||!e)return;let[i,o,a]=Fp(t,n,r);t in kp&&(o=(p=>function(v){if(!v.relatedTarget||v.relatedTarget!==v.delegateTarget&&!v.delegateTarget.contains(v.relatedTarget))return p.call(this,v)})(o));const l=Dp(e),u=l[a]||(l[a]={}),c=Mp(u,o,i?n:null);if(c){c.oneOff=c.oneOff&&s;return}const f=$p(o,t.replace(uw,"")),d=i?pw(e,n,o):hw(e,o);d.delegationSelector=i?n:null,d.callable=o,d.oneOff=s,d.uidEvent=f,u[f]=d,e.addEventListener(a,d,i)}function hl(e,t,n,r,s){const i=Mp(t[n],r,s);i&&(e.removeEventListener(n,i,!!s),delete t[n][i.uidEvent])}function gw(e,t,n,r){const s=t[n]||{};for(const[i,o]of Object.entries(s))i.includes(r)&&hl(e,t,n,o.callable,o.delegationSelector)}function jp(e){return e=e.replace(fw,""),kp[e]||e}const H={on(e,t,n,r){Kf(e,t,n,r,!1)},one(e,t,n,r){Kf(e,t,n,r,!0)},off(e,t,n,r){if(typeof t!="string"||!e)return;const[s,i,o]=Fp(t,n,r),a=o!==t,l=Dp(e),u=l[o]||{},c=t.startsWith(".");if(typeof i<"u"){if(!ObLine truncated
|
|
||||||
`).forEach(function(o){s=o.indexOf(":"),n=o.substring(0,s).trim().toLowerCase(),r=o.substring(s+1).trim(),!(!n||t[n]&&kC[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},Td=Symbol("internals");function vs(e){return e&&String(e).trim().toLowerCase()}function Ki(e){return e===!1||e==null?e:x.isArray(e)?e.map(Ki):String(e)}function DC(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const MC=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function La(e,t,n,r,s){if(x.isFunction(r))return r.call(this,t,n);if(s&&(t=n),!!x.isString(t)){if(x.isString(r))return t.indexOf(r)!==-1;if(x.isRegExp(r))return r.test(t)}}function FC(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function jC(e,t){const n=x.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(s,i,o){return this[r].call(this,t,s,i,o)},configurable:!0})})}class gt{constructor(t){t&&this.set(t)}set(t,n,r){const s=this;function i(a,l,u){const c=vs(l);if(!c)throw new Error("header name must be a non-empty string");const f=x.findKey(s,c);(!f||s[f]===void 0||u===!0||u===void 0&&s[f]!==!1)&&(s[f||l]=Ki(a))}const o=(a,l)=>x.forEach(a,(u,c)=>i(u,c,l));if(x.isPlainObject(t)||t instanceof this.constructor)o(t,n);else if(x.isString(t)&&(t=t.trim())&&!MC(t))o($C(t),n);else if(x.isHeaders(t))for(const[a,l]of t.entries())i(l,a,r);else t!=null&&i(n,t,r);return this}get(t,n){if(t=vs(t),t){const r=x.findKey(this,t);if(r){const s=this[r];if(!n)return s;if(n===!0)return DC(s);if(x.isFunction(n))return n.call(this,s,r);if(x.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=vs(t),t){const r=x.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||La(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let s=!1;function i(o){if(o=vs(o),o){const a=x.findKey(r,o);a&&(!n||La(r,r[a],a,n))&&(delete r[a],s=!0)}}return x.isArray(t)?t.forEach(i):i(t),s}clear(t){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const i=n[r];(!t||La(this,this[i],i,t,!0))&&(delete this[i],s=!0)}return s}normalize(t){const n=this,r={};return x.forEach(this,(s,i)=>{const o=x.findKey(r,i);if(o){n[o]=Ki(s),delete n[i];return}const a=t?FC(i):String(i).trim();a!==i&&delete n[i],n[a]=Ki(s),r[a]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return x.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=t&&x.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(`
|
|
||||||
`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(s=>r.set(s)),r}static accessor(t){const r=(this[Td]=this[Td]={accessors:{}}).accessors,s=this.prototype;function i(o){const a=vs(o);r[a]||(jC(s,o),r[a]=!0)}return x.isArray(t)?t.forEach(i):i(t),this}}gt.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);x.reduceDescriptors(gt.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});x.freezeMethods(gt);function Ia(e,t){const n=this||oi,r=t||n,s=gt.from(r.headers);let i=r.data;return x.forEach(e,function(a){i=a.call(n,i,s.normalize(),t?t.status:void 0)}),s.normalize(),i}function yg(e){return!!(e&&e.__CANCEL__)}function fs(e,t,n){me.call(this,e??"canceled",me.ERR_CANCELED,t,n),this.name="CanceledError"}x.inherits(fs,me,{__CANCEL__:!0});function Eg(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new me("Request failed with status code "+n.status,[me.ERR_BAD_REQUEST,me.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function UC(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function HC(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,i=0,o;return t=t!==void 0?t:1e3,function(l){const u=Date.now(),c=r[i];o||(o=u),n[s]=l,r[s]=u;let f=i,d=0;for(;f!==s;)d+=n[f++],f=f%e;if(s=(s+1)%e,s===i&&(i=(i+1)%e),u-o<t)return;const m=c&&u-c;return m?Math.round(d*1e3/m):void 0}}function VC(e,t){let n=0,r=1e3/t,s,i;const o=(u,c=Date.now())=>{n=c,s=null,i&&(clearTimeout(i),i=null),e.apply(null,u)};return[(...u)=>{const c=Date.now(),f=c-n;f>=r?o(u,c):(s=u,i||(i=setTimeout(()=>{i=null,o(s)},r-f)))},()=>s&&o(s)]}const lo=(e,t,n=3)=>{let r=0;const s=HC(50,250);return VC(i=>{const o=i.loaded,a=i.lengthComputable?i.total:void 0,l=o-r,u=s(l),c=o<=a;r=o;const f={loaded:o,total:a,progress:a?o/a:void 0,bytes:l,rate:u||void 0,estimated:u&&a&&c?(a-o)/u:void 0,event:i,lengthComputable:a!=null,[t?"download":"upload"]:!0};e(f)},n)},Od=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},Sd=e=>(...t)=>x.asap(()=>e(...t)),BC=Ft.hasStandardBrowserEnv?function(){const t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");let r;function s(i){let o=i;return t&&(n.setAttribute("href",o),o=n.href),n.setAttribute("href",o),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:n.pathname.charAt(0)==="/"?n.pathname:"/"+n.pathname}}return r=s(window.location.href),function(o){const a=x.isString(o)?s(o):o;return a.protocol===r.protocol&&a.host===r.host}}():function(){return function(){return!0}}(),WC=Ft.hasStandardBrowserEnv?{write(e,t,n,r,s,i){const o=[e+"="+encodeURIComponent(t)];x.isNumber(n)&&o.push("expires="+new Date(n).toGMTString()),x.isString(r)&&o.push("path="+r),x.isString(s)&&o.push("domain="+s),i===!0&&o.push("secure"),document.cookie=o.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function YC(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function KC(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function wg(e,t){return e&&!YC(t)?KC(e,t):t}const Cd=e=>e instanceof gt?{...e}:e;function gr(e,t){t=t||{};const n={};function r(u,c,f){return x.isPlainObject(u)&&x.isPlainObject(c)?x.merge.call({caseless:f},u,c):x.isPlainObject(c)?x.merge({},c):x.isArray(c)?c.slice():c}function s(u,c,f){if(x.isUndefined(c)){if(!x.isUndefined(u))return r(void 0,u,f)}else return r(u,c,f)}function i(u,c){if(!x.isUndefined(c))return r(void 0,c)}function o(u,c){if(x.isUndefined(c)){if(!x.isUndefined(u))return r(void 0,u)}else return r(void 0,c)}function a(u,c,f){if(f in t)return r(u,c);if(f in e)return r(void 0,u)}const l={url:i,method:i,data:i,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:a,headers:(u,c)=>s(Cd(u),Cd(c),!0)};return x.forEach(Object.keys(Object.assign({},e,t)),function(c){const f=l[c]||s,d=f(e[c],t[c],c);x.isUndefined(d)&&f!==a||(n[c]=d)}),n}const Ag=e=>{const t=gr({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:i,headers:o,auth:a}=t;t.headers=o=gt.from(o),t.url=_g(wg(t.baseURL,t.url),e.params,e.paramsSerializer),a&&o.set("Authorization","Basic "+btoa((a.username||"")+":"+(a.password?unescape(encodeURIComponent(a.password)):"")));let l;if(x.isFormD
Line truncated
|
|
||||||
`+i.map(Id).join(`
|
|
||||||
`):" "+Id(i[0]):"as no adapter specified";throw new me("There is no suitable adapter to dispatch the request "+o,"ERR_NOT_SUPPORT")}return r},adapters:El};function Pa(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new fs(null,e)}function Pd(e){return Pa(e),e.headers=gt.from(e.headers),e.data=Ia.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Sg.getAdapter(e.adapter||oi.adapter)(e).then(function(r){return Pa(e),r.data=Ia.call(e,e.transformResponse,r),r.headers=gt.from(r.headers),r},function(r){return yg(r)||(Pa(e),r&&r.response&&(r.response.data=Ia.call(e,e.transformResponse,r.response),r.response.headers=gt.from(r.response.headers))),Promise.reject(r)})}const Cg="1.7.3",Mc={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{Mc[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const Rd={};Mc.transitional=function(t,n,r){function s(i,o){return"[Axios v"+Cg+"] Transitional option '"+i+"'"+o+(r?". "+r:"")}return(i,o,a)=>{if(t===!1)throw new me(s(o," has been removed"+(n?" in "+n:"")),me.ERR_DEPRECATED);return n&&!Rd[o]&&(Rd[o]=!0,console.warn(s(o," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(i,o,a):!0}};function rN(e,t,n){if(typeof e!="object")throw new me("options must be an object",me.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let s=r.length;for(;s-- >0;){const i=r[s],o=t[i];if(o){const a=e[i],l=a===void 0||o(a,i,e);if(l!==!0)throw new me("option "+i+" must be "+l,me.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new me("Unknown option "+i,me.ERR_BAD_OPTION)}}const wl={assertOptions:rN,validators:Mc},yn=wl.validators;class fr{constructor(t){this.defaults=t,this.interceptors={request:new Ad,response:new Ad}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let s;Error.captureStackTrace?Error.captureStackTrace(s={}):s=new Error;const i=s.stack?s.stack.replace(/^.+\n/,""):"";try{r.stack?i&&!String(r.stack).endsWith(i.replace(/^.+\n.+\n/,""))&&(r.stack+=`
|
|
||||||
`+i):r.stack=i}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=gr(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:i}=n;r!==void 0&&wl.assertOptions(r,{silentJSONParsing:yn.transitional(yn.boolean),forcedJSONParsing:yn.transitional(yn.boolean),clarifyTimeoutError:yn.transitional(yn.boolean)},!1),s!=null&&(x.isFunction(s)?n.paramsSerializer={serialize:s}:wl.assertOptions(s,{encode:yn.function,serialize:yn.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let o=i&&x.merge(i.common,i[n.method]);i&&x.forEach(["delete","get","head","post","put","patch","common"],p=>{delete i[p]}),n.headers=gt.concat(o,i);const a=[];let l=!0;this.interceptors.request.forEach(function(v){typeof v.runWhen=="function"&&v.runWhen(n)===!1||(l=l&&v.synchronous,a.unshift(v.fulfilled,v.rejected))});const u=[];this.interceptors.response.forEach(function(v){u.push(v.fulfilled,v.rejected)});let c,f=0,d;if(!l){const p=[Pd.bind(this),void 0];for(p.unshift.apply(p,a),p.push.apply(p,u),d=p.length,c=Promise.resolve(n);f<d;)c=c.then(p[f++],p[f++]);return c}d=a.length;let m=n;for(f=0;f<d;){const p=a[f++],v=a[f++];try{m=p(m)}catch(y){v.call(this,y);break}}try{c=Pd.call(this,m)}catch(p){return Promise.reject(p)}for(f=0,d=u.length;f<d;)c=c.then(u[f++],u[f++]);return c}getUri(t){t=gr(this.defaults,t);const n=wg(t.baseURL,t.url);return _g(n,t.params,t.paramsSerializer)}}x.forEach(["delete","get","head","options"],function(t){fr.prototype[t]=function(n,r){return this.request(gr(r||{},{method:t,url:n,data:(r||{}).data}))}});x.forEach(["post","put","patch"],function(t){function n(r){return function(i,o,a){return this.request(gr(a||{},{method:t,headers:r?{"Content-Type":"multipart/form-data"}:{},url:i,data:o}))}}fr.prototype[t]=n(),fr.prototype[t+"Form"]=n(!0)});class Fc{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(i){n=i});const r=this;this.promise.then(s=>{if(!r._listeners)return;let i=r._listeners.length;for(;i-- >0;)r._listeners[i](s);r._listeners=null}),this.promise.then=s=>{let i;const o=new Promise(a=>{r.subscribe(a),i=a}).then(s);return o.cancel=function(){r.unsubscribe(i)},o},t(function(i,o,a){r.reason||(r.reason=new fs(i,o,a),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}static source(){let t;return{token:new Fc(function(s){t=s}),cancel:t}}}function sN(e){return function(n){return e.apply(null,n)}}function iN(e){return x.isObject(e)&&e.isAxiosError===!0}const Al={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Al).forEach(([e,t])=>{Al[t]=e});function Ng(e){const t=new fr(e),n=ig(fr.prototype.request,t);return x.extend(n,fr.prototype,t,{allOwnKeys:!0}),x.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return Ng(gr(e,s))},n}const Ue=Ng(oi);Ue.Axios=fr;Ue.CanceledError=fs;Ue.CancelToken=Fc;Ue.isCancel=yg;Ue.VERSION=Cg;Ue.toFormData=Ko;Ue.AxiosError=me;Ue.Cancel=Ue.CanceledError;Ue.all=function(t){return Promise.all(t)};Ue.spread=sN;Ue.isAxiosError=iN;Ue.mergeConfig=gr;Ue.AxiosHeaders=gt;Ue.formToJSON=e=>bg(x.isHTMLForm(e)?new FormData(e):e);Ue.getAdapter=Sg.getAdapter;Ue.HttpStatusCode=Al;Ue.default=Ue;class oN{getTest(t,n){return new Promise((r,s)=>{Ue.get(`${Rs.API_BASE_URL}/user/test/${t}`,{params:{param1:n},withCredentials:!0}).then(i=>{r(i)}).catch(i=>{s(i)})})}}const aN=new oN,ai=e=>(iv("data-v-6c838f03"),e=e(),ov(),e),lN={class:"row"},cN={class:"col"},uN={class:"w-100 d-flex justify-content-center my-5"},fN={class:"container-fluid px-0 d-flex justify-content-center align-items-center flex-column"},dN
Line truncated
|
|
||||||
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function II(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
||||||
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var Vd=function(){},Hc={},jg={},Ug=null,Hg={mark:Vd,measure:Vd};try{typeof window<"u"&&(Hc=window),typeof document<"u"&&(jg=document),typeof MutationObserver<"u"&&(Ug=MutationObserver),typeof performance<"u"&&(Hg=performance)}catch{}var PI=Hc.navigator||{},Bd=PI.userAgent,Wd=Bd===void 0?"":Bd,Mn=Hc,Me=jg,Yd=Ug,Ci=Hg;Mn.document;var pn=!!Me.documentElement&&!!Me.head&&typeof Me.addEventListener=="function"&&typeof Me.createElement=="function",Vg=~Wd.indexOf("MSIE")||~Wd.indexOf("Trident/"),Ni,Li,Ii,Pi,Ri,un="___FONT_AWESOME___",Cl=16,Bg="fa",Wg="svg-inline--fa",_r="data-fa-i2svg",Nl="data-fa-pseudo-element",RI="data-fa-pseudo-element-pending",Vc="data-prefix",Bc="data-icon",Kd="fontawesome-i2svg",xI="async",kI=["HTML","HEAD","STYLE","SCRIPT"],Yg=function(){try{return!0}catch{return!1}}(),$e="classic",Ve="sharp",Wc=[$e,Ve];function ci(e){return new Proxy(e,{get:function(n,r){return r in n?n[r]:n[$e]}})}var Ks=ci((Ni={},qe(Ni,$e,{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands",fak:"kit",fakd:"kit","fa-kit":"kit","fa-kit-duotone":"kit"}),qe(Ni,Ve,{fa:"solid",fass:"solid","fa-solid":"solid",fasr:"regular","fa-regular":"regular",fasl:"light","fa-light":"light",fast:"thin","fa-thin":"thin"}),Ni)),zs=ci((Li={},qe(Li,$e,{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab",kit:"fak"}),qe(Li,Ve,{solid:"fass",regular:"fasr",light:"fasl",thin:"fast"}),Li)),Gs=ci((Ii={},qe(Ii,$e,{fab:"fa-brands",fad:"fa-duotone",fak:"fa-kit",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"}),qe(Ii,Ve,{fass:"fa-solid",fasr:"fa-regular",fasl:"fa-light",fast:"fa-thin"}),Ii)),$I=ci((Pi={},qe(Pi,$e,{"fa-brands":"fab","fa-duotone":"fad","fa-kit":"fak","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"}),qe(Pi,Ve,{"fa-solid":"fass","fa-regular":"fasr","fa-light":"fasl","fa-thin":"fast"}),Pi)),DI=/fa(s|r|l|t|d|b|k|ss|sr|sl|st)?[\-\ ]/,Kg="fa-layers-text",MI=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i,FI=ci((Ri={},qe(Ri,$e,{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"}),qe(Ri,Ve,{900:"fass",400:"fasr",300:"fasl",100:"fast"}),Ri)),zg=[1,2,3,4,5,6,7,8,9,10],jI=zg.concat([11,12,13,14,15,16,17,18,19,20]),UI=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],ir={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},qs=new Set;Object.keys(zs[$e]).map(qs.add.bind(qs));Object.keys(zs[Ve]).map(qs.add.bind(qs));var HI=[].concat(Wc,li(qs),["2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",ir.GROUP,ir.SWAP_OPACITY,ir.PRIMARY,ir.SECONDARY]).concat(zg.map(function(e){return"".concat(e,"x")})).concat(jI.map(function(e){return"w-".concat(e)})),xs=Mn.FontAwesomeConfig||{};function VI(e){var t=Me.querySelector("script["+e+"]");if(t)return t.getAttribute(e)}function BI(e){return e===""?!0:e==="false"?!1:e==="true"?!0:e}if(Me&&typeof Me.querySelector=="function"){var WI=[["data-family-prefix","familyPrefix"],["data-css-prefix","cssPrefix"],["data-family-default","familyDefault"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]];WI.forEach(function(e){var t=Uc(e,2),n=t[0],r=t[1],s=BI(VI(n));s!=null&&(xs[r]=s)})}var Gg={styleDefault:"solid",familyDefault:"classic",cssPrefix:Bg,replacementClass:Wg,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0};xs.familyPrefix&&(xs.cssPrefix=xs.familyPrefix);var ns=X(X({},Gg),xs);ns.autoReplaceSvg||(ns.observeMutations=!1);var Z={};Object.keys(Gg).forEach(function(e){Object.defineProperty(Z,e,{enumerable:!0,set:function(n){ns[e]=n,ks.forEach(function(r){return r(Z)})},get:function(){return ns[e]}})});Object.defineProperty(Z,"familyPrefix",{enumerable:!0,set:function(t){ns.cssPrefix=t,ks.forEach(function(n){return n(Z)})},get:function(){return ns.cssPrefix}});Mn.FontAwesomeConfig=Z;var ks=[];function YI(e){return ks.push(e),function(){ks.splice(ks.indexOf(e),1)}}var En=Cl,zt={size:16,x:0
Line truncated
|
|
||||||
--fa-font-solid: normal 900 1em/1 "Font Awesome 6 Solid";
|
|
||||||
--fa-font-regular: normal 400 1em/1 "Font Awesome 6 Regular";
|
|
||||||
--fa-font-light: normal 300 1em/1 "Font Awesome 6 Light";
|
|
||||||
--fa-font-thin: normal 100 1em/1 "Font Awesome 6 Thin";
|
|
||||||
--fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone";
|
|
||||||
--fa-font-sharp-solid: normal 900 1em/1 "Font Awesome 6 Sharp";
|
|
||||||
--fa-font-sharp-regular: normal 400 1em/1 "Font Awesome 6 Sharp";
|
|
||||||
--fa-font-sharp-light: normal 300 1em/1 "Font Awesome 6 Sharp";
|
|
||||||
--fa-font-sharp-thin: normal 100 1em/1 "Font Awesome 6 Sharp";
|
|
||||||
--fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands";
|
|
||||||
}
|
|
||||||
|
|
||||||
svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {
|
|
||||||
overflow: visible;
|
|
||||||
box-sizing: content-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
.svg-inline--fa {
|
|
||||||
display: var(--fa-display, inline-block);
|
|
||||||
height: 1em;
|
|
||||||
overflow: visible;
|
|
||||||
vertical-align: -0.125em;
|
|
||||||
}
|
|
||||||
.svg-inline--fa.fa-2xs {
|
|
||||||
vertical-align: 0.1em;
|
|
||||||
}
|
|
||||||
.svg-inline--fa.fa-xs {
|
|
||||||
vertical-align: 0em;
|
|
||||||
}
|
|
||||||
.svg-inline--fa.fa-sm {
|
|
||||||
vertical-align: -0.0714285705em;
|
|
||||||
}
|
|
||||||
.svg-inline--fa.fa-lg {
|
|
||||||
vertical-align: -0.2em;
|
|
||||||
}
|
|
||||||
.svg-inline--fa.fa-xl {
|
|
||||||
vertical-align: -0.25em;
|
|
||||||
}
|
|
||||||
.svg-inline--fa.fa-2xl {
|
|
||||||
vertical-align: -0.3125em;
|
|
||||||
}
|
|
||||||
.svg-inline--fa.fa-pull-left {
|
|
||||||
margin-right: var(--fa-pull-margin, 0.3em);
|
|
||||||
width: auto;
|
|
||||||
}
|
|
||||||
.svg-inline--fa.fa-pull-right {
|
|
||||||
margin-left: var(--fa-pull-margin, 0.3em);
|
|
||||||
width: auto;
|
|
||||||
}
|
|
||||||
.svg-inline--fa.fa-li {
|
|
||||||
width: var(--fa-li-width, 2em);
|
|
||||||
top: 0.25em;
|
|
||||||
}
|
|
||||||
.svg-inline--fa.fa-fw {
|
|
||||||
width: var(--fa-fw-width, 1.25em);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-layers svg.svg-inline--fa {
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
margin: auto;
|
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-layers-counter, .fa-layers-text {
|
|
||||||
display: inline-block;
|
|
||||||
position: absolute;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-layers {
|
|
||||||
display: inline-block;
|
|
||||||
height: 1em;
|
|
||||||
position: relative;
|
|
||||||
text-align: center;
|
|
||||||
vertical-align: -0.125em;
|
|
||||||
width: 1em;
|
|
||||||
}
|
|
||||||
.fa-layers svg.svg-inline--fa {
|
|
||||||
-webkit-transform-origin: center center;
|
|
||||||
transform-origin: center center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-layers-text {
|
|
||||||
left: 50%;
|
|
||||||
top: 50%;
|
|
||||||
-webkit-transform: translate(-50%, -50%);
|
|
||||||
transform: translate(-50%, -50%);
|
|
||||||
-webkit-transform-origin: center center;
|
|
||||||
transform-origin: center center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-layers-counter {
|
|
||||||
background-color: var(--fa-counter-background-color, #ff253a);
|
|
||||||
border-radius: var(--fa-counter-border-radius, 1em);
|
|
||||||
box-sizing: border-box;
|
|
||||||
color: var(--fa-inverse, #fff);
|
|
||||||
line-height: var(--fa-counter-line-height, 1);
|
|
||||||
max-width: var(--fa-counter-max-width, 5em);
|
|
||||||
min-width: var(--fa-counter-min-width, 1.5em);
|
|
||||||
overflow: hidden;
|
|
||||||
padding: var(--fa-counter-padding, 0.25em 0.5em);
|
|
||||||
right: var(--fa-right, 0);
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
top: var(--fa-top, 0);
|
|
||||||
-webkit-transform: scale(var(--fa-counter-scale, 0.25));
|
|
||||||
transform: scale(var(--fa-counter-scale, 0.25));
|
|
||||||
-webkit-transform-origin: top right;
|
|
||||||
transform-origin: top right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-layers-bottom-right {
|
|
||||||
bottom: var(--fa-bottom, 0);
|
|
||||||
right: var(--fa-right, 0);
|
|
||||||
top: auto;
|
|
||||||
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
|
||||||
transform: scale(var(--fa-layers-scale, 0.25));
|
|
||||||
-webkit-transform-origin: bottom right;
|
|
||||||
transform-origin: bottom right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-layers-bottom-left {
|
|
||||||
bottom: var(--fa-bottom, 0);
|
|
||||||
left: var(--fa-left, 0);
|
|
||||||
right: auto;
|
|
||||||
top: auto;
|
|
||||||
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
|
||||||
transform: scale(var(--fa-layers-scale, 0.25));
|
|
||||||
-webkit-transform-origin: bottom left;
|
|
||||||
transform-origin: bottom left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-layers-top-right {
|
|
||||||
top: var(--fa-top, 0);
|
|
||||||
right: var(--fa-right, 0);
|
|
||||||
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
|
||||||
transform: scale(var(--fa-layers-scale, 0.25));
|
|
||||||
-webkit-transform-origin: top right;
|
|
||||||
transform-origin: top right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-layers-top-left {
|
|
||||||
left: var(--fa-left, 0);
|
|
||||||
right: auto;
|
|
||||||
top: var(--fa-top, 0);
|
|
||||||
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
|
||||||
transform: scale(var(--fa-layers-scale, 0.25));
|
|
||||||
-webkit-transform-origin: top left;
|
|
||||||
transform-origin: top left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-1x {
|
|
||||||
font-size: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-2x {
|
|
||||||
font-size: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-3x {
|
|
||||||
font-size: 3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-4x {
|
|
||||||
font-size: 4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-5x {
|
|
||||||
font-size: 5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-6x {
|
|
||||||
font-size: 6em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-7x {
|
|
||||||
font-size: 7em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-8x {
|
|
||||||
font-size: 8em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-9x {
|
|
||||||
font-size: 9em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-10x {
|
|
||||||
font-size: 10em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-2xs {
|
|
||||||
font-size: 0.625em;
|
|
||||||
line-height: 0.1em;
|
|
||||||
vertical-align: 0.225em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-xs {
|
|
||||||
font-size: 0.75em;
|
|
||||||
line-height: 0.0833333337em;
|
|
||||||
vertical-align: 0.125em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-sm {
|
|
||||||
font-size: 0.875em;
|
|
||||||
line-height: 0.0714285718em;
|
|
||||||
vertical-align: 0.0535714295em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-lg {
|
|
||||||
font-size: 1.25em;
|
|
||||||
line-height: 0.05em;
|
|
||||||
vertical-align: -0.075em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-xl {
|
|
||||||
font-size: 1.5em;
|
|
||||||
line-height: 0.0416666682em;
|
|
||||||
vertical-align: -0.125em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-2xl {
|
|
||||||
font-size: 2em;
|
|
||||||
line-height: 0.03125em;
|
|
||||||
vertical-align: -0.1875em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-fw {
|
|
||||||
text-align: center;
|
|
||||||
width: 1.25em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-ul {
|
|
||||||
list-style-type: none;
|
|
||||||
margin-left: var(--fa-li-margin, 2.5em);
|
|
||||||
padding-left: 0;
|
|
||||||
}
|
|
||||||
.fa-ul > li {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-li {
|
|
||||||
left: calc(var(--fa-li-width, 2em) * -1);
|
|
||||||
position: absolute;
|
|
||||||
text-align: center;
|
|
||||||
width: var(--fa-li-width, 2em);
|
|
||||||
line-height: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-border {
|
|
||||||
border-color: var(--fa-border-color, #eee);
|
|
||||||
border-radius: var(--fa-border-radius, 0.1em);
|
|
||||||
border-style: var(--fa-border-style, solid);
|
|
||||||
border-width: var(--fa-border-width, 0.08em);
|
|
||||||
padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-pull-left {
|
|
||||||
float: left;
|
|
||||||
margin-right: var(--fa-pull-margin, 0.3em);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-pull-right {
|
|
||||||
float: right;
|
|
||||||
margin-left: var(--fa-pull-margin, 0.3em);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-beat {
|
|
||||||
-webkit-animation-name: fa-beat;
|
|
||||||
animation-name: fa-beat;
|
|
||||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
|
||||||
animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-bounce {
|
|
||||||
-webkit-animation-name: fa-bounce;
|
|
||||||
animation-name: fa-bounce;
|
|
||||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
|
|
||||||
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-fade {
|
|
||||||
-webkit-animation-name: fa-fade;
|
|
||||||
animation-name: fa-fade;
|
|
||||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
|
||||||
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-beat-fade {
|
|
||||||
-webkit-animation-name: fa-beat-fade;
|
|
||||||
animation-name: fa-beat-fade;
|
|
||||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
|
||||||
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-flip {
|
|
||||||
-webkit-animation-name: fa-flip;
|
|
||||||
animation-name: fa-flip;
|
|
||||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
|
||||||
animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-shake {
|
|
||||||
-webkit-animation-name: fa-shake;
|
|
||||||
animation-name: fa-shake;
|
|
||||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
|
|
||||||
animation-timing-function: var(--fa-animation-timing, linear);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-spin {
|
|
||||||
-webkit-animation-name: fa-spin;
|
|
||||||
animation-name: fa-spin;
|
|
||||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
animation-delay: var(--fa-animation-delay, 0s);
|
|
||||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
-webkit-animation-duration: var(--fa-animation-duration, 2s);
|
|
||||||
animation-duration: var(--fa-animation-duration, 2s);
|
|
||||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
|
|
||||||
animation-timing-function: var(--fa-animation-timing, linear);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-spin-reverse {
|
|
||||||
--fa-animation-direction: reverse;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-pulse,
|
|
||||||
.fa-spin-pulse {
|
|
||||||
-webkit-animation-name: fa-spin;
|
|
||||||
animation-name: fa-spin;
|
|
||||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
animation-direction: var(--fa-animation-direction, normal);
|
|
||||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
animation-duration: var(--fa-animation-duration, 1s);
|
|
||||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
|
||||||
-webkit-animation-timing-function: var(--fa-animation-timing, steps(8));
|
|
||||||
animation-timing-function: var(--fa-animation-timing, steps(8));
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-reduced-motion: reduce) {
|
|
||||||
.fa-beat,
|
|
||||||
.fa-bounce,
|
|
||||||
.fa-fade,
|
|
||||||
.fa-beat-fade,
|
|
||||||
.fa-flip,
|
|
||||||
.fa-pulse,
|
|
||||||
.fa-shake,
|
|
||||||
.fa-spin,
|
|
||||||
.fa-spin-pulse {
|
|
||||||
-webkit-animation-delay: -1ms;
|
|
||||||
animation-delay: -1ms;
|
|
||||||
-webkit-animation-duration: 1ms;
|
|
||||||
animation-duration: 1ms;
|
|
||||||
-webkit-animation-iteration-count: 1;
|
|
||||||
animation-iteration-count: 1;
|
|
||||||
-webkit-transition-delay: 0s;
|
|
||||||
transition-delay: 0s;
|
|
||||||
-webkit-transition-duration: 0s;
|
|
||||||
transition-duration: 0s;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@-webkit-keyframes fa-beat {
|
|
||||||
0%, 90% {
|
|
||||||
-webkit-transform: scale(1);
|
|
||||||
transform: scale(1);
|
|
||||||
}
|
|
||||||
45% {
|
|
||||||
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
|
|
||||||
transform: scale(var(--fa-beat-scale, 1.25));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes fa-beat {
|
|
||||||
0%, 90% {
|
|
||||||
-webkit-transform: scale(1);
|
|
||||||
transform: scale(1);
|
|
||||||
}
|
|
||||||
45% {
|
|
||||||
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
|
|
||||||
transform: scale(var(--fa-beat-scale, 1.25));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@-webkit-keyframes fa-bounce {
|
|
||||||
0% {
|
|
||||||
-webkit-transform: scale(1, 1) translateY(0);
|
|
||||||
transform: scale(1, 1) translateY(0);
|
|
||||||
}
|
|
||||||
10% {
|
|
||||||
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
|
||||||
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
|
||||||
}
|
|
||||||
30% {
|
|
||||||
-webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
|
|
||||||
transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
|
|
||||||
}
|
|
||||||
50% {
|
|
||||||
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
|
||||||
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
|
||||||
}
|
|
||||||
57% {
|
|
||||||
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
|
||||||
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
|
||||||
}
|
|
||||||
64% {
|
|
||||||
-webkit-transform: scale(1, 1) translateY(0);
|
|
||||||
transform: scale(1, 1) translateY(0);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
-webkit-transform: scale(1, 1) translateY(0);
|
|
||||||
transform: scale(1, 1) translateY(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes fa-bounce {
|
|
||||||
0% {
|
|
||||||
-webkit-transform: scale(1, 1) translateY(0);
|
|
||||||
transform: scale(1, 1) translateY(0);
|
|
||||||
}
|
|
||||||
10% {
|
|
||||||
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
|
||||||
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
|
||||||
}
|
|
||||||
30% {
|
|
||||||
-webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
|
|
||||||
transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
|
|
||||||
}
|
|
||||||
50% {
|
|
||||||
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
|
||||||
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
|
||||||
}
|
|
||||||
57% {
|
|
||||||
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
|
||||||
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
|
||||||
}
|
|
||||||
64% {
|
|
||||||
-webkit-transform: scale(1, 1) translateY(0);
|
|
||||||
transform: scale(1, 1) translateY(0);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
-webkit-transform: scale(1, 1) translateY(0);
|
|
||||||
transform: scale(1, 1) translateY(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@-webkit-keyframes fa-fade {
|
|
||||||
50% {
|
|
||||||
opacity: var(--fa-fade-opacity, 0.4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes fa-fade {
|
|
||||||
50% {
|
|
||||||
opacity: var(--fa-fade-opacity, 0.4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@-webkit-keyframes fa-beat-fade {
|
|
||||||
0%, 100% {
|
|
||||||
opacity: var(--fa-beat-fade-opacity, 0.4);
|
|
||||||
-webkit-transform: scale(1);
|
|
||||||
transform: scale(1);
|
|
||||||
}
|
|
||||||
50% {
|
|
||||||
opacity: 1;
|
|
||||||
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
|
|
||||||
transform: scale(var(--fa-beat-fade-scale, 1.125));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes fa-beat-fade {
|
|
||||||
0%, 100% {
|
|
||||||
opacity: var(--fa-beat-fade-opacity, 0.4);
|
|
||||||
-webkit-transform: scale(1);
|
|
||||||
transform: scale(1);
|
|
||||||
}
|
|
||||||
50% {
|
|
||||||
opacity: 1;
|
|
||||||
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
|
|
||||||
transform: scale(var(--fa-beat-fade-scale, 1.125));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@-webkit-keyframes fa-flip {
|
|
||||||
50% {
|
|
||||||
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
|
||||||
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes fa-flip {
|
|
||||||
50% {
|
|
||||||
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
|
||||||
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@-webkit-keyframes fa-shake {
|
|
||||||
0% {
|
|
||||||
-webkit-transform: rotate(-15deg);
|
|
||||||
transform: rotate(-15deg);
|
|
||||||
}
|
|
||||||
4% {
|
|
||||||
-webkit-transform: rotate(15deg);
|
|
||||||
transform: rotate(15deg);
|
|
||||||
}
|
|
||||||
8%, 24% {
|
|
||||||
-webkit-transform: rotate(-18deg);
|
|
||||||
transform: rotate(-18deg);
|
|
||||||
}
|
|
||||||
12%, 28% {
|
|
||||||
-webkit-transform: rotate(18deg);
|
|
||||||
transform: rotate(18deg);
|
|
||||||
}
|
|
||||||
16% {
|
|
||||||
-webkit-transform: rotate(-22deg);
|
|
||||||
transform: rotate(-22deg);
|
|
||||||
}
|
|
||||||
20% {
|
|
||||||
-webkit-transform: rotate(22deg);
|
|
||||||
transform: rotate(22deg);
|
|
||||||
}
|
|
||||||
32% {
|
|
||||||
-webkit-transform: rotate(-12deg);
|
|
||||||
transform: rotate(-12deg);
|
|
||||||
}
|
|
||||||
36% {
|
|
||||||
-webkit-transform: rotate(12deg);
|
|
||||||
transform: rotate(12deg);
|
|
||||||
}
|
|
||||||
40%, 100% {
|
|
||||||
-webkit-transform: rotate(0deg);
|
|
||||||
transform: rotate(0deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes fa-shake {
|
|
||||||
0% {
|
|
||||||
-webkit-transform: rotate(-15deg);
|
|
||||||
transform: rotate(-15deg);
|
|
||||||
}
|
|
||||||
4% {
|
|
||||||
-webkit-transform: rotate(15deg);
|
|
||||||
transform: rotate(15deg);
|
|
||||||
}
|
|
||||||
8%, 24% {
|
|
||||||
-webkit-transform: rotate(-18deg);
|
|
||||||
transform: rotate(-18deg);
|
|
||||||
}
|
|
||||||
12%, 28% {
|
|
||||||
-webkit-transform: rotate(18deg);
|
|
||||||
transform: rotate(18deg);
|
|
||||||
}
|
|
||||||
16% {
|
|
||||||
-webkit-transform: rotate(-22deg);
|
|
||||||
transform: rotate(-22deg);
|
|
||||||
}
|
|
||||||
20% {
|
|
||||||
-webkit-transform: rotate(22deg);
|
|
||||||
transform: rotate(22deg);
|
|
||||||
}
|
|
||||||
32% {
|
|
||||||
-webkit-transform: rotate(-12deg);
|
|
||||||
transform: rotate(-12deg);
|
|
||||||
}
|
|
||||||
36% {
|
|
||||||
-webkit-transform: rotate(12deg);
|
|
||||||
transform: rotate(12deg);
|
|
||||||
}
|
|
||||||
40%, 100% {
|
|
||||||
-webkit-transform: rotate(0deg);
|
|
||||||
transform: rotate(0deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@-webkit-keyframes fa-spin {
|
|
||||||
0% {
|
|
||||||
-webkit-transform: rotate(0deg);
|
|
||||||
transform: rotate(0deg);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
-webkit-transform: rotate(360deg);
|
|
||||||
transform: rotate(360deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes fa-spin {
|
|
||||||
0% {
|
|
||||||
-webkit-transform: rotate(0deg);
|
|
||||||
transform: rotate(0deg);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
-webkit-transform: rotate(360deg);
|
|
||||||
transform: rotate(360deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.fa-rotate-90 {
|
|
||||||
-webkit-transform: rotate(90deg);
|
|
||||||
transform: rotate(90deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-rotate-180 {
|
|
||||||
-webkit-transform: rotate(180deg);
|
|
||||||
transform: rotate(180deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-rotate-270 {
|
|
||||||
-webkit-transform: rotate(270deg);
|
|
||||||
transform: rotate(270deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-flip-horizontal {
|
|
||||||
-webkit-transform: scale(-1, 1);
|
|
||||||
transform: scale(-1, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-flip-vertical {
|
|
||||||
-webkit-transform: scale(1, -1);
|
|
||||||
transform: scale(1, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-flip-both,
|
|
||||||
.fa-flip-horizontal.fa-flip-vertical {
|
|
||||||
-webkit-transform: scale(-1, -1);
|
|
||||||
transform: scale(-1, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-rotate-by {
|
|
||||||
-webkit-transform: rotate(var(--fa-rotate-angle, 0));
|
|
||||||
transform: rotate(var(--fa-rotate-angle, 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-stack {
|
|
||||||
display: inline-block;
|
|
||||||
vertical-align: middle;
|
|
||||||
height: 2em;
|
|
||||||
position: relative;
|
|
||||||
width: 2.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-stack-1x,
|
|
||||||
.fa-stack-2x {
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
margin: auto;
|
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
top: 0;
|
|
||||||
z-index: var(--fa-stack-z-index, auto);
|
|
||||||
}
|
|
||||||
|
|
||||||
.svg-inline--fa.fa-stack-1x {
|
|
||||||
height: 1em;
|
|
||||||
width: 1.25em;
|
|
||||||
}
|
|
||||||
.svg-inline--fa.fa-stack-2x {
|
|
||||||
height: 2em;
|
|
||||||
width: 2.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-inverse {
|
|
||||||
color: var(--fa-inverse, #fff);
|
|
||||||
}
|
|
||||||
|
|
||||||
.sr-only,
|
|
||||||
.fa-sr-only {
|
|
||||||
position: absolute;
|
|
||||||
width: 1px;
|
|
||||||
height: 1px;
|
|
||||||
padding: 0;
|
|
||||||
margin: -1px;
|
|
||||||
overflow: hidden;
|
|
||||||
clip: rect(0, 0, 0, 0);
|
|
||||||
white-space: nowrap;
|
|
||||||
border-width: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sr-only-focusable:not(:focus),
|
|
||||||
.fa-sr-only-focusable:not(:focus) {
|
|
||||||
position: absolute;
|
|
||||||
width: 1px;
|
|
||||||
height: 1px;
|
|
||||||
padding: 0;
|
|
||||||
margin: -1px;
|
|
||||||
overflow: hidden;
|
|
||||||
clip: rect(0, 0, 0, 0);
|
|
||||||
white-space: nowrap;
|
|
||||||
border-width: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.svg-inline--fa .fa-primary {
|
|
||||||
fill: var(--fa-primary-color, currentColor);
|
|
||||||
opacity: var(--fa-primary-opacity, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.svg-inline--fa .fa-secondary {
|
|
||||||
fill: var(--fa-secondary-color, currentColor);
|
|
||||||
opacity: var(--fa-secondary-opacity, 0.4);
|
|
||||||
}
|
|
||||||
|
|
||||||
.svg-inline--fa.fa-swap-opacity .fa-primary {
|
|
||||||
opacity: var(--fa-secondary-opacity, 0.4);
|
|
||||||
}
|
|
||||||
|
|
||||||
.svg-inline--fa.fa-swap-opacity .fa-secondary {
|
|
||||||
opacity: var(--fa-primary-opacity, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.svg-inline--fa mask .fa-primary,
|
|
||||||
.svg-inline--fa mask .fa-secondary {
|
|
||||||
fill: black;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fad.fa-inverse,
|
|
||||||
.fa-duotone.fa-inverse {
|
|
||||||
color: var(--fa-inverse, #fff);
|
|
||||||
}`;function Xg(){var e=Bg,t=Wg,n=Z.cssPrefix,r=Z.replacementClass,s=JI;if(n!==e||r!==t){var i=new RegExp("\\.".concat(e,"\\-"),"g"),o=new RegExp("\\--".concat(e,"\\-"),"g"),a=new RegExp("\\.".concat(t),"g");s=s.replace(i,".".concat(n,"-")).replace(o,"--".concat(n,"-")).replace(a,".".concat(r))}return s}var zd=!1;function xa(){Z.autoAddCss&&!zd&&(KI(Xg()),zd=!0)}var QI={mixout:function(){return{dom:{css:Xg,insertCss:xa}}},hooks:function(){return{beforeDOMElementCreation:function(){xa()},beforeI2svg:function(){xa()}}}},fn=Mn||{};fn[un]||(fn[un]={});fn[un].styles||(fn[un].styles={});fn[un].hooks||(fn[un].hooks={});fn[un].shims||(fn[un].shims=[]);var Dt=fn[un],Jg=[],ZI=function e(){Me.removeEventListener("DOMContentLoaded",e),mo=1,Jg.map(function(t){return t()})},mo=!1;pn&&(mo=(Me.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(Me.readyState),mo||Me.addEventListener("DOMContentLoaded",ZI));function eP(e){pn&&(mo?setTimeout(e,0):Jg.push(e))}function ui(e){var t=e.tag,n=e.attributes,r=n===void 0?{}:n,s=e.children,i=s===void 0?[]:s;return typeof e=="string"?qg(e):"<".concat(t," ").concat(GI(r),">").concat(i.map(ui).join(""),"</").concat(t,">")}function Gd(e,t,n){if(e&&e[t]&&e[t][n])return{prefix:t,iconName:n,icon:e[t][n]}}var ka=function(t,n,r,s){var i=Object.keys(t),o=i.length,a=n,l,u,c;for(r===void 0?(l=1,c=t[i[0]]):(l=0,c=r);l<o;l++)u=i[l],c=a(c,t[u],u,t);return c};function tP(e){for(var t=[],n=0,r=e.length;n<r;){var s=e.charCodeAt(n++);if(s>=55296&&s<=56319&&n<r){var i=e.charCodeAt(n++);(i&64512)==56320?t.push(((s&1023)<<10)+(i&1023)+65536):(t.push(s),n--)}else t.push(s)}return t}function Ll(e){var t=tP(e);return t.length===1?t[0].toString(16):null}function nP(e,t){var n=e.length,r=e.charCodeAt(t),s;return r>=55296&&r<=56319&&n>t+1&&(s=e.charCodeAt(t+1),s>=56320&&s<=57343)?(r-55296)*1024+s-56320+65536:r}function qd(e){return Object.keys(e).reduce(function(t,n){var r=e[n],s=!!r.icon;return s?t[r.iconName]=r.icon:t[n]=r,t},{})}function Il(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.skipHooks,s=r===void 0?!1:r,i=qd(t);typeof Dt.hooks.addPack=="function"&&!s?Dt.hooks.addPack(e,qd(t)):Dt.styles[e]=X(X({},Dt.styles[e]||{}),i),e==="fas"&&Il("fa",t)}var xi,ki,$i,$r=Dt.styles,rP=Dt.shims,sP=(xi={},qe(xi,$e,Object.values(Gs[$e])),qe(xi,Ve,Object.values(Gs[Ve])),xi),zc=null,Qg={},Zg={},e_={},t_={},n_={},iP=(ki={},qe(ki,$e,Object.keys(Ks[$e])),qe(ki,Ve,Object.keys(Ks[Ve])),ki);function oP(e){return~HI.indexOf(e)}function aP(e,t){var n=t.split("-"),r=n[0],s=n.slice(1).join("-");return r===e&&s!==""&&!oP(s)?s:null}var r_=function(){var t=function(i){return ka($r,function(o,a,l){return o[l]=ka(a,i,{}),o},{})};Qg=t(function(s,i,o){if(i[3]&&(s[i[3]]=o),i[2]){var a=i[2].filter(function(l){return typeof l=="number"});a.forEach(function(l){s[l.toString(16)]=o})}return s}),Zg=t(function(s,i,o){if(s[o]=o,i[2]){var a=i[2].filter(function(l){return typeof l=="string"});a.forEach(function(l){s[l]=o})}return s}),n_=t(function(s,i,o){var a=i[2];return s[o]=o,a.forEach(function(l){s[l]=o}),s});var n="far"in $r||Z.autoFetchSvg,r=ka(rP,function(s,i){var o=i[0],a=i[1],l=i[2];return a==="far"&&!n&&(a="fas"),typeof o=="string"&&(s.names[o]={prefix:a,iconName:l}),typeof o=="number"&&(s.unicodes[o.toString(16)]={prefix:a,iconName:l}),s},{names:{},unicodes:{}});e_=r.names,t_=r.unicodes,zc=qo(Z.styleDefault,{family:Z.familyDefault})};YI(function(e){zc=qo(e.styleDefault,{family:Z.familyDefault})});r_();function Gc(e,t){return(Qg[e]||{})[t]}function lP(e,t){return(Zg[e]||{})[t]}function or(e,t){return(n_[e]||{})[t]}function s_(e){return e_[e]||{prefix:null,iconName:null}}function cP(e){var t=t_[e],n=Gc("fas",e);return t||(n?{prefix:"fas",iconName:n}:null)||{prefix:null,iconName:null}}function Fn(){return zc}var qc=function(){return{prefix:null,iconName:null,rest:[]}};function qo(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=t.family,r=n===void 0?$e:n,s=Ks[r][e],i=zs[r][e]||zs[r][s],o=e in Dt.styles?e:null;return i||o||null}var Xd=($i={},qe($i,$e,Object.keys(Gs[$e])),qe($i,Ve,Object.keys(Gs[Ve])),$i);function Xo(e){var t,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=n.skipLookups,s=r===void 0?!1:r,i=(t={},qe(t,$e,"".concat(Z.cssPrefix,"-").concat($e)),qe(t,Ve,"".concat(Z.cssPrefix,"-").concat(Ve)),t),o=null,a=$e;(e.includes(i[$e])||e.some(function(u){return Xd[$e].includes(u)}))&&(a=$e),(e.includes(i[Ve])||e.some(function(u){return Xd[Ve].includes(u)}))&&(a=Ve);var l=e.reduce(function(u,c){var f=aP(Z.cssPrefix,c);if($r[c]?(c=sP[a].includes(c)?$I[a][c]:c,o=c,u.prefix=c):iP[a].indexOf(c)>-1?(o=c,u.prefix=qo(c,{family:a})):f?u.iconName=f:c!==Z.replacementClass&&c!==i[$e]&&c!==i[Ve]&&u.rest.push(c),!s&&u.prefix&&u.iconName){var d=o==="fa"?s_(u.iconName):{},m=or(u.prefix,u.iconName);d.prefix&&(o=null),u.iconName=d.iconName||m||u.iconName,u.prefix=d.prefix||u.prefix,u.prefix==="far"&&!$r.far&&$r.fas&&!Z.autoFetchSvg&&(u.prefix="fas")}return u},qc());return(e.includes("fa-bran
Line truncated
|
|
||||||
`);n.setAttribute(_r,""),n.innerHTML=o}};function tm(e){e()}function l_(e,t){var n=typeof t=="function"?t:Gi;if(e.length===0)n();else{var r=tm;Z.mutateApproach===xI&&(r=Mn.requestAnimationFrame||tm),r(function(){var s=OP(),i=Jc.begin("mutate");e.map(s),i(),n()})}}var Qc=!1;function c_(){Qc=!0}function Dl(){Qc=!1}var ho=null;function nm(e){if(Yd&&Z.observeMutations){var t=e.treeCallback,n=t===void 0?Gi:t,r=e.nodeCallback,s=r===void 0?Gi:r,i=e.pseudoElementsCallback,o=i===void 0?Gi:i,a=e.observeMutationsRoot,l=a===void 0?Me:a;ho=new Yd(function(u){if(!Qc){var c=Fn();ds(u).forEach(function(f){if(f.type==="childList"&&f.addedNodes.length>0&&!em(f.addedNodes[0])&&(Z.searchPseudoElements&&o(f.target),n(f.target)),f.type==="attributes"&&f.target.parentNode&&Z.searchPseudoElements&&o(f.target.parentNode),f.type==="attributes"&&em(f.target)&&~UI.indexOf(f.attributeName))if(f.attributeName==="class"&&AP(f.target)){var d=Xo(Yc(f.target)),m=d.prefix,p=d.iconName;f.target.setAttribute(Vc,m||c),p&&f.target.setAttribute(Bc,p)}else TP(f.target)&&s(f.target)})}}),pn&&ho.observe(l,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function LP(){ho&&ho.disconnect()}function IP(e){var t=e.getAttribute("style"),n=[];return t&&(n=t.split(";").reduce(function(r,s){var i=s.split(":"),o=i[0],a=i.slice(1);return o&&a.length>0&&(r[o]=a.join(":").trim()),r},{})),n}function PP(e){var t=e.getAttribute("data-prefix"),n=e.getAttribute("data-icon"),r=e.innerText!==void 0?e.innerText.trim():"",s=Xo(Yc(e));return s.prefix||(s.prefix=Fn()),t&&n&&(s.prefix=t,s.iconName=n),s.iconName&&s.prefix||(s.prefix&&r.length>0&&(s.iconName=lP(s.prefix,e.innerText)||Gc(s.prefix,Ll(e.innerText))),!s.iconName&&Z.autoFetchSvg&&e.firstChild&&e.firstChild.nodeType===Node.TEXT_NODE&&(s.iconName=e.firstChild.data)),s}function RP(e){var t=ds(e.attributes).reduce(function(s,i){return s.name!=="class"&&s.name!=="style"&&(s[i.name]=i.value),s},{}),n=e.getAttribute("title"),r=e.getAttribute("data-fa-title-id");return Z.autoA11y&&(n?t["aria-labelledby"]="".concat(Z.replacementClass,"-title-").concat(r||Xs()):(t["aria-hidden"]="true",t.focusable="false")),t}function xP(){return{iconName:null,title:null,titleId:null,prefix:null,transform:zt,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}}}function rm(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{styleParser:!0},n=PP(e),r=n.iconName,s=n.prefix,i=n.rest,o=RP(e),a=Pl("parseNodeAttributes",{},e),l=t.styleParser?IP(e):[];return X({iconName:r,title:e.getAttribute("title"),titleId:e.getAttribute("data-fa-title-id"),prefix:s,transform:zt,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:i,styles:l,attributes:o}},a)}var kP=Dt.styles;function u_(e){var t=Z.autoReplaceSvg==="nest"?rm(e,{styleParser:!1}):rm(e);return~t.extra.classes.indexOf(Kg)?dn("generateLayersText",e,t):dn("generateSvgReplacementMutation",e,t)}var jn=new Set;Wc.map(function(e){jn.add("fa-".concat(e))});Object.keys(Ks[$e]).map(jn.add.bind(jn));Object.keys(Ks[Ve]).map(jn.add.bind(jn));jn=li(jn);function sm(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!pn)return Promise.resolve();var n=Me.documentElement.classList,r=function(f){return n.add("".concat(Kd,"-").concat(f))},s=function(f){return n.remove("".concat(Kd,"-").concat(f))},i=Z.autoFetchSvg?jn:Wc.map(function(c){return"fa-".concat(c)}).concat(Object.keys(kP));i.includes("fa")||i.push("fa");var o=[".".concat(Kg,":not([").concat(_r,"])")].concat(i.map(function(c){return".".concat(c,":not([").concat(_r,"])")})).join(", ");if(o.length===0)return Promise.resolve();var a=[];try{a=ds(e.querySelectorAll(o))}catch{}if(a.length>0)r("pending"),s("complete");else return Promise.resolve();var l=Jc.begin("onTree"),u=a.reduce(function(c,f){try{var d=u_(f);d&&c.push(d)}catch(m){Yg||m.name==="MissingIcon"&&console.error(m)}return c},[]);return new Promise(function(c,f){Promise.all(u).then(function(d){l_(d,function(){r("active"),r("complete"),s("pending"),typeof t=="function"&&t(),l(),c()})}).catch(function(d){l(),f(d)})})}function $P(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;u_(e).then(function(n){n&&l_([n],t)})}function DP(e){return function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=(t||{}).icon?t:Rl(t||{}),s=n.mask;return s&&(s=(s||{}).icon?s:Rl(s||{})),e(r,X(X({},n),{},{mask:s}))}}var MP=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=n.transform,s=r===void 0?zt:r,i=n.symbol,o=i===void 0?!1:i,a=n.mask,l=a===void 0?null:a,u=n.maskId,c=u===void 0?null:u,f=n.title,d=f===void 0?null:f,m=n.titleId,p=m===void 0?null:m,v=n.classes,y=v===void 0?[]:v,w=n.attributes,S=w===void 0?{}:w,E=n.styles,A=E===void 0?{}:E;if(t){var C=t.prefix,O=t.iconName,I=t.icon;return Jo(X({type:"icon"},t),function(){return vr("beforeDOMElementCreation",{iconDefinition:t,params:n}),Z.autoA11y&&(d?S["aria-labelledby"]="".concat(Z.replacem
Line truncated
|
|
||||||
`),e.removeAttribute(n),r()}).catch(s)}else r()}else r()})}function WP(e){return Promise.all([om(e,"::before"),om(e,"::after")])}function YP(e){return e.parentNode!==document.head&&!~kI.indexOf(e.tagName.toUpperCase())&&!e.getAttribute(Nl)&&(!e.parentNode||e.parentNode.tagName!=="svg")}function am(e){if(pn)return new Promise(function(t,n){var r=ds(e.querySelectorAll("*")).filter(YP).map(WP),s=Jc.begin("searchPseudoElements");c_(),Promise.all(r).then(function(){s(),Dl(),t()}).catch(function(){s(),Dl(),n()})})}var KP={hooks:function(){return{mutationObserverCallbacks:function(n){return n.pseudoElementsCallback=am,n}}},provides:function(t){t.pseudoElements2svg=function(n){var r=n.node,s=r===void 0?Me:r;Z.searchPseudoElements&&am(s)}}},lm=!1,zP={mixout:function(){return{dom:{unwatch:function(){c_(),lm=!0}}}},hooks:function(){return{bootstrap:function(){nm(Pl("mutationObserverCallbacks",{}))},noAuto:function(){LP()},watch:function(n){var r=n.observeMutationsRoot;lm?Dl():nm(Pl("mutationObserverCallbacks",{observeMutationsRoot:r}))}}}},cm=function(t){var n={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return t.toLowerCase().split(" ").reduce(function(r,s){var i=s.toLowerCase().split("-"),o=i[0],a=i.slice(1).join("-");if(o&&a==="h")return r.flipX=!0,r;if(o&&a==="v")return r.flipY=!0,r;if(a=parseFloat(a),isNaN(a))return r;switch(o){case"grow":r.size=r.size+a;break;case"shrink":r.size=r.size-a;break;case"left":r.x=r.x-a;break;case"right":r.x=r.x+a;break;case"up":r.y=r.y-a;break;case"down":r.y=r.y+a;break;case"rotate":r.rotate=r.rotate+a;break}return r},n)},GP={mixout:function(){return{parse:{transform:function(n){return cm(n)}}}},hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-transform");return s&&(n.transform=cm(s)),n}}},provides:function(t){t.generateAbstractTransformGrouping=function(n){var r=n.main,s=n.transform,i=n.containerWidth,o=n.iconWidth,a={transform:"translate(".concat(i/2," 256)")},l="translate(".concat(s.x*32,", ").concat(s.y*32,") "),u="scale(".concat(s.size/16*(s.flipX?-1:1),", ").concat(s.size/16*(s.flipY?-1:1),") "),c="rotate(".concat(s.rotate," 0 0)"),f={transform:"".concat(l," ").concat(u," ").concat(c)},d={transform:"translate(".concat(o/2*-1," -256)")},m={outer:a,inner:f,path:d};return{tag:"g",attributes:X({},m.outer),children:[{tag:"g",attributes:X({},m.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:X(X({},r.icon.attributes),m.path)}]}]}}}},Da={x:0,y:0,width:"100%",height:"100%"};function um(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return e.attributes&&(e.attributes.fill||t)&&(e.attributes.fill="black"),e}function qP(e){return e.tag==="g"?e.children:[e]}var XP={hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-mask"),i=s?Xo(s.split(" ").map(function(o){return o.trim()})):qc();return i.prefix||(i.prefix=Fn()),n.mask=i,n.maskId=r.getAttribute("data-fa-mask-id"),n}}},provides:function(t){t.generateAbstractMask=function(n){var r=n.children,s=n.attributes,i=n.main,o=n.mask,a=n.maskId,l=n.transform,u=i.width,c=i.icon,f=o.width,d=o.icon,m=qI({transform:l,containerWidth:f,iconWidth:u}),p={tag:"rect",attributes:X(X({},Da),{},{fill:"white"})},v=c.children?{children:c.children.map(um)}:{},y={tag:"g",attributes:X({},m.inner),children:[um(X({tag:c.tag,attributes:X(X({},c.attributes),m.path)},v))]},w={tag:"g",attributes:X({},m.outer),children:[y]},S="mask-".concat(a||Xs()),E="clip-".concat(a||Xs()),A={tag:"mask",attributes:X(X({},Da),{},{id:S,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[p,w]},C={tag:"defs",children:[{tag:"clipPath",attributes:{id:E},children:qP(d)},A]};return r.push(C,{tag:"rect",attributes:X({fill:"currentColor","clip-path":"url(#".concat(E,")"),mask:"url(#".concat(S,")")},Da)}),{children:r,attributes:s}}}},JP={provides:function(t){var n=!1;Mn.matchMedia&&(n=Mn.matchMedia("(prefers-reduced-motion: reduce)").matches),t.missingIconAbstract=function(){var r=[],s={fill:"currentColor"},i={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};r.push({tag:"path",attributes:X(X({},s),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66
Line truncated
|
|
||||||
@@ -0,0 +1,813 @@
|
|||||||
|
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(s){if(s.ep)return;s.ep=!0;const i=n(s);fetch(s.href,i)}})();/**
|
||||||
|
* @vue/shared v3.4.29
|
||||||
|
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||||
|
* @license MIT
|
||||||
|
**//*! #__NO_SIDE_EFFECTS__ */function jl(e,t){const n=new Set(e.split(","));return r=>n.has(r)}const ke={},Mr=[],Ct=()=>{},p_=()=>!1,go=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ul=e=>e.startsWith("onUpdate:"),Ze=Object.assign,Hl=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},g_=Object.prototype.hasOwnProperty,we=(e,t)=>g_.call(e,t),ce=Array.isArray,Fr=e=>_o(e)==="[object Map]",hm=e=>_o(e)==="[object Set]",he=e=>typeof e=="function",Ge=e=>typeof e=="string",br=e=>typeof e=="symbol",Fe=e=>e!==null&&typeof e=="object",pm=e=>(Fe(e)||he(e))&&he(e.then)&&he(e.catch),gm=Object.prototype.toString,_o=e=>gm.call(e),__=e=>_o(e).slice(8,-1),_m=e=>_o(e)==="[object Object]",Vl=e=>Ge(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Es=jl(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),vo=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},v_=/-(\w)/g,Xt=vo(e=>e.replace(v_,(t,n)=>n?n.toUpperCase():"")),b_=/\B([A-Z])/g,rs=vo(e=>e.replace(b_,"-$1").toLowerCase()),bo=vo(e=>e.charAt(0).toUpperCase()+e.slice(1)),Zo=vo(e=>e?`on${bo(e)}`:""),Rn=(e,t)=>!Object.is(e,t),Di=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},vm=(e,t,n,r=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},ja=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let nu;const bm=()=>nu||(nu=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Zn(e){if(ce(e)){const t={};for(let n=0;n<e.length;n++){const r=e[n],s=Ge(r)?A_(r):Zn(r);if(s)for(const i in s)t[i]=s[i]}return t}else if(Ge(e)||Fe(e))return e}const y_=/;(?![^(]*\))/g,E_=/:([^]+)/,w_=/\/\*[^]*?\*\//g;function A_(e){const t={};return e.replace(w_,"").split(y_).forEach(n=>{if(n){const r=n.split(E_);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Nt(e){let t="";if(Ge(e))t=e;else if(ce(e))for(let n=0;n<e.length;n++){const r=Nt(e[n]);r&&(t+=r+" ")}else if(Fe(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const T_="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",O_=jl(T_);function ym(e){return!!e||e===""}const ue=e=>Ge(e)?e:e==null?"":ce(e)||Fe(e)&&(e.toString===gm||!he(e.toString))?JSON.stringify(e,Em,2):String(e),Em=(e,t)=>t&&t.__v_isRef?Em(e,t.value):Fr(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],i)=>(n[ea(r,i)+" =>"]=s,n),{})}:hm(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>ea(n))}:br(t)?ea(t):Fe(t)&&!ce(t)&&!_m(t)?String(t):t,ea=(e,t="")=>{var n;return br(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/**
|
||||||
|
* @vue/reactivity v3.4.29
|
||||||
|
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||||
|
* @license MIT
|
||||||
|
**/let yt;class wm{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=yt,!t&&yt&&(this.index=(yt.scopes||(yt.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=yt;try{return yt=this,t()}finally{yt=n}}}on(){yt=this}off(){yt=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n<r;n++)this.effects[n].stop();for(n=0,r=this.cleanups.length;n<r;n++)this.cleanups[n]();if(this.scopes)for(n=0,r=this.scopes.length;n<r;n++)this.scopes[n].stop(!0);if(!this.detached&&this.parent&&!t){const s=this.parent.scopes.pop();s&&s!==this&&(this.parent.scopes[this.index]=s,s.index=this.index)}this.parent=void 0,this._active=!1}}}function Bl(e){return new wm(e)}function S_(e,t=yt){t&&t.active&&t.effects.push(e)}function Am(){return yt}function C_(e){yt&&yt.cleanups.push(e)}let ar;class Wl{constructor(t,n,r,s){this.fn=t,this.trigger=n,this.scheduler=r,this.active=!0,this.deps=[],this._dirtyLevel=5,this._trackId=0,this._runnings=0,this._shouldSchedule=!1,this._depsLength=0,S_(this,s)}get dirty(){if(this._dirtyLevel===2)return!1;if(this._dirtyLevel===3||this._dirtyLevel===4){this._dirtyLevel=1,Un();for(let t=0;t<this._depsLength;t++){const n=this.deps[t];if(n.computed){if(n.computed.effect._dirtyLevel===2)return!0;if(N_(n.computed),this._dirtyLevel>=5)break}}this._dirtyLevel===1&&(this._dirtyLevel=0),Hn()}return this._dirtyLevel>=5}set dirty(t){this._dirtyLevel=t?5:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Ln,n=ar;try{return Ln=!0,ar=this,this._runnings++,ru(this),this.fn()}finally{su(this),this._runnings--,ar=n,Ln=t}}stop(){this.active&&(ru(this),su(this),this.onStop&&this.onStop(),this.active=!1)}}function N_(e){return e.value}function ru(e){e._trackId++,e._depsLength=0}function su(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t<e.deps.length;t++)Tm(e.deps[t],e);e.deps.length=e._depsLength}}function Tm(e,t){const n=e.get(t);n!==void 0&&t._trackId!==n&&(e.delete(t),e.size===0&&e.cleanup())}let Ln=!0,Ua=0;const Om=[];function Un(){Om.push(Ln),Ln=!1}function Hn(){const e=Om.pop();Ln=e===void 0?!0:e}function Yl(){Ua++}function Kl(){for(Ua--;!Ua&&Ha.length;)Ha.shift()()}function Sm(e,t,n){if(t.get(e)!==e._trackId){t.set(e,e._trackId);const r=e.deps[e._depsLength];r!==t?(r&&Tm(r,e),e.deps[e._depsLength++]=t):e._depsLength++}}const Ha=[];function Cm(e,t,n){Yl();for(const r of e.keys()){if(!e.computed&&r.computed&&e.get(r)===r._trackId&&r._runnings>0){r._dirtyLevel=2;continue}let s;r._dirtyLevel<t&&(s??(s=e.get(r)===r._trackId))&&(r._shouldSchedule||(r._shouldSchedule=r._dirtyLevel===0),r.computed&&r._dirtyLevel===2&&(r._shouldSchedule=!0),r._dirtyLevel=t),r._shouldSchedule&&(s??(s=e.get(r)===r._trackId))&&(r.trigger(),(!r._runnings||r.allowRecurse)&&r._dirtyLevel!==3&&(r._shouldSchedule=!1,r.scheduler&&Ha.push(r.scheduler)))}Kl()}const Nm=(e,t)=>{const n=new Map;return n.cleanup=e,n.computed=t,n},Xi=new WeakMap,lr=Symbol(""),Va=Symbol("");function _t(e,t,n){if(Ln&&ar){let r=Xi.get(e);r||Xi.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=Nm(()=>r.delete(n))),Sm(ar,s)}}function on(e,t,n,r,s,i){const o=Xi.get(e);if(!o)return;let a=[];if(t==="clear")a=[...o.values()];else if(n==="length"&&ce(e)){const l=Number(r);o.forEach((u,c)=>{(c==="length"||!br(c)&&c>=l)&&a.push(u)})}else switch(n!==void 0&&a.push(o.get(n)),t){case"add":ce(e)?Vl(n)&&a.push(o.get("length")):(a.push(o.get(lr)),Fr(e)&&a.push(o.get(Va)));break;case"delete":ce(e)||(a.push(o.get(lr)),Fr(e)&&a.push(o.get(Va)));break;case"set":Fr(e)&&a.push(o.get(lr));break}Yl();for(const l of a)l&&Cm(l,5);Kl()}function L_(e,t){const n=Xi.get(e);return n&&n.get(t)}const I_=jl("__proto__,__v_isRef,__isVue"),Lm=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(br)),iu=P_();function P_(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=Ae(this);for(let i=0,o=this.length;i<o;i++)_t(r,"get",i+"");const s=r[t](...n);return s===-1||s===!1?r[t](...n.map(Ae)):s}}),["push","pop","shift","unshift","splice"].forEach(t=>{e[t]=function(...n){Un(),Yl();const r=Ae(this)[t].apply(this,n);return Kl(),Hn(),r}}),e}function R_(e){br(e)||(e=String(e));const t=Ae(this);return _t(t,"has",e),t.hasOwnProperty(e)}class Im{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const s=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return i;if(n==="__v_raw")return r===(s?i?Y_:km:i?xm:Rm).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const o=ce(t);if(!s){if(o&&we(iu,n))return Reflect.get(iu,n,r);if(n==="hasOwnProperty")return R_}const a=Reflect.get(t,n,r);return(br(n)?Lm.has(n):I_(n))||(s||_t(t,"get",n),i)?a:He(a)?o&&Vl(n)?a:a.value:Fe(a)?s?Dm(a):Vn(a):a}}class Pm extends Im{constructor(t=!1){super(!1,t)}set(t,n,r,s){let i=t[n];if(!this._isShallow){const l=Vr(i);if(!Ji(rLine truncated
|
||||||
|
* @vue/runtime-core v3.4.29
|
||||||
|
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||||
|
* @license MIT
|
||||||
|
**/function Pn(e,t,n,r){try{return r?e(...r):e()}catch(s){Eo(s,t,n)}}function Mt(e,t,n,r){if(he(e)){const s=Pn(e,t,n,r);return s&&pm(s)&&s.catch(i=>{Eo(i,t,n)}),s}if(ce(e)){const s=[];for(let i=0;i<e.length;i++)s.push(Mt(e[i],t,n,r));return s}}function Eo(e,t,n,r=!0){const s=t?t.vnode:null;if(t){let i=t.parent;const o=t.proxy,a=`https://vuejs.org/error-reference/#runtime-${n}`;for(;i;){const u=i.ec;if(u){for(let c=0;c<u.length;c++)if(u[c](e,o,a)===!1)return}i=i.parent}const l=t.appContext.config.errorHandler;if(l){Un(),Pn(l,null,10,[e,o,a]),Hn();return}}ev(e,n,s,r)}function ev(e,t,n,r=!0){console.error(e)}let Ds=!1,Ba=!1;const st=[];let Yt=0;const jr=[];let An=null,Qn=0;const Vm=Promise.resolve();let Zl=null;function Ms(e){const t=Zl||Vm;return e?t.then(this?e.bind(this):e):t}function tv(e){let t=Yt+1,n=st.length;for(;t<n;){const r=t+n>>>1,s=st[r],i=Fs(s);i<e||i===e&&s.pre?t=r+1:n=r}return t}function ec(e){(!st.length||!st.includes(e,Ds&&e.allowRecurse?Yt+1:Yt))&&(e.id==null?st.push(e):st.splice(tv(e.id),0,e),Bm())}function Bm(){!Ds&&!Ba&&(Ba=!0,Zl=Vm.then(Ym))}function nv(e){const t=st.indexOf(e);t>Yt&&st.splice(t,1)}function rv(e){ce(e)?jr.push(...e):(!An||!An.includes(e,e.allowRecurse?Qn+1:Qn))&&jr.push(e),Bm()}function uu(e,t,n=Ds?Yt+1:0){for(;n<st.length;n++){const r=st[n];if(r&&r.pre){if(e&&r.id!==e.uid)continue;st.splice(n,1),n--,r()}}}function Wm(e){if(jr.length){const t=[...new Set(jr)].sort((n,r)=>Fs(n)-Fs(r));if(jr.length=0,An){An.push(...t);return}for(An=t,Qn=0;Qn<An.length;Qn++){const n=An[Qn];n.active!==!1&&n()}An=null,Qn=0}}const Fs=e=>e.id==null?1/0:e.id,sv=(e,t)=>{const n=Fs(e)-Fs(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Ym(e){Ba=!1,Ds=!0,st.sort(sv);try{for(Yt=0;Yt<st.length;Yt++){const t=st[Yt];t&&t.active!==!1&&Pn(t,null,14)}}finally{Yt=0,st.length=0,Wm(),Ds=!1,Zl=null,(st.length||jr.length)&&Ym()}}function iv(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||ke;let s=n;const i=t.startsWith("update:"),o=i&&t.slice(7);if(o&&o in r){const c=`${o==="modelValue"?"model":o}Modifiers`,{number:f,trim:d}=r[c]||ke;d&&(s=n.map(m=>Ge(m)?m.trim():m)),f&&(s=n.map(ja))}let a,l=r[a=Zo(t)]||r[a=Zo(Xt(t))];!l&&i&&(l=r[a=Zo(rs(t))]),l&&Mt(l,e,6,s);const u=r[a+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,Mt(u,e,6,s)}}function Km(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const i=e.emits;let o={},a=!1;if(!he(e)){const l=u=>{const c=Km(u,t,!0);c&&(a=!0,Ze(o,c))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!i&&!a?(Fe(e)&&r.set(e,null),null):(ce(i)?i.forEach(l=>o[l]=null):Ze(o,i),Fe(e)&&r.set(e,o),o)}function wo(e,t){return!e||!go(t)?!1:(t=t.slice(2).replace(/Once$/,""),we(e,t[0].toLowerCase()+t.slice(1))||we(e,rs(t))||we(e,t))}let ct=null,Ao=null;function Qi(e){const t=ct;return ct=e,Ao=e&&e.type.__scopeId||null,t}function ov(e){Ao=e}function av(){Ao=null}function er(e,t=ct,n){if(!t||e._n)return e;const r=(...s)=>{r._d&&wu(-1);const i=Qi(t);let o;try{o=e(...s)}finally{Qi(i),r._d&&wu(1)}return o};return r._n=!0,r._c=!0,r._d=!0,r}function ta(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[i],slots:o,attrs:a,emit:l,render:u,renderCache:c,props:f,data:d,setupState:m,ctx:h,inheritAttrs:y}=e,v=Qi(e);let w,O;try{if(n.shapeFlag&4){const A=s||r,C=A;w=Wt(u.call(C,A,c,f,m,d,h)),O=a}else{const A=t;w=Wt(A.length>1?A(f,{attrs:a,slots:o,emit:l}):A(f,null)),O=t.props?a:lv(a)}}catch(A){Ts.length=0,Eo(A,e,1),w=ye(dr)}let E=w;if(O&&y!==!1){const A=Object.keys(O),{shapeFlag:C}=E;A.length&&C&7&&(i&&A.some(Ul)&&(O=cv(O,i)),E=Br(E,O,!1,!0))}return n.dirs&&(E=Br(E,null,!1,!0),E.dirs=E.dirs?E.dirs.concat(n.dirs):n.dirs),n.transition&&(E.transition=n.transition),w=E,Qi(v),w}const lv=e=>{let t;for(const n in e)(n==="class"||n==="style"||go(n))&&((t||(t={}))[n]=e[n]);return t},cv=(e,t)=>{const n={};for(const r in e)(!Ul(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function uv(e,t,n){const{props:r,children:s,component:i}=e,{props:o,children:a,patchFlag:l}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?fu(r,o,u):!!o;if(l&8){const c=t.dynamicProps;for(let f=0;f<c.length;f++){const d=c[f];if(o[d]!==r[d]&&!wo(u,d))return!0}}}else return(s||a)&&(!a||!a.$stable)?!0:r===o?!1:r?o?fu(r,o,u):!0:!!o;return!1}function fu(e,t,n){const r=Object.keys(t);if(r.length!==Object.keys(e).length)return!0;for(let s=0;s<r.length;s++){const i=r[s];if(t[i]!==e[i]&&!wo(n,i))return!0}return!1}function fv({vnode:e,parent:t},n){for(;t;){const r=t.subTree;if(r.suspense&&r.suspense.activeBranch===e&&(r.el=e.el),r===e)(e=t.vnode).el=n,t=t.parent;else break}}const dv="components";function tc(e,t){return hv(dv,e,!0,t)||e}const mv=Symbol.for("v-ndc");function hv(e,t,n=!0,r=!1){const s=ct||Je;if(s){const i=s.type;{const a=ib(i,!1);if(a&&(a===t||a===Xt(t)||a===bo(Xt(t))))return i}const o=du(s[e]||i[e],t)||du(s.appContext[e],t);return!o&&r?i:o}}f
Line truncated
|
||||||
|
* @vue/runtime-dom v3.4.29
|
||||||
|
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||||
|
* @license MIT
|
||||||
|
**/const lb="http://www.w3.org/2000/svg",cb="http://www.w3.org/1998/Math/MathML",nn=typeof document<"u"?document:null,Su=nn&&nn.createElement("template"),ub={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?nn.createElementNS(lb,e):t==="mathml"?nn.createElementNS(cb,e):n?nn.createElement(e,{is:n}):nn.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>nn.createTextNode(e),createComment:e=>nn.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>nn.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,i){const o=n?n.previousSibling:t.lastChild;if(s&&(s===i||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===i||!(s=s.nextSibling)););else{Su.innerHTML=r==="svg"?`<svg>${e}</svg>`:r==="mathml"?`<math>${e}</math>`:e;const a=Su.content;if(r==="svg"||r==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},fb=Symbol("_vtc");function db(e,t,n){const r=e[fb];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Cu=Symbol("_vod"),mb=Symbol("_vsh"),hb=Symbol(""),pb=/(^|;)\s*display\s*:/;function gb(e,t,n){const r=e.style,s=Ge(n);let i=!1;if(n&&!s){if(t)if(Ge(t))for(const o of t.split(";")){const a=o.slice(0,o.indexOf(":")).trim();n[a]==null&&Ui(r,a,"")}else for(const o in t)n[o]==null&&Ui(r,o,"");for(const o in n)o==="display"&&(i=!0),Ui(r,o,n[o])}else if(s){if(t!==n){const o=r[hb];o&&(n+=";"+o),r.cssText=n,i=pb.test(n)}}else t&&e.removeAttribute("style");Cu in e&&(e[Cu]=i?r.display:"",e[mb]&&(r.display="none"))}const Nu=/\s*!important$/;function Ui(e,t,n){if(ce(n))n.forEach(r=>Ui(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=_b(e,t);Nu.test(n)?e.setProperty(rs(r),n.replace(Nu,""),"important"):e[r]=n}}const Lu=["Webkit","Moz","ms"],ia={};function _b(e,t){const n=ia[t];if(n)return n;let r=Xt(t);if(r!=="filter"&&r in e)return ia[t]=r;r=bo(r);for(let s=0;s<Lu.length;s++){const i=Lu[s]+r;if(i in e)return ia[t]=i}return t}const Iu="http://www.w3.org/1999/xlink";function Pu(e,t,n,r,s,i=O_(t)){r&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(Iu,t.slice(6,t.length)):e.setAttributeNS(Iu,t,n):n==null||i&&!ym(n)?e.removeAttribute(t):e.setAttribute(t,i?"":String(n))}function vb(e,t,n,r,s,i,o){if(t==="innerHTML"||t==="textContent"){r&&o(r,s,i),e[t]=n??"";return}const a=e.tagName;if(t==="value"&&a!=="PROGRESS"&&!a.includes("-")){const u=a==="OPTION"?e.getAttribute("value")||"":e.value,c=n==null?"":String(n);(u!==c||!("_value"in e))&&(e.value=c),n==null&&e.removeAttribute(t),e._value=n;return}let l=!1;if(n===""||n==null){const u=typeof e[t];u==="boolean"?n=ym(n):n==null&&u==="string"?(n="",l=!0):u==="number"&&(n=0,l=!0)}try{e[t]=n}catch{}l&&e.removeAttribute(t)}function Cr(e,t,n,r){e.addEventListener(t,n,r)}function bb(e,t,n,r){e.removeEventListener(t,n,r)}const Ru=Symbol("_vei");function yb(e,t,n,r,s=null){const i=e[Ru]||(e[Ru]={}),o=i[t];if(r&&o)o.value=r;else{const[a,l]=Eb(t);if(r){const u=i[t]=Tb(r,s);Cr(e,a,u,l)}else o&&(bb(e,a,o,l),i[t]=void 0)}}const xu=/(?:Once|Passive|Capture)$/;function Eb(e){let t;if(xu.test(e)){t={};let r;for(;r=e.match(xu);)e=e.slice(0,e.length-r[0].length),t[r[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):rs(e.slice(2)),t]}let oa=0;const wb=Promise.resolve(),Ab=()=>oa||(wb.then(()=>oa=0),oa=Date.now());function Tb(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Mt(Ob(r,n.value),t,5,[r])};return n.value=e,n.attached=Ab(),n}function Ob(e,t){if(ce(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const ku=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Sb=(e,t,n,r,s,i,o,a,l)=>{const u=s==="svg";t==="class"?db(e,r,u):t==="style"?gb(e,n,r):go(t)?Ul(t)||yb(e,t,n,r,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Cb(e,t,r,u))?(vb(e,t,r,i,o,a,l),(t==="value"||t==="checked"||t==="selected")&&Pu(e,t,r,u,o,t!=="value")):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Pu(e,t,r,u))};function Cb(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&ku(t)&&he(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return ku(t)&&Ge(n)?!1:t in e}const $u=e=>{const t=e.props["onUpdate:modelValue"]||!1;return ce(t)?n=>Di(t,n):t};function Nb(e){e.target.composing=!0}fun
Line truncated
|
||||||
|
* pinia v2.1.7
|
||||||
|
* (c) 2023 Eduardo San Martin Morote
|
||||||
|
* @license MIT
|
||||||
|
*/let gh;const No=e=>gh=e,_h=Symbol();function Ja(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var Ss;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Ss||(Ss={}));function $b(){const e=Bl(!0),t=e.run(()=>ge({}));let n=[],r=[];const s=Xl({install(i){No(s),s._a=i,i.provide(_h,s),i.config.globalProperties.$pinia=s,r.forEach(o=>n.push(o)),r=[]},use(i){return!this._a&&!kb?r.push(i):n.push(i),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return s}const vh=()=>{};function Fu(e,t,n,r=vh){e.push(t);const s=()=>{const i=e.indexOf(t);i>-1&&(e.splice(i,1),r())};return!n&&Am()&&C_(s),s}function Tr(e,...t){e.slice().forEach(n=>{n(...t)})}const Db=e=>e();function Qa(e,t){e instanceof Map&&t instanceof Map&&t.forEach((n,r)=>e.set(r,n)),e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const r=t[n],s=e[n];Ja(s)&&Ja(r)&&e.hasOwnProperty(n)&&!He(r)&&!In(r)?e[n]=Qa(s,r):e[n]=r}return e}const Mb=Symbol();function Fb(e){return!Ja(e)||!e.hasOwnProperty(Mb)}const{assign:wn}=Object;function jb(e){return!!(He(e)&&e.effect)}function Ub(e,t,n,r){const{state:s,actions:i,getters:o}=t,a=n.state.value[e];let l;function u(){a||(n.state.value[e]=s?s():{});const c=J_(n.state.value[e]);return wn(c,i,Object.keys(o||{}).reduce((f,d)=>(f[d]=Xl(ne(()=>{No(n);const m=n._s.get(e);return o[d].call(m,m)})),f),{}))}return l=bh(e,u,t,n,r,!0),l}function bh(e,t,n={},r,s,i){let o;const a=wn({actions:{}},n),l={deep:!0};let u,c,f=[],d=[],m;const h=r.state.value[e];!i&&!h&&(r.state.value[e]={}),ge({});let y;function v($){let P;u=c=!1,typeof $=="function"?($(r.state.value[e]),P={type:Ss.patchFunction,storeId:e,events:m}):(Qa(r.state.value[e],$),P={type:Ss.patchObject,payload:$,storeId:e,events:m});const q=y=Symbol();Ms().then(()=>{y===q&&(u=!0)}),c=!0,Tr(f,P,r.state.value[e])}const w=i?function(){const{state:P}=n,q=P?P():{};this.$patch(ie=>{wn(ie,q)})}:vh;function O(){o.stop(),f=[],d=[],r._s.delete(e)}function E($,P){return function(){No(r);const q=Array.from(arguments),ie=[],Q=[];function le(ee){ie.push(ee)}function je(ee){Q.push(ee)}Tr(d,{args:q,name:$,store:C,after:le,onError:je});let Ce;try{Ce=P.apply(this&&this.$id===e?this:C,q)}catch(ee){throw Tr(Q,ee),ee}return Ce instanceof Promise?Ce.then(ee=>(Tr(ie,ee),ee)).catch(ee=>(Tr(Q,ee),Promise.reject(ee))):(Tr(ie,Ce),Ce)}}const A={_p:r,$id:e,$onAction:Fu.bind(null,d),$patch:v,$reset:w,$subscribe($,P={}){const q=Fu(f,$,P.detached,()=>ie()),ie=o.run(()=>it(()=>r.state.value[e],Q=>{(P.flush==="sync"?c:u)&&$({storeId:e,type:Ss.direct,events:m},Q)},wn({},l,P)));return q},$dispose:O},C=Vn(A);r._s.set(e,C);const I=(r._a&&r._a.runWithContext||Db)(()=>r._e.run(()=>(o=Bl()).run(t)));for(const $ in I){const P=I[$];if(He(P)&&!jb(P)||In(P))i||(h&&Fb(P)&&(He(P)?P.value=h[$]:Qa(P,h[$])),r.state.value[e][$]=P);else if(typeof P=="function"){const q=E($,P);I[$]=q,a.actions[$]=P}}return wn(C,I),wn(Ae(C),I),Object.defineProperty(C,"$state",{get:()=>r.state.value[e],set:$=>{v(P=>{wn(P,$)})}}),r._p.forEach($=>{wn(C,o.run(()=>$({store:C,app:r._a,pinia:r,options:a})))}),h&&i&&n.hydrate&&n.hydrate(C.$state,h),u=!0,c=!0,C}function Hb(e,t,n){let r,s;const i=typeof t=="function";r=e,s=i?n:t;function o(a,l){const u=Pv();return a=a||(u?tt(_h,null):null),a&&No(a),a=gh,a._s.has(r)||(i?bh(r,t,s,a):Ub(r,s,a)),a._s.get(r)}return o.$id=r,o}/*!
|
||||||
|
* shared v9.13.1
|
||||||
|
* (c) 2024 kazuya kawaguchi
|
||||||
|
* Released under the MIT License.
|
||||||
|
*/const to=typeof window<"u",Bn=(e,t=!1)=>t?Symbol.for(e):Symbol(e),Vb=(e,t,n)=>Bb({l:e,k:t,s:n}),Bb=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),Ke=e=>typeof e=="number"&&isFinite(e),Wb=e=>Eh(e)==="[object Date]",xn=e=>Eh(e)==="[object RegExp]",Lo=e=>fe(e)&&Object.keys(e).length===0,nt=Object.assign;let ju;const rn=()=>ju||(ju=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Uu(e){return e.replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}const Yb=Object.prototype.hasOwnProperty;function no(e,t){return Yb.call(e,t)}const De=Array.isArray,Re=e=>typeof e=="function",G=e=>typeof e=="string",ve=e=>typeof e=="boolean",Se=e=>e!==null&&typeof e=="object",Kb=e=>Se(e)&&Re(e.then)&&Re(e.catch),yh=Object.prototype.toString,Eh=e=>yh.call(e),fe=e=>{if(!Se(e))return!1;const t=Object.getPrototypeOf(e);return t===null||t.constructor===Object},zb=e=>e==null?"":De(e)||fe(e)&&e.toString===yh?JSON.stringify(e,null,2):String(e);function Gb(e,t=""){return e.reduce((n,r,s)=>s===0?n+r:n+t+r,"")}function Io(e){let t=e;return()=>++t}function qb(e,t){typeof console<"u"&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}const bi=e=>!Se(e)||De(e);function Hi(e,t){if(bi(e)||bi(t))throw new Error("Invalid value");const n=[{src:e,des:t}];for(;n.length;){const{src:r,des:s}=n.pop();Object.keys(r).forEach(i=>{bi(r[i])||bi(s[i])?s[i]=r[i]:n.push({src:r[i],des:s[i]})})}}/*!
|
||||||
|
* message-compiler v9.13.1
|
||||||
|
* (c) 2024 kazuya kawaguchi
|
||||||
|
* Released under the MIT License.
|
||||||
|
*/function Xb(e,t,n){return{line:e,column:t,offset:n}}function ro(e,t,n){return{start:e,end:t}}const Jb=/\{([0-9a-zA-Z]+)\}/g;function wh(e,...t){return t.length===1&&Qb(t[0])&&(t=t[0]),(!t||!t.hasOwnProperty)&&(t={}),e.replace(Jb,(n,r)=>t.hasOwnProperty(r)?t[r]:"")}const Ah=Object.assign,Hu=e=>typeof e=="string",Qb=e=>e!==null&&typeof e=="object";function Th(e,t=""){return e.reduce((n,r,s)=>s===0?n+r:n+t+r,"")}const ac={USE_MODULO_SYNTAX:1,__EXTEND_POINT__:2},Zb={[ac.USE_MODULO_SYNTAX]:"Use modulo before '{{0}}'."};function ey(e,t,...n){const r=wh(Zb[e],...n||[]),s={message:String(r),code:e};return t&&(s.location=t),s}const oe={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16,__EXTEND_POINT__:17},ty={[oe.EXPECTED_TOKEN]:"Expected token: '{0}'",[oe.INVALID_TOKEN_IN_PLACEHOLDER]:"Invalid token in placeholder: '{0}'",[oe.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]:"Unterminated single quote in placeholder",[oe.UNKNOWN_ESCAPE_SEQUENCE]:"Unknown escape sequence: \\{0}",[oe.INVALID_UNICODE_ESCAPE_SEQUENCE]:"Invalid unicode escape sequence: {0}",[oe.UNBALANCED_CLOSING_BRACE]:"Unbalanced closing brace",[oe.UNTERMINATED_CLOSING_BRACE]:"Unterminated closing brace",[oe.EMPTY_PLACEHOLDER]:"Empty placeholder",[oe.NOT_ALLOW_NEST_PLACEHOLDER]:"Not allowed nest placeholder",[oe.INVALID_LINKED_FORMAT]:"Invalid linked format",[oe.MUST_HAVE_MESSAGES_IN_PLURAL]:"Plural must have messages",[oe.UNEXPECTED_EMPTY_LINKED_MODIFIER]:"Unexpected empty linked modifier",[oe.UNEXPECTED_EMPTY_LINKED_KEY]:"Unexpected empty linked key",[oe.UNEXPECTED_LEXICAL_ANALYSIS]:"Unexpected lexical analysis in token: '{0}'",[oe.UNHANDLED_CODEGEN_NODE_TYPE]:"unhandled codegen node type: '{0}'",[oe.UNHANDLED_MINIFIER_NODE_TYPE]:"unhandled mimifier node type: '{0}'"};function is(e,t,n={}){const{domain:r,messages:s,args:i}=n,o=wh((s||ty)[e]||"",...i||[]),a=new SyntaxError(String(o));return a.code=e,t&&(a.location=t),a.domain=r,a}function ny(e){throw e}const Zt=" ",ry="\r",at=`
|
||||||
|
`,sy="\u2028",iy="\u2029";function oy(e){const t=e;let n=0,r=1,s=1,i=0;const o=I=>t[I]===ry&&t[I+1]===at,a=I=>t[I]===at,l=I=>t[I]===iy,u=I=>t[I]===sy,c=I=>o(I)||a(I)||l(I)||u(I),f=()=>n,d=()=>r,m=()=>s,h=()=>i,y=I=>o(I)||l(I)||u(I)?at:t[I],v=()=>y(n),w=()=>y(n+i);function O(){return i=0,c(n)&&(r++,s=0),o(n)&&n++,n++,s++,t[n]}function E(){return o(n+i)&&i++,i++,t[n+i]}function A(){n=0,r=1,s=1,i=0}function C(I=0){i=I}function S(){const I=n+i;for(;I!==n;)O();i=0}return{index:f,line:d,column:m,peekOffset:h,charAt:y,currentChar:v,currentPeek:w,next:O,peek:E,reset:A,resetPeek:C,skipToPeek:S}}const _n=void 0,ay=".",Vu="'",ly="tokenizer";function cy(e,t={}){const n=t.location!==!1,r=oy(e),s=()=>r.index(),i=()=>Xb(r.line(),r.column(),r.index()),o=i(),a=s(),l={currentType:14,offset:a,startLoc:o,endLoc:o,lastType:14,lastOffset:a,lastStartLoc:o,lastEndLoc:o,braceNest:0,inLinked:!1,text:""},u=()=>l,{onError:c}=t;function f(p,_,T,...M){const K=u();if(_.column+=T,_.offset+=T,c){const U=n?ro(K.startLoc,_):null,L=is(p,U,{domain:ly,args:M});c(L)}}function d(p,_,T){p.endLoc=i(),p.currentType=_;const M={type:_};return n&&(M.loc=ro(p.startLoc,p.endLoc)),T!=null&&(M.value=T),M}const m=p=>d(p,14);function h(p,_){return p.currentChar()===_?(p.next(),_):(f(oe.EXPECTED_TOKEN,i(),0,_),"")}function y(p){let _="";for(;p.currentPeek()===Zt||p.currentPeek()===at;)_+=p.currentPeek(),p.peek();return _}function v(p){const _=y(p);return p.skipToPeek(),_}function w(p){if(p===_n)return!1;const _=p.charCodeAt(0);return _>=97&&_<=122||_>=65&&_<=90||_===95}function O(p){if(p===_n)return!1;const _=p.charCodeAt(0);return _>=48&&_<=57}function E(p,_){const{currentType:T}=_;if(T!==2)return!1;y(p);const M=w(p.currentPeek());return p.resetPeek(),M}function A(p,_){const{currentType:T}=_;if(T!==2)return!1;y(p);const M=p.currentPeek()==="-"?p.peek():p.currentPeek(),K=O(M);return p.resetPeek(),K}function C(p,_){const{currentType:T}=_;if(T!==2)return!1;y(p);const M=p.currentPeek()===Vu;return p.resetPeek(),M}function S(p,_){const{currentType:T}=_;if(T!==8)return!1;y(p);const M=p.currentPeek()===".";return p.resetPeek(),M}function I(p,_){const{currentType:T}=_;if(T!==9)return!1;y(p);const M=w(p.currentPeek());return p.resetPeek(),M}function $(p,_){const{currentType:T}=_;if(!(T===8||T===12))return!1;y(p);const M=p.currentPeek()===":";return p.resetPeek(),M}function P(p,_){const{currentType:T}=_;if(T!==10)return!1;const M=()=>{const U=p.currentPeek();return U==="{"?w(p.peek()):U==="@"||U==="%"||U==="|"||U===":"||U==="."||U===Zt||!U?!1:U===at?(p.peek(),M()):Q(p,!1)},K=M();return p.resetPeek(),K}function q(p){y(p);const _=p.currentPeek()==="|";return p.resetPeek(),_}function ie(p){const _=y(p),T=p.currentPeek()==="%"&&p.peek()==="{";return p.resetPeek(),{isModulo:T,hasSpace:_.length>0}}function Q(p,_=!0){const T=(K=!1,U="",L=!1)=>{const R=p.currentPeek();return R==="{"?U==="%"?!1:K:R==="@"||!R?U==="%"?!0:K:R==="%"?(p.peek(),T(K,"%",!0)):R==="|"?U==="%"||L?!0:!(U===Zt||U===at):R===Zt?(p.peek(),T(!0,Zt,L)):R===at?(p.peek(),T(!0,at,L)):!0},M=T();return _&&p.resetPeek(),M}function le(p,_){const T=p.currentChar();return T===_n?_n:_(T)?(p.next(),T):null}function je(p){const _=p.charCodeAt(0);return _>=97&&_<=122||_>=65&&_<=90||_>=48&&_<=57||_===95||_===36}function Ce(p){return le(p,je)}function ee(p){const _=p.charCodeAt(0);return _>=97&&_<=122||_>=65&&_<=90||_>=48&&_<=57||_===95||_===36||_===45}function ae(p){return le(p,ee)}function de(p){const _=p.charCodeAt(0);return _>=48&&_<=57}function xe(p){return le(p,de)}function pe(p){const _=p.charCodeAt(0);return _>=48&&_<=57||_>=65&&_<=70||_>=97&&_<=102}function Ee(p){return le(p,pe)}function be(p){let _="",T="";for(;_=xe(p);)T+=_;return T}function et(p){v(p);const _=p.currentChar();return _!=="%"&&f(oe.EXPECTED_TOKEN,i(),0,_),p.next(),"%"}function Be(p){let _="";for(;;){const T=p.currentChar();if(T==="{"||T==="}"||T==="@"||T==="|"||!T)break;if(T==="%")if(Q(p))_+=T,p.next();else break;else if(T===Zt||T===at)if(Q(p))_+=T,p.next();else{if(q(p))break;_+=T,p.next()}else _+=T,p.next()}return _}function We(p){v(p);let _="",T="";for(;_=ae(p);)T+=_;return p.currentChar()===_n&&f(oe.UNTERMINATED_CLOSING_BRACE,i(),0),T}function Le(p){v(p);let _="";return p.currentChar()==="-"?(p.next(),_+=`-${be(p)}`):_+=be(p),p.currentChar()===_n&&f(oe.UNTERMINATED_CLOSING_BRACE,i(),0),_}function F(p){return p!==Vu&&p!==at}function Y(p){v(p),h(p,"'");let _="",T="";for(;_=le(p,F);)_==="\\"?T+=W(p):T+=_;const M=p.currentChar();return M===at||M===_n?(f(oe.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,i(),0),M===at&&(p.next(),h(p,"'")),T):(h(p,"'"),T)}function W(p){const _=p.currentChar();switch(_){case"\\":case"'":return p.next(),`\\${_}`;case"u":return J(p,_,4);case"U":return J(p,_,6);default:return f(oe.UNKNOWN_ESCAPE_SEQUENCE,i(),0,_),""}}function J(p,_,T){h(p,_);let M="";for(let K=0;K<T;K++){const U=Ee(p);if(!U){f(oe.INVALID_UNICODE_ESCAPE_SEQUENCE,i(),0,`\\${_}${M}${p.currentChar()}`);break}M+=U}return`\\${_}${M}`}function _e(p){return p!=="{"&&p!=
Line truncated
|
||||||
|
`,o=t.needIndent?t.needIndent:n!=="arrow",a=e.helpers||[],l=by(e,{mode:n,filename:r,sourceMap:s,breakLineCode:i,needIndent:o});l.push(n==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),l.indent(o),a.length>0&&(l.push(`const { ${Th(a.map(f=>`${f}: _${f}`),", ")} } = ctx`),l.newline()),l.push("return "),Yr(l,e),l.deindent(o),l.push("}"),delete e.helpers;const{code:u,map:c}=l.context();return{ast:e,code:u,map:c?c.toJSON():void 0}};function Oy(e,t={}){const n=Ah({},t),r=!!n.jit,s=!!n.minify,i=n.optimize==null?!0:n.optimize,a=my(n).parse(e);return r?(i&&gy(a),s&&Nr(a),{ast:a,code:""}):(py(a,n),Ty(a,n))}/*!
|
||||||
|
* core-base v9.13.1
|
||||||
|
* (c) 2024 kazuya kawaguchi
|
||||||
|
* Released under the MIT License.
|
||||||
|
*/function Sy(){typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(rn().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(rn().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(rn().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}const Wn=[];Wn[0]={w:[0],i:[3,0],"[":[4],o:[7]};Wn[1]={w:[1],".":[2],"[":[4],o:[7]};Wn[2]={w:[2],i:[3,0],0:[3,0]};Wn[3]={i:[3,0],0:[3,0],w:[1,1],".":[2,1],"[":[4,1],o:[7,1]};Wn[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],o:8,l:[4,0]};Wn[5]={"'":[4,0],o:8,l:[5,0]};Wn[6]={'"':[4,0],o:8,l:[6,0]};const Cy=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function Ny(e){return Cy.test(e)}function Ly(e){const t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===n&&(t===34||t===39)?e.slice(1,-1):e}function Iy(e){if(e==null)return"o";switch(e.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return e;case 95:case 36:case 45:return"i";case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"w"}return"i"}function Py(e){const t=e.trim();return e.charAt(0)==="0"&&isNaN(parseInt(e))?!1:Ny(t)?Ly(t):"*"+t}function Ry(e){const t=[];let n=-1,r=0,s=0,i,o,a,l,u,c,f;const d=[];d[0]=()=>{o===void 0?o=a:o+=a},d[1]=()=>{o!==void 0&&(t.push(o),o=void 0)},d[2]=()=>{d[0](),s++},d[3]=()=>{if(s>0)s--,r=4,d[0]();else{if(s=0,o===void 0||(o=Py(o),o===!1))return!1;d[1]()}};function m(){const h=e[n+1];if(r===5&&h==="'"||r===6&&h==='"')return n++,a="\\"+h,d[0](),!0}for(;r!==null;)if(n++,i=e[n],!(i==="\\"&&m())){if(l=Iy(i),f=Wn[r],u=f[l]||f.l||8,u===8||(r=u[0],u[1]!==void 0&&(c=d[u[1]],c&&(a=i,c()===!1))))return;if(r===7)return t}}const Yu=new Map;function xy(e,t){return Se(e)?e[t]:null}function ky(e,t){if(!Se(e))return null;let n=Yu.get(t);if(n||(n=Ry(t),n&&Yu.set(t,n)),!n)return null;const r=n.length;let s=e,i=0;for(;i<r;){const o=s[n[i]];if(o===void 0||Re(s))return null;s=o,i++}return s}const $y=e=>e,Dy=e=>"",My="text",Fy=e=>e.length===0?"":Gb(e),jy=zb;function Ku(e,t){return e=Math.abs(e),t===2?e?e>1?1:0:1:e?Math.min(e,2):0}function Uy(e){const t=Ke(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(Ke(e.named.count)||Ke(e.named.n))?Ke(e.named.count)?e.named.count:Ke(e.named.n)?e.named.n:t:t}function Hy(e,t){t.count||(t.count=e),t.n||(t.n=e)}function Vy(e={}){const t=e.locale,n=Uy(e),r=Se(e.pluralRules)&&G(t)&&Re(e.pluralRules[t])?e.pluralRules[t]:Ku,s=Se(e.pluralRules)&&G(t)&&Re(e.pluralRules[t])?Ku:void 0,i=w=>w[r(n,w.length,s)],o=e.list||[],a=w=>o[w],l=e.named||{};Ke(e.pluralIndex)&&Hy(n,l);const u=w=>l[w];function c(w){const O=Re(e.messages)?e.messages(w):Se(e.messages)?e.messages[w]:!1;return O||(e.parent?e.parent.message(w):Dy)}const f=w=>e.modifiers?e.modifiers[w]:$y,d=fe(e.processor)&&Re(e.processor.normalize)?e.processor.normalize:Fy,m=fe(e.processor)&&Re(e.processor.interpolate)?e.processor.interpolate:jy,h=fe(e.processor)&&G(e.processor.type)?e.processor.type:My,v={list:a,named:u,plural:i,linked:(w,...O)=>{const[E,A]=O;let C="text",S="";O.length===1?Se(E)?(S=E.modifier||S,C=E.type||C):G(E)&&(S=E||S):O.length===2&&(G(E)&&(S=E||S),G(A)&&(C=A||C));const I=c(w)(v),$=C==="vnode"&&De(I)&&S?I[0]:I;return S?f(S)($,C):$},message:c,type:h,interpolate:m,normalize:d,values:nt({},o,l)};return v}let Us=null;function By(e){Us=e}function Wy(e,t,n){Us&&Us.emit("i18n:init",{timestamp:Date.now(),i18n:e,version:t,meta:n})}const Yy=Ky("function:translate");function Ky(e){return t=>Us&&Us.emit(e,t)}const Oh=ac.__EXTEND_POINT__,Xn=Io(Oh),zy={NOT_FOUND_KEY:Oh,FALLBACK_TO_TRANSLATE:Xn(),CANNOT_FORMAT_NUMBER:Xn(),FALLBACK_TO_NUMBER_FORMAT:Xn(),CANNOT_FORMAT_DATE:Xn(),FALLBACK_TO_DATE_FORMAT:Xn(),EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:Xn(),__EXTEND_POINT__:Xn()},Sh=oe.__EXTEND_POINT__,Jn=Io(Sh),$t={INVALID_ARGUMENT:Sh,INVALID_DATE_ARGUMENT:Jn(),INVALID_ISO_DATE_ARGUMENT:Jn(),NOT_SUPPORT_NON_STRING_MESSAGE:Jn(),NOT_SUPPORT_LOCALE_PROMISE_VALUE:Jn(),NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:Jn(),NOT_SUPPORT_LOCALE_TYPE:Jn(),__EXTEND_POINT__:Jn()};function Kt(e){return is(e,null,void 0)}function cc(e,t){return t.locale!=null?zu(t.locale):zu(e.locale)}let la;function zu(e){if(G(e))return e;if(Re(e)){if(e.resolvedOnce&&la!=null)return la;if(e.constructor.name==="Function"){const t=e();if(Kb(t))throw Kt($t.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return la=t}else throw Kt($t.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw Kt($t.NOT_SUPPORT_LOCALE_TYPE)}function Gy(e,t,n){return[...new Set([n,...De(t)?t:Se(t)?Object.keys(t):G(t)?[t]:[n]])]}function Ch(e,t,n){const r=G(n)?n:Kr,s=e;s.__localeChainCache||(s.__localeChainCache=new Map);let i=s.__localeChainCache.get(r);if(!i){i=[];let o=[n];for(;De(o);)o=Gu(i,o,t);const a=De(t)||!fe(t)?t:t.default?t.default:null;o=G(a)?[a]:a,De(o)&&Gu(i,o,!1),s.__localeChainCache.set(r,i)}return i}function Gu(e,t,n){let r=!0;for(let s=0;s<t.length&&ve(r);s++){const i=t[s];G(i)&&(r=qy(e,t[s],n))}return r}function qy(e,t,n){let r;const s=t.split("-");do{const i=s.join("-");r=Xy(e,i,n),s.splice(-1,1)}while(s.length&&r===!0);return r}function Xy(e,t,n){let rLine truncated
|
||||||
|
* vue-i18n v9.13.1
|
||||||
|
* (c) 2024 kazuya kawaguchi
|
||||||
|
* Released under the MIT License.
|
||||||
|
*/const hE="9.13.1";function pE(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(rn().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(rn().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(rn().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(rn().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(rn().__INTLIFY_PROD_DEVTOOLS__=!1)}const jh=zy.__EXTEND_POINT__,en=Io(jh);en(),en(),en(),en(),en(),en(),en(),en(),en();const Uh=$t.__EXTEND_POINT__,dt=Io(Uh),ze={UNEXPECTED_RETURN_TYPE:Uh,INVALID_ARGUMENT:dt(),MUST_BE_CALL_SETUP_TOP:dt(),NOT_INSTALLED:dt(),NOT_AVAILABLE_IN_LEGACY_MODE:dt(),REQUIRED_VALUE:dt(),INVALID_VALUE:dt(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:dt(),NOT_INSTALLED_WITH_PROVIDE:dt(),UNEXPECTED_ERROR:dt(),NOT_COMPATIBLE_LEGACY_VUE_I18N:dt(),BRIDGE_SUPPORT_VUE_2_ONLY:dt(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:dt(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:dt(),__EXTEND_POINT__:dt()};function Qe(e,...t){return is(e,null,void 0)}const rl=Bn("__translateVNode"),sl=Bn("__datetimeParts"),il=Bn("__numberParts"),Hh=Bn("__setPluralRules"),Vh=Bn("__injectWithOption"),ol=Bn("__dispose");function Hs(e){if(!Se(e))return e;for(const t in e)if(no(e,t))if(!t.includes("."))Se(e[t])&&Hs(e[t]);else{const n=t.split("."),r=n.length-1;let s=e,i=!1;for(let o=0;o<r;o++){if(n[o]in s||(s[n[o]]={}),!Se(s[n[o]])){i=!0;break}s=s[n[o]]}i||(s[n[r]]=e[t],delete e[t]),Se(s[n[r]])&&Hs(s[n[r]])}return e}function Ro(e,t){const{messages:n,__i18n:r,messageResolver:s,flatJson:i}=t,o=fe(n)?n:De(r)?{}:{[e]:{}};if(De(r)&&r.forEach(a=>{if("locale"in a&&"resource"in a){const{locale:l,resource:u}=a;l?(o[l]=o[l]||{},Hi(u,o[l])):Hi(u,o)}else G(a)&&Hi(JSON.parse(a),o)}),s==null&&i)for(const a in o)no(o,a)&&Hs(o[a]);return o}function Bh(e){return e.type}function Wh(e,t,n){let r=Se(t.messages)?t.messages:{};"__i18nGlobal"in n&&(r=Ro(e.locale.value,{messages:r,__i18n:n.__i18nGlobal}));const s=Object.keys(r);s.length&&s.forEach(i=>{e.mergeLocaleMessage(i,r[i])});{if(Se(t.datetimeFormats)){const i=Object.keys(t.datetimeFormats);i.length&&i.forEach(o=>{e.mergeDateTimeFormat(o,t.datetimeFormats[o])})}if(Se(t.numberFormats)){const i=Object.keys(t.numberFormats);i.length&&i.forEach(o=>{e.mergeNumberFormat(o,t.numberFormats[o])})}}}function lf(e){return ye(Js,null,e,0)}const cf="__INTLIFY_META__",uf=()=>[],gE=()=>!1;let ff=0;function df(e){return(t,n,r,s)=>e(n,r,Wr()||void 0,s)}const _E=()=>{const e=Wr();let t=null;return e&&(t=Bh(e)[cf])?{[cf]:t}:null};function fc(e={},t){const{__root:n,__injectWithOption:r}=e,s=n===void 0,i=e.flatJson,o=to?ge:Ql,a=!!e.translateExistCompatible;let l=ve(e.inheritLocale)?e.inheritLocale:!0;const u=o(n&&l?n.locale.value:G(e.locale)?e.locale:Kr),c=o(n&&l?n.fallbackLocale.value:G(e.fallbackLocale)||De(e.fallbackLocale)||fe(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:u.value),f=o(Ro(u.value,e)),d=o(fe(e.datetimeFormats)?e.datetimeFormats:{[u.value]:{}}),m=o(fe(e.numberFormats)?e.numberFormats:{[u.value]:{}});let h=n?n.missingWarn:ve(e.missingWarn)||xn(e.missingWarn)?e.missingWarn:!0,y=n?n.fallbackWarn:ve(e.fallbackWarn)||xn(e.fallbackWarn)?e.fallbackWarn:!0,v=n?n.fallbackRoot:ve(e.fallbackRoot)?e.fallbackRoot:!0,w=!!e.fallbackFormat,O=Re(e.missing)?e.missing:null,E=Re(e.missing)?df(e.missing):null,A=Re(e.postTranslation)?e.postTranslation:null,C=n?n.warnHtmlMessage:ve(e.warnHtmlMessage)?e.warnHtmlMessage:!0,S=!!e.escapeParameter;const I=n?n.modifiers:fe(e.modifiers)?e.modifiers:{};let $=e.pluralRules||n&&n.pluralRules,P;P=(()=>{s&&Qu(null);const L={version:hE,locale:u.value,fallbackLocale:c.value,messages:f.value,modifiers:I,pluralRules:$,missing:E===null?void 0:E,missingWarn:h,fallbackWarn:y,fallbackFormat:w,unresolving:!0,postTranslation:A===null?void 0:A,warnHtmlMessage:C,escapeParameter:S,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};L.datetimeFormats=d.value,L.numberFormats=m.value,L.__datetimeFormatters=fe(P)?P.__datetimeFormatters:void 0,L.__numberFormatters=fe(P)?P.__numberFormatters:void 0;const R=sE(L);return s&&Qu(R),R})(),hs(P,u.value,c.value);function ie(){return[u.value,c.value,f.value,d.value,m.value]}const Q=ne({get:()=>u.value,set:L=>{u.value=L,P.locale=u.value}}),le=ne({get:()=>c.value,set:L=>{c.value=L,P.fallbackLocale=c.value,hs(P,u.value,L)}}),je=ne(()=>f.value),Ce=ne(()=>d.value),ee=ne(()=>m.value);function ae(){return Re(A)?A:null}function de(L){A=L,P.postTranslation=L}function xe(){return O}function pe(L){L!==null&&(E=df(L)),O=L,P.missing=E}const Ee=(L,R,te,se,Pe,rt)=>{ie();let vt;try{__INTLIFY_PROD_DEVTOOLS__,s||(P.fallbackContext=n?rE():void 0),vt=L(P)}finally{__INTLIFY_PROD_DEVTOOLS__,s||(P.fallbackContext=void 0)}if(te!=="translate exists"&&Ke(vt)&&vt===Po||te==="translate exists"&&!vt){const[di,Ar]=R();return n&&v?se(n):Pe(di)}else{if(rt(vt))return vt;throw Qe(ze.UNEXPECTED_RETURN_TYPE)}};function be(...L){return Ee(RLine truncated
|
||||||
|
* vue-router v4.3.3
|
||||||
|
* (c) 2024 Eduardo San Martin Morote
|
||||||
|
* @license MIT
|
||||||
|
*/const Lr=typeof document<"u";function UE(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const Ne=Object.assign;function ua(e,t){const n={};for(const r in t){const s=t[r];n[r]=jt(s)?s.map(e):e(s)}return n}const Cs=()=>{},jt=Array.isArray,zh=/#/g,HE=/&/g,VE=/\//g,BE=/=/g,WE=/\?/g,Gh=/\+/g,YE=/%5B/g,KE=/%5D/g,qh=/%5E/g,zE=/%60/g,Xh=/%7B/g,GE=/%7C/g,Jh=/%7D/g,qE=/%20/g;function mc(e){return encodeURI(""+e).replace(GE,"|").replace(YE,"[").replace(KE,"]")}function XE(e){return mc(e).replace(Xh,"{").replace(Jh,"}").replace(qh,"^")}function ll(e){return mc(e).replace(Gh,"%2B").replace(qE,"+").replace(zh,"%23").replace(HE,"%26").replace(zE,"`").replace(Xh,"{").replace(Jh,"}").replace(qh,"^")}function JE(e){return ll(e).replace(BE,"%3D")}function QE(e){return mc(e).replace(zh,"%23").replace(WE,"%3F")}function ZE(e){return e==null?"":QE(e).replace(VE,"%2F")}function Vs(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const e1=/\/$/,t1=e=>e.replace(e1,"");function fa(e,t,n="/"){let r,s={},i="",o="";const a=t.indexOf("#");let l=t.indexOf("?");return a<l&&a>=0&&(l=-1),l>-1&&(r=t.slice(0,l),i=t.slice(l+1,a>-1?a:t.length),s=e(i)),a>-1&&(r=r||t.slice(0,a),o=t.slice(a,t.length)),r=i1(r??t,n),{fullPath:r+(i&&"?")+i+o,path:r,query:s,hash:Vs(o)}}function n1(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function yf(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function r1(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&Gr(t.matched[r],n.matched[s])&&Qh(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Gr(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Qh(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!s1(e[n],t[n]))return!1;return!0}function s1(e,t){return jt(e)?Ef(e,t):jt(t)?Ef(t,e):e===t}function Ef(e,t){return jt(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function i1(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let i=n.length-1,o,a;for(o=0;o<r.length;o++)if(a=r[o],a!==".")if(a==="..")i>1&&i--;else break;return n.slice(0,i).join("/")+"/"+r.slice(o).join("/")}var Bs;(function(e){e.pop="pop",e.push="push"})(Bs||(Bs={}));var Ns;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Ns||(Ns={}));function o1(e){if(!e)if(Lr){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),t1(e)}const a1=/^[^#]+#/;function l1(e,t){return e.replace(a1,"#")+t}function c1(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const xo=()=>({left:window.scrollX,top:window.scrollY});function u1(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=c1(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function wf(e,t){return(history.state?history.state.position-t:-1)+e}const cl=new Map;function f1(e,t){cl.set(e,t)}function d1(e){const t=cl.get(e);return cl.delete(e),t}let m1=()=>location.protocol+"//"+location.host;function Zh(e,t){const{pathname:n,search:r,hash:s}=t,i=e.indexOf("#");if(i>-1){let a=s.includes(e.slice(i))?e.slice(i).length:1,l=s.slice(a);return l[0]!=="/"&&(l="/"+l),yf(l,"")}return yf(n,e)+r+s}function h1(e,t,n,r){let s=[],i=[],o=null;const a=({state:d})=>{const m=Zh(e,location),h=n.value,y=t.value;let v=0;if(d){if(n.value=m,t.value=d,o&&o===h){o=null;return}v=y?d.position-y.position:0}else r(m);s.forEach(w=>{w(n.value,h,{delta:v,type:Bs.pop,direction:v?v>0?Ns.forward:Ns.back:Ns.unknown})})};function l(){o=n.value}function u(d){s.push(d);const m=()=>{const h=s.indexOf(d);h>-1&&s.splice(h,1)};return i.push(m),m}function c(){const{history:d}=window;d.state&&d.replaceState(Ne({},d.state,{scroll:xo()}),"")}function f(){for(const d of i)d();i=[],window.removeEventListener("popstate",a),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",a),window.addEventListener("beforeunload",c,{passive:!0}),{pauseListeners:l,listen:u,destroy:f}}function Af(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?xo():null}}function p1(e){const{history:t,location:n}=window,r={value:Zh(e,n)},s={value:t.state};s.value||i(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(l,u,c){const f=e.indexOf("#"),d=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+l:m1()+e+l;try{t[c?"replaceState":"pushState"](u,"",d),s.value=u}catch(m){console.error(m),n[c?"replace":"assignLine truncated
|
||||||
|
`).forEach(function(o){s=o.indexOf(":"),n=o.substring(0,s).trim().toLowerCase(),r=o.substring(s+1).trim(),!(!n||t[n]&&cw[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},Bf=Symbol("internals");function gs(e){return e&&String(e).trim().toLowerCase()}function Bi(e){return e===!1||e==null?e:x.isArray(e)?e.map(Bi):String(e)}function fw(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const dw=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function pa(e,t,n,r,s){if(x.isFunction(r))return r.call(this,t,n);if(s&&(t=n),!!x.isString(t)){if(x.isString(r))return t.indexOf(r)!==-1;if(x.isRegExp(r))return r.test(t)}}function mw(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function hw(e,t){const n=x.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(s,i,o){return this[r].call(this,t,s,i,o)},configurable:!0})})}class gt{constructor(t){t&&this.set(t)}set(t,n,r){const s=this;function i(a,l,u){const c=gs(l);if(!c)throw new Error("header name must be a non-empty string");const f=x.findKey(s,c);(!f||s[f]===void 0||u===!0||u===void 0&&s[f]!==!1)&&(s[f||l]=Bi(a))}const o=(a,l)=>x.forEach(a,(u,c)=>i(u,c,l));if(x.isPlainObject(t)||t instanceof this.constructor)o(t,n);else if(x.isString(t)&&(t=t.trim())&&!dw(t))o(uw(t),n);else if(x.isHeaders(t))for(const[a,l]of t.entries())i(l,a,r);else t!=null&&i(n,t,r);return this}get(t,n){if(t=gs(t),t){const r=x.findKey(this,t);if(r){const s=this[r];if(!n)return s;if(n===!0)return fw(s);if(x.isFunction(n))return n.call(this,s,r);if(x.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=gs(t),t){const r=x.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||pa(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let s=!1;function i(o){if(o=gs(o),o){const a=x.findKey(r,o);a&&(!n||pa(r,r[a],a,n))&&(delete r[a],s=!0)}}return x.isArray(t)?t.forEach(i):i(t),s}clear(t){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const i=n[r];(!t||pa(this,this[i],i,t,!0))&&(delete this[i],s=!0)}return s}normalize(t){const n=this,r={};return x.forEach(this,(s,i)=>{const o=x.findKey(r,i);if(o){n[o]=Bi(s),delete n[i];return}const a=t?mw(i):String(i).trim();a!==i&&delete n[i],n[a]=Bi(s),r[a]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return x.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=t&&x.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(`
|
||||||
|
`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(s=>r.set(s)),r}static accessor(t){const r=(this[Bf]=this[Bf]={accessors:{}}).accessors,s=this.prototype;function i(o){const a=gs(o);r[a]||(hw(s,o),r[a]=!0)}return x.isArray(t)?t.forEach(i):i(t),this}}gt.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);x.reduceDescriptors(gt.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});x.freezeMethods(gt);function ga(e,t){const n=this||ti,r=t||n,s=gt.from(r.headers);let i=r.data;return x.forEach(e,function(a){i=a.call(n,i,s.normalize(),t?t.status:void 0)}),s.normalize(),i}function Ep(e){return!!(e&&e.__CANCEL__)}function as(e,t,n){me.call(this,e??"canceled",me.ERR_CANCELED,t,n),this.name="CanceledError"}x.inherits(as,me,{__CANCEL__:!0});function wp(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new me("Request failed with status code "+n.status,[me.ERR_BAD_REQUEST,me.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function pw(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function gw(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,i=0,o;return t=t!==void 0?t:1e3,function(l){const u=Date.now(),c=r[i];o||(o=u),n[s]=l,r[s]=u;let f=i,d=0;for(;f!==s;)d+=n[f++],f=f%e;if(s=(s+1)%e,s===i&&(i=(i+1)%e),u-o<t)return;const m=c&&u-c;return m?Math.round(d*1e3/m):void 0}}function _w(e,t){let n=0,r=1e3/t,s,i;const o=(u,c=Date.now())=>{n=c,s=null,i&&(clearTimeout(i),i=null),e.apply(null,u)};return[(...u)=>{const c=Date.now(),f=c-n;f>=r?o(u,c):(s=u,i||(i=setTimeout(()=>{i=null,o(s)},r-f)))},()=>s&&o(s)]}const so=(e,t,n=3)=>{let r=0;const s=gw(50,250);return _w(i=>{const o=i.loaded,a=i.lengthComputable?i.total:void 0,l=o-r,u=s(l),c=o<=a;r=o;const f={loaded:o,total:a,progress:a?o/a:void 0,bytes:l,rate:u||void 0,estimated:u&&a&&c?(a-o)/u:void 0,event:i,lengthComputable:a!=null,[t?"download":"upload"]:!0};e(f)},n)},Wf=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},Yf=e=>(...t)=>x.asap(()=>e(...t)),vw=Ft.hasStandardBrowserEnv?function(){const t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");let r;function s(i){let o=i;return t&&(n.setAttribute("href",o),o=n.href),n.setAttribute("href",o),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:n.pathname.charAt(0)==="/"?n.pathname:"/"+n.pathname}}return r=s(window.location.href),function(o){const a=x.isString(o)?s(o):o;return a.protocol===r.protocol&&a.host===r.host}}():function(){return function(){return!0}}(),bw=Ft.hasStandardBrowserEnv?{write(e,t,n,r,s,i){const o=[e+"="+encodeURIComponent(t)];x.isNumber(n)&&o.push("expires="+new Date(n).toGMTString()),x.isString(r)&&o.push("path="+r),x.isString(s)&&o.push("domain="+s),i===!0&&o.push("secure"),document.cookie=o.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function yw(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function Ew(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function Ap(e,t){return e&&!yw(t)?Ew(e,t):t}const Kf=e=>e instanceof gt?{...e}:e;function mr(e,t){t=t||{};const n={};function r(u,c,f){return x.isPlainObject(u)&&x.isPlainObject(c)?x.merge.call({caseless:f},u,c):x.isPlainObject(c)?x.merge({},c):x.isArray(c)?c.slice():c}function s(u,c,f){if(x.isUndefined(c)){if(!x.isUndefined(u))return r(void 0,u,f)}else return r(u,c,f)}function i(u,c){if(!x.isUndefined(c))return r(void 0,c)}function o(u,c){if(x.isUndefined(c)){if(!x.isUndefined(u))return r(void 0,u)}else return r(void 0,c)}function a(u,c,f){if(f in t)return r(u,c);if(f in e)return r(void 0,u)}const l={url:i,method:i,data:i,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:a,headers:(u,c)=>s(Kf(u),Kf(c),!0)};return x.forEach(Object.keys(Object.assign({},e,t)),function(c){const f=l[c]||s,d=f(e[c],t[c],c);x.isUndefined(d)&&f!==a||(n[c]=d)}),n}const Tp=e=>{const t=mr({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:i,headers:o,auth:a}=t;t.headers=o=gt.from(o),t.url=vp(Ap(t.baseURL,t.url),e.params,e.paramsSerializer),a&&o.set("Authorization","Basic "+btoa((a.username||"")+":"+(a.password?unescape(encodeURIComponent(a.password)):"")));let l;if(x.isFormD
Line truncated
|
||||||
|
`+i.map(qf).join(`
|
||||||
|
`):" "+qf(i[0]):"as no adapter specified";throw new me("There is no suitable adapter to dispatch the request "+o,"ERR_NOT_SUPPORT")}return r},adapters:pl};function _a(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new as(null,e)}function Xf(e){return _a(e),e.headers=gt.from(e.headers),e.data=ga.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Cp.getAdapter(e.adapter||ti.adapter)(e).then(function(r){return _a(e),r.data=ga.call(e,e.transformResponse,r),r.headers=gt.from(r.headers),r},function(r){return Ep(r)||(_a(e),r&&r.response&&(r.response.data=ga.call(e,e.transformResponse,r.response),r.response.headers=gt.from(r.response.headers))),Promise.reject(r)})}const Np="1.7.3",vc={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{vc[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const Jf={};vc.transitional=function(t,n,r){function s(i,o){return"[Axios v"+Np+"] Transitional option '"+i+"'"+o+(r?". "+r:"")}return(i,o,a)=>{if(t===!1)throw new me(s(o," has been removed"+(n?" in "+n:"")),me.ERR_DEPRECATED);return n&&!Jf[o]&&(Jf[o]=!0,console.warn(s(o," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(i,o,a):!0}};function Rw(e,t,n){if(typeof e!="object")throw new me("options must be an object",me.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let s=r.length;for(;s-- >0;){const i=r[s],o=t[i];if(o){const a=e[i],l=a===void 0||o(a,i,e);if(l!==!0)throw new me("option "+i+" must be "+l,me.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new me("Unknown option "+i,me.ERR_BAD_OPTION)}}const gl={assertOptions:Rw,validators:vc},bn=gl.validators;class ur{constructor(t){this.defaults=t,this.interceptors={request:new Vf,response:new Vf}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let s;Error.captureStackTrace?Error.captureStackTrace(s={}):s=new Error;const i=s.stack?s.stack.replace(/^.+\n/,""):"";try{r.stack?i&&!String(r.stack).endsWith(i.replace(/^.+\n.+\n/,""))&&(r.stack+=`
|
||||||
|
`+i):r.stack=i}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=mr(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:i}=n;r!==void 0&&gl.assertOptions(r,{silentJSONParsing:bn.transitional(bn.boolean),forcedJSONParsing:bn.transitional(bn.boolean),clarifyTimeoutError:bn.transitional(bn.boolean)},!1),s!=null&&(x.isFunction(s)?n.paramsSerializer={serialize:s}:gl.assertOptions(s,{encode:bn.function,serialize:bn.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let o=i&&x.merge(i.common,i[n.method]);i&&x.forEach(["delete","get","head","post","put","patch","common"],h=>{delete i[h]}),n.headers=gt.concat(o,i);const a=[];let l=!0;this.interceptors.request.forEach(function(y){typeof y.runWhen=="function"&&y.runWhen(n)===!1||(l=l&&y.synchronous,a.unshift(y.fulfilled,y.rejected))});const u=[];this.interceptors.response.forEach(function(y){u.push(y.fulfilled,y.rejected)});let c,f=0,d;if(!l){const h=[Xf.bind(this),void 0];for(h.unshift.apply(h,a),h.push.apply(h,u),d=h.length,c=Promise.resolve(n);f<d;)c=c.then(h[f++],h[f++]);return c}d=a.length;let m=n;for(f=0;f<d;){const h=a[f++],y=a[f++];try{m=h(m)}catch(v){y.call(this,v);break}}try{c=Xf.call(this,m)}catch(h){return Promise.reject(h)}for(f=0,d=u.length;f<d;)c=c.then(u[f++],u[f++]);return c}getUri(t){t=mr(this.defaults,t);const n=Ap(t.baseURL,t.url);return vp(n,t.params,t.paramsSerializer)}}x.forEach(["delete","get","head","options"],function(t){ur.prototype[t]=function(n,r){return this.request(mr(r||{},{method:t,url:n,data:(r||{}).data}))}});x.forEach(["post","put","patch"],function(t){function n(r){return function(i,o,a){return this.request(mr(a||{},{method:t,headers:r?{"Content-Type":"multipart/form-data"}:{},url:i,data:o}))}}ur.prototype[t]=n(),ur.prototype[t+"Form"]=n(!0)});class bc{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(i){n=i});const r=this;this.promise.then(s=>{if(!r._listeners)return;let i=r._listeners.length;for(;i-- >0;)r._listeners[i](s);r._listeners=null}),this.promise.then=s=>{let i;const o=new Promise(a=>{r.subscribe(a),i=a}).then(s);return o.cancel=function(){r.unsubscribe(i)},o},t(function(i,o,a){r.reason||(r.reason=new as(i,o,a),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}static source(){let t;return{token:new bc(function(s){t=s}),cancel:t}}}function xw(e){return function(n){return e.apply(null,n)}}function kw(e){return x.isObject(e)&&e.isAxiosError===!0}const _l={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(_l).forEach(([e,t])=>{_l[t]=e});function Lp(e){const t=new ur(e),n=op(ur.prototype.request,t);return x.extend(n,ur.prototype,t,{allOwnKeys:!0}),x.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return Lp(mr(e,s))},n}const Ue=Lp(ti);Ue.Axios=ur;Ue.CanceledError=as;Ue.CancelToken=bc;Ue.isCancel=Ep;Ue.VERSION=Np;Ue.toFormData=jo;Ue.AxiosError=me;Ue.Cancel=Ue.CanceledError;Ue.all=function(t){return Promise.all(t)};Ue.spread=xw;Ue.isAxiosError=kw;Ue.mergeConfig=mr;Ue.AxiosHeaders=gt;Ue.formToJSON=e=>yp(x.isHTMLForm(e)?new FormData(e):e);Ue.getAdapter=Cp.getAdapter;Ue.HttpStatusCode=_l;Ue.default=Ue;class $w{signupUser(t){return new Promise((n,r)=>{Ue.post(`${Is.API_BASE_URL}/auth/signup`,t,{withCredentials:!0}).then(s=>{n(s.data)}).catch(s=>{r(s)})})}loginUser(t){return new Promise((n,r)=>{Ue.post(`${Is.API_BASE_URL}/auth/login`,t,{withCredentials:!0}).then(s=>{n(s)}).catch(s=>{r(s)})})}logoutUser(){return new Promise((t,n)=>{Ue.post(`${Is.API_BASE_URL}/auth/logout`,null,{withCredentials:!0}).then(r=>{t
Line truncated
|
||||||
|
* Bootstrap v5.3.3 (https://getbootstrap.com/)
|
||||||
|
* Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||||
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||||
|
*/const yn=new Map,va={set(e,t,n){yn.has(e)||yn.set(e,new Map);const r=yn.get(e);if(!r.has(t)&&r.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(r.keys())[0]}.`);return}r.set(t,n)},get(e,t){return yn.has(e)&&yn.get(e).get(t)||null},remove(e,t){if(!yn.has(e))return;const n=yn.get(e);n.delete(t),n.size===0&&yn.delete(e)}},DA=1e6,MA=1e3,El="transitionend",tg=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(t,n)=>`#${CSS.escape(n)}`)),e),FA=e=>e==null?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),jA=e=>{do e+=Math.floor(Math.random()*DA);while(document.getElementById(e));return e},UA=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const r=Number.parseFloat(t),s=Number.parseFloat(n);return!r&&!s?0:(t=t.split(",")[0],n=n.split(",")[0],(Number.parseFloat(t)+Number.parseFloat(n))*MA)},ng=e=>{e.dispatchEvent(new Event(El))},an=e=>!e||typeof e!="object"?!1:(typeof e.jquery<"u"&&(e=e[0]),typeof e.nodeType<"u"),kn=e=>an(e)?e.jquery?e[0]:e:typeof e=="string"&&e.length>0?document.querySelector(tg(e)):null,cs=e=>{if(!an(e)||e.getClientRects().length===0)return!1;const t=getComputedStyle(e).getPropertyValue("visibility")==="visible",n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const r=e.closest("summary");if(r&&r.parentNode!==n||r===null)return!1}return t},$n=e=>!e||e.nodeType!==Node.ELEMENT_NODE||e.classList.contains("disabled")?!0:typeof e.disabled<"u"?e.disabled:e.hasAttribute("disabled")&&e.getAttribute("disabled")!=="false",rg=e=>{if(!document.documentElement.attachShadow)return null;if(typeof e.getRootNode=="function"){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?rg(e.parentNode):null},ao=()=>{},ri=e=>{e.offsetHeight},sg=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,ba=[],HA=e=>{document.readyState==="loading"?(ba.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of ba)t()}),ba.push(e)):e()},It=()=>document.documentElement.dir==="rtl",Rt=e=>{HA(()=>{const t=sg();if(t){const n=e.NAME,r=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=()=>(t.fn[n]=r,e.jQueryInterface)}})},pt=(e,t=[],n=e)=>typeof e=="function"?e(...t):n,ig=(e,t,n=!0)=>{if(!n){pt(e);return}const s=UA(t)+5;let i=!1;const o=({target:a})=>{a===t&&(i=!0,t.removeEventListener(El,o),pt(e))};t.addEventListener(El,o),setTimeout(()=>{i||ng(t)},s)},kc=(e,t,n,r)=>{const s=e.length;let i=e.indexOf(t);return i===-1?!n&&r?e[s-1]:e[0]:(i+=n?1:-1,r&&(i=(i+s)%s),e[Math.max(0,Math.min(i,s-1))])},VA=/[^.]*(?=\..*)\.|.*/,BA=/\..*/,WA=/::\d+$/,ya={};let od=1;const og={mouseenter:"mouseover",mouseleave:"mouseout"},YA=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function ag(e,t){return t&&`${t}::${od++}`||e.uidEvent||od++}function lg(e){const t=ag(e);return e.uidEvent=t,ya[t]=ya[t]||{},ya[t]}function KA(e,t){return function n(r){return $c(r,{delegateTarget:e}),n.oneOff&&H.off(e,r.type,t),t.apply(e,[r])}}function zA(e,t,n){return function r(s){const i=e.querySelectorAll(t);for(let{target:o}=s;o&&o!==this;o=o.parentNode)for(const a of i)if(a===o)return $c(s,{delegateTarget:o}),r.oneOff&&H.off(e,s.type,t,n),n.apply(o,[s])}}function cg(e,t,n=null){return Object.values(e).find(r=>r.callable===t&&r.delegationSelector===n)}function ug(e,t,n){const r=typeof t=="string",s=r?n:t||n;let i=fg(e);return YA.has(i)||(i=e),[r,s,i]}function ad(e,t,n,r,s){if(typeof t!="string"||!e)return;let[i,o,a]=ug(t,n,r);t in og&&(o=(h=>function(y){if(!y.relatedTarget||y.relatedTarget!==y.delegateTarget&&!y.delegateTarget.contains(y.relatedTarget))return h.call(this,y)})(o));const l=lg(e),u=l[a]||(l[a]={}),c=cg(u,o,i?n:null);if(c){c.oneOff=c.oneOff&&s;return}const f=ag(o,t.replace(VA,"")),d=i?zA(e,n,o):KA(e,o);d.delegationSelector=i?n:null,d.callable=o,d.oneOff=s,d.uidEvent=f,u[f]=d,e.addEventListener(a,d,i)}function wl(e,t,n,r,s){const i=cg(t[n],r,s);i&&(e.removeEventListener(n,i,!!s),delete t[n][i.uidEvent])}function GA(e,t,n,r){const s=t[n]||{};for(const[i,o]of Object.entries(s))i.includes(r)&&wl(e,t,n,o.callable,o.delegationSelector)}function fg(e){return e=e.replace(BA,""),og[e]||e}const H={on(e,t,n,r){ad(e,t,n,r,!1)},one(e,t,n,r){ad(e,t,n,r,!0)},off(e,t,n,r){if(typeof t!="string"||!e)return;const[s,i,o]=ug(t,n,r),a=o!==t,l=lg(e),u=l[o]||{},c=t.startsWith(".");if(typeof i<"u"){if(!ObLine truncated
|
||||||
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function PI(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
||||||
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var Bd=function(){},Vc={},Ug={},Hg=null,Vg={mark:Bd,measure:Bd};try{typeof window<"u"&&(Vc=window),typeof document<"u"&&(Ug=document),typeof MutationObserver<"u"&&(Hg=MutationObserver),typeof performance<"u"&&(Vg=performance)}catch{}var RI=Vc.navigator||{},Wd=RI.userAgent,Yd=Wd===void 0?"":Wd,Mn=Vc,Me=Ug,Kd=Hg,Ci=Vg;Mn.document;var pn=!!Me.documentElement&&!!Me.head&&typeof Me.addEventListener=="function"&&typeof Me.createElement=="function",Bg=~Yd.indexOf("MSIE")||~Yd.indexOf("Trident/"),Ni,Li,Ii,Pi,Ri,un="___FONT_AWESOME___",Nl=16,Wg="fa",Yg="svg-inline--fa",_r="data-fa-i2svg",Ll="data-fa-pseudo-element",xI="data-fa-pseudo-element-pending",Bc="data-prefix",Wc="data-icon",zd="fontawesome-i2svg",kI="async",$I=["HTML","HEAD","STYLE","SCRIPT"],Kg=function(){try{return!0}catch{return!1}}(),$e="classic",Ve="sharp",Yc=[$e,Ve];function ci(e){return new Proxy(e,{get:function(n,r){return r in n?n[r]:n[$e]}})}var Ks=ci((Ni={},qe(Ni,$e,{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands",fak:"kit",fakd:"kit","fa-kit":"kit","fa-kit-duotone":"kit"}),qe(Ni,Ve,{fa:"solid",fass:"solid","fa-solid":"solid",fasr:"regular","fa-regular":"regular",fasl:"light","fa-light":"light",fast:"thin","fa-thin":"thin"}),Ni)),zs=ci((Li={},qe(Li,$e,{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab",kit:"fak"}),qe(Li,Ve,{solid:"fass",regular:"fasr",light:"fasl",thin:"fast"}),Li)),Gs=ci((Ii={},qe(Ii,$e,{fab:"fa-brands",fad:"fa-duotone",fak:"fa-kit",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"}),qe(Ii,Ve,{fass:"fa-solid",fasr:"fa-regular",fasl:"fa-light",fast:"fa-thin"}),Ii)),DI=ci((Pi={},qe(Pi,$e,{"fa-brands":"fab","fa-duotone":"fad","fa-kit":"fak","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"}),qe(Pi,Ve,{"fa-solid":"fass","fa-regular":"fasr","fa-light":"fasl","fa-thin":"fast"}),Pi)),MI=/fa(s|r|l|t|d|b|k|ss|sr|sl|st)?[\-\ ]/,zg="fa-layers-text",FI=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i,jI=ci((Ri={},qe(Ri,$e,{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"}),qe(Ri,Ve,{900:"fass",400:"fasr",300:"fasl",100:"fast"}),Ri)),Gg=[1,2,3,4,5,6,7,8,9,10],UI=Gg.concat([11,12,13,14,15,16,17,18,19,20]),HI=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],ir={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},qs=new Set;Object.keys(zs[$e]).map(qs.add.bind(qs));Object.keys(zs[Ve]).map(qs.add.bind(qs));var VI=[].concat(Yc,li(qs),["2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",ir.GROUP,ir.SWAP_OPACITY,ir.PRIMARY,ir.SECONDARY]).concat(Gg.map(function(e){return"".concat(e,"x")})).concat(UI.map(function(e){return"w-".concat(e)})),xs=Mn.FontAwesomeConfig||{};function BI(e){var t=Me.querySelector("script["+e+"]");if(t)return t.getAttribute(e)}function WI(e){return e===""?!0:e==="false"?!1:e==="true"?!0:e}if(Me&&typeof Me.querySelector=="function"){var YI=[["data-family-prefix","familyPrefix"],["data-css-prefix","cssPrefix"],["data-family-default","familyDefault"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]];YI.forEach(function(e){var t=Hc(e,2),n=t[0],r=t[1],s=WI(BI(n));s!=null&&(xs[r]=s)})}var qg={styleDefault:"solid",familyDefault:"classic",cssPrefix:Wg,replacementClass:Yg,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0};xs.familyPrefix&&(xs.cssPrefix=xs.familyPrefix);var ns=X(X({},qg),xs);ns.autoReplaceSvg||(ns.observeMutations=!1);var Z={};Object.keys(qg).forEach(function(e){Object.defineProperty(Z,e,{enumerable:!0,set:function(n){ns[e]=n,ks.forEach(function(r){return r(Z)})},get:function(){return ns[e]}})});Object.defineProperty(Z,"familyPrefix",{enumerable:!0,set:function(t){ns.cssPrefix=t,ks.forEach(function(n){return n(Z)})},get:function(){return ns.cssPrefix}});Mn.FontAwesomeConfig=Z;var ks=[];function KI(e){return ks.push(e),function(){ks.splice(ks.indexOf(e),1)}}var En=Nl,zt={size:16,x:0
Line truncated
|
||||||
|
--fa-font-solid: normal 900 1em/1 "Font Awesome 6 Solid";
|
||||||
|
--fa-font-regular: normal 400 1em/1 "Font Awesome 6 Regular";
|
||||||
|
--fa-font-light: normal 300 1em/1 "Font Awesome 6 Light";
|
||||||
|
--fa-font-thin: normal 100 1em/1 "Font Awesome 6 Thin";
|
||||||
|
--fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone";
|
||||||
|
--fa-font-sharp-solid: normal 900 1em/1 "Font Awesome 6 Sharp";
|
||||||
|
--fa-font-sharp-regular: normal 400 1em/1 "Font Awesome 6 Sharp";
|
||||||
|
--fa-font-sharp-light: normal 300 1em/1 "Font Awesome 6 Sharp";
|
||||||
|
--fa-font-sharp-thin: normal 100 1em/1 "Font Awesome 6 Sharp";
|
||||||
|
--fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands";
|
||||||
|
}
|
||||||
|
|
||||||
|
svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {
|
||||||
|
overflow: visible;
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.svg-inline--fa {
|
||||||
|
display: var(--fa-display, inline-block);
|
||||||
|
height: 1em;
|
||||||
|
overflow: visible;
|
||||||
|
vertical-align: -0.125em;
|
||||||
|
}
|
||||||
|
.svg-inline--fa.fa-2xs {
|
||||||
|
vertical-align: 0.1em;
|
||||||
|
}
|
||||||
|
.svg-inline--fa.fa-xs {
|
||||||
|
vertical-align: 0em;
|
||||||
|
}
|
||||||
|
.svg-inline--fa.fa-sm {
|
||||||
|
vertical-align: -0.0714285705em;
|
||||||
|
}
|
||||||
|
.svg-inline--fa.fa-lg {
|
||||||
|
vertical-align: -0.2em;
|
||||||
|
}
|
||||||
|
.svg-inline--fa.fa-xl {
|
||||||
|
vertical-align: -0.25em;
|
||||||
|
}
|
||||||
|
.svg-inline--fa.fa-2xl {
|
||||||
|
vertical-align: -0.3125em;
|
||||||
|
}
|
||||||
|
.svg-inline--fa.fa-pull-left {
|
||||||
|
margin-right: var(--fa-pull-margin, 0.3em);
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
.svg-inline--fa.fa-pull-right {
|
||||||
|
margin-left: var(--fa-pull-margin, 0.3em);
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
.svg-inline--fa.fa-li {
|
||||||
|
width: var(--fa-li-width, 2em);
|
||||||
|
top: 0.25em;
|
||||||
|
}
|
||||||
|
.svg-inline--fa.fa-fw {
|
||||||
|
width: var(--fa-fw-width, 1.25em);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-layers svg.svg-inline--fa {
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
margin: auto;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-layers-counter, .fa-layers-text {
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-layers {
|
||||||
|
display: inline-block;
|
||||||
|
height: 1em;
|
||||||
|
position: relative;
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: -0.125em;
|
||||||
|
width: 1em;
|
||||||
|
}
|
||||||
|
.fa-layers svg.svg-inline--fa {
|
||||||
|
-webkit-transform-origin: center center;
|
||||||
|
transform-origin: center center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-layers-text {
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
-webkit-transform: translate(-50%, -50%);
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
-webkit-transform-origin: center center;
|
||||||
|
transform-origin: center center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-layers-counter {
|
||||||
|
background-color: var(--fa-counter-background-color, #ff253a);
|
||||||
|
border-radius: var(--fa-counter-border-radius, 1em);
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: var(--fa-inverse, #fff);
|
||||||
|
line-height: var(--fa-counter-line-height, 1);
|
||||||
|
max-width: var(--fa-counter-max-width, 5em);
|
||||||
|
min-width: var(--fa-counter-min-width, 1.5em);
|
||||||
|
overflow: hidden;
|
||||||
|
padding: var(--fa-counter-padding, 0.25em 0.5em);
|
||||||
|
right: var(--fa-right, 0);
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
top: var(--fa-top, 0);
|
||||||
|
-webkit-transform: scale(var(--fa-counter-scale, 0.25));
|
||||||
|
transform: scale(var(--fa-counter-scale, 0.25));
|
||||||
|
-webkit-transform-origin: top right;
|
||||||
|
transform-origin: top right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-layers-bottom-right {
|
||||||
|
bottom: var(--fa-bottom, 0);
|
||||||
|
right: var(--fa-right, 0);
|
||||||
|
top: auto;
|
||||||
|
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
||||||
|
transform: scale(var(--fa-layers-scale, 0.25));
|
||||||
|
-webkit-transform-origin: bottom right;
|
||||||
|
transform-origin: bottom right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-layers-bottom-left {
|
||||||
|
bottom: var(--fa-bottom, 0);
|
||||||
|
left: var(--fa-left, 0);
|
||||||
|
right: auto;
|
||||||
|
top: auto;
|
||||||
|
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
||||||
|
transform: scale(var(--fa-layers-scale, 0.25));
|
||||||
|
-webkit-transform-origin: bottom left;
|
||||||
|
transform-origin: bottom left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-layers-top-right {
|
||||||
|
top: var(--fa-top, 0);
|
||||||
|
right: var(--fa-right, 0);
|
||||||
|
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
||||||
|
transform: scale(var(--fa-layers-scale, 0.25));
|
||||||
|
-webkit-transform-origin: top right;
|
||||||
|
transform-origin: top right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-layers-top-left {
|
||||||
|
left: var(--fa-left, 0);
|
||||||
|
right: auto;
|
||||||
|
top: var(--fa-top, 0);
|
||||||
|
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
||||||
|
transform: scale(var(--fa-layers-scale, 0.25));
|
||||||
|
-webkit-transform-origin: top left;
|
||||||
|
transform-origin: top left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-1x {
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-2x {
|
||||||
|
font-size: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-3x {
|
||||||
|
font-size: 3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-4x {
|
||||||
|
font-size: 4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-5x {
|
||||||
|
font-size: 5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-6x {
|
||||||
|
font-size: 6em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-7x {
|
||||||
|
font-size: 7em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-8x {
|
||||||
|
font-size: 8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-9x {
|
||||||
|
font-size: 9em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-10x {
|
||||||
|
font-size: 10em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-2xs {
|
||||||
|
font-size: 0.625em;
|
||||||
|
line-height: 0.1em;
|
||||||
|
vertical-align: 0.225em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-xs {
|
||||||
|
font-size: 0.75em;
|
||||||
|
line-height: 0.0833333337em;
|
||||||
|
vertical-align: 0.125em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-sm {
|
||||||
|
font-size: 0.875em;
|
||||||
|
line-height: 0.0714285718em;
|
||||||
|
vertical-align: 0.0535714295em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-lg {
|
||||||
|
font-size: 1.25em;
|
||||||
|
line-height: 0.05em;
|
||||||
|
vertical-align: -0.075em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-xl {
|
||||||
|
font-size: 1.5em;
|
||||||
|
line-height: 0.0416666682em;
|
||||||
|
vertical-align: -0.125em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-2xl {
|
||||||
|
font-size: 2em;
|
||||||
|
line-height: 0.03125em;
|
||||||
|
vertical-align: -0.1875em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-fw {
|
||||||
|
text-align: center;
|
||||||
|
width: 1.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-ul {
|
||||||
|
list-style-type: none;
|
||||||
|
margin-left: var(--fa-li-margin, 2.5em);
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
.fa-ul > li {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-li {
|
||||||
|
left: calc(var(--fa-li-width, 2em) * -1);
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
width: var(--fa-li-width, 2em);
|
||||||
|
line-height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-border {
|
||||||
|
border-color: var(--fa-border-color, #eee);
|
||||||
|
border-radius: var(--fa-border-radius, 0.1em);
|
||||||
|
border-style: var(--fa-border-style, solid);
|
||||||
|
border-width: var(--fa-border-width, 0.08em);
|
||||||
|
padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-pull-left {
|
||||||
|
float: left;
|
||||||
|
margin-right: var(--fa-pull-margin, 0.3em);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-pull-right {
|
||||||
|
float: right;
|
||||||
|
margin-left: var(--fa-pull-margin, 0.3em);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-beat {
|
||||||
|
-webkit-animation-name: fa-beat;
|
||||||
|
animation-name: fa-beat;
|
||||||
|
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
||||||
|
animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-bounce {
|
||||||
|
-webkit-animation-name: fa-bounce;
|
||||||
|
animation-name: fa-bounce;
|
||||||
|
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
|
||||||
|
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-fade {
|
||||||
|
-webkit-animation-name: fa-fade;
|
||||||
|
animation-name: fa-fade;
|
||||||
|
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
||||||
|
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-beat-fade {
|
||||||
|
-webkit-animation-name: fa-beat-fade;
|
||||||
|
animation-name: fa-beat-fade;
|
||||||
|
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
||||||
|
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-flip {
|
||||||
|
-webkit-animation-name: fa-flip;
|
||||||
|
animation-name: fa-flip;
|
||||||
|
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
||||||
|
animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-shake {
|
||||||
|
-webkit-animation-name: fa-shake;
|
||||||
|
animation-name: fa-shake;
|
||||||
|
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
|
||||||
|
animation-timing-function: var(--fa-animation-timing, linear);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-spin {
|
||||||
|
-webkit-animation-name: fa-spin;
|
||||||
|
animation-name: fa-spin;
|
||||||
|
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
animation-delay: var(--fa-animation-delay, 0s);
|
||||||
|
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
-webkit-animation-duration: var(--fa-animation-duration, 2s);
|
||||||
|
animation-duration: var(--fa-animation-duration, 2s);
|
||||||
|
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
|
||||||
|
animation-timing-function: var(--fa-animation-timing, linear);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-spin-reverse {
|
||||||
|
--fa-animation-direction: reverse;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-pulse,
|
||||||
|
.fa-spin-pulse {
|
||||||
|
-webkit-animation-name: fa-spin;
|
||||||
|
animation-name: fa-spin;
|
||||||
|
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
animation-direction: var(--fa-animation-direction, normal);
|
||||||
|
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
animation-duration: var(--fa-animation-duration, 1s);
|
||||||
|
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||||
|
-webkit-animation-timing-function: var(--fa-animation-timing, steps(8));
|
||||||
|
animation-timing-function: var(--fa-animation-timing, steps(8));
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
.fa-beat,
|
||||||
|
.fa-bounce,
|
||||||
|
.fa-fade,
|
||||||
|
.fa-beat-fade,
|
||||||
|
.fa-flip,
|
||||||
|
.fa-pulse,
|
||||||
|
.fa-shake,
|
||||||
|
.fa-spin,
|
||||||
|
.fa-spin-pulse {
|
||||||
|
-webkit-animation-delay: -1ms;
|
||||||
|
animation-delay: -1ms;
|
||||||
|
-webkit-animation-duration: 1ms;
|
||||||
|
animation-duration: 1ms;
|
||||||
|
-webkit-animation-iteration-count: 1;
|
||||||
|
animation-iteration-count: 1;
|
||||||
|
-webkit-transition-delay: 0s;
|
||||||
|
transition-delay: 0s;
|
||||||
|
-webkit-transition-duration: 0s;
|
||||||
|
transition-duration: 0s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@-webkit-keyframes fa-beat {
|
||||||
|
0%, 90% {
|
||||||
|
-webkit-transform: scale(1);
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
45% {
|
||||||
|
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
|
||||||
|
transform: scale(var(--fa-beat-scale, 1.25));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes fa-beat {
|
||||||
|
0%, 90% {
|
||||||
|
-webkit-transform: scale(1);
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
45% {
|
||||||
|
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
|
||||||
|
transform: scale(var(--fa-beat-scale, 1.25));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@-webkit-keyframes fa-bounce {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: scale(1, 1) translateY(0);
|
||||||
|
transform: scale(1, 1) translateY(0);
|
||||||
|
}
|
||||||
|
10% {
|
||||||
|
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
||||||
|
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
||||||
|
}
|
||||||
|
30% {
|
||||||
|
-webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
|
||||||
|
transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
||||||
|
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
||||||
|
}
|
||||||
|
57% {
|
||||||
|
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
||||||
|
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
||||||
|
}
|
||||||
|
64% {
|
||||||
|
-webkit-transform: scale(1, 1) translateY(0);
|
||||||
|
transform: scale(1, 1) translateY(0);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: scale(1, 1) translateY(0);
|
||||||
|
transform: scale(1, 1) translateY(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes fa-bounce {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: scale(1, 1) translateY(0);
|
||||||
|
transform: scale(1, 1) translateY(0);
|
||||||
|
}
|
||||||
|
10% {
|
||||||
|
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
||||||
|
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
||||||
|
}
|
||||||
|
30% {
|
||||||
|
-webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
|
||||||
|
transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
||||||
|
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
||||||
|
}
|
||||||
|
57% {
|
||||||
|
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
||||||
|
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
||||||
|
}
|
||||||
|
64% {
|
||||||
|
-webkit-transform: scale(1, 1) translateY(0);
|
||||||
|
transform: scale(1, 1) translateY(0);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: scale(1, 1) translateY(0);
|
||||||
|
transform: scale(1, 1) translateY(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@-webkit-keyframes fa-fade {
|
||||||
|
50% {
|
||||||
|
opacity: var(--fa-fade-opacity, 0.4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes fa-fade {
|
||||||
|
50% {
|
||||||
|
opacity: var(--fa-fade-opacity, 0.4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@-webkit-keyframes fa-beat-fade {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: var(--fa-beat-fade-opacity, 0.4);
|
||||||
|
-webkit-transform: scale(1);
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 1;
|
||||||
|
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
|
||||||
|
transform: scale(var(--fa-beat-fade-scale, 1.125));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes fa-beat-fade {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: var(--fa-beat-fade-opacity, 0.4);
|
||||||
|
-webkit-transform: scale(1);
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 1;
|
||||||
|
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
|
||||||
|
transform: scale(var(--fa-beat-fade-scale, 1.125));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@-webkit-keyframes fa-flip {
|
||||||
|
50% {
|
||||||
|
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
||||||
|
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes fa-flip {
|
||||||
|
50% {
|
||||||
|
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
||||||
|
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@-webkit-keyframes fa-shake {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: rotate(-15deg);
|
||||||
|
transform: rotate(-15deg);
|
||||||
|
}
|
||||||
|
4% {
|
||||||
|
-webkit-transform: rotate(15deg);
|
||||||
|
transform: rotate(15deg);
|
||||||
|
}
|
||||||
|
8%, 24% {
|
||||||
|
-webkit-transform: rotate(-18deg);
|
||||||
|
transform: rotate(-18deg);
|
||||||
|
}
|
||||||
|
12%, 28% {
|
||||||
|
-webkit-transform: rotate(18deg);
|
||||||
|
transform: rotate(18deg);
|
||||||
|
}
|
||||||
|
16% {
|
||||||
|
-webkit-transform: rotate(-22deg);
|
||||||
|
transform: rotate(-22deg);
|
||||||
|
}
|
||||||
|
20% {
|
||||||
|
-webkit-transform: rotate(22deg);
|
||||||
|
transform: rotate(22deg);
|
||||||
|
}
|
||||||
|
32% {
|
||||||
|
-webkit-transform: rotate(-12deg);
|
||||||
|
transform: rotate(-12deg);
|
||||||
|
}
|
||||||
|
36% {
|
||||||
|
-webkit-transform: rotate(12deg);
|
||||||
|
transform: rotate(12deg);
|
||||||
|
}
|
||||||
|
40%, 100% {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes fa-shake {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: rotate(-15deg);
|
||||||
|
transform: rotate(-15deg);
|
||||||
|
}
|
||||||
|
4% {
|
||||||
|
-webkit-transform: rotate(15deg);
|
||||||
|
transform: rotate(15deg);
|
||||||
|
}
|
||||||
|
8%, 24% {
|
||||||
|
-webkit-transform: rotate(-18deg);
|
||||||
|
transform: rotate(-18deg);
|
||||||
|
}
|
||||||
|
12%, 28% {
|
||||||
|
-webkit-transform: rotate(18deg);
|
||||||
|
transform: rotate(18deg);
|
||||||
|
}
|
||||||
|
16% {
|
||||||
|
-webkit-transform: rotate(-22deg);
|
||||||
|
transform: rotate(-22deg);
|
||||||
|
}
|
||||||
|
20% {
|
||||||
|
-webkit-transform: rotate(22deg);
|
||||||
|
transform: rotate(22deg);
|
||||||
|
}
|
||||||
|
32% {
|
||||||
|
-webkit-transform: rotate(-12deg);
|
||||||
|
transform: rotate(-12deg);
|
||||||
|
}
|
||||||
|
36% {
|
||||||
|
-webkit-transform: rotate(12deg);
|
||||||
|
transform: rotate(12deg);
|
||||||
|
}
|
||||||
|
40%, 100% {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@-webkit-keyframes fa-spin {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: rotate(360deg);
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes fa-spin {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: rotate(360deg);
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fa-rotate-90 {
|
||||||
|
-webkit-transform: rotate(90deg);
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-rotate-180 {
|
||||||
|
-webkit-transform: rotate(180deg);
|
||||||
|
transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-rotate-270 {
|
||||||
|
-webkit-transform: rotate(270deg);
|
||||||
|
transform: rotate(270deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-flip-horizontal {
|
||||||
|
-webkit-transform: scale(-1, 1);
|
||||||
|
transform: scale(-1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-flip-vertical {
|
||||||
|
-webkit-transform: scale(1, -1);
|
||||||
|
transform: scale(1, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-flip-both,
|
||||||
|
.fa-flip-horizontal.fa-flip-vertical {
|
||||||
|
-webkit-transform: scale(-1, -1);
|
||||||
|
transform: scale(-1, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-rotate-by {
|
||||||
|
-webkit-transform: rotate(var(--fa-rotate-angle, 0));
|
||||||
|
transform: rotate(var(--fa-rotate-angle, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-stack {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
height: 2em;
|
||||||
|
position: relative;
|
||||||
|
width: 2.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-stack-1x,
|
||||||
|
.fa-stack-2x {
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
margin: auto;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
z-index: var(--fa-stack-z-index, auto);
|
||||||
|
}
|
||||||
|
|
||||||
|
.svg-inline--fa.fa-stack-1x {
|
||||||
|
height: 1em;
|
||||||
|
width: 1.25em;
|
||||||
|
}
|
||||||
|
.svg-inline--fa.fa-stack-2x {
|
||||||
|
height: 2em;
|
||||||
|
width: 2.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-inverse {
|
||||||
|
color: var(--fa-inverse, #fff);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sr-only,
|
||||||
|
.fa-sr-only {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
padding: 0;
|
||||||
|
margin: -1px;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
white-space: nowrap;
|
||||||
|
border-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sr-only-focusable:not(:focus),
|
||||||
|
.fa-sr-only-focusable:not(:focus) {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
padding: 0;
|
||||||
|
margin: -1px;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
white-space: nowrap;
|
||||||
|
border-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.svg-inline--fa .fa-primary {
|
||||||
|
fill: var(--fa-primary-color, currentColor);
|
||||||
|
opacity: var(--fa-primary-opacity, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.svg-inline--fa .fa-secondary {
|
||||||
|
fill: var(--fa-secondary-color, currentColor);
|
||||||
|
opacity: var(--fa-secondary-opacity, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.svg-inline--fa.fa-swap-opacity .fa-primary {
|
||||||
|
opacity: var(--fa-secondary-opacity, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.svg-inline--fa.fa-swap-opacity .fa-secondary {
|
||||||
|
opacity: var(--fa-primary-opacity, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.svg-inline--fa mask .fa-primary,
|
||||||
|
.svg-inline--fa mask .fa-secondary {
|
||||||
|
fill: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fad.fa-inverse,
|
||||||
|
.fa-duotone.fa-inverse {
|
||||||
|
color: var(--fa-inverse, #fff);
|
||||||
|
}`;function Jg(){var e=Wg,t=Yg,n=Z.cssPrefix,r=Z.replacementClass,s=QI;if(n!==e||r!==t){var i=new RegExp("\\.".concat(e,"\\-"),"g"),o=new RegExp("\\--".concat(e,"\\-"),"g"),a=new RegExp("\\.".concat(t),"g");s=s.replace(i,".".concat(n,"-")).replace(o,"--".concat(n,"-")).replace(a,".".concat(r))}return s}var Gd=!1;function ka(){Z.autoAddCss&&!Gd&&(zI(Jg()),Gd=!0)}var ZI={mixout:function(){return{dom:{css:Jg,insertCss:ka}}},hooks:function(){return{beforeDOMElementCreation:function(){ka()},beforeI2svg:function(){ka()}}}},fn=Mn||{};fn[un]||(fn[un]={});fn[un].styles||(fn[un].styles={});fn[un].hooks||(fn[un].hooks={});fn[un].shims||(fn[un].shims=[]);var Dt=fn[un],Qg=[],eP=function e(){Me.removeEventListener("DOMContentLoaded",e),mo=1,Qg.map(function(t){return t()})},mo=!1;pn&&(mo=(Me.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(Me.readyState),mo||Me.addEventListener("DOMContentLoaded",eP));function tP(e){pn&&(mo?setTimeout(e,0):Qg.push(e))}function ui(e){var t=e.tag,n=e.attributes,r=n===void 0?{}:n,s=e.children,i=s===void 0?[]:s;return typeof e=="string"?Xg(e):"<".concat(t," ").concat(qI(r),">").concat(i.map(ui).join(""),"</").concat(t,">")}function qd(e,t,n){if(e&&e[t]&&e[t][n])return{prefix:t,iconName:n,icon:e[t][n]}}var $a=function(t,n,r,s){var i=Object.keys(t),o=i.length,a=n,l,u,c;for(r===void 0?(l=1,c=t[i[0]]):(l=0,c=r);l<o;l++)u=i[l],c=a(c,t[u],u,t);return c};function nP(e){for(var t=[],n=0,r=e.length;n<r;){var s=e.charCodeAt(n++);if(s>=55296&&s<=56319&&n<r){var i=e.charCodeAt(n++);(i&64512)==56320?t.push(((s&1023)<<10)+(i&1023)+65536):(t.push(s),n--)}else t.push(s)}return t}function Il(e){var t=nP(e);return t.length===1?t[0].toString(16):null}function rP(e,t){var n=e.length,r=e.charCodeAt(t),s;return r>=55296&&r<=56319&&n>t+1&&(s=e.charCodeAt(t+1),s>=56320&&s<=57343)?(r-55296)*1024+s-56320+65536:r}function Xd(e){return Object.keys(e).reduce(function(t,n){var r=e[n],s=!!r.icon;return s?t[r.iconName]=r.icon:t[n]=r,t},{})}function Pl(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.skipHooks,s=r===void 0?!1:r,i=Xd(t);typeof Dt.hooks.addPack=="function"&&!s?Dt.hooks.addPack(e,Xd(t)):Dt.styles[e]=X(X({},Dt.styles[e]||{}),i),e==="fas"&&Pl("fa",t)}var xi,ki,$i,$r=Dt.styles,sP=Dt.shims,iP=(xi={},qe(xi,$e,Object.values(Gs[$e])),qe(xi,Ve,Object.values(Gs[Ve])),xi),Gc=null,Zg={},e_={},t_={},n_={},r_={},oP=(ki={},qe(ki,$e,Object.keys(Ks[$e])),qe(ki,Ve,Object.keys(Ks[Ve])),ki);function aP(e){return~VI.indexOf(e)}function lP(e,t){var n=t.split("-"),r=n[0],s=n.slice(1).join("-");return r===e&&s!==""&&!aP(s)?s:null}var s_=function(){var t=function(i){return $a($r,function(o,a,l){return o[l]=$a(a,i,{}),o},{})};Zg=t(function(s,i,o){if(i[3]&&(s[i[3]]=o),i[2]){var a=i[2].filter(function(l){return typeof l=="number"});a.forEach(function(l){s[l.toString(16)]=o})}return s}),e_=t(function(s,i,o){if(s[o]=o,i[2]){var a=i[2].filter(function(l){return typeof l=="string"});a.forEach(function(l){s[l]=o})}return s}),r_=t(function(s,i,o){var a=i[2];return s[o]=o,a.forEach(function(l){s[l]=o}),s});var n="far"in $r||Z.autoFetchSvg,r=$a(sP,function(s,i){var o=i[0],a=i[1],l=i[2];return a==="far"&&!n&&(a="fas"),typeof o=="string"&&(s.names[o]={prefix:a,iconName:l}),typeof o=="number"&&(s.unicodes[o.toString(16)]={prefix:a,iconName:l}),s},{names:{},unicodes:{}});t_=r.names,n_=r.unicodes,Gc=Xo(Z.styleDefault,{family:Z.familyDefault})};KI(function(e){Gc=Xo(e.styleDefault,{family:Z.familyDefault})});s_();function qc(e,t){return(Zg[e]||{})[t]}function cP(e,t){return(e_[e]||{})[t]}function or(e,t){return(r_[e]||{})[t]}function i_(e){return t_[e]||{prefix:null,iconName:null}}function uP(e){var t=n_[e],n=qc("fas",e);return t||(n?{prefix:"fas",iconName:n}:null)||{prefix:null,iconName:null}}function Fn(){return Gc}var Xc=function(){return{prefix:null,iconName:null,rest:[]}};function Xo(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=t.family,r=n===void 0?$e:n,s=Ks[r][e],i=zs[r][e]||zs[r][s],o=e in Dt.styles?e:null;return i||o||null}var Jd=($i={},qe($i,$e,Object.keys(Gs[$e])),qe($i,Ve,Object.keys(Gs[Ve])),$i);function Jo(e){var t,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=n.skipLookups,s=r===void 0?!1:r,i=(t={},qe(t,$e,"".concat(Z.cssPrefix,"-").concat($e)),qe(t,Ve,"".concat(Z.cssPrefix,"-").concat(Ve)),t),o=null,a=$e;(e.includes(i[$e])||e.some(function(u){return Jd[$e].includes(u)}))&&(a=$e),(e.includes(i[Ve])||e.some(function(u){return Jd[Ve].includes(u)}))&&(a=Ve);var l=e.reduce(function(u,c){var f=lP(Z.cssPrefix,c);if($r[c]?(c=iP[a].includes(c)?DI[a][c]:c,o=c,u.prefix=c):oP[a].indexOf(c)>-1?(o=c,u.prefix=Xo(c,{family:a})):f?u.iconName=f:c!==Z.replacementClass&&c!==i[$e]&&c!==i[Ve]&&u.rest.push(c),!s&&u.prefix&&u.iconName){var d=o==="fa"?i_(u.iconName):{},m=or(u.prefix,u.iconName);d.prefix&&(o=null),u.iconName=d.iconName||m||u.iconName,u.prefix=d.prefix||u.prefix,u.prefix==="far"&&!$r.far&&$r.fas&&!Z.autoFetchSvg&&(u.prefix="fas")}return u},Xc());return(e.includes("fa-bran
Line truncated
|
||||||
|
`);n.setAttribute(_r,""),n.innerHTML=o}};function nm(e){e()}function c_(e,t){var n=typeof t=="function"?t:Gi;if(e.length===0)n();else{var r=nm;Z.mutateApproach===kI&&(r=Mn.requestAnimationFrame||nm),r(function(){var s=SP(),i=Qc.begin("mutate");e.map(s),i(),n()})}}var Zc=!1;function u_(){Zc=!0}function Ml(){Zc=!1}var ho=null;function rm(e){if(Kd&&Z.observeMutations){var t=e.treeCallback,n=t===void 0?Gi:t,r=e.nodeCallback,s=r===void 0?Gi:r,i=e.pseudoElementsCallback,o=i===void 0?Gi:i,a=e.observeMutationsRoot,l=a===void 0?Me:a;ho=new Kd(function(u){if(!Zc){var c=Fn();ds(u).forEach(function(f){if(f.type==="childList"&&f.addedNodes.length>0&&!tm(f.addedNodes[0])&&(Z.searchPseudoElements&&o(f.target),n(f.target)),f.type==="attributes"&&f.target.parentNode&&Z.searchPseudoElements&&o(f.target.parentNode),f.type==="attributes"&&tm(f.target)&&~HI.indexOf(f.attributeName))if(f.attributeName==="class"&&TP(f.target)){var d=Jo(Kc(f.target)),m=d.prefix,h=d.iconName;f.target.setAttribute(Bc,m||c),h&&f.target.setAttribute(Wc,h)}else OP(f.target)&&s(f.target)})}}),pn&&ho.observe(l,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function IP(){ho&&ho.disconnect()}function PP(e){var t=e.getAttribute("style"),n=[];return t&&(n=t.split(";").reduce(function(r,s){var i=s.split(":"),o=i[0],a=i.slice(1);return o&&a.length>0&&(r[o]=a.join(":").trim()),r},{})),n}function RP(e){var t=e.getAttribute("data-prefix"),n=e.getAttribute("data-icon"),r=e.innerText!==void 0?e.innerText.trim():"",s=Jo(Kc(e));return s.prefix||(s.prefix=Fn()),t&&n&&(s.prefix=t,s.iconName=n),s.iconName&&s.prefix||(s.prefix&&r.length>0&&(s.iconName=cP(s.prefix,e.innerText)||qc(s.prefix,Il(e.innerText))),!s.iconName&&Z.autoFetchSvg&&e.firstChild&&e.firstChild.nodeType===Node.TEXT_NODE&&(s.iconName=e.firstChild.data)),s}function xP(e){var t=ds(e.attributes).reduce(function(s,i){return s.name!=="class"&&s.name!=="style"&&(s[i.name]=i.value),s},{}),n=e.getAttribute("title"),r=e.getAttribute("data-fa-title-id");return Z.autoA11y&&(n?t["aria-labelledby"]="".concat(Z.replacementClass,"-title-").concat(r||Xs()):(t["aria-hidden"]="true",t.focusable="false")),t}function kP(){return{iconName:null,title:null,titleId:null,prefix:null,transform:zt,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}}}function sm(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{styleParser:!0},n=RP(e),r=n.iconName,s=n.prefix,i=n.rest,o=xP(e),a=Rl("parseNodeAttributes",{},e),l=t.styleParser?PP(e):[];return X({iconName:r,title:e.getAttribute("title"),titleId:e.getAttribute("data-fa-title-id"),prefix:s,transform:zt,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:i,styles:l,attributes:o}},a)}var $P=Dt.styles;function f_(e){var t=Z.autoReplaceSvg==="nest"?sm(e,{styleParser:!1}):sm(e);return~t.extra.classes.indexOf(zg)?dn("generateLayersText",e,t):dn("generateSvgReplacementMutation",e,t)}var jn=new Set;Yc.map(function(e){jn.add("fa-".concat(e))});Object.keys(Ks[$e]).map(jn.add.bind(jn));Object.keys(Ks[Ve]).map(jn.add.bind(jn));jn=li(jn);function im(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!pn)return Promise.resolve();var n=Me.documentElement.classList,r=function(f){return n.add("".concat(zd,"-").concat(f))},s=function(f){return n.remove("".concat(zd,"-").concat(f))},i=Z.autoFetchSvg?jn:Yc.map(function(c){return"fa-".concat(c)}).concat(Object.keys($P));i.includes("fa")||i.push("fa");var o=[".".concat(zg,":not([").concat(_r,"])")].concat(i.map(function(c){return".".concat(c,":not([").concat(_r,"])")})).join(", ");if(o.length===0)return Promise.resolve();var a=[];try{a=ds(e.querySelectorAll(o))}catch{}if(a.length>0)r("pending"),s("complete");else return Promise.resolve();var l=Qc.begin("onTree"),u=a.reduce(function(c,f){try{var d=f_(f);d&&c.push(d)}catch(m){Kg||m.name==="MissingIcon"&&console.error(m)}return c},[]);return new Promise(function(c,f){Promise.all(u).then(function(d){c_(d,function(){r("active"),r("complete"),s("pending"),typeof t=="function"&&t(),l(),c()})}).catch(function(d){l(),f(d)})})}function DP(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;f_(e).then(function(n){n&&c_([n],t)})}function MP(e){return function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=(t||{}).icon?t:xl(t||{}),s=n.mask;return s&&(s=(s||{}).icon?s:xl(s||{})),e(r,X(X({},n),{},{mask:s}))}}var FP=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=n.transform,s=r===void 0?zt:r,i=n.symbol,o=i===void 0?!1:i,a=n.mask,l=a===void 0?null:a,u=n.maskId,c=u===void 0?null:u,f=n.title,d=f===void 0?null:f,m=n.titleId,h=m===void 0?null:m,y=n.classes,v=y===void 0?[]:y,w=n.attributes,O=w===void 0?{}:w,E=n.styles,A=E===void 0?{}:E;if(t){var C=t.prefix,S=t.iconName,I=t.icon;return Qo(X({type:"icon"},t),function(){return vr("beforeDOMElementCreation",{iconDefinition:t,params:n}),Z.autoA11y&&(d?O["aria-labelledby"]="".concat(Z.replacem
Line truncated
|
||||||
|
`),e.removeAttribute(n),r()}).catch(s)}else r()}else r()})}function YP(e){return Promise.all([am(e,"::before"),am(e,"::after")])}function KP(e){return e.parentNode!==document.head&&!~$I.indexOf(e.tagName.toUpperCase())&&!e.getAttribute(Ll)&&(!e.parentNode||e.parentNode.tagName!=="svg")}function lm(e){if(pn)return new Promise(function(t,n){var r=ds(e.querySelectorAll("*")).filter(KP).map(YP),s=Qc.begin("searchPseudoElements");u_(),Promise.all(r).then(function(){s(),Ml(),t()}).catch(function(){s(),Ml(),n()})})}var zP={hooks:function(){return{mutationObserverCallbacks:function(n){return n.pseudoElementsCallback=lm,n}}},provides:function(t){t.pseudoElements2svg=function(n){var r=n.node,s=r===void 0?Me:r;Z.searchPseudoElements&&lm(s)}}},cm=!1,GP={mixout:function(){return{dom:{unwatch:function(){u_(),cm=!0}}}},hooks:function(){return{bootstrap:function(){rm(Rl("mutationObserverCallbacks",{}))},noAuto:function(){IP()},watch:function(n){var r=n.observeMutationsRoot;cm?Ml():rm(Rl("mutationObserverCallbacks",{observeMutationsRoot:r}))}}}},um=function(t){var n={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return t.toLowerCase().split(" ").reduce(function(r,s){var i=s.toLowerCase().split("-"),o=i[0],a=i.slice(1).join("-");if(o&&a==="h")return r.flipX=!0,r;if(o&&a==="v")return r.flipY=!0,r;if(a=parseFloat(a),isNaN(a))return r;switch(o){case"grow":r.size=r.size+a;break;case"shrink":r.size=r.size-a;break;case"left":r.x=r.x-a;break;case"right":r.x=r.x+a;break;case"up":r.y=r.y-a;break;case"down":r.y=r.y+a;break;case"rotate":r.rotate=r.rotate+a;break}return r},n)},qP={mixout:function(){return{parse:{transform:function(n){return um(n)}}}},hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-transform");return s&&(n.transform=um(s)),n}}},provides:function(t){t.generateAbstractTransformGrouping=function(n){var r=n.main,s=n.transform,i=n.containerWidth,o=n.iconWidth,a={transform:"translate(".concat(i/2," 256)")},l="translate(".concat(s.x*32,", ").concat(s.y*32,") "),u="scale(".concat(s.size/16*(s.flipX?-1:1),", ").concat(s.size/16*(s.flipY?-1:1),") "),c="rotate(".concat(s.rotate," 0 0)"),f={transform:"".concat(l," ").concat(u," ").concat(c)},d={transform:"translate(".concat(o/2*-1," -256)")},m={outer:a,inner:f,path:d};return{tag:"g",attributes:X({},m.outer),children:[{tag:"g",attributes:X({},m.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:X(X({},r.icon.attributes),m.path)}]}]}}}},Ma={x:0,y:0,width:"100%",height:"100%"};function fm(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return e.attributes&&(e.attributes.fill||t)&&(e.attributes.fill="black"),e}function XP(e){return e.tag==="g"?e.children:[e]}var JP={hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-mask"),i=s?Jo(s.split(" ").map(function(o){return o.trim()})):Xc();return i.prefix||(i.prefix=Fn()),n.mask=i,n.maskId=r.getAttribute("data-fa-mask-id"),n}}},provides:function(t){t.generateAbstractMask=function(n){var r=n.children,s=n.attributes,i=n.main,o=n.mask,a=n.maskId,l=n.transform,u=i.width,c=i.icon,f=o.width,d=o.icon,m=XI({transform:l,containerWidth:f,iconWidth:u}),h={tag:"rect",attributes:X(X({},Ma),{},{fill:"white"})},y=c.children?{children:c.children.map(fm)}:{},v={tag:"g",attributes:X({},m.inner),children:[fm(X({tag:c.tag,attributes:X(X({},c.attributes),m.path)},y))]},w={tag:"g",attributes:X({},m.outer),children:[v]},O="mask-".concat(a||Xs()),E="clip-".concat(a||Xs()),A={tag:"mask",attributes:X(X({},Ma),{},{id:O,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[h,w]},C={tag:"defs",children:[{tag:"clipPath",attributes:{id:E},children:XP(d)},A]};return r.push(C,{tag:"rect",attributes:X({fill:"currentColor","clip-path":"url(#".concat(E,")"),mask:"url(#".concat(O,")")},Ma)}),{children:r,attributes:s}}}},QP={provides:function(t){var n=!1;Mn.matchMedia&&(n=Mn.matchMedia("(prefers-reduced-motion: reduce)").matches),t.missingIconAbstract=function(){var r=[],s={fill:"currentColor"},i={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};r.push({tag:"path",attributes:X(X({},s),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66
Line truncated
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
<link rel="icon" href="/favicon.ico">
|
<link rel="icon" href="/favicon.ico">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Vite App</title>
|
<title>Vite App</title>
|
||||||
<script type="module" crossorigin src="/assets/index-CPLpx4lq.js"></script>
|
<script type="module" crossorigin src="/assets/index-VvMfePyX.js"></script>
|
||||||
<link rel="stylesheet" crossorigin href="/assets/index-21nzev1V.css">
|
<link rel="stylesheet" crossorigin href="/assets/index-21nzev1V.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|||||||
+20
-14
@@ -1,37 +1,43 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { provide, ref } from 'vue';
|
||||||
import { RouterView } from 'vue-router';
|
import { RouterView } from 'vue-router';
|
||||||
|
|
||||||
import NavBar from '@/components/blocks/NavBar.vue';
|
|
||||||
import FooterBlock from '@/components/blocks/FooterBlock.vue';
|
|
||||||
import GenericInfoModal from '@/components/modals/GenericInfoModal.vue';
|
|
||||||
import { provide, ref } from 'vue';
|
|
||||||
import { infoModalShowFnKey } from './services/UtilService';
|
import { infoModalShowFnKey } from './services/UtilService';
|
||||||
|
|
||||||
const infoModal = ref<InstanceType<typeof GenericInfoModal> | null>(null);
|
import NavBar from '@/components/blocks/NavBar.vue';
|
||||||
|
import GenericInfoModal from '@/components/modals/GenericInfoModal.vue';
|
||||||
|
import { useUserStore } from './stores/UserStore';
|
||||||
|
|
||||||
function showInfoModal(title: string, text: string): void{
|
const userStore = useUserStore();
|
||||||
if( infoModal.value ){
|
|
||||||
|
const userLoading = ref( true );
|
||||||
|
userStore.userCheckPromise
|
||||||
|
.finally( () => {
|
||||||
|
userLoading.value = false;
|
||||||
|
} );
|
||||||
|
|
||||||
|
const infoModal = ref<InstanceType<typeof GenericInfoModal> | null>( null );
|
||||||
|
|
||||||
|
function showInfoModal( title: string, text: string ): void {
|
||||||
|
if( infoModal.value ) {
|
||||||
infoModal.value.modalTitle = title;
|
infoModal.value.modalTitle = title;
|
||||||
infoModal.value.modalText = text;
|
infoModal.value.modalText = text;
|
||||||
infoModal.value.show();
|
infoModal.value.show();
|
||||||
} else {
|
} else {
|
||||||
console.error('Modal not yet available');
|
console.error( 'Modal not yet available' );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
provide(infoModalShowFnKey, showInfoModal);
|
provide( infoModalShowFnKey, showInfoModal );
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="vh-100 overflow-y-scroll overflow-x-hidden">
|
<div class="vh-100 overflow-y-scroll overflow-x-hidden">
|
||||||
<NavBar />
|
<NavBar :userLoading="userLoading" />
|
||||||
|
|
||||||
<RouterView />
|
<RouterView />
|
||||||
|
|
||||||
<!-- <FooterBlock /> -->
|
<GenericInfoModal ref="infoModal" />
|
||||||
<GenericInfoModal
|
|
||||||
ref="infoModal"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -1,3 +1,7 @@
|
|||||||
.preserve-breaks {
|
.preserve-breaks {
|
||||||
white-space: preserve-breaks;
|
white-space: preserve-breaks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.pointer {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
@@ -27,16 +27,10 @@ $primary-accent-dark: $cyclamen;
|
|||||||
|
|
||||||
$secondary-accent: $celestial-blue;
|
$secondary-accent: $celestial-blue;
|
||||||
$secondary-accent-dark: $celestial-blue;
|
$secondary-accent-dark: $celestial-blue;
|
||||||
// $secondary-accent: $jungle-green;
|
|
||||||
// $secondary-accent-dark: $jungle-green;
|
|
||||||
|
|
||||||
/* Bootstrap Colors overrides */
|
/* Bootstrap Colors overrides */
|
||||||
$primary: $primary-accent;
|
$primary: $primary-accent;
|
||||||
$secondary: $secondary-accent;
|
$secondary: $secondary-accent;
|
||||||
// $success: $green;
|
|
||||||
// $info: $cyan;
|
|
||||||
// $warning: $yellow;
|
|
||||||
// $danger: $red;
|
|
||||||
$light: $anti-flash-white;
|
$light: $anti-flash-white;
|
||||||
$light-accented: shade-color($anti-flash-white, 10%);
|
$light-accented: shade-color($anti-flash-white, 10%);
|
||||||
$dark: $space-cadet;
|
$dark: $space-cadet;
|
||||||
@@ -49,18 +43,15 @@ $body-bg-dark: $space-cadet;
|
|||||||
$body-secondary-bg-dark: $dark-accented;
|
$body-secondary-bg-dark: $dark-accented;
|
||||||
$body-bg: $anti-flash-white;
|
$body-bg: $anti-flash-white;
|
||||||
$body-secondary-bg: $light-accented;
|
$body-secondary-bg: $light-accented;
|
||||||
|
$dropdown-link-hover-bg: $dark-accented;
|
||||||
|
|
||||||
// $font-size-base: 1.5rem;
|
$modal-fade-transform: scale(.75);
|
||||||
|
|
||||||
// 3. Include remainder of required Bootstrap stylesheets (including any separate color mode stylesheets)
|
// 3. Include remainder of required Bootstrap stylesheets (including any separate color mode stylesheets)
|
||||||
@import "bootstrap/scss/variables";
|
@import "bootstrap/scss/variables";
|
||||||
@import "bootstrap/scss/variables-dark";
|
@import "bootstrap/scss/variables-dark";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// $navbar-dark-active-color: $primary;
|
|
||||||
// $navbar-light-active-color: $primary;
|
|
||||||
|
|
||||||
/* Bootstrap Color Map adjustments */
|
/* Bootstrap Color Map adjustments */
|
||||||
$custom-colors: (
|
$custom-colors: (
|
||||||
"gray": $gray-500,
|
"gray": $gray-500,
|
||||||
@@ -73,18 +64,9 @@ $theme-colors: map-merge($theme-colors, $custom-colors);
|
|||||||
|
|
||||||
// 5. Include remainder of required parts
|
// 5. Include remainder of required parts
|
||||||
@import "bootstrap/scss/bootstrap";
|
@import "bootstrap/scss/bootstrap";
|
||||||
// @import "bootstrap/scss/maps";
|
|
||||||
// @import "bootstrap/scss/mixins";
|
|
||||||
// @import "bootstrap/scss/root";
|
|
||||||
|
|
||||||
// 6. Optionally include any other parts as needed
|
// 6. Optionally include any other parts as needed
|
||||||
@import "bootstrap/scss/utilities";
|
@import "bootstrap/scss/utilities";
|
||||||
// @import "bootstrap/scss/reboot";
|
|
||||||
// @import "bootstrap/scss/type";
|
|
||||||
// @import "bootstrap/scss/images";
|
|
||||||
// @import "bootstrap/scss/containers";
|
|
||||||
// @import "bootstrap/scss/grid";
|
|
||||||
// @import "bootstrap/scss/helpers";
|
|
||||||
|
|
||||||
$utilities: map-merge(
|
$utilities: map-merge(
|
||||||
$utilities,
|
$utilities,
|
||||||
@@ -98,7 +80,16 @@ $utilities: map-merge(
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
"height": map-merge(
|
||||||
|
map-get($utilities, "height"),
|
||||||
|
(
|
||||||
|
values: map-merge(
|
||||||
|
map-get(map-get($utilities, "height"), "values"),
|
||||||
|
(fit-content: fit-content),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@@ -108,6 +99,4 @@ $utilities: map-merge(
|
|||||||
// 8. Add additional custom code here
|
// 8. Add additional custom code here
|
||||||
@import "./exotic_theme.scss";
|
@import "./exotic_theme.scss";
|
||||||
|
|
||||||
@import "bootstrap/scss/bootstrap";
|
|
||||||
|
|
||||||
@import "../css/main.css";
|
@import "../css/main.css";
|
||||||
@@ -30,11 +30,11 @@ const boards = ref([{
|
|||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="d-flex justify-content-around align-items-center">
|
<div class="d-flex justify-content-around align-items-center">
|
||||||
<button class="btn btn-sm btn-primary">
|
<button class="btn btn-sm btn-primary">
|
||||||
<font-awesome-icon :icon="['fas', 'edit']" />
|
<FontAwesomeIcon :icon="['fas', 'edit']" />
|
||||||
Edit
|
Edit
|
||||||
</button>
|
</button>
|
||||||
<button class="btn btn-sm btn-primary">
|
<button class="btn btn-sm btn-primary">
|
||||||
<font-awesome-icon :icon="['fas', 'play']" />
|
<FontAwesomeIcon :icon="['fas', 'play']" />
|
||||||
Play
|
Play
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';
|
||||||
import { onMounted, watch } from 'vue';
|
import { onMounted, watch } from 'vue';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
const localeLocalStorageKey = 'locale';
|
const localeLocalStorageKey = 'locale';
|
||||||
|
|
||||||
const i18n = useI18n();
|
const i18n = useI18n();
|
||||||
|
const { t } = i18n;
|
||||||
|
|
||||||
onMounted( () => {
|
onMounted( () => {
|
||||||
const initialLocale = localStorage.getItem( localeLocalStorageKey );
|
const initialLocale = localStorage.getItem( localeLocalStorageKey );
|
||||||
@@ -23,14 +25,14 @@ watch(
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="dropdown">
|
<div class="dropdown">
|
||||||
<button class="btn btn-sm btn-outline-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
|
<button class="btn btn-sm btn-outline-primary dropdown-toggle" type="button" data-bs-toggle="dropdown"
|
||||||
{{ $t( `i18n.${$i18n.locale}.name` ) }}
|
aria-expanded="false">
|
||||||
|
<FontAwesomeIcon :icon="['fas', 'globe']" />
|
||||||
</button>
|
</button>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
<li v-for=" locale in $i18n.availableLocales " :key="`locale-${locale}`" @click="$i18n.locale = locale"
|
<li v-for="locale in $i18n.availableLocales" :key="`locale-${locale}`">
|
||||||
role="button">
|
<a @click="$i18n.locale = locale" class="dropdown-item pointer" :class="[{ active: $i18n.locale === locale }]">
|
||||||
<a class="dropdown-item pointer" :class="[{ active: $i18n.locale === locale }]">
|
{{ t( `i18n.${locale}.name` ) }}
|
||||||
{{ $t( `i18n.${locale}.name` ) }}
|
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -1,33 +1,60 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { RouterLink, useRoute } from 'vue-router';
|
import { ref } from 'vue';
|
||||||
|
import { RouterLink, useRoute, useRouter } from 'vue-router';
|
||||||
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
import IconJeobeardy from '@/components/icons/IconJeobeardy.vue';
|
import IconJeobeardy from '@/components/icons/IconJeobeardy.vue';
|
||||||
import ThemeChanger from './ThemeChanger.vue';
|
import ThemeChanger from '@/components/blocks/ThemeChanger.vue';
|
||||||
import LocaleChanger from './LocaleChanger.vue';
|
import LocaleChanger from '@/components/blocks/LocaleChanger.vue';
|
||||||
import { useUserStore } from '@/stores/UserStore';
|
import { useUserStore } from '@/stores/UserStore';
|
||||||
|
import { authService } from '@/services/AuthService';
|
||||||
|
|
||||||
const navNames = {
|
const navNames = {
|
||||||
HOME: "home",
|
HOME: "home",
|
||||||
ABOUT: "about",
|
ABOUT: "about",
|
||||||
}
|
};
|
||||||
|
|
||||||
|
const { t } = useI18n();
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
|
|
||||||
const isActiveNav = ( navName: string ) => {
|
const isActiveNav = ( navName: string ) => {
|
||||||
switch( navName ){
|
switch( navName ) {
|
||||||
default:
|
|
||||||
case navNames.HOME:
|
case navNames.HOME:
|
||||||
return route.name === "home";
|
return route.name === "home";
|
||||||
case navNames.ABOUT:
|
case navNames.ABOUT:
|
||||||
return route.name === "about";
|
return route.name === "about";
|
||||||
|
default:
|
||||||
|
return route.name === "home";
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function logoutUser() {
|
||||||
|
authService.logoutUser()
|
||||||
|
.then( () => {
|
||||||
|
userStore.logoutUser();
|
||||||
|
if( route.meta.requiresAuth ) {
|
||||||
|
router.push( { name: 'home' } );
|
||||||
|
}
|
||||||
|
} )
|
||||||
|
.catch( ( error ) => {
|
||||||
|
console.error( error );
|
||||||
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const userCheckLoading = ref( true );
|
||||||
|
userStore.userCheckPromise
|
||||||
|
.finally( () => {
|
||||||
|
userCheckLoading.value = false;
|
||||||
|
} )
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<nav class="navbar navbar-expand-lg bg-dark-accented">
|
<nav id="navbar-main" class="navbar navbar-expand-lg bg-dark-accented">
|
||||||
<div class="container px-5">
|
<div class="container px-5">
|
||||||
|
|
||||||
<div class="position-absolute start-0 top-50 translate-middle-y d-flex ms-3 gap-3">
|
<div class="position-absolute start-0 top-50 translate-middle-y d-flex ms-3 gap-3">
|
||||||
@@ -45,31 +72,59 @@ const isActiveNav = ( navName: string ) => {
|
|||||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||||
<ul class="navbar-nav mb-2 mb-lg-0 d-flex align-items-center justify-content-center w-100">
|
<ul class="navbar-nav mb-2 mb-lg-0 d-flex align-items-center justify-content-center w-100">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<RouterLink to="/" class="nav-link text-light fs-3" :class="[{active: isActiveNav(navNames.HOME)}]" :aria-current="isActiveNav(navNames.HOME) ? 'page' : false">{{ $t( 'nav.home' ) }}</RouterLink>
|
<RouterLink to="/" class="nav-link text-light fs-3"
|
||||||
|
:aria-current="isActiveNav( navNames.HOME ) ? 'page' : false">{{ t( 'nav.home' ) }}</RouterLink>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item px-5 mx-5 rounded-5 py-2">
|
<li class="nav-item px-5 mx-5 rounded-5 py-2">
|
||||||
<RouterLink to="/" class="nav-link py-0">
|
<RouterLink to="/" class="nav-link py-0">
|
||||||
<IconJeobeardy height="3rem" width="4rem"/>
|
<IconJeobeardy height="3rem" width="4rem" />
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<RouterLink to="/about" class="nav-link text-light fs-3" :class="[{active: isActiveNav(navNames.ABOUT)}]" :aria-current="isActiveNav(navNames.HOME) ? 'page' : false">{{ $t( 'nav.about' ) }}</RouterLink>
|
<RouterLink to="/about" class="nav-link text-light fs-3"
|
||||||
|
:aria-current="isActiveNav( navNames.HOME ) ? 'page' : false">{{ t( 'nav.about' ) }}</RouterLink>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="position-absolute end-0 top-50 translate-middle-y d-flex me-3">
|
<div class="position-absolute end-0 top-50 translate-middle-y d-flex me-3 align-items-center">
|
||||||
<div v-if="userStore.loggedIn">
|
<template v-if=" userCheckLoading ">
|
||||||
{{ userStore.getUserOutput }}
|
|
||||||
|
</template>
|
||||||
|
<template v-else-if=" userStore.loggedIn ">
|
||||||
|
<div class="dropdown-toggle pointer" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
|
<img class="pfp-sizing rounded-circle border border-1 border-primary" :src="userStore.pfpSource"
|
||||||
|
alt="The Profile Pic of the user" />
|
||||||
</div>
|
</div>
|
||||||
|
<ul class="dropdown-menu dropdown-menu-end">
|
||||||
|
<li>
|
||||||
|
<p class="dropdown-header fs-5 pt-0 text-primary fw-semibold">{{ userStore.getUserOutput }}</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<RouterLink class="dropdown-item" to="/profile" :class="[{ 'active': route.name === 'profile' }]">Profile
|
||||||
|
</RouterLink>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<hr class="dropdown-divider">
|
||||||
|
</li>
|
||||||
|
<li><span class="dropdown-item pointer text-danger" @click="logoutUser">Logout</span></li>
|
||||||
|
</ul>
|
||||||
|
</template>
|
||||||
<div v-else>
|
<div v-else>
|
||||||
<RouterLink to="/login" class="btn btn-sm btn-outline-primary">
|
<RouterLink to="/login" class="btn btn-sm btn-outline-primary">
|
||||||
Login
|
Login
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<style lang="css" scoped>
|
||||||
|
.pfp-sizing {
|
||||||
|
width: 2.5rem;
|
||||||
|
height: 2.5rem;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -1,22 +1,27 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { useBootstrapTheme } from '@/composables/colorTheme';
|
import { useBootstrapTheme } from '@/composables/colorTheme';
|
||||||
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
const { availableThemes, currentTheme } = useBootstrapTheme();
|
const { availableThemes, currentTheme } = useBootstrapTheme();
|
||||||
|
const { t } = useI18n();
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="theme-changer">
|
<div class="theme-changer">
|
||||||
|
|
||||||
<div class="dropdown">
|
<div class="dropdown">
|
||||||
<button class="btn btn-sm btn-outline-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
|
<button class="btn btn-sm btn-outline-primary dropdown-toggle" type="button" data-bs-toggle="dropdown"
|
||||||
|
aria-expanded="false">
|
||||||
<FontAwesomeIcon :icon="currentTheme.icon" />
|
<FontAwesomeIcon :icon="currentTheme.icon" />
|
||||||
{{ $t( currentTheme.name ) }}
|
<!-- {{ t( currentTheme.name ) }} -->
|
||||||
</button>
|
</button>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
<li v-for="theme in availableThemes" :key="`theme-${theme.bsName}`" @click="currentTheme = theme" role="button">
|
<li v-for="theme in availableThemes" :key="`theme-${theme.bsName}`">
|
||||||
<a class="dropdown-item pointer" :class="[{active: theme.bsName === currentTheme.bsName}]">
|
<a class="dropdown-item pointer" :class="[{ active: theme.bsName === currentTheme.bsName }]"
|
||||||
|
@click="currentTheme = theme">
|
||||||
<FontAwesomeIcon :icon="theme.icon" />
|
<FontAwesomeIcon :icon="theme.icon" />
|
||||||
{{ $t(theme.name) }}
|
{{ t( theme.name ) }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -0,0 +1,67 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
import { Modal } from 'bootstrap';
|
||||||
|
import { onMounted, onUnmounted, ref } from 'vue';
|
||||||
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
|
const { t } = useI18n();
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
modalId: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const modalRef = ref<null | Element>(null);
|
||||||
|
let modalInstance: null | Modal;
|
||||||
|
|
||||||
|
onMounted( () => {
|
||||||
|
modalInstance = Modal.getOrCreateInstance(modalRef.value as Element);
|
||||||
|
});
|
||||||
|
|
||||||
|
onUnmounted( () => {
|
||||||
|
modalInstance?.dispose();
|
||||||
|
});
|
||||||
|
|
||||||
|
function show(){
|
||||||
|
if( modalInstance ){
|
||||||
|
modalInstance.show();
|
||||||
|
} else {
|
||||||
|
console.error("Modal was not properly created before showing");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function hide(){
|
||||||
|
if( modalInstance ){
|
||||||
|
modalInstance.hide();
|
||||||
|
} else {
|
||||||
|
console.error("Modal was not properly created before hiding");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
show,
|
||||||
|
hide,
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="modal fade" tabindex="-1" ref="modalRef" :id="props.modalId">
|
||||||
|
<div class="modal-dialog modal-dialog-centered">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">{{ t('profile.edit.title') }}</h5>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<p>TODO</p>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-outline-primary" data-bs-dismiss="modal">{{ t("common.buttons.close") }}</button>
|
||||||
|
<button type="button" class="btn btn-primary" data-bs-dismiss="modal">{{ t("common.buttons.saveAndExit") }}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -1,8 +1,12 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted } from 'vue';
|
import { ref, onMounted } from 'vue';
|
||||||
import { userService } from '@/services/UserService';
|
import { useI18n } from 'vue-i18n';
|
||||||
import IconJeobeardy from '../icons/IconJeobeardy.vue';
|
|
||||||
|
|
||||||
|
import { userService } from '@/services/UserService';
|
||||||
|
|
||||||
|
import IconJeobeardy from '@/components/icons/IconJeobeardy.vue';
|
||||||
|
|
||||||
|
const { t } = useI18n();
|
||||||
|
|
||||||
const testResponse = ref( {} );
|
const testResponse = ref( {} );
|
||||||
|
|
||||||
@@ -20,7 +24,7 @@ onMounted( () => {
|
|||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="w-100 d-flex justify-content-center my-5">
|
<div class="w-100 d-flex justify-content-center my-5">
|
||||||
<h1>
|
<h1>
|
||||||
{{ $t( 'home.welcome' ) }}
|
{{ t( 'home.welcome' ) }}
|
||||||
{{ testResponse }}
|
{{ testResponse }}
|
||||||
</h1>
|
</h1>
|
||||||
</div>
|
</div>
|
||||||
@@ -32,51 +36,51 @@ onMounted( () => {
|
|||||||
<div class="col-md-6 col-12 px-0 bg-body-secondary">
|
<div class="col-md-6 col-12 px-0 bg-body-secondary">
|
||||||
<div class="d-flex justify-content-center align-items-center h-100 w-100 flex-column">
|
<div class="d-flex justify-content-center align-items-center h-100 w-100 flex-column">
|
||||||
<h3 class="m-1">
|
<h3 class="m-1">
|
||||||
{{ $t("join.text") }}
|
{{ t("join.text") }}
|
||||||
</h3>
|
</h3>
|
||||||
<p>
|
<p>
|
||||||
{{ $t("join.alreadyHostedGome") }}
|
{{ t("join.alreadyHostedGome") }}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
{{ $t("join.textCode") }}
|
{{ t("join.textCode") }}
|
||||||
</p>
|
</p>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<input type="text" class="form-control" placeholder="Code">
|
<input type="text" class="form-control" placeholder="Code">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<button class="btn btn-primary">{{ $t("join.button") }}</button>
|
<button class="btn btn-primary">{{ t("join.button") }}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6 col-12 px-0 mx-0">
|
<div class="col-md-6 col-12 px-0 mx-0">
|
||||||
<img class="w-100" src="/src/assets/images/OldInGameBlurredRotated.jpeg"
|
<img class="w-100" src="/src/assets/images/OldInGameBlurredRotated.jpeg"
|
||||||
alt="Blurred, slightly tilted image of how the game looks like">
|
alt="Blurred, slightly tilted view of how a board looks like">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row w-100 border-bottom">
|
<div class="row w-100 border-bottom">
|
||||||
<div class="col-md-6 col-12 px-0 mx-0">
|
<div class="col-md-6 col-12 px-0 mx-0">
|
||||||
<img class="w-100" src="/src/assets/images/OldInGameBlurredRotated.jpeg"
|
<img class="w-100" src="/src/assets/images/OldInGameBlurredRotated.jpeg"
|
||||||
alt="Blurred, slightly tilted image of how the game looks like">
|
alt="Blurred, slightly tilted view of how the a board looks like">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6 col-12 px-0 mx-0 bg-body-secondary">
|
<div class="col-md-6 col-12 px-0 mx-0 bg-body-secondary">
|
||||||
<div class="h-100 w-100 d-flex justify-content-center align-items-center flex-column">
|
<div class="h-100 w-100 d-flex justify-content-center align-items-center flex-column">
|
||||||
<h3 class="m-1">
|
<h3 class="m-1">
|
||||||
{{ $t("host.text") }}
|
{{ t("host.text") }}
|
||||||
</h3>
|
</h3>
|
||||||
<p>
|
<p>
|
||||||
{{ $t("host.alreadyHostedGome") }}
|
{{ t("host.alreadyHostedGome") }}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
{{ $t("host.textCode") }}
|
{{ t("host.textCode") }}
|
||||||
</p>
|
</p>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<input type="text" class="form-control" placeholder="Code">
|
<input type="text" class="form-control" placeholder="Code">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<button class="btn btn-primary">{{ $t("host.button") }}</button>
|
<button class="btn btn-primary">{{ t("host.button") }}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,35 +1,33 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import type { LoginDto } from '@/models/dto/LoginDto';
|
import type { LoginDto } from '@/models/dto/LoginDto';
|
||||||
import type { User } from '@/models/user/User';
|
|
||||||
import { authService } from '@/services/AuthService';
|
import { authService } from '@/services/AuthService';
|
||||||
import { infoModalShowFnKey } from '@/services/UtilService';
|
import { infoModalShowFnKey } from '@/services/UtilService';
|
||||||
import { useUserStore } from '@/stores/UserStore';
|
import { useUserStore } from '@/stores/UserStore';
|
||||||
import useVuelidate from '@vuelidate/core';
|
import useVuelidate from '@vuelidate/core';
|
||||||
import { createI18nMessage, required } from '@vuelidate/validators';
|
import { createI18nMessage, required } from '@vuelidate/validators';
|
||||||
|
import { AxiosError } from 'axios';
|
||||||
import { computed, inject, ref } from 'vue';
|
import { computed, inject, ref } from 'vue';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
import { RouterLink, useRouter } from 'vue-router';
|
import { RouterLink, useRoute, useRouter } from 'vue-router';
|
||||||
|
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
const route = useRoute();
|
||||||
|
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
|
|
||||||
const showInfoModal = inject(infoModalShowFnKey);
|
const showInfoModal = inject( infoModalShowFnKey );
|
||||||
|
|
||||||
const username = ref('');
|
const username = ref( '' );
|
||||||
const password = ref('');
|
const password = ref( '' );
|
||||||
|
|
||||||
const errorMessage = ref('');
|
const errorMessage = ref( '' );
|
||||||
|
|
||||||
const loginInProgress = ref(false);
|
const loginInProgress = ref( false );
|
||||||
function loginUser(){
|
function loginUser() {
|
||||||
v$.value.$touch();
|
v$.value.$touch();
|
||||||
if(v$.value.$error){
|
if( v$.value.$error ) {
|
||||||
errorMessage.value = t('forms.validate-fields');
|
showErrorMessage(t( 'forms.validate-fields' ));
|
||||||
setTimeout(() => {
|
|
||||||
errorMessage.value = '';
|
|
||||||
}, 3000);
|
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
errorMessage.value = '';
|
errorMessage.value = '';
|
||||||
@@ -38,31 +36,46 @@ function loginUser(){
|
|||||||
loginInProgress.value = true;
|
loginInProgress.value = true;
|
||||||
authService.loginUser( loginDto )
|
authService.loginUser( loginDto )
|
||||||
.then( ( response ) => {
|
.then( ( response ) => {
|
||||||
userStore.setUser(response as User);
|
userStore.loginUser( response );
|
||||||
router.push({ name: 'profile'});
|
if( route.query.r ){
|
||||||
})
|
router.push( { name: route.query.r.toString() } );
|
||||||
.catch( ( err ) => {
|
|
||||||
console.error(err);
|
|
||||||
const modalText = t('login.error.process');
|
|
||||||
if( showInfoModal !== undefined ){
|
|
||||||
showInfoModal(t('common.error.generic'), modalText);
|
|
||||||
} else {
|
} else {
|
||||||
alert(modalText);
|
router.push( { name: 'profile' } );
|
||||||
}
|
}
|
||||||
})
|
} )
|
||||||
|
.catch( ( err: Error | AxiosError ) => {
|
||||||
|
console.error( err );
|
||||||
|
if( err instanceof AxiosError && err.response?.data === 4011 ){
|
||||||
|
showErrorMessage(t('login.error.credentials'));
|
||||||
|
} else {
|
||||||
|
const modalText = t( 'login.error.process' );
|
||||||
|
if( showInfoModal !== undefined ) {
|
||||||
|
showInfoModal( t( 'common.error.generic' ), modalText );
|
||||||
|
} else {
|
||||||
|
alert( modalText );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} )
|
||||||
.finally( () => {
|
.finally( () => {
|
||||||
loginInProgress.value = false;
|
loginInProgress.value = false;
|
||||||
})
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
const withI18nMessage = createI18nMessage({t: t});
|
function showErrorMessage(messageText: string, msTimeShown: number = 3000): void {
|
||||||
const inputRequired = withI18nMessage(required);
|
errorMessage.value = messageText;
|
||||||
const rules = computed( () => ({
|
setTimeout( () => {
|
||||||
|
errorMessage.value = '';
|
||||||
|
}, msTimeShown );
|
||||||
|
}
|
||||||
|
|
||||||
|
const withI18nMessage = createI18nMessage( { t: t } );
|
||||||
|
const inputRequired = withI18nMessage( required );
|
||||||
|
const rules = computed( () => ( {
|
||||||
username: { inputRequired },
|
username: { inputRequired },
|
||||||
password: { inputRequired },
|
password: { inputRequired },
|
||||||
}));
|
} ) );
|
||||||
|
|
||||||
const v$ = useVuelidate(rules, { username, password });
|
const v$ = useVuelidate( rules, { username, password } );
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -81,19 +94,21 @@ const v$ = useVuelidate(rules, { username, password });
|
|||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="input-username">
|
<label for="input-username">
|
||||||
{{ t( 'login.username' ) }}
|
{{ t( 'login.username' ) }}
|
||||||
<span v-if="v$.username.$error" class="text-danger ps-3">
|
<span v-if=" v$.username.$error " class="text-danger ps-3">
|
||||||
{{ v$.username.$errors[0].$message }}
|
{{ v$.username.$errors[0].$message }}
|
||||||
</span></label>
|
</span></label>
|
||||||
<input v-model="username" type="text" id="input-username" class="form-control" :class="[{'border-danger': v$.username.$error}]" @blur="v$.username.$touch">
|
<input v-model="username" type="text" id="input-username" class="form-control"
|
||||||
|
:class="[{ 'border-danger': v$.username.$error }]" @blur="v$.username.$touch" @keyup.enter="loginUser">
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="input-username">
|
<label for="input-username">
|
||||||
{{ t( 'login.password' ) }}
|
{{ t( 'login.password' ) }}
|
||||||
<span v-if="v$.password.$error" class="text-danger ps-3">
|
<span v-if=" v$.password.$error " class="text-danger ps-3">
|
||||||
{{ v$.password.$errors[0].$message }}
|
{{ v$.password.$errors[0].$message }}
|
||||||
</span>
|
</span>
|
||||||
</label>
|
</label>
|
||||||
<input v-model="password" type="password" id="input-username" class="form-control" :class="[{'border-danger': v$.password.$error}]" @blur="v$.password.$touch">
|
<input v-model="password" type="password" id="input-username" class="form-control"
|
||||||
|
:class="[{ 'border-danger': v$.password.$error }]" @blur="v$.password.$touch" @keyup.enter="loginUser">
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3 d-flex justify-content-between">
|
<div class="mb-3 d-flex justify-content-between">
|
||||||
<RouterLink to="/signup" class="btn btn-outline-primary">
|
<RouterLink to="/signup" class="btn btn-outline-primary">
|
||||||
@@ -103,7 +118,7 @@ const v$ = useVuelidate(rules, { username, password });
|
|||||||
{{ t( "login.loginButton" ) }}
|
{{ t( "login.loginButton" ) }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="errorMessage" class="alert alert-danger" role="alert">{{ errorMessage }}</div>
|
<div v-if=" errorMessage " class="alert alert-danger" role="alert">{{ errorMessage }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,34 +1,43 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { useUserStore } from '@/stores/UserStore';
|
|
||||||
import { computed } from 'vue';
|
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
|
import { useUserStore } from '@/stores/UserStore';
|
||||||
|
|
||||||
import BoardSelector from '@/components/blocks/BoardSelector.vue';
|
import BoardSelector from '@/components/blocks/BoardSelector.vue';
|
||||||
|
import EditProfileModal from '@/components/modals/EditProfileModal.vue';
|
||||||
|
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
|
|
||||||
const pfpSource = computed( () => {
|
const editProfileModalId = "edit-profile-modal-on-profile-page";
|
||||||
return ( userStore.profilePicture === null ? "/src/assets/images/PFP_BearHead.svg" : userStore.profilePicture )
|
|
||||||
})
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="d-flex flex-column justify-content-center align-items-center mt-5">
|
<div class="d-flex flex-column justify-content-center align-items-center mt-5">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col d-flex justify-content-center align-items-center flex-column">
|
||||||
<h1>
|
<h1>
|
||||||
{{ $t('profile.yourProfile') }}
|
{{ t('profile.yourProfile') }}
|
||||||
</h1>
|
</h1>
|
||||||
<div class="ratio ratio-1x1 border rounded-5" style="width: 15rem;">
|
<div class="ratio ratio-1x1 border rounded-5" style="width: 15rem;">
|
||||||
<img :src="pfpSource" alt="Your Profile Picture" />
|
<img :src="userStore.pfpSource" alt="Your Profile Pic" />
|
||||||
</div>
|
</div>
|
||||||
<p class="fs-3">
|
<p class="fs-3">
|
||||||
{{ userStore.username }}
|
{{ userStore.username }}
|
||||||
</p>
|
</p>
|
||||||
|
<div class="d-flex gap-3">
|
||||||
|
<button class="btn btn-outline-primary" :data-bs-target="`#${editProfileModalId}`" data-bs-toggle="modal">
|
||||||
|
Edit Profile
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="row bg-body-secondary w-100 py-4">
|
<div class="row bg-body-secondary w-100 py-4">
|
||||||
<div class="col text-center">
|
<div class="col text-center">
|
||||||
<h2>
|
<h2>
|
||||||
{{ $t('profile.yourBoards') }}
|
{{ t('profile.yourBoards') }}
|
||||||
</h2>
|
</h2>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<BoardSelector />
|
<BoardSelector />
|
||||||
@@ -38,10 +47,11 @@ const pfpSource = computed( () => {
|
|||||||
<div class="row w-100 py-4 mb-5">
|
<div class="row w-100 py-4 mb-5">
|
||||||
<div class="col text-center">
|
<div class="col text-center">
|
||||||
<h2>
|
<h2>
|
||||||
{{ $t('settings.heading') }}
|
{{ t('settings.heading') }}
|
||||||
</h2>
|
</h2>
|
||||||
<button class="btn btn-outline-primary">{{ $t('profile.gotoSettings') }}</button>
|
<button class="btn btn-outline-primary">{{ t('profile.gotoSettings') }}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<EditProfileModal :modalId="editProfileModalId"/>
|
||||||
</template>
|
</template>
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { type LoginDto } from '@/models/dto/LoginDto';
|
import { type LoginDto } from '@/models/dto/LoginDto';
|
||||||
import type { User } from '@/models/user/User';
|
|
||||||
import { authService } from '@/services/AuthService';
|
import { authService } from '@/services/AuthService';
|
||||||
import { infoModalShowFnKey } from '@/services/UtilService';
|
import { infoModalShowFnKey } from '@/services/UtilService';
|
||||||
import { useUserStore } from '@/stores/UserStore';
|
import { useUserStore } from '@/stores/UserStore';
|
||||||
@@ -15,22 +14,22 @@ const router = useRouter();
|
|||||||
|
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
|
|
||||||
const showInfoModal = inject(infoModalShowFnKey);
|
const showInfoModal = inject( infoModalShowFnKey );
|
||||||
|
|
||||||
const username = ref('');
|
const username = ref( '' );
|
||||||
const password = ref('');
|
const password = ref( '' );
|
||||||
const passwordRepeat = ref('');
|
const passwordRepeat = ref( '' );
|
||||||
|
|
||||||
const errorMessage = ref('');
|
const errorMessage = ref( '' );
|
||||||
|
|
||||||
const signupInProgress = ref(false);
|
const signupInProgress = ref( false );
|
||||||
function signupUser(){
|
function signupUser() {
|
||||||
v$.value.$touch();
|
v$.value.$touch();
|
||||||
if(v$.value.$error){
|
if( v$.value.$error ) {
|
||||||
errorMessage.value = t('forms.validate-fields');
|
errorMessage.value = t( 'forms.validate-fields' );
|
||||||
setTimeout(() => {
|
setTimeout( () => {
|
||||||
errorMessage.value = '';
|
errorMessage.value = '';
|
||||||
}, 3000);
|
}, 3000 );
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
errorMessage.value = '';
|
errorMessage.value = '';
|
||||||
@@ -39,32 +38,32 @@ function signupUser(){
|
|||||||
signupInProgress.value = true;
|
signupInProgress.value = true;
|
||||||
authService.signupUser( signupDto )
|
authService.signupUser( signupDto )
|
||||||
.then( ( response ) => {
|
.then( ( response ) => {
|
||||||
userStore.setUser(response as User);
|
userStore.loginUser( response );
|
||||||
router.push({ name: 'profile'});
|
router.push( { name: 'profile' } );
|
||||||
})
|
} )
|
||||||
.catch( ( err ) => {
|
.catch( ( err ) => {
|
||||||
console.error(err);
|
console.error( err );
|
||||||
const modalText = t('signup.error.process');
|
const modalText = t( 'login.error.process' );
|
||||||
if( showInfoModal !== undefined ){
|
if( showInfoModal !== undefined ) {
|
||||||
showInfoModal(t('common.error.generic'), modalText);
|
showInfoModal( t( 'common.error.generic' ), modalText );
|
||||||
} else {
|
} else {
|
||||||
alert(modalText);
|
alert( modalText );
|
||||||
}
|
}
|
||||||
})
|
} )
|
||||||
.finally( () => {
|
.finally( () => {
|
||||||
signupInProgress.value = false;
|
signupInProgress.value = false;
|
||||||
})
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
const withI18nMessage = createI18nMessage({t: t});
|
const withI18nMessage = createI18nMessage( { t: t } );
|
||||||
const inputRequired = withI18nMessage(required);
|
const inputRequired = withI18nMessage( required );
|
||||||
const rules = computed( () => ({
|
const rules = computed( () => ( {
|
||||||
username: { inputRequired },
|
username: { inputRequired },
|
||||||
password: { inputRequired, minLength: withI18nMessage(minLength(10)) },
|
password: { inputRequired, minLength: withI18nMessage( minLength( 10 ) ) },
|
||||||
passwordRepeat: { inputRequired, sameAs: withI18nMessage(sameAs(password.value, t('login.password'))) },
|
passwordRepeat: { inputRequired, sameAs: withI18nMessage( sameAs( password.value, t( 'login.password' ) ) ) },
|
||||||
}));
|
} ) );
|
||||||
|
|
||||||
const v$ = useVuelidate(rules, { username, password, passwordRepeat });
|
const v$ = useVuelidate( rules, { username, password, passwordRepeat } );
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -83,40 +82,44 @@ const v$ = useVuelidate(rules, { username, password, passwordRepeat });
|
|||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="input-username">
|
<label for="input-username">
|
||||||
{{ t( 'login.username' ) }}
|
{{ t( 'login.username' ) }}
|
||||||
<span v-if="v$.username.$error" class="text-danger ps-3">
|
<span v-if=" v$.username.$error " class="text-danger ps-3">
|
||||||
{{ v$.username.$errors[0].$message }}
|
{{ v$.username.$errors[0].$message }}
|
||||||
</span>
|
</span>
|
||||||
</label>
|
</label>
|
||||||
<input type="text" id="input-username" class="form-control" :class="[{'border-danger': v$.username.$error}]" v-model="username" @blur="v$.username.$touch">
|
<input type="text" id="input-username" class="form-control"
|
||||||
|
:class="[{ 'border-danger': v$.username.$error }]" v-model="username" @blur="v$.username.$touch" @keyup.enter="signupUser">
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="input-username">
|
<label for="input-username">
|
||||||
{{ t( 'login.password' ) }}
|
{{ t( 'login.password' ) }}
|
||||||
<span v-if="v$.password.$error" class="text-danger ps-3">
|
<span v-if=" v$.password.$error " class="text-danger ps-3">
|
||||||
{{ v$.password.$errors[0].$message }}
|
{{ v$.password.$errors[0].$message }}
|
||||||
</span>
|
</span>
|
||||||
</label>
|
</label>
|
||||||
<input type="password" id="input-username" class="form-control" :class="[{'border-danger': v$.password.$error}]" v-model="password" @blur="v$.password.$touch">
|
<input type="password" id="input-username" class="form-control"
|
||||||
|
:class="[{ 'border-danger': v$.password.$error }]" v-model="password" @blur="v$.password.$touch" @keyup.enter="signupUser">
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="input-username-repeat">
|
<label for="input-username-repeat">
|
||||||
{{ t( 'signup.password-repeat' ) }}
|
{{ t( 'signup.password-repeat' ) }}
|
||||||
<span v-if="v$.passwordRepeat.$error" class="text-danger ps-3">
|
<span v-if=" v$.passwordRepeat.$error " class="text-danger ps-3">
|
||||||
{{ v$.passwordRepeat.$errors[0].$message }}
|
{{ v$.passwordRepeat.$errors[0].$message }}
|
||||||
</span>
|
</span>
|
||||||
</label>
|
</label>
|
||||||
<input type="password" id="input-username-repeat" class="form-control" :class="[{'border-danger': v$.passwordRepeat.$error}]" v-model="passwordRepeat" @blur="v$.passwordRepeat.$touch">
|
<input type="password" id="input-username-repeat" class="form-control"
|
||||||
|
:class="[{ 'border-danger': v$.passwordRepeat.$error }]" v-model="passwordRepeat"
|
||||||
|
@blur="v$.passwordRepeat.$touch" @keyup.enter="signupUser">
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3 d-flex justify-content-between">
|
<div class="mb-3 d-flex justify-content-between">
|
||||||
<RouterLink to="/login" class="btn btn-outline-primary">
|
<RouterLink to="/login" class="btn btn-outline-primary">
|
||||||
{{ t( "signup.loginLinkButton" ) }}
|
{{ t( "signup.loginLinkButton" ) }}
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
<button class="btn btn-primary" @click="signupUser" :disabled="signupInProgress">
|
<button class="btn btn-primary" @click="signupUser" :disabled="signupInProgress">
|
||||||
<font-awesome-icon v-if="signupInProgress" :icon="['fas', 'spinner']" spin/>
|
<FontAwesomeIcon v-if=" signupInProgress " :icon="['fas', 'spinner']" spin />
|
||||||
{{ t( "signup.signupButton" ) }}
|
{{ t( "signup.signupButton" ) }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="errorMessage" class="alert alert-danger" role="alert">{{ errorMessage }}</div>
|
<div v-if=" errorMessage " class="alert alert-danger" role="alert">{{ errorMessage }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -12,7 +12,8 @@
|
|||||||
"username": "Username",
|
"username": "Username",
|
||||||
"password": "Password",
|
"password": "Password",
|
||||||
"error": {
|
"error": {
|
||||||
"process": "An error occured during the login process"
|
"process": "An error occured during the login process",
|
||||||
|
"credentials": "Username or password incorrect"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"signup": {
|
"signup": {
|
||||||
@@ -37,14 +38,19 @@
|
|||||||
"profile": {
|
"profile": {
|
||||||
"yourProfile": "Your Profile",
|
"yourProfile": "Your Profile",
|
||||||
"yourBoards": "Your Boards",
|
"yourBoards": "Your Boards",
|
||||||
"gotoSettings": "Go to Settings"
|
"gotoSettings": "Go to Settings",
|
||||||
|
"edit": {
|
||||||
|
"title": "Edit your Profile"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"settings": {
|
"settings": {
|
||||||
"heading": "Settings"
|
"heading": "Settings"
|
||||||
},
|
},
|
||||||
"common": {
|
"common": {
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"close": "Close"
|
"close": "Close",
|
||||||
|
"save": "Save",
|
||||||
|
"saveAndExit": "Save and Exit"
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"generic": "Error"
|
"generic": "Error"
|
||||||
|
|||||||
@@ -7,13 +7,9 @@ import router from './router';
|
|||||||
|
|
||||||
import '@/assets/scss/customized_bootstrap.scss';
|
import '@/assets/scss/customized_bootstrap.scss';
|
||||||
|
|
||||||
// Importing bootstrap components which rely on js here
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
||||||
import { Dropdown } from 'bootstrap';
|
|
||||||
|
|
||||||
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';
|
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';
|
||||||
import { library } from '@fortawesome/fontawesome-svg-core';
|
import { library } from '@fortawesome/fontawesome-svg-core';
|
||||||
import { faSun, faMoon, faCircleHalfStroke, faEdit, faPlay, faSpinner } from '@fortawesome/free-solid-svg-icons';
|
import { faSun, faMoon, faCircleHalfStroke, faEdit, faPlay, faSpinner, faLanguage, faGlobe } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
|
||||||
import enMessages from './locales/en.json';
|
import enMessages from './locales/en.json';
|
||||||
import deMessages from './locales/de.json';
|
import deMessages from './locales/de.json';
|
||||||
@@ -34,7 +30,9 @@ library.add(
|
|||||||
faCircleHalfStroke,
|
faCircleHalfStroke,
|
||||||
faEdit,
|
faEdit,
|
||||||
faPlay,
|
faPlay,
|
||||||
faSpinner
|
faSpinner,
|
||||||
|
faLanguage,
|
||||||
|
faGlobe,
|
||||||
)
|
)
|
||||||
|
|
||||||
const app = createApp( App );
|
const app = createApp( App );
|
||||||
|
|||||||
@@ -1,14 +1,4 @@
|
|||||||
// export class LoginDto{
|
|
||||||
// username: String;
|
|
||||||
// password: String;
|
|
||||||
|
|
||||||
// constructor(username: String, password: String){
|
|
||||||
// this.username = username;
|
|
||||||
// this.password = password;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
export type LoginDto = {
|
export type LoginDto = {
|
||||||
username: String;
|
username: string;
|
||||||
password: String;
|
password: string;
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
export type User = {
|
export type User = {
|
||||||
username: string,
|
username: string,
|
||||||
password: string,
|
|
||||||
profilePictureFilename: string | undefined,
|
profilePictureFilename: string | undefined,
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
// This can be directly added to any of your `.ts` files like `router.ts`
|
||||||
|
// It can also be added to a `.d.ts` file. Make sure it's included in
|
||||||
|
// project's tsconfig.json "files"
|
||||||
|
import 'vue-router'
|
||||||
|
|
||||||
|
// To ensure it is treated as a module, add at least one `export` statement
|
||||||
|
export {}
|
||||||
|
|
||||||
|
declare module 'vue-router' {
|
||||||
|
interface RouteMeta {
|
||||||
|
// must be declared by every route
|
||||||
|
requiresAuth: boolean
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,6 +5,7 @@ import LoginPage from '@/components/pages/LoginPage.vue';
|
|||||||
import SignupPage from '@/components/pages/SignupPage.vue';
|
import SignupPage from '@/components/pages/SignupPage.vue';
|
||||||
import GamePage from '@/components/pages/GamePage.vue';
|
import GamePage from '@/components/pages/GamePage.vue';
|
||||||
import ProfilePage from '@/components/pages/ProfilePage.vue';
|
import ProfilePage from '@/components/pages/ProfilePage.vue';
|
||||||
|
import { useUserStore } from '@/stores/UserStore';
|
||||||
|
|
||||||
const router = createRouter( {
|
const router = createRouter( {
|
||||||
history: createWebHistory( import.meta.env.BASE_URL ),
|
history: createWebHistory( import.meta.env.BASE_URL ),
|
||||||
@@ -13,31 +14,57 @@ const router = createRouter( {
|
|||||||
path: '/',
|
path: '/',
|
||||||
name: 'home',
|
name: 'home',
|
||||||
component: HomePage,
|
component: HomePage,
|
||||||
|
meta: {
|
||||||
|
requiresAuth: false,
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/about',
|
path: '/about',
|
||||||
name: 'about',
|
name: 'about',
|
||||||
component: AboutPage,
|
component: AboutPage,
|
||||||
|
meta: {
|
||||||
|
requiresAuth: false,
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/login',
|
path: '/login',
|
||||||
name: 'login',
|
name: 'login',
|
||||||
component: LoginPage,
|
component: LoginPage,
|
||||||
|
meta: {
|
||||||
|
requiresAuth: false,
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/signup',
|
path: '/signup',
|
||||||
name: 'signup',
|
name: 'signup',
|
||||||
component: SignupPage,
|
component: SignupPage,
|
||||||
|
meta: {
|
||||||
|
requiresAuth: false,
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/profile',
|
path: '/profile',
|
||||||
name: 'profile',
|
name: 'profile',
|
||||||
component: ProfilePage,
|
component: ProfilePage,
|
||||||
|
meta: {
|
||||||
|
requiresAuth: true,
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/game',
|
path: '/game',
|
||||||
name: 'Game',
|
name: 'game',
|
||||||
component: GamePage,
|
component: GamePage,
|
||||||
|
meta: {
|
||||||
|
requiresAuth: false,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/board',
|
||||||
|
name: 'board',
|
||||||
|
component: ProfilePage,
|
||||||
|
meta: {
|
||||||
|
requiresAuth: true,
|
||||||
|
}
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
// path: '/about',
|
// path: '/about',
|
||||||
@@ -47,7 +74,23 @@ const router = createRouter( {
|
|||||||
// // which is lazy-loaded when the route is visited.
|
// // which is lazy-loaded when the route is visited.
|
||||||
// component: () => import('../views/AboutView.vue')
|
// component: () => import('../views/AboutView.vue')
|
||||||
// }
|
// }
|
||||||
]
|
],
|
||||||
|
} );
|
||||||
|
|
||||||
|
router.beforeEach( ( to, from, next ) => {
|
||||||
|
const userStore = useUserStore();
|
||||||
|
userStore.userCheckPromise
|
||||||
|
.finally( () => {
|
||||||
|
if( to.meta.requiresAuth === true && !userStore.loggedIn ) {
|
||||||
|
if( from.name === 'login' ) {
|
||||||
|
console.error( 'recursive forward detected' );
|
||||||
|
next( { name: 'home' } );
|
||||||
|
}
|
||||||
|
next( { name: 'login', query: { r: to.name?.toString() } } );
|
||||||
|
} else {
|
||||||
|
next();
|
||||||
|
}
|
||||||
|
} );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
export default router;
|
export default router;
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
import { ENV } from "@/Env";
|
import { ENV } from "@/Env";
|
||||||
import type { LoginDto } from '@/models/dto/LoginDto';
|
import type { LoginDto } from '@/models/dto/LoginDto';
|
||||||
import axios from "axios";
|
import type { User } from '@/models/user/User';
|
||||||
|
import axios, { AxiosError } from "axios";
|
||||||
|
|
||||||
class AuthService {
|
class AuthService {
|
||||||
|
|
||||||
signupUser( signupDto: LoginDto ) {
|
signupUser( signupDto: LoginDto ): Promise<User> {
|
||||||
return new Promise( ( resolve, reject ) => {
|
return new Promise( ( resolve, reject ) => {
|
||||||
axios.post( `${ENV.API_BASE_URL}/auth/signup`,
|
axios.post( `${ENV.API_BASE_URL}/auth/signup`,
|
||||||
signupDto,
|
signupDto,
|
||||||
@@ -16,13 +16,13 @@ class AuthService {
|
|||||||
.then( ( response ) => {
|
.then( ( response ) => {
|
||||||
resolve( response.data );
|
resolve( response.data );
|
||||||
} )
|
} )
|
||||||
.catch( ( error ) => {
|
.catch( ( error: Error | AxiosError ) => {
|
||||||
reject( error );
|
reject( error );
|
||||||
} );
|
} );
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
loginUser( loginDto: LoginDto ) {
|
loginUser( loginDto: LoginDto ): Promise<User> {
|
||||||
return new Promise( ( resolve, reject ) => {
|
return new Promise( ( resolve, reject ) => {
|
||||||
axios.post( `${ENV.API_BASE_URL}/auth/login`,
|
axios.post( `${ENV.API_BASE_URL}/auth/login`,
|
||||||
loginDto,
|
loginDto,
|
||||||
@@ -31,15 +31,15 @@ class AuthService {
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
.then( ( response ) => {
|
.then( ( response ) => {
|
||||||
resolve( response );
|
resolve( response.data );
|
||||||
} )
|
} )
|
||||||
.catch( ( error ) => {
|
.catch( ( error: Error | AxiosError ) => {
|
||||||
reject( error );
|
reject( error );
|
||||||
} );
|
} );
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
logoutUser() {
|
logoutUser(): Promise<string> {
|
||||||
return new Promise( ( resolve, reject ) => {
|
return new Promise( ( resolve, reject ) => {
|
||||||
axios.post( `${ENV.API_BASE_URL}/auth/logout`,
|
axios.post( `${ENV.API_BASE_URL}/auth/logout`,
|
||||||
null,
|
null,
|
||||||
@@ -48,9 +48,25 @@ class AuthService {
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
.then( ( response ) => {
|
.then( ( response ) => {
|
||||||
resolve( response );
|
resolve( response.data );
|
||||||
} )
|
} )
|
||||||
.catch( ( error ) => {
|
.catch( ( error: Error | AxiosError ) => {
|
||||||
|
reject( error );
|
||||||
|
} );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
checkUser(): Promise<User> {
|
||||||
|
return new Promise( ( resolve, reject ) => {
|
||||||
|
axios.get( `${ENV.API_BASE_URL}/auth/status`,
|
||||||
|
{
|
||||||
|
withCredentials: true,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.then( ( response ) => {
|
||||||
|
resolve( response.data );
|
||||||
|
} )
|
||||||
|
.catch( ( error: Error | AxiosError ) => {
|
||||||
reject( error );
|
reject( error );
|
||||||
} );
|
} );
|
||||||
} );
|
} );
|
||||||
|
|||||||
@@ -1,8 +1,3 @@
|
|||||||
import type { InjectionKey } from 'vue';
|
import type { InjectionKey } from 'vue';
|
||||||
|
|
||||||
class UtilService{
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
export const infoModalShowFnKey = Symbol() as InjectionKey<Function>;
|
export const infoModalShowFnKey = Symbol() as InjectionKey<Function>;
|
||||||
@@ -1,38 +1,59 @@
|
|||||||
import { computed, ref } from "vue";
|
import { computed, ref } from "vue";
|
||||||
import { defineStore } from "pinia";
|
import { defineStore } from "pinia";
|
||||||
import type { User } from '@/models/user/User';
|
import type { User } from '@/models/user/User';
|
||||||
|
import { authService } from '@/services/AuthService';
|
||||||
|
import { AxiosError } from 'axios';
|
||||||
|
|
||||||
export const useUserStore = defineStore( 'user', () => {
|
export const useUserStore = defineStore( 'user', () => {
|
||||||
const username = ref( '' );
|
const username = ref( '' );
|
||||||
const profilePicture = ref<undefined | string>( undefined );
|
const profilePicture = ref<null | string>( null );
|
||||||
const loggedIn = ref(false);
|
const loggedIn = ref( false );
|
||||||
|
|
||||||
const getUserOutput = computed(() => `${username.value}`);
|
const getUserOutput = computed( () => `${username.value}` );
|
||||||
|
const pfpSource = computed( () => {
|
||||||
|
return profilePicture.value ?? "/src/assets/images/PFP_BearHead.svg"
|
||||||
|
})
|
||||||
|
|
||||||
function setUser(user: User){
|
function loginUser( user: User ) {
|
||||||
username.value = user.username;
|
username.value = user.username;
|
||||||
profilePicture.value = user.profilePictureFilename;
|
profilePicture.value = user.profilePictureFilename ?? null;
|
||||||
loggedIn.value = true;
|
loggedIn.value = true;
|
||||||
sessionStorage.setItem() //???
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function unsetUser(){
|
function logoutUser() {
|
||||||
username.value = '';
|
username.value = '';
|
||||||
profilePicture.value = undefined;
|
profilePicture.value = null;
|
||||||
loggedIn.value = false;
|
loggedIn.value = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getCheckUser(): Promise<User> {
|
||||||
|
return new Promise( ( resolve, reject ) => {
|
||||||
|
authService.checkUser()
|
||||||
|
.then( ( user ) => {
|
||||||
|
loginUser( user );
|
||||||
|
resolve( user );
|
||||||
|
} )
|
||||||
|
.catch( ( error: Error | AxiosError ) => {
|
||||||
|
console.debug( error );
|
||||||
|
reject( error );
|
||||||
|
} );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
const userCheckPromise = getCheckUser();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
//Refs
|
//Refs
|
||||||
username,
|
username,
|
||||||
profilePicture,
|
profilePicture,
|
||||||
loggedIn,
|
loggedIn,
|
||||||
|
userCheckPromise,
|
||||||
|
|
||||||
//Getters
|
//Getters
|
||||||
getUserOutput,
|
getUserOutput,
|
||||||
|
pfpSource,
|
||||||
|
|
||||||
//Functions
|
//Functions
|
||||||
setUser,
|
loginUser,
|
||||||
unsetUser,
|
logoutUser,
|
||||||
};
|
};
|
||||||
} );
|
} );
|
||||||
Reference in new issue
Block a user