diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 6f6e55b05..326582ddc 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -33,6 +33,9 @@ body: options: # The below comment is used to insert a new version with on-release.yml #NEXT_VERSION# + - 1.49.0 + - 1.48.0 + - 1.47.0 - 1.46.0 - 1.45.3 - 1.45.2 diff --git a/CHANGELOG.md b/CHANGELOG.md index 9fe820a01..672962501 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,35 @@ +## [1.49.1](https://github.com/homarr-labs/homarr/compare/v1.49.0...v1.49.1) (2026-01-03) + +### Bug Fixes + +* **db:** connection issue do to missing host and name of db when connecting with host ([#4786](https://github.com/homarr-labs/homarr/issues/4786)) ([7d33225](https://github.com/homarr-labs/homarr/commit/7d3322576c3ed1b9917873bf707d77d2a4eef1a8)) +* **deps:** update dependency ldapts to v8.0.36 ([#4790](https://github.com/homarr-labs/homarr/issues/4790)) ([1842e5f](https://github.com/homarr-labs/homarr/commit/1842e5fff5c072c8da45a01be860e63d12d5062a)) +* **deps:** update dependency react-error-boundary to ^6.0.1 ([#4791](https://github.com/homarr-labs/homarr/issues/4791)) ([1b70973](https://github.com/homarr-labs/homarr/commit/1b70973084c9e9ebed34e8d7d9690a9e5530f60f)) +* **unraid:** temperature of disks can be null ([#4788](https://github.com/homarr-labs/homarr/issues/4788)) ([60f9d4e](https://github.com/homarr-labs/homarr/commit/60f9d4e6e69df2190171e5d8e263b2030447ab2e)) + +## [1.49.0](https://github.com/homarr-labs/homarr/compare/v1.48.0...v1.49.0) (2026-01-02) + +### Features + +* unraid integration ([#4439](https://github.com/homarr-labs/homarr/issues/4439)) ([9b0dd6d](https://github.com/homarr-labs/homarr/commit/9b0dd6d6cebda4a541c8859506d89e9e9f782fa4)) + +### Bug Fixes + +* add orphaned status for containers with invalid stats ([#4441](https://github.com/homarr-labs/homarr/issues/4441)) ([f04f537](https://github.com/homarr-labs/homarr/commit/f04f53759b6890d5d2dd683a9bf124d8ff12780b)) +* **deps:** update dependency @xterm/addon-fit to v0.11.0 ([#4756](https://github.com/homarr-labs/homarr/issues/4756)) ([1c727e5](https://github.com/homarr-labs/homarr/commit/1c727e59af4041e5e41da854633ccd3c030c1d18)) +* **deps:** update dependency @xterm/xterm to v6 ([#4757](https://github.com/homarr-labs/homarr/issues/4757)) ([fad478c](https://github.com/homarr-labs/homarr/commit/fad478c549cdbc616f921d9b444bff48b59e77a5)) +* **deps:** update dependency isomorphic-dompurify to ^2.35.0 ([#4779](https://github.com/homarr-labs/homarr/issues/4779)) ([236fa35](https://github.com/homarr-labs/homarr/commit/236fa35f7e0943be33bba153e7030ce4e3bb204e)) +* **deps:** update dependency jotai to ^2.16.1 ([#4772](https://github.com/homarr-labs/homarr/issues/4772)) ([d002700](https://github.com/homarr-labs/homarr/commit/d00270046a041a10c1c540cfa79c1eee477f3303)) +* **deps:** update dependency ldapts to v8.0.31 ([#4755](https://github.com/homarr-labs/homarr/issues/4755)) ([8b09693](https://github.com/homarr-labs/homarr/commit/8b096939e4e1da8e98791a8e05f108a136fe2810)) +* **deps:** update dependency ldapts to v8.0.32 ([#4762](https://github.com/homarr-labs/homarr/issues/4762)) ([49afb82](https://github.com/homarr-labs/homarr/commit/49afb8244615f67af0586aaacf77a509231ac6dc)) +* **deps:** update dependency ldapts to v8.0.34 ([#4765](https://github.com/homarr-labs/homarr/issues/4765)) ([809bf55](https://github.com/homarr-labs/homarr/commit/809bf559fe1b96df9a903dc790d138cad7368adb)) +* **deps:** update dependency ldapts to v8.0.35 ([#4768](https://github.com/homarr-labs/homarr/issues/4768)) ([e574dd7](https://github.com/homarr-labs/homarr/commit/e574dd70f1421e9254a289a0f02fd0b4d43e26ad)) +* **deps:** update dependency typescript-eslint to ^8.50.1 ([#4758](https://github.com/homarr-labs/homarr/issues/4758)) ([adaa803](https://github.com/homarr-labs/homarr/commit/adaa8039dd545109246ccd9fa15570739f755f62)) +* **deps:** update nextjs monorepo to v16.1.1 ([#4759](https://github.com/homarr-labs/homarr/issues/4759)) ([7712ab4](https://github.com/homarr-labs/homarr/commit/7712ab410b5094e5d84df75461e07efdfccc285b)) +* **deps:** update tanstack-query monorepo ([#4782](https://github.com/homarr-labs/homarr/issues/4782)) ([1e5d38f](https://github.com/homarr-labs/homarr/commit/1e5d38fd3ca4c68fa4c61b02757a3cff39839fdb)) +* **deps:** update testcontainers-node monorepo to ^11.11.0 ([#4781](https://github.com/homarr-labs/homarr/issues/4781)) ([e40a116](https://github.com/homarr-labs/homarr/commit/e40a11608cb21a75e6910028abf97e14b5275f56)) +* **deps:** update turbo monorepo to ^2.7.2 ([#4764](https://github.com/homarr-labs/homarr/issues/4764)) ([9191430](https://github.com/homarr-labs/homarr/commit/919143022969350f6ee7be2f53be2fe09a89bba3)) + ## [1.48.0](https://github.com/homarr-labs/homarr/compare/v1.47.0...v1.48.0) (2025-12-26) ### Features diff --git a/CODEOWNERS b/CODEOWNERS index 59516a4fa..ed482fd41 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -2,8 +2,8 @@ * @homarr-labs/maintainers # Exempt Renovate‑managed files (no owners) -package.json @homarr-labs/none -package-lock.json @homarr-labs/none -pnpm-lock.yaml @homarr-labs/none -Dockerfile @homarr-labs/none -docker-compose.yml @homarr-labs/none +package.json +package-lock.json +pnpm-lock.yaml +Dockerfile +docker-compose.yml diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index a411a4d5c..5ee38c589 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -55,9 +55,9 @@ "@mantine/modals": "^8.3.10", "@mantine/tiptap": "^8.3.10", "@million/lint": "1.0.14", - "@tabler/icons-react": "^3.35.0", - "@tanstack/react-query": "^5.90.12", - "@tanstack/react-query-devtools": "^5.91.1", + "@tabler/icons-react": "^3.36.0", + "@tanstack/react-query": "^5.90.16", + "@tanstack/react-query-devtools": "^5.91.2", "@tanstack/react-query-next-experimental": "^5.91.0", "@trpc/client": "^11.8.1", "@trpc/next": "^11.8.1", @@ -65,7 +65,7 @@ "@trpc/server": "^11.8.1", "@xterm/addon-canvas": "^0.7.0", "@xterm/addon-fit": "0.11.0", - "@xterm/xterm": "^5.5.0", + "@xterm/xterm": "^6.0.0", "babel-plugin-react-compiler": "^1.0.0", "chroma-js": "^3.2.0", "clsx": "^2.1.1", @@ -73,7 +73,7 @@ "dotenv": "^17.2.3", "flag-icons": "^7.5.0", "glob": "^13.0.0", - "isomorphic-dompurify": "^2.34.0", + "isomorphic-dompurify": "^2.35.0", "jotai": "^2.16.1", "mantine-react-table": "2.0.0-beta.9", "next": "16.1.1", @@ -81,7 +81,7 @@ "prismjs": "^1.30.0", "react": "19.2.3", "react-dom": "19.2.3", - "react-error-boundary": "^6.0.0", + "react-error-boundary": "^6.0.1", "react-simple-code-editor": "^0.14.1", "sass": "^1.97.1", "superjson": "2.2.6", diff --git a/apps/nextjs/src/app/api/[...trpc]/route.ts b/apps/nextjs/src/app/api/[...trpc]/route.ts index fa5ced6fc..2980900a8 100644 --- a/apps/nextjs/src/app/api/[...trpc]/route.ts +++ b/apps/nextjs/src/app/api/[...trpc]/route.ts @@ -3,21 +3,24 @@ import { userAgent } from "next/server"; import { createOpenApiFetchHandler } from "trpc-to-openapi"; import { appRouter, createTRPCContext } from "@homarr/api"; -import type { Session } from "@homarr/auth"; -import { hashPasswordAsync } from "@homarr/auth"; -import { createSessionAsync } from "@homarr/auth/server"; +import { API_KEY_HEADER_NAME, getSessionFromApiKeyAsync } from "@homarr/auth/api-key"; +import { ipAddressFromHeaders } from "@homarr/common/server"; import { createLogger } from "@homarr/core/infrastructure/logs"; import { ErrorWithMetadata } from "@homarr/core/infrastructure/logs/error"; -import { db, eq } from "@homarr/db"; -import { apiKeys } from "@homarr/db/schema"; +import { db } from "@homarr/db"; const logger = createLogger({ module: "trpcOpenApiRoute" }); const handlerAsync = async (req: NextRequest) => { - const apiKeyHeaderValue = req.headers.get("ApiKey"); - const ipAddress = req.headers.get("x-forwarded-for"); + const apiKeyHeaderValue = req.headers.get(API_KEY_HEADER_NAME); + const ipAddress = ipAddressFromHeaders(req.headers); const { ua } = userAgent(req); - const session: Session | null = await getSessionOrDefaultFromHeadersAsync(apiKeyHeaderValue, ipAddress, ua); + + logger.info( + `Creating OpenAPI fetch handler for user ${apiKeyHeaderValue ? "with an api key" : "without an api key"}`, + ); + + const session = await getSessionFromApiKeyAsync(db, apiKeyHeaderValue, ipAddress, ua); // Fallback to JSON if no content type is set if (!req.headers.has("Content-Type")) { @@ -35,67 +38,6 @@ const handlerAsync = async (req: NextRequest) => { }); }; -const getSessionOrDefaultFromHeadersAsync = async ( - apiKeyHeaderValue: string | null, - ipAdress: string | null, - userAgent: string, -): Promise => { - logger.info( - `Creating OpenAPI fetch handler for user ${apiKeyHeaderValue ? "with an api key" : "without an api key"}`, - ); - - if (apiKeyHeaderValue === null) { - return null; - } - - const [apiKeyId, apiKey] = apiKeyHeaderValue.split("."); - - if (!apiKeyId || !apiKey) { - logger.warn("An attempt to authenticate over API has failed due to invalid API key format", { - ipAdress, - userAgent, - }); - return null; - } - - const apiKeyFromDb = await db.query.apiKeys.findFirst({ - where: eq(apiKeys.id, apiKeyId), - columns: { - id: true, - apiKey: true, - salt: true, - }, - with: { - user: { - columns: { - id: true, - name: true, - email: true, - emailVerified: true, - }, - }, - }, - }); - - if (!apiKeyFromDb) { - logger.warn("An attempt to authenticate over API has failed", { ipAdress, userAgent }); - return null; - } - - const hashedApiKey = await hashPasswordAsync(apiKey, apiKeyFromDb.salt); - - if (apiKeyFromDb.apiKey !== hashedApiKey) { - logger.warn("An attempt to authenticate over API has failed", { ipAdress, userAgent }); - return null; - } - - logger.info("Read session from API request and found user", { - name: apiKeyFromDb.user.name, - id: apiKeyFromDb.user.id, - }); - return await createSessionAsync(db, apiKeyFromDb.user); -}; - export { handlerAsync as DELETE, handlerAsync as GET, diff --git a/apps/nextjs/src/app/api/trpc/[trpc]/route.ts b/apps/nextjs/src/app/api/trpc/[trpc]/route.ts index 65ebb353d..8ac6c166d 100644 --- a/apps/nextjs/src/app/api/trpc/[trpc]/route.ts +++ b/apps/nextjs/src/app/api/trpc/[trpc]/route.ts @@ -1,10 +1,14 @@ +import { userAgent } from "next/server"; import { fetchRequestHandler } from "@trpc/server/adapters/fetch"; import { appRouter, createTRPCContext } from "@homarr/api"; import { trpcPath } from "@homarr/api/shared"; +import { API_KEY_HEADER_NAME, getSessionFromApiKeyAsync } from "@homarr/auth/api-key"; import { auth } from "@homarr/auth/next"; +import { ipAddressFromHeaders } from "@homarr/common/server"; import { createLogger } from "@homarr/core/infrastructure/logs"; import { ErrorWithMetadata } from "@homarr/core/infrastructure/logs/error"; +import { db } from "@homarr/db"; const logger = createLogger({ module: "trpcRoute" }); @@ -28,11 +32,20 @@ export function OPTIONS() { } const handler = auth(async (req) => { + // Try API key auth first, fall back to session cookie + const apiKeyHeader = req.headers.get(API_KEY_HEADER_NAME); + const ipAddress = ipAddressFromHeaders(req.headers); + + const { ua } = userAgent(req); + + const apiKeySession = await getSessionFromApiKeyAsync(db, apiKeyHeader, ipAddress, ua); + const session = apiKeySession ?? req.auth; + const response = await fetchRequestHandler({ endpoint: trpcPath, router: appRouter, req, - createContext: () => createTRPCContext({ session: req.auth, headers: req.headers }), + createContext: () => createTRPCContext({ session, headers: req.headers }), onError({ error, path, type }) { logger.error(new ErrorWithMetadata("tRPC Error occured", { path, type }, { cause: error })); }, diff --git a/apps/nextjs/src/components/access/context.tsx b/apps/nextjs/src/components/access/context.tsx index 259c59a42..cd5aa4ab0 100644 --- a/apps/nextjs/src/components/access/context.tsx +++ b/apps/nextjs/src/components/access/context.tsx @@ -1,5 +1,6 @@ import { createContext, useContext } from "react"; -import type { TablerIcon } from "@tabler/icons-react"; + +import type { TablerIcon } from "@homarr/ui"; const AccessContext = createContext<{ permissions: readonly string[]; diff --git a/apps/nextjs/src/components/no-results.tsx b/apps/nextjs/src/components/no-results.tsx index c25724297..db492c2e1 100644 --- a/apps/nextjs/src/components/no-results.tsx +++ b/apps/nextjs/src/components/no-results.tsx @@ -1,5 +1,6 @@ import { Anchor, Card, Stack, Text } from "@mantine/core"; -import type { TablerIcon } from "@tabler/icons-react"; + +import type { TablerIcon } from "@homarr/ui"; interface NoResultsProps { icon: TablerIcon; diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 3d663aa84..c8ae32e50 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -49,7 +49,7 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/node": "^24.10.4", "dotenv-cli": "^11.0.0", - "esbuild": "^0.27.1", + "esbuild": "^0.27.2", "eslint": "^9.39.2", "prettier": "^3.7.4", "tsx": "4.20.4", diff --git a/apps/websocket/package.json b/apps/websocket/package.json index 522ffb3de..aca89c205 100644 --- a/apps/websocket/package.json +++ b/apps/websocket/package.json @@ -34,7 +34,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/ws": "^8.18.1", - "esbuild": "^0.27.1", + "esbuild": "^0.27.2", "eslint": "^9.39.2", "prettier": "^3.7.4", "typescript": "^5.9.3" diff --git a/deployments/prebuilt-debian/package.json b/deployments/prebuilt-debian/package.json index 1d5739653..b9e0930b8 100644 --- a/deployments/prebuilt-debian/package.json +++ b/deployments/prebuilt-debian/package.json @@ -4,10 +4,10 @@ "dependencies": { "better-sqlite3": "^12.5.0" }, - "packageManager": "pnpm@10.26.2", + "packageManager": "pnpm@10.27.0", "engines": { "node": ">=24.12.0", - "pnpm": ">=10.26.2" + "pnpm": ">=10.27.0" }, "pnpm": { "onlyBuiltDependencies": [ diff --git a/docs/README.md b/docs/README.md index bc258e332..127ef95f8 100644 --- a/docs/README.md +++ b/docs/README.md @@ -314,6 +314,13 @@

Unifi
Controller

+ + + + Unraid +
+

Unraid

+
diff --git a/package.json b/package.json index 7746ea2e0..a0f012140 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "homarr", - "version": "1.48.0", + "version": "1.49.1", "private": true, "scripts": { "build": "cross-env CI=true turbo build", @@ -42,27 +42,27 @@ "@semantic-release/github": "^12.0.2", "@semantic-release/npm": "^13.1.3", "@semantic-release/release-notes-generator": "^14.1.0", - "@testcontainers/redis": "^11.10.0", + "@testcontainers/redis": "^11.11.0", "@turbo/gen": "^2.7.2", "@vitejs/plugin-react": "^5.1.2", "@vitest/coverage-v8": "^4.0.16", "@vitest/ui": "^4.0.16", "conventional-changelog-conventionalcommits": "^9.1.0", "cross-env": "^10.1.0", - "jsdom": "^27.3.0", + "jsdom": "^27.4.0", "json5": "^2.2.3", "prettier": "^3.7.4", "semantic-release": "^25.0.2", - "testcontainers": "^11.10.0", + "testcontainers": "^11.11.0", "turbo": "^2.7.2", "typescript": "^5.9.3", - "vite-tsconfig-paths": "^5.1.4", + "vite-tsconfig-paths": "^6.0.3", "vitest": "^4.0.16" }, - "packageManager": "pnpm@10.26.2", + "packageManager": "pnpm@10.27.0", "engines": { "node": ">=24.12.0", - "pnpm": ">=10.26.2" + "pnpm": ">=10.27.0" }, "pnpm": { "onlyBuiltDependencies": [ @@ -82,9 +82,9 @@ "axios@>=1.0.0 <1.8.2": ">=1.13.2", "brace-expansion@>=2.0.0 <=2.0.1": ">=4.0.1", "brace-expansion@>=1.0.0 <=1.1.11": ">=4.0.1", - "esbuild@<=0.24.2": ">=0.27.1", + "esbuild@<=0.24.2": ">=0.27.2", "form-data@>=4.0.0 <4.0.4": ">=4.0.5", - "hono@<4.6.5": ">=4.11.2", + "hono@<4.6.5": ">=4.11.3", "linkifyjs@<4.3.2": ">=4.3.2", "nanoid@>=4.0.0 <5.0.9": ">=5.1.6", "prismjs@<1.30.0": ">=1.30.0", diff --git a/packages/api/package.json b/packages/api/package.json index a3cfd18e7..a1543085c 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -41,7 +41,7 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@kubernetes/client-node": "^1.4.0", - "@tanstack/react-query": "^5.90.12", + "@tanstack/react-query": "^5.90.16", "@trpc/client": "^11.8.1", "@trpc/react-query": "^11.8.1", "@trpc/server": "^11.8.1", diff --git a/packages/api/src/open-api.ts b/packages/api/src/open-api.ts index 5620df23a..b4827871c 100644 --- a/packages/api/src/open-api.ts +++ b/packages/api/src/open-api.ts @@ -1,5 +1,7 @@ import { generateOpenApiDocument } from "trpc-to-openapi"; +import { API_KEY_HEADER_NAME } from "@homarr/auth/api-key"; + import { appRouter } from "./root"; export const openApiDocument = (base: string) => @@ -11,7 +13,7 @@ export const openApiDocument = (base: string) => securitySchemes: { apikey: { type: "apiKey", - name: "ApiKey", + name: API_KEY_HEADER_NAME, description: "API key which can be obtained in the Homarr administration dashboard", in: "header", }, diff --git a/packages/api/src/router/widgets/health-monitoring.ts b/packages/api/src/router/widgets/health-monitoring.ts index c16a600ed..14ab160f7 100644 --- a/packages/api/src/router/widgets/health-monitoring.ts +++ b/packages/api/src/router/widgets/health-monitoring.ts @@ -9,7 +9,7 @@ import { createTRPCRouter, publicProcedure } from "../../trpc"; export const healthMonitoringRouter = createTRPCRouter({ getSystemHealthStatus: publicProcedure - .concat(createManyIntegrationMiddleware("query", "openmediavault", "dashDot", "truenas", "mock")) + .concat(createManyIntegrationMiddleware("query", "openmediavault", "dashDot", "truenas", "unraid", "mock")) .query(async ({ ctx }) => { return await Promise.all( ctx.integrations.map(async (integration) => { @@ -26,7 +26,7 @@ export const healthMonitoringRouter = createTRPCRouter({ ); }), subscribeSystemHealthStatus: publicProcedure - .concat(createManyIntegrationMiddleware("query", "openmediavault", "dashDot", "truenas", "mock")) + .concat(createManyIntegrationMiddleware("query", "openmediavault", "dashDot", "truenas", "unraid", "mock")) .subscription(({ ctx }) => { return observable<{ integrationId: string; healthInfo: SystemHealthMonitoring; timestamp: Date }>((emit) => { const unsubscribes: (() => void)[] = []; diff --git a/packages/api/src/router/widgets/notebook.ts b/packages/api/src/router/widgets/notebook.ts index 2f7229601..de89059d4 100644 --- a/packages/api/src/router/widgets/notebook.ts +++ b/packages/api/src/router/widgets/notebook.ts @@ -24,7 +24,7 @@ export const notebookRouter = createTRPCRouter({ where: eq(items.id, input.itemId), }); - if (!item || item.boardId !== input.boardId) { + if (item?.boardId !== input.boardId) { throw new TRPCError({ code: "NOT_FOUND", message: "Specified item was not found", diff --git a/packages/auth/api-key/constants.ts b/packages/auth/api-key/constants.ts new file mode 100644 index 000000000..591d43410 --- /dev/null +++ b/packages/auth/api-key/constants.ts @@ -0,0 +1 @@ +export const API_KEY_HEADER_NAME = "ApiKey"; diff --git a/packages/auth/api-key/get-api-key-session.ts b/packages/auth/api-key/get-api-key-session.ts new file mode 100644 index 000000000..6fbaec972 --- /dev/null +++ b/packages/auth/api-key/get-api-key-session.ts @@ -0,0 +1,76 @@ +import type { Session } from "next-auth"; + +import { createLogger } from "@homarr/core/infrastructure/logs"; +import type { Database } from "@homarr/db"; +import { eq } from "@homarr/db"; +import { apiKeys } from "@homarr/db/schema"; + +import { hashPasswordAsync } from "../security"; +import { createSessionAsync } from "../server"; + +const logger = createLogger({ module: "apiKeyAuth" }); + +/** + * Validate an API key from the request header and return a session if valid. + * + * @param db - The database instance + * @param apiKeyHeaderValue - The value of the ApiKey header (format: "id.token") + * @param ipAddress - The IP address of the request (for logging) + * @param userAgent - The user agent of the request (for logging) + * @returns A session if the API key is valid, null otherwise + */ +export const getSessionFromApiKeyAsync = async ( + db: Database, + apiKeyHeaderValue: string | null, + ipAddress: string | null, + userAgent: string, +): Promise => { + if (apiKeyHeaderValue === null) { + return null; + } + + const [apiKeyId, apiKey] = apiKeyHeaderValue.split("."); + + if (!apiKeyId || !apiKey) { + logger.warn("Failed to authenticate with api-key", { ipAddress, userAgent, reason: "API_KEY_INVALID_FORMAT" }); + return null; + } + + const apiKeyFromDb = await db.query.apiKeys.findFirst({ + where: eq(apiKeys.id, apiKeyId), + columns: { + id: true, + apiKey: true, + salt: true, + }, + with: { + user: { + columns: { + id: true, + name: true, + email: true, + emailVerified: true, + }, + }, + }, + }); + + if (!apiKeyFromDb) { + logger.warn("Failed to authenticate with api-key", { ipAddress, userAgent, reason: "API_KEY_NOT_FOUND" }); + return null; + } + + const hashedApiKey = await hashPasswordAsync(apiKey, apiKeyFromDb.salt); + + if (apiKeyFromDb.apiKey !== hashedApiKey) { + logger.warn("Failed to authenticate with api-key", { ipAddress, userAgent, reason: "API_KEY_MISMATCH" }); + return null; + } + + logger.info("Successfully authenticated with api-key", { + name: apiKeyFromDb.user.name, + id: apiKeyFromDb.user.id, + }); + + return await createSessionAsync(db, apiKeyFromDb.user); +}; diff --git a/packages/auth/api-key/index.ts b/packages/auth/api-key/index.ts new file mode 100644 index 000000000..979243dd4 --- /dev/null +++ b/packages/auth/api-key/index.ts @@ -0,0 +1,2 @@ +export { getSessionFromApiKeyAsync } from "./get-api-key-session"; +export { API_KEY_HEADER_NAME } from "./constants"; diff --git a/packages/auth/api-key/test/get-api-key-session.spec.ts b/packages/auth/api-key/test/get-api-key-session.spec.ts new file mode 100644 index 000000000..5040ea441 --- /dev/null +++ b/packages/auth/api-key/test/get-api-key-session.spec.ts @@ -0,0 +1,133 @@ +/* eslint-disable @typescript-eslint/no-non-null-assertion */ +import { describe, expect, test, vi } from "vitest"; + +import { createId } from "@homarr/common"; +import { apiKeys, users } from "@homarr/db/schema"; +import { createDb } from "@homarr/db/test"; + +import { createSaltAsync, hashPasswordAsync } from "../../security"; +import { getSessionFromApiKeyAsync } from "../get-api-key-session"; + +// Mock the logger to avoid console output during tests +vi.mock("@homarr/core/infrastructure/logs", () => ({ + createLogger: () => ({ + warn: vi.fn(), + info: vi.fn(), + }), +})); + +const defaultUserId = createId(); +const defaultUsername = "testuser"; +const defaultApiKeyId = createId(); +const defaultIpAddress = "127.0.0.1"; +const defaultUserAgent = "test-agent"; +const defaultLogParams = [defaultIpAddress, defaultUserAgent] as const; + +describe("getSessionFromApiKeyAsync", () => { + test("should return null when api key header is null", async () => { + // Arrange + const { db } = await setupAsync(); + const apiKey = null; + + // Act + const result = await getSessionFromApiKeyAsync(db, apiKey, ...defaultLogParams); + + // Assert + expect(result).toBeNull(); + }); + + test.each([ + ["invalidformat", "no dot"], + ["keyid.", "missing token"], + [".token", "missing id"], + ])("should return null when api key format is invalid key=%s reason=%s", async (apiKey) => { + // Arrange + const { db } = await setupAsync(); + + // Act + const result = await getSessionFromApiKeyAsync(db, apiKey, ...defaultLogParams); + + // Assert + expect(result).toBeNull(); + }); + + test("should return null when api key is not found in database", async () => { + // Arrange + const { db } = await setupAsync(); + + // Act + const result = await getSessionFromApiKeyAsync(db, "nonexistent.token", ...defaultLogParams); + + // Assert + expect(result).toBeNull(); + }); + + test("should return null when api key token does not match", async () => { + // Arrange + const { db } = await setupAsync({ token: "correcttoken" }); + + // Act + const result = await getSessionFromApiKeyAsync(db, `${defaultApiKeyId}.wrongtoken`, ...defaultLogParams); + + // Assert + expect(result).toBeNull(); + }); + + test("should return session when api key is valid", async () => { + // Arrange + const token = "validtesttoken123"; + const { db } = await setupAsync({ token }); + + // Act + const result = await getSessionFromApiKeyAsync(db, `${defaultApiKeyId}.${token}`, ...defaultLogParams); + + // Assert + expect(result).not.toBeNull(); + expect(result!.user.id).toEqual(defaultUserId); + expect(result!.user.name).toEqual(defaultUsername); + }); + + test("should work with null ip address", async () => { + // Arrange + const token = "validtesttoken456"; + const { db } = await setupAsync({ token }); + + // Act + const result = await getSessionFromApiKeyAsync(db, `${defaultApiKeyId}.${token}`, null, defaultUserAgent); + + // Assert + expect(result).not.toBeNull(); + expect(result!.user.id).toEqual(defaultUserId); + }); +}); + +interface SetupOptions { + /** + * If provided, inserts an API key into the database for testing. + */ + token?: string; +} + +const setupAsync = async (options?: SetupOptions) => { + const db = createDb(); + + await db.insert(users).values({ + id: defaultUserId, + name: defaultUsername, + email: "test@example.com", + }); + + if (options?.token) { + const salt = await createSaltAsync(); + await db.insert(apiKeys).values({ + id: defaultApiKeyId, + apiKey: await hashPasswordAsync(options.token, salt), + salt, + userId: defaultUserId, + }); + } + + return { + db, + }; +}; diff --git a/packages/auth/package.json b/packages/auth/package.json index bb3ed8978..aaac1811b 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -8,6 +8,7 @@ ".": "./index.ts", "./next": "./next.ts", "./security": "./security.ts", + "./api-key": "./api-key/index.ts", "./client": "./client.ts", "./server": "./server.ts", "./shared": "./shared.ts", @@ -32,7 +33,7 @@ "@homarr/validation": "workspace:^0.1.0", "bcrypt": "^6.0.0", "cookies": "^0.9.1", - "ldapts": "8.0.34", + "ldapts": "8.1.0", "next": "16.1.1", "next-auth": "5.0.0-beta.30", "react": "19.2.3", diff --git a/packages/cli/package.json b/packages/cli/package.json index 5299843d0..78ff471a8 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -34,7 +34,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "esbuild": "^0.27.1", + "esbuild": "^0.27.2", "eslint": "^9.39.2", "typescript": "^5.9.3" } diff --git a/packages/common/src/user-agent.ts b/packages/common/src/request.ts similarity index 79% rename from packages/common/src/user-agent.ts rename to packages/common/src/request.ts index b4a90dfb3..f90d91945 100644 --- a/packages/common/src/user-agent.ts +++ b/packages/common/src/request.ts @@ -9,3 +9,7 @@ export const userAgent = (headers: Headers) => { }; export type DeviceType = "console" | "mobile" | "tablet" | "smarttv" | "wearable" | "embedded" | undefined; + +export const ipAddressFromHeaders = (headers: Headers): string | null => { + return headers.get("x-forwarded-for"); +}; diff --git a/packages/common/src/server.ts b/packages/common/src/server.ts index fd23f7404..d6e62d5b9 100644 --- a/packages/common/src/server.ts +++ b/packages/common/src/server.ts @@ -1,4 +1,4 @@ export * from "./security"; export * from "./encryption"; -export * from "./user-agent"; +export * from "./request"; export * from "./errors"; diff --git a/packages/core/src/infrastructure/db/drivers/mysql.ts b/packages/core/src/infrastructure/db/drivers/mysql.ts index d34c4f51b..306180f20 100644 --- a/packages/core/src/infrastructure/db/drivers/mysql.ts +++ b/packages/core/src/infrastructure/db/drivers/mysql.ts @@ -26,7 +26,9 @@ const createMysqlDbConnection = () => { return mysql.createPool({ ...defaultOptions, + host: dbEnv.HOST, port: dbEnv.PORT, + database: dbEnv.NAME, user: dbEnv.USER, password: dbEnv.PASSWORD, }); diff --git a/packages/cron-job-api/package.json b/packages/cron-job-api/package.json index aac63b5d0..bc02db26b 100644 --- a/packages/cron-job-api/package.json +++ b/packages/cron-job-api/package.json @@ -28,7 +28,7 @@ "@homarr/common": "workspace:^0.1.0", "@homarr/core": "workspace:^0.1.0", "@homarr/cron-jobs": "workspace:^0.1.0", - "@tanstack/react-query": "^5.90.12", + "@tanstack/react-query": "^5.90.16", "@trpc/client": "^11.8.1", "@trpc/server": "^11.8.1", "@trpc/tanstack-react-query": "^11.8.1", diff --git a/packages/db/package.json b/packages/db/package.json index 584dd431d..592bbbfde 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -49,8 +49,8 @@ "@homarr/server-settings": "workspace:^0.1.0", "@mantine/core": "^8.3.10", "@paralleldrive/cuid2": "^3.1.0", - "@testcontainers/mysql": "^11.10.0", - "@testcontainers/postgresql": "^11.10.0", + "@testcontainers/mysql": "^11.11.0", + "@testcontainers/postgresql": "^11.11.0", "better-sqlite3": "^12.5.0", "dotenv": "^17.2.3", "drizzle-kit": "^0.31.8", @@ -67,7 +67,7 @@ "@types/better-sqlite3": "7.6.13", "@types/pg": "^8.16.0", "dotenv-cli": "^11.0.0", - "esbuild": "^0.27.1", + "esbuild": "^0.27.2", "eslint": "^9.39.2", "prettier": "^3.7.4", "tsx": "4.20.4", diff --git a/packages/definitions/src/docs/homarr-docs-sitemap.ts b/packages/definitions/src/docs/homarr-docs-sitemap.ts index c1b1e3dc1..4439c5dfe 100644 --- a/packages/definitions/src/docs/homarr-docs-sitemap.ts +++ b/packages/definitions/src/docs/homarr-docs-sitemap.ts @@ -188,6 +188,7 @@ export type HomarrDocumentationPath = | "/docs/integrations/transmission" | "/docs/integrations/truenas" | "/docs/integrations/unifi-controller" + | "/docs/integrations/unraid" | "/docs/management/api" | "/docs/management/apps" | "/docs/management/boards" diff --git a/packages/definitions/src/integration.ts b/packages/definitions/src/integration.ts index 1309796d5..e8518b016 100644 --- a/packages/definitions/src/integration.ts +++ b/packages/definitions/src/integration.ts @@ -298,6 +298,13 @@ export const integrationDefs = { category: ["healthMonitoring"], documentationUrl: createDocumentationLink("/docs/integrations/truenas"), }, + unraid: { + name: "Unraid", + secretKinds: [["apiKey"]], + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/unraid.svg", + category: ["healthMonitoring"], + documentationUrl: createDocumentationLink("/docs/integrations/unraid"), + }, // This integration only returns mock data, it is used during development (but can also be used in production by directly going to the create page) mock: { name: "Mock", diff --git a/packages/integrations/src/base/creator.ts b/packages/integrations/src/base/creator.ts index 0e8c9ea7c..adca7fcb1 100644 --- a/packages/integrations/src/base/creator.ts +++ b/packages/integrations/src/base/creator.ts @@ -38,6 +38,7 @@ import { ProxmoxIntegration } from "../proxmox/proxmox-integration"; import { QuayIntegration } from "../quay/quay-integration"; import { TrueNasIntegration } from "../truenas/truenas-integration"; import { UnifiControllerIntegration } from "../unifi-controller/unifi-controller-integration"; +import { UnraidIntegration } from "../unraid/unraid-integration"; import type { Integration, IntegrationInput } from "./integration"; export const createIntegrationAsync = async ( @@ -101,6 +102,7 @@ export const integrationCreators = { ntfy: NTFYIntegration, mock: MockIntegration, truenas: TrueNasIntegration, + unraid: UnraidIntegration, } satisfies Record Promise]>; type IntegrationInstanceOfKind = { diff --git a/packages/integrations/src/index.ts b/packages/integrations/src/index.ts index c23aa00b7..45a37e476 100644 --- a/packages/integrations/src/index.ts +++ b/packages/integrations/src/index.ts @@ -22,6 +22,7 @@ export { PiHoleIntegrationV6 } from "./pi-hole/v6/pi-hole-integration-v6"; export { PlexIntegration } from "./plex/plex-integration"; export { ProwlarrIntegration } from "./prowlarr/prowlarr-integration"; export { TrueNasIntegration } from "./truenas/truenas-integration"; +export { UnraidIntegration } from "./unraid/unraid-integration"; export { OPNsenseIntegration } from "./opnsense/opnsense-integration"; export { ICalIntegration } from "./ical/ical-integration"; diff --git a/packages/integrations/src/truenas/truenas-integration.ts b/packages/integrations/src/truenas/truenas-integration.ts index 206f033a0..8b0a79b89 100644 --- a/packages/integrations/src/truenas/truenas-integration.ts +++ b/packages/integrations/src/truenas/truenas-integration.ts @@ -261,7 +261,7 @@ export class TrueNasIntegration extends Integration implements ISystemHealthMoni */ private async requestAsync(method: string, params: unknown[] = [], webSocketOverride?: WebSocket) { let webSocket = webSocketOverride ?? this.webSocket; - if (!webSocket || webSocket.readyState !== WebSocket.OPEN) { + if (webSocket?.readyState !== WebSocket.OPEN) { logger.debug("Connecting to websocket", { url: this.wsUrl(), }); diff --git a/packages/integrations/src/unraid/unraid-integration.ts b/packages/integrations/src/unraid/unraid-integration.ts new file mode 100644 index 000000000..db4025ee2 --- /dev/null +++ b/packages/integrations/src/unraid/unraid-integration.ts @@ -0,0 +1,189 @@ +import dayjs from "dayjs"; +import type { fetch as undiciFetch } from "undici/types/fetch"; + +import { humanFileSize } from "@homarr/common"; +import { ResponseError } from "@homarr/common/server"; +import { fetchWithTrustedCertificatesAsync } from "@homarr/core/infrastructure/http"; +import { createLogger } from "@homarr/core/infrastructure/logs"; + +import { HandleIntegrationErrors } from "../base/errors/decorator"; +import type { IntegrationTestingInput } from "../base/integration"; +import { Integration } from "../base/integration"; +import type { TestingResult } from "../base/test-connection/test-connection-service"; +import type { ISystemHealthMonitoringIntegration } from "../interfaces/health-monitoring/health-monitoring-integration"; +import type { SystemHealthMonitoring } from "../interfaces/health-monitoring/health-monitoring-types"; +import type { UnraidSystemInfo } from "./unraid-types"; +import { unraidSystemInfoSchema } from "./unraid-types"; + +const logger = createLogger({ module: "UnraidIntegration" }); + +@HandleIntegrationErrors([]) +export class UnraidIntegration extends Integration implements ISystemHealthMonitoringIntegration { + protected async testingAsync(input: IntegrationTestingInput): Promise { + await this.queryGraphQLAsync<{ info: UnraidSystemInfo }>( + ` + query { + info { + os { platform } + } + } + `, + input.fetchAsync, + ); + + return { success: true }; + } + + public async getSystemInfoAsync(): Promise { + const systemInfo = await this.getSystemInformationAsync(); + + const cpuUtilization = systemInfo.metrics.cpu.cpus.reduce((acc, val) => acc + val.percentTotal, 0); + const cpuCount = systemInfo.info.cpu.cores; + + // We use "info" object instead of the stats since this is the exact amount the kernel sees, which is what Unraid displays. + const totalMemory = systemInfo.info.memory.layout.reduce((acc, layout) => layout.size + acc, 0); + const usedMemory = totalMemory * (systemInfo.metrics.memory.percentTotal / 100); + const uptime = dayjs(systemInfo.info.os.uptime); + + return { + version: systemInfo.info.os.release, + cpuModelName: systemInfo.info.cpu.brand, + cpuUtilization: cpuUtilization / cpuCount, + memUsedInBytes: usedMemory, + memAvailableInBytes: totalMemory - usedMemory, + uptime: dayjs().diff(uptime, "seconds"), + network: null, // Not implemented, see https://github.com/unraid/api/issues/1602 + loadAverage: null, + rebootRequired: false, + availablePkgUpdates: 0, + cpuTemp: undefined, // Not implemented, see https://github.com/unraid/api/issues/1597 + fileSystem: systemInfo.array.disks.map((disk) => ({ + deviceName: disk.name, + used: humanFileSize(disk.fsUsed * 1024), // API is in KiB (kibibytes), covert to bytes + available: `${disk.size * 1024}`, // API is in KiB (kibibytes), covert to bytes + percentage: (disk.fsUsed / disk.size) * 100, // The units are the same, therefore the actual unit is irrelevant + })), + smart: systemInfo.array.disks.map((disk) => ({ + deviceName: disk.name, + temperature: disk.temp ?? null, + overallStatus: disk.status, + })), + }; + } + + private async getSystemInformationAsync(): Promise { + logger.debug("Retrieving system information", { + url: this.url("/graphql"), + }); + + const query = ` + query { + metrics { + cpu { + percentTotal + cpus { + percentTotal + } + }, + memory { + available + used + free + total + swapFree + swapTotal + swapUsed + percentTotal + } + } + array { + state + capacity { + disks { + free + total + used + } + } + disks { + name + size + fsFree + fsUsed + status + temp + } + } + info { + devices { + network { + speed + dhcp + model + model + } + } + os { + platform, + distro, + release, + uptime + }, + cpu { + manufacturer, + brand, + cores, + threads + }, + memory { + layout { + size + } + } + } + } + `; + + const response = await this.queryGraphQLAsync(query); + const result = await unraidSystemInfoSchema.parseAsync(response); + + logger.debug("Retrieved system information", { + url: this.url("/graphql"), + }); + + return result; + } + + private async queryGraphQLAsync( + query: string, + fetchAsync: typeof undiciFetch = fetchWithTrustedCertificatesAsync, + ): Promise { + const url = this.url("/graphql"); + const apiKey = this.getSecretValue("apiKey"); + + logger.debug("Sending GraphQL query", { + url: url.toString(), + }); + + const response = await fetchAsync(url, { + method: "POST", + headers: { + "Content-Type": "application/json", + "x-api-key": apiKey, + }, + body: JSON.stringify({ query }), + }); + + if (!response.ok) { + throw new ResponseError(response); + } + + const json = (await response.json()) as { data: T; errors?: { message: string }[] }; + + if (json.errors) { + throw new Error(`GraphQL errors: ${json.errors.map((error) => error.message).join(", ")}`); + } + + return json.data; + } +} diff --git a/packages/integrations/src/unraid/unraid-types.ts b/packages/integrations/src/unraid/unraid-types.ts new file mode 100644 index 000000000..326d2ee6a --- /dev/null +++ b/packages/integrations/src/unraid/unraid-types.ts @@ -0,0 +1,73 @@ +import z from "zod"; + +export const unraidSystemInfoSchema = z.object({ + metrics: z.object({ + cpu: z.object({ + percentTotal: z.number(), + cpus: z.array( + z.object({ + percentTotal: z.number(), + }), + ), + }), + memory: z.object({ + available: z.number(), + used: z.number(), + free: z.number(), + total: z.number().min(0), + percentTotal: z.number().min(0).max(100), + }), + }), + array: z.object({ + state: z.string(), + capacity: z.object({ + disks: z.object({ + free: z.coerce.number(), + total: z.coerce.number(), + used: z.coerce.number(), + }), + }), + disks: z.array( + z.object({ + name: z.string(), + size: z.number(), + fsFree: z.number(), + fsUsed: z.number(), + status: z.string(), + temp: z.number().nullish(), + }), + ), + }), + info: z.object({ + devices: z.object({ + network: z.array( + z.object({ + speed: z.number(), + dhcp: z.boolean(), + model: z.string(), + }), + ), + }), + os: z.object({ + platform: z.string(), + distro: z.string(), + release: z.string(), + uptime: z.coerce.date(), + }), + cpu: z.object({ + manufacturer: z.string(), + brand: z.string(), + cores: z.number(), + threads: z.number(), + }), + memory: z.object({ + layout: z.array( + z.object({ + size: z.number(), + }), + ), + }), + }), +}); + +export type UnraidSystemInfo = z.infer; diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index 560047d94..b740f42cf 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -34,7 +34,7 @@ "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@mantine/core": "^8.3.10", - "@tabler/icons-react": "^3.35.0", + "@tabler/icons-react": "^3.36.0", "dayjs": "^1.11.19", "next": "16.1.1", "react": "19.2.3", diff --git a/packages/notifications/package.json b/packages/notifications/package.json index 368645e8b..2deecd3c4 100644 --- a/packages/notifications/package.json +++ b/packages/notifications/package.json @@ -25,7 +25,7 @@ "dependencies": { "@homarr/ui": "workspace:^0.1.0", "@mantine/notifications": "^8.3.10", - "@tabler/icons-react": "^3.35.0" + "@tabler/icons-react": "^3.36.0" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index 64abe447f..6227293c0 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -36,7 +36,7 @@ "@mantine/core": "^8.3.10", "@mantine/hooks": "^8.3.10", "@mantine/spotlight": "^8.3.10", - "@tabler/icons-react": "^3.35.0", + "@tabler/icons-react": "^3.36.0", "jotai": "^2.16.1", "next": "16.1.1", "react": "19.2.3", diff --git a/packages/spotlight/src/modes/command/global-group.tsx b/packages/spotlight/src/modes/command/global-group.tsx index 4b13c6b0f..7aaaa6a2e 100644 --- a/packages/spotlight/src/modes/command/global-group.tsx +++ b/packages/spotlight/src/modes/command/global-group.tsx @@ -1,5 +1,4 @@ import { Group, Text, useMantineColorScheme } from "@mantine/core"; -import type { TablerIcon } from "@tabler/icons-react"; import { IconBox, IconCategoryPlus, @@ -17,6 +16,7 @@ import { useSession } from "@homarr/auth/client"; import { useModalAction } from "@homarr/modals"; import { AddBoardModal, AddGroupModal, ImportBoardModal, InviteCreateModal } from "@homarr/modals-collection"; import { useScopedI18n } from "@homarr/translation/client"; +import type { TablerIcon } from "@homarr/ui"; import { createGroup } from "../../lib/group"; import type { inferSearchInteractionDefinition, SearchInteraction } from "../../lib/interaction"; diff --git a/packages/spotlight/src/modes/home/home-search-engine-group.tsx b/packages/spotlight/src/modes/home/home-search-engine-group.tsx index 75c4ac94b..09fa49fbf 100644 --- a/packages/spotlight/src/modes/home/home-search-engine-group.tsx +++ b/packages/spotlight/src/modes/home/home-search-engine-group.tsx @@ -1,5 +1,4 @@ import { Box, Group, Stack, Text } from "@mantine/core"; -import type { TablerIcon } from "@tabler/icons-react"; import { IconCaretUpDown, IconSearch, IconSearchOff } from "@tabler/icons-react"; import type { RouterOutputs } from "@homarr/api"; @@ -9,6 +8,7 @@ import { useSession } from "@homarr/auth/client"; import { useSettings } from "@homarr/settings"; import type { TranslationFunction } from "@homarr/translation"; import { useI18n } from "@homarr/translation/client"; +import type { TablerIcon } from "@homarr/ui"; import { createGroup } from "../../lib/group"; import type { inferSearchInteractionDefinition, SearchInteraction } from "../../lib/interaction"; diff --git a/packages/translation/src/lang/cn.json b/packages/translation/src/lang/cn.json index e51894d33..20e845336 100644 --- a/packages/translation/src/lang/cn.json +++ b/packages/translation/src/lang/cn.json @@ -1941,19 +1941,19 @@ "description": "您的容器状态 (这个小部件只能用管理员权限添加)", "option": { "enableRowSorting": { - "label": "" + "label": "启用项目排序" }, "defaultSort": { - "label": "", + "label": "默认排序列", "option": { - "name": "", - "state": "", - "cpuUsage": "", - "memoryUsage": "" + "name": "名称", + "state": "状态", + "cpuUsage": "CPU 利用率", + "memoryUsage": "内存占用率" } }, "descendingDefaultSort": { - "label": "" + "label": "倒序" } }, "error": { @@ -2248,7 +2248,7 @@ "unknown": "未知", "pending": "等待处理", "processing": "处理中", - "requested": "", + "requested": "已请求", "partiallyAvailable": "部分", "available": "可用", "blacklisted": "已列入黑名单", diff --git a/packages/translation/src/lang/es.json b/packages/translation/src/lang/es.json index ae157ab9f..e0d5f6733 100644 --- a/packages/translation/src/lang/es.json +++ b/packages/translation/src/lang/es.json @@ -1941,19 +1941,19 @@ "description": "Estadísticas de tus contenedores (Este widget sólo puede ser añadido con privilegios de administrador)", "option": { "enableRowSorting": { - "label": "" + "label": "Habilitar ordenar elementos" }, "defaultSort": { - "label": "", + "label": "Columna usada para ordenar por defecto", "option": { - "name": "", - "state": "", - "cpuUsage": "", - "memoryUsage": "" + "name": "Nombre", + "state": "Estado", + "cpuUsage": "Uso de CPU", + "memoryUsage": "Uso de memoria" } }, "descendingDefaultSort": { - "label": "" + "label": "Invertir orden" } }, "error": { diff --git a/packages/translation/src/lang/fr.json b/packages/translation/src/lang/fr.json index cf026c16e..aa7da9044 100644 --- a/packages/translation/src/lang/fr.json +++ b/packages/translation/src/lang/fr.json @@ -7,7 +7,7 @@ "description": "Pour commencer, veuillez selectionner comment vous souhaitez configurer votre instance Homarr.", "action": { "scratch": "Partir de zéro", - "importOldmarr": "Importer à partir d'Homarr avant la 1.0" + "importOldmarr": "Importer depuis Homarr avant la 1.0" } }, "import": { @@ -27,7 +27,7 @@ "description": "Configurer le comportement d'importation" }, "boardSelection": { - "title": "{count} tableaux trouvés", + "title": "Tableaux {count} trouvés", "description": "Choisissez tous les tableaux avec la taille que vous souhaitez importer", "action": { "selectAll": "Tout sélectionner", @@ -113,7 +113,7 @@ "subtitle": "Bon retour parmi nous ! Veuillez entrer vos identifiants" }, "invite": { - "title": "Rejoindre Homarr", + "title": "Rejoignez Homarr", "subtitle": "Bienvenue sur Homarr! Veuillez créer votre compte", "description": "Vous avez été invité par {username}" }, @@ -649,14 +649,14 @@ "app": { "option": { "existing": { - "title": "", - "label": "" + "title": "Existant", + "label": "Sélectionner une application existante" }, "new": { - "title": "", + "title": "Nouveau", "url": { - "label": "", - "description": "" + "label": "Lien de l'application", + "description": "Lien d'ouverture de l'application depuis le tableau de bord" } } } @@ -676,9 +676,9 @@ }, "app": { "action": { - "add": "", - "remove": "", - "select": "" + "add": "Lier une application", + "remove": "Délier", + "select": "Sélectionnez une application à lier" } } }, @@ -709,7 +709,7 @@ "description": "L'intégration \"{kind}\" peut être utilisée avec les moteurs de recherche. Cochez ceci pour configurer automatiquement le moteur de recherche." }, "app": { - "sectionTitle": "" + "sectionTitle": "Application liée" }, "createApp": { "label": "Créer une application", @@ -991,8 +991,8 @@ "newLabel": "Nouvel ID d'installation" }, "privateKey": { - "label": "", - "newLabel": "" + "label": "Clé privée", + "newLabel": "Nouvelle clé privée" } } }, @@ -1044,14 +1044,14 @@ } }, "common": { - "success": "", + "success": "Succès", "beta": "Bêta", "error": "Erreur", "action": { "add": "Ajouter", "apply": "Appliquer", "backToOverview": "Retourner à l'aperçu", - "change": "", + "change": "Modifier", "create": "Créer", "createAnother": "Créer et recommencer", "edit": "Modifier", @@ -1174,8 +1174,8 @@ }, "unit": { "speed": { - "kilometersPerHour": "", - "milesPerHour": "" + "kilometersPerHour": "km/h", + "milesPerHour": "mph" } } }, @@ -1190,7 +1190,7 @@ "label": "Titre" }, "customCssClasses": { - "label": "" + "label": "Classes Css personnalisées" }, "borderColor": { "label": "Couleur de la bordure" @@ -1321,21 +1321,21 @@ "label": "Activer la vérification du statut" }, "layout": { - "label": "", + "label": "Mise en page", "option": { - "row": "", - "row-reverse": "", - "column": "", - "column-reverse": "" + "row": "Horizontale", + "row-reverse": "Horizontal (inversé)", + "column": "Vertical", + "column-reverse": "Vertical (inversé)" } }, "descriptionDisplayMode": { - "label": "", - "description": "", + "label": "Mode d'affichage de la description", + "description": "Choisissez comment afficher la description de l'application", "option": { - "normal": "", - "tooltip": "", - "hidden": "" + "normal": "Au sein du widget", + "tooltip": "Comme infobulle", + "hidden": "Masquer" } } }, @@ -1584,11 +1584,11 @@ }, "placeholder": "Commencer à écrire vos notes", "dismiss": { - "title": "", - "message": "", + "title": "Abandonner les modifications ?", + "message": "Vous avez des modifications non enregistrées dans votre bloc-notes. Êtes-vous sûr de vouloir les supprimer ?", "action": { - "discard": "", - "keepEditing": "" + "discard": "Ignorer les modifications", + "keepEditing": "Continuer les modifications" } } }, @@ -1743,7 +1743,7 @@ "name": "Calendrier", "description": "Afficher les événements de vos intégrations dans une vue calendrier pendant une certaine période de temps relative", "duration": { - "allDay": "" + "allDay": "Tous les jours" }, "option": { "releaseType": { @@ -1780,7 +1780,7 @@ "description": "Uniquement sur la météo actuelle" }, "useImperialSpeed": { - "label": "" + "label": "Utiliser mph pour la vitesse du vent" }, "location": { "label": "Lieu de la météo" @@ -1941,19 +1941,19 @@ "description": "Statistiques de vos conteneurs (Ce widget ne peut être ajouté qu'avec les privilèges d'administrateur)", "option": { "enableRowSorting": { - "label": "" + "label": "Activer le tri des éléments" }, "defaultSort": { - "label": "", + "label": "Colonne de tri par défaut", "option": { - "name": "", - "state": "", - "cpuUsage": "", - "memoryUsage": "" + "name": "Nom", + "state": "État", + "cpuUsage": "Utilisation du CPU", + "memoryUsage": "Utilisation mémoire" } }, "descendingDefaultSort": { - "label": "" + "label": "Inverser le tri" } }, "error": { @@ -2036,21 +2036,21 @@ "name": "Nom", "id": "Id", "metadata": { - "title": "", + "title": "Statistiques détaillées", "video": { - "title": "", - "resolution": "" + "title": "Vidéo", + "resolution": "Résolution" }, "audio": { - "title": "", - "channelCount": "", - "codec": "" + "title": "Audio", + "channelCount": "Canaux audio", + "codec": "Codec audio" }, "transcoding": { - "title": "", - "container": "", + "title": "Transcodage", + "container": "Conteneur", "resolution": "Résolution", - "target": "" + "target": "Codec cible" } } } @@ -2248,7 +2248,7 @@ "unknown": "Inconnu", "pending": "En attente", "processing": "Traitement en cours", - "requested": "", + "requested": "En attente", "partiallyAvailable": "Partiel", "available": "Disponible", "blacklisted": "Sur la liste noire", @@ -2361,7 +2361,7 @@ "label": "Nombre maximum de publications" }, "hideDescription": { - "label": "" + "label": "Masquer la description" } } }, @@ -2542,7 +2542,7 @@ }, "firewall": { "name": "Surveillance du pare-feu", - "description": "", + "description": "Affiche un résumé des pare-feu", "tab": { "system": "Système", "interfaces": "Interfaces" @@ -2556,16 +2556,16 @@ "widget": { "fwname": "Nom", "version": "Version", - "versiontitle": "", - "cputitle": "", - "memorytitle": "", - "cpu": "", - "memory": "", + "versiontitle": "Versions", + "cputitle": "Utilisation du CPU", + "memorytitle": "Utilisation de la mémoire", + "cpu": "CPU", + "memory": "Mémoire", "interfaces": { - "name": "", - "trans": "", - "recv": "", - "title": "" + "name": "nom", + "trans": "Transmis", + "recv": "Reçus", + "title": "Interfaces réseau" } } }, @@ -2576,37 +2576,37 @@ "option": {} }, "systemResources": { - "name": "", - "description": "", + "name": "Ressources du système", + "description": "CPU, Mémoire, Disque et autre utilisation matérielle de votre système", "option": { "hasShadow": { - "label": "" + "label": "Activer l'ombrage des cartes" }, "visibleCharts": { - "label": "", - "description": "", + "label": "Graphiques visibles", + "description": "Sélectionnez les graphiques à afficher.", "option": { - "cpu": "", - "memory": "", - "network": "" + "cpu": "CPU", + "memory": "Mémoire", + "network": "Réseau" } }, "labelDisplayMode": { - "label": "", + "label": "Mode d'affichage de l'étiquette", "option": { - "textWithIcon": "", - "text": "", - "icon": "", - "hidden": "" + "textWithIcon": "Afficher le texte avec l'icône", + "text": "Afficher uniquement le texte", + "icon": "Afficher uniquement l'icône", + "hidden": "Masquer l'étiquette" } } }, "card": { - "cpu": "", - "memory": "", - "network": "", - "up": "", - "down": "" + "cpu": "CPU", + "memory": "RAM", + "network": "NET", + "up": "UP", + "down": "HORS SERVICE" } } }, @@ -3030,8 +3030,8 @@ "integration": "Intégrations", "app": "Applications", "group": "Groupes", - "searchEngine": "", - "media": "" + "searchEngine": "Moteurs de recherche", + "media": "Médias" }, "statisticLabel": { "boards": "Tableaux de bord", @@ -3040,8 +3040,8 @@ "authorization": "Autorisation" }, "heroBanner": { - "title": "", - "subtitle": "" + "title": "Bienvenue sur votre", + "subtitle": "Tableau {app}" } }, "board": { @@ -3387,19 +3387,19 @@ "label": "Conteneurs Docker" }, "firewallCpu": { - "label": "" + "label": "Processeur du pare-feu" }, "firewallMemory": { - "label": "" + "label": "Mémoire du pare-feu" }, "firewallVersion": { - "label": "" + "label": "Version du pare-feu" }, "firewallInterfaces": { - "label": "" + "label": "Interfaces du pare-feu" }, "weather": { - "label": "" + "label": "Météo" } }, "interval": { @@ -3410,10 +3410,10 @@ "weeklyMonday": "Chaque semaine le lundi", "update": { "success": { - "message": "" + "message": "Intervalle mis à jour avec succès" }, "error": { - "message": "" + "message": "L'intervalle de mise à jour a échoué" } } }, @@ -3422,55 +3422,55 @@ }, "field": { "name": { - "label": "" + "label": "Nom" }, "interval": { "label": "Intervalle de planification" }, "lastExecution": { - "label": "" + "label": "Dernière exécution" }, "actions": { - "label": "" + "label": "Actions" } }, "table": { - "search": "" + "search": "Rechercher des tâches {count}..." }, "action": { "refresh": { - "label": "" + "label": "Rafraîchir" } }, "refresh": { "success": { - "message": "" + "message": "Tâches actualisées avec succès" }, "error": { - "message": "" + "message": "Échec de l'actualisation des tâches" } }, "trigger": { "success": { - "message": "" + "message": "Tâche déclenchée avec succès" }, "error": { - "message": "" + "message": "Échec du déclenchement de la tâche" } }, "enable": { "success": { - "message": "" + "message": "Tâche activée avec succès" } }, "disable": { "success": { - "message": "" + "message": "Tâche désactivée avec succès" } }, "toggle": { "error": { - "message": "" + "message": "Impossible de basculer le statut de la tâche" } } }, @@ -3527,19 +3527,19 @@ "subtitle": "{count} utilisés dans le Code d'Homarr" }, "hotkeys": { - "title": "", - "subtitle": "", + "title": "Raccourcis clavier", + "subtitle": "Raccourcis clavier pour améliorer votre flux de travail", "field": { - "shortcut": "", - "action": "" + "shortcut": "Raccourci", + "action": "Action" }, "action": { - "toggleBoardEdit": "", - "toggleColorScheme": "", - "saveNotebook": "", - "openSpotlight": "" + "toggleBoardEdit": "Activer/désactiver le mode d'édition du tableau", + "toggleColorScheme": "Basculer en mode clair/sombre", + "saveNotebook": "Enregistrer le bloc-notes (uniquement à l'intérieur du widget notebook)", + "openSpotlight": "Ouvrir la recherche" }, - "note": "" + "note": "Astuce : Mod correspond à la touche Ctrl ou ⌘ sur macOS" } } } @@ -3995,7 +3995,7 @@ "tools": { "label": "Outils", "tasks": { - "label": "" + "label": "Tâches" }, "docker": { "label": "Docker" diff --git a/packages/translation/src/lang/no.json b/packages/translation/src/lang/no.json index 8254597a5..a1cd27ab0 100644 --- a/packages/translation/src/lang/no.json +++ b/packages/translation/src/lang/no.json @@ -612,17 +612,17 @@ "select": { "label": "Velg app", "notFound": "Ingen app funnet", - "search": "", - "noResults": "", - "action": "", - "title": "" + "search": "Søk etter en app", + "noResults": "Ingen resultater", + "action": "Velg {app}", + "title": "Velg en app for å legge den til på dette brettet" }, "create": { - "title": "", - "description": "", - "action": "" + "title": "Lag ny app", + "description": "Lag en ny app ", + "action": "Åpne appoppretting" }, - "add": "" + "add": "Legg til en app" } }, "integration": { @@ -649,14 +649,14 @@ "app": { "option": { "existing": { - "title": "", - "label": "" + "title": "Eksisterende", + "label": "Velg eksisterende app" }, "new": { - "title": "", + "title": "Ny", "url": { - "label": "", - "description": "" + "label": "App url", + "description": "URL-en appen åpnes med når den aksesseres fra dashbordet" } } } @@ -676,9 +676,9 @@ }, "app": { "action": { - "add": "", - "remove": "", - "select": "" + "add": "Koble en app", + "remove": "Koble fra", + "select": "Velg en app å koble til" } } }, @@ -709,14 +709,14 @@ "description": "Integrasjon \"{kind}\" kan brukes med søkemotorene. Huk av her for å automatisk konfigurere søkemotor." }, "app": { - "sectionTitle": "" + "sectionTitle": "Koblet app" }, "createApp": { - "label": "", - "description": "" + "label": "Opprett app", + "description": "Opprett en app med samme navn og ikon som integrasjonen. La inndataboksen under stå tom for å opprette appen med integrasjons-URL-en." }, "appHref": { - "placeholder": "" + "placeholder": "Egendefinert app-URL" } }, "action": { @@ -730,125 +730,125 @@ "error": { "common": { "cause": { - "title": "" + "title": "Årsak med flere detaljer" } }, "unknown": { - "title": "", - "description": "" + "title": "Ukjent feil", + "description": "En ukjent feil oppstod, åpne årsaken nedenfor for å se flere detaljer" }, "parse": { - "title": "", - "description": "" + "title": "Parse-feil", + "description": "Responsen kunne ikke tolkes. Vennligst kontroller at URL-en peker til tjenestens basis-URL." }, "authorization": { - "title": "", - "description": "" + "title": "Autorisasjonsfeil", + "description": "Forespørselen var ikke autorisert. Kontroller at legitimasjonen er riktig og har tilstrekkelige rettigheter." }, "statusCode": { - "title": "", - "description": "", - "otherDescription": "", + "title": "Responsfeil", + "description": "Mottok uventet {statusCode} ({reason}) respons fra . Kontroller at URL-en peker til integrasjonens basis-URL.", + "otherDescription": "Mottok uventet {statusCode} respons fra . Kontroller at URL-en peker til integrasjonens basis-URL.", "reason": { - "badRequest": "", - "notFound": "", - "tooManyRequests": "", - "internalServerError": "", - "serviceUnavailable": "", - "gatewayTimeout": "" + "badRequest": "Ugyldig forespørsel", + "notFound": "Ikke funnet", + "tooManyRequests": "For mange forespørsler", + "internalServerError": "Intern serverfeil", + "serviceUnavailable": "Tjenesten utilgjengelig", + "gatewayTimeout": "Tidsavbrudd i gateway" } }, "certificate": { - "title": "", + "title": "Sertifikatfeil", "description": { - "expired": "", - "notYetValid": "", - "untrusted": "", - "hostnameMismatch": "" + "expired": "Sertifikatet har utløpt.", + "notYetValid": "Sertifikatet er ikke gyldig ennå.", + "untrusted": "Sertifikatet er ikke betrodd.", + "hostnameMismatch": "Vertsnavnet i sertifikatet samsvarer ikke med URL-en." }, "alert": { "permission": { - "title": "", - "message": "" + "title": "Ikke nok tillatelser", + "message": "Du har ikke lov til å stole på eller laste opp sertifikater. Kontakt administratoren din for å laste opp nødvendig rotsertifikat." }, "hostnameMismatch": { - "title": "", - "message": "" + "title": "Vertsnavn samsvarer ikke", + "message": "Vertsnavnet i sertifikatet samsvarer ikke med vertsnavnet du kobler til. Dette kan indikere en sikkerhetsrisiko, men du kan likevel velge å stole på sertifikatet." }, "extract": { - "title": "", - "message": "" + "title": "Utpakking av CA-sertifikat feilet", + "message": "Bare selvsignerte sertifikater uten kjede kan hentes automatisk. Hvis du bruker et selvsignert sertifikat, må du laste opp CA-sertifikatet manuelt. Du finner instruksjoner for dette ." } }, "action": { "retry": { - "label": "" + "label": "Prøv å opprette på nytt" }, "trust": { - "label": "" + "label": "Stol på sertifikat" }, "upload": { - "label": "" + "label": "Last opp sertifikat" } }, "hostnameMismatch": { "confirm": { - "title": "", - "message": "" + "title": "Stol på uoverensstemmende vertsnavn", + "message": "Er du sikker på at du vil stole på sertifikatet selv om vertsnavnet ikke stemmer?" }, "notification": { "success": { - "title": "", - "message": "" + "title": "Sertifikat betrodd", + "message": "Vertsnavn lagt til i listen over betrodde sertifikater" }, "error": { - "title": "", - "message": "" + "title": "Kunne ikke stole på sertifikatet", + "message": "Sertifikatet med avvikende vertsnavn kunne ikke betros" } } }, "selfSigned": { "confirm": { - "title": "", - "message": "" + "title": "Stol på selvsignert sertifikat", + "message": "Er du sikker på at du vil stole på dette selvsignerte sertifikatet?" }, "notification": { "success": { - "title": "", - "message": "" + "title": "Sertifikat betrodd", + "message": "Sertifikatet ble lagt til i listen over betrodde sertifikater" }, "error": { - "title": "", - "message": "" + "title": "Kunne ikke stole på sertifikatet", + "message": "Kunne ikke legge til sertifikatet i listen over betrodde sertifikater" } } }, "details": { - "title": "", - "description": "", + "title": "Detaljer", + "description": "Gå gjennom sertifikatinformasjonen før du bestemmer deg for å stole på det.", "content": { - "action": "", - "title": "" + "action": "Vis innhold", + "title": "PEM-sertifikat" } } }, "request": { - "title": "", + "title": "Forespørselsfeil", "description": { "connection": { - "hostUnreachable": "", - "networkUnreachable": "", - "refused": "", - "reset": "" + "hostUnreachable": "Serveren kunne ikke nås. Det betyr vanligvis at verten er frakoblet eller utilgjengelig fra nettet ditt.", + "networkUnreachable": "Nettverket er utilgjengelig. Kontroller internettforbindelsen eller nettverkskonfigurasjonen.", + "refused": "Serveren avviste tilkoblingen. Den kjører kanskje ikke eller avviser forespørsler på angitt port.", + "reset": "Tilkoblingen ble uventet lukket av serveren. Dette kan skje hvis serveren er ustabil eller ble startet på nytt." }, "dns": { - "notFound": "", - "timeout": "", - "noAnswer": "" + "notFound": "Serveradressen ble ikke funnet. Kontroller URL-en for skrivefeil eller ugyldige domenenavn.", + "timeout": "DNS-oppslaget fikk tidsavbrudd. Dette kan være midlertidig – prøv igjen om litt.", + "noAnswer": "DNS-serveren returnerte ikke et gyldig svar. Domenet kan finnes, men mangler gyldige oppføringer." }, "timeout": { - "aborted": "", - "timeout": "" + "aborted": "Forespørselen ble avbrutt før den fullførte. Dette kan skyldes brukerhandling eller systemtidsavbrudd.", + "timeout": "Forespørselen tok for lang tid og fikk tidsavbrudd. Sjekk nettverket eller prøv igjen senere." } } } @@ -920,8 +920,8 @@ "message": "Banen er sannsynligvis ikke riktig" }, "tooManyRequests": { - "title": "", - "message": "" + "title": "For mange forespørsler på kort tid", + "message": "Det var for mange forespørsler. Du blir sannsynligvis begrenset eller avvist av målsystemet" } } }, @@ -963,36 +963,36 @@ "newLabel": "Nytt område" }, "personalAccessToken": { - "label": "", - "newLabel": "" + "label": "Personlig tilgangstoken", + "newLabel": "Nytt personlig tilgangstoken" }, "topic": { - "label": "", - "newLabel": "" + "label": "Emne", + "newLabel": "Nytt emne" }, "url": { - "label": "", - "newLabel": "" + "label": "Url", + "newLabel": "Ny url" }, "opnsenseApiKey": { - "label": "", - "newLabel": "" + "label": "API Nøkkel (Nøkkel)", + "newLabel": "Ny API Nøkkel (Nøkkel)" }, "opnsenseApiSecret": { - "label": "", - "newLabel": "" + "label": "API Nøkkel (Hemliglet)", + "newLabel": "Ny API Key (Secret)" }, "githubAppId": { - "label": "", - "newLabel": "" + "label": "App Id", + "newLabel": "Ny App Id" }, "githubInstallationId": { - "label": "", - "newLabel": "" + "label": "Installasjons-ID", + "newLabel": "Ny Installation Id" }, "privateKey": { - "label": "", - "newLabel": "" + "label": "Privat nøkkel", + "newLabel": "Ny privat nøkkel" } } }, @@ -1044,14 +1044,14 @@ } }, "common": { - "success": "", + "success": "Suksess", "beta": "Beta", "error": "Feil", "action": { "add": "Legg til", "apply": "Bruk", "backToOverview": "Tilbake til oversikt", - "change": "", + "change": "Endre", "create": "Opprett", "createAnother": "Opprett og start på nytt", "edit": "Rediger", @@ -1063,7 +1063,7 @@ "cancel": "Avbryt", "delete": "Slett", "discard": "Forkast", - "close": "", + "close": "Lukk", "confirm": "Bekreft", "continue": "Fortsett", "previous": "Tidligere", @@ -1174,8 +1174,8 @@ }, "unit": { "speed": { - "kilometersPerHour": "", - "milesPerHour": "" + "kilometersPerHour": "km/h", + "milesPerHour": "mph" } } }, @@ -1187,10 +1187,10 @@ }, "option": { "title": { - "label": "" + "label": "Tittel" }, "customCssClasses": { - "label": "" + "label": "Egendefinerte css-klasser" }, "borderColor": { "label": "Grensefarge" @@ -1288,7 +1288,7 @@ "label": "Integrasjoner" }, "title": { - "label": "" + "label": "Tittel" }, "customCssClasses": { "label": "Egendefinerte css-klasser" @@ -1321,21 +1321,21 @@ "label": "Aktiver enkel ping" }, "layout": { - "label": "", + "label": "Oppsett", "option": { - "row": "", - "row-reverse": "", - "column": "", - "column-reverse": "" + "row": "Horisontal", + "row-reverse": "Horisontal (omvendt)", + "column": "Vertikal", + "column-reverse": "Vertikal (omvendt)" } }, "descriptionDisplayMode": { - "label": "", - "description": "", + "label": "Visningsmodus for beskrivelse", + "description": "Velg hvordan appbeskrivelsen skal vises", "option": { - "normal": "", - "tooltip": "", - "hidden": "" + "normal": "Innenfor widget", + "tooltip": "Som verktøytips", + "hidden": "Skjult" } } }, @@ -1582,13 +1582,13 @@ "width": "Bredde", "height": "Høyde" }, - "placeholder": "", + "placeholder": "Begynn å skrive notatene dine", "dismiss": { - "title": "", - "message": "", + "title": "Forkaste endringer?", + "message": "Du har ulagrede endringer i notatboken. Er du sikker på at du vil forkaste dem?", "action": { - "discard": "", - "keepEditing": "" + "discard": "Forkast endringer", + "keepEditing": "Fortsett å redigere" } } }, @@ -1664,76 +1664,76 @@ } }, "stockPrice": { - "name": "", - "description": "", + "name": "Aksjekurs", + "description": "Viser gjeldende aksjekurs for et selskap", "option": { "stock": { - "label": "" + "label": "Aksjesymbol" }, "timeRange": { - "label": "", + "label": "Tidsperiode", "option": { "1d": { - "label": "" + "label": "1 dag" }, "5d": { - "label": "" + "label": "5 dager" }, "1mo": { - "label": "" + "label": "1 måned" }, "3mo": { - "label": "" + "label": "3 måneder" }, "6mo": { - "label": "" + "label": "6 måneder" }, "ytd": { - "label": "" + "label": "År til dato" }, "1y": { - "label": "" + "label": "1 år" }, "2y": { - "label": "" + "label": "2 år" }, "5y": { - "label": "" + "label": "5 år" }, "10y": { - "label": "" + "label": "10 år" }, "max": { - "label": "" + "label": "Maks" } } }, "timeInterval": { - "label": "", + "label": "Tidsintervall", "option": { "5m": { - "label": "" + "label": "5 minutter" }, "15m": { - "label": "" + "label": "15 minutter" }, "30m": { - "label": "" + "label": "30 minutter" }, "1h": { - "label": "" + "label": "1 time" }, "1d": { - "label": "" + "label": "1 dag" }, "5d": { - "label": "" + "label": "5 dager" }, "1wk": { - "label": "" + "label": "1 uke" }, "1mo": { - "label": "" + "label": "1 måned" } } } @@ -1743,7 +1743,7 @@ "name": "Kalender", "description": "Vis hendelser fra integrasjonene dine i en kalendervisning innenfor en bestemt relativ tidsperiode", "duration": { - "allDay": "" + "allDay": "Hele dagen" }, "option": { "releaseType": { @@ -1780,7 +1780,7 @@ "description": "Bare på nåværende vær" }, "useImperialSpeed": { - "label": "" + "label": "Bruk mph for vindhastighet" }, "location": { "label": "Vær plassering" @@ -1800,12 +1800,12 @@ "description": "Hvordan datoen skal se ut" } }, - "currentWindSpeed": "{currentWindSpeed} km/t", + "currentWindSpeed": "{currentWindSpeed} {unit}", "dailyForecast": { "sunrise": "Soloppgang", "sunset": "Solnedgang", - "maxWindSpeed": "Maks. vindhastighet: {maxWindSpeed} km/t", - "maxWindGusts": "Maks. vindkast: {maxWindGusts} km/t" + "maxWindSpeed": "Maks vindhastighet: {maxWindSpeed} {unit}", + "maxWindGusts": "Maks vindkast: {maxWindGusts} {unit}" }, "kind": { "clear": "Tøm", @@ -1856,7 +1856,7 @@ "label": "Vis minneinfo" }, "showUptime": { - "label": "" + "label": "Vis oppetid" }, "fileSystem": { "label": "Vis filsysteminfo" @@ -1865,7 +1865,7 @@ "label": "Standard fane" }, "visibleClusterSections": { - "label": "" + "label": "Synlige klyngeseksjoner" }, "sectionIndicatorRequirement": { "label": "Krav til seksjonsindikator" @@ -1937,27 +1937,27 @@ } }, "dockerContainers": { - "name": "", - "description": "", + "name": "Docker status", + "description": "Statistikk over containerne dine (denne widgeten kan bare legges til med administratorrettigheter)", "option": { "enableRowSorting": { - "label": "" + "label": "Aktiver sortering av elementer" }, "defaultSort": { - "label": "", + "label": "Kolonne brukt som standard for sortering", "option": { - "name": "", - "state": "", - "cpuUsage": "", - "memoryUsage": "" + "name": "Navn", + "state": "Tilstand", + "cpuUsage": "CPU-bruk", + "memoryUsage": "Minnebruk" } }, "descendingDefaultSort": { - "label": "" + "label": "Reverser sortering" } }, "error": { - "internalServerError": "" + "internalServerError": "Kunne ikke hente containerstatistikk" } }, "common": { @@ -2026,8 +2026,8 @@ "description": "Vis pågående strømmer på dine media-servere", "option": { "showOnlyPlaying": { - "label": "", - "description": "" + "label": "Vis kun det som spiller nå", + "description": "Å deaktivere dette fungerer ikke for Plex" } }, "items": { @@ -2036,21 +2036,21 @@ "name": "Navn", "id": "Id", "metadata": { - "title": "", + "title": "Statistikk for nerder", "video": { - "title": "", - "resolution": "" + "title": "Video", + "resolution": "Oppløsning" }, "audio": { - "title": "", - "channelCount": "", - "codec": "" + "title": "Lyd", + "channelCount": "Lydkanaler", + "codec": "Lydkodek" }, "transcoding": { - "title": "", - "container": "", - "resolution": "", - "target": "" + "title": "Transkoding", + "container": "Beholder", + "resolution": "Oppløsning", + "target": "Målkodek" } } } @@ -2078,7 +2078,7 @@ "label": "Vis torrentoppføringer markert som fullført" }, "showCompletedHttp": { - "label": "" + "label": "Vis diverse oppføringer merket som fullført" }, "activeTorrentThreshold": { "label": "Skjul fullført torrent under denne terskelen (i kiB/s)" @@ -2093,8 +2093,8 @@ "label": "Bruk filter for å beregne ratio" }, "limitPerIntegration": { - "label": "", - "description": "" + "label": "Begrens elementer per integrasjon", + "description": "Dette begrenser antall elementer vist per integrasjon, ikke globalt" } }, "errors": { @@ -2203,32 +2203,32 @@ "globalRatio": "Global ratio" }, "mediaReleases": { - "name": "", - "description": "", + "name": "Medieutgivelser", + "description": "Vis nylig tillagte medier eller kommende utgivelser fra ulike integrasjoner", "option": { "layout": { - "label": "", + "label": "Oppsett", "option": { "backdrop": { - "label": "" + "label": "Bakgrunn" }, "poster": { - "label": "" + "label": "Plakat" } } }, "showDescriptionTooltip": { - "label": "" + "label": "Vis beskrivelse som verktøytips" }, "showType": { - "label": "" + "label": "Vis merke for medietype" }, "showSource": { - "label": "" + "label": "Vis kildeintegrasjon" } }, "length": { - "duration": "" + "duration": "{length}min" } }, "mediaRequests-requestList": { @@ -2248,18 +2248,18 @@ "unknown": "Ukjent", "pending": "Pågår", "processing": "Prosesserer", - "requested": "", + "requested": "Forespurt", "partiallyAvailable": "Delvis", "available": "Tilgjengelig", - "blacklisted": "", - "deleted": "" + "blacklisted": "Svartelistet", + "deleted": "Slettet" }, "status": { "pending": "Venter", "approved": "Godkjent", "declined": "Avslått", "failed": "Feilet", - "completed": "" + "completed": "Fullført" }, "toBeDetermined": "Uavklart" }, @@ -2361,126 +2361,126 @@ "label": "Antall poster grense" }, "hideDescription": { - "label": "" + "label": "Skjul beskrivelse" } } }, "releases": { - "name": "", - "description": "", + "name": "Utgivelser", + "description": "Viser en liste over gjeldende versjoner for angitte repositorier med gitt versjonsregex.", "option": { "newReleaseWithin": { - "label": "", - "description": "" + "label": "Ny utgivelse innen", + "description": "Brukseksempel: 1w (1 uke), 10M (10 måneder). Gyldige enheter h (timer), d (dager), w (uker), M (måneder), y (år). La stå tomt for ingen markering av nye utgivelser." }, "staleReleaseWithin": { - "label": "", - "description": "" + "label": "Utdatert utgivelse innen", + "description": "Brukseksempel: 1w (1 uke), 10M (10 måneder). Gyldige enheter h (timer), d (dager), w (uker), M (måneder), y (år). La stå tomt for ingen markering av utdaterte utgivelser." }, "showOnlyHighlighted": { - "label": "", - "description": "" + "label": "Vis bare uthevede", + "description": "Vis bare nye eller utdaterte utgivelser. Som beskrevet ovenfor." }, "showDetails": { - "label": "" + "label": "Vis detaljer" }, "showOnlyIcon": { - "label": "" + "label": "Vis bare ikon" }, "topReleases": { - "label": "", - "description": "" + "label": "Topp utgivelser", + "description": "Maks antall nyeste utgivelser som vises. Null betyr ingen grense." }, "repositories": { - "label": "", + "label": "Repositorier", "addRepository": { - "label": "" + "label": "Legg til repository" }, "importRepositories": { - "label": "", - "loading": "", - "noImagesFound": "", - "listFoundImages": "", - "listAlreadyImportedImages": "", - "allImagesAlreadyImported": "", - "onlyAdminCanImport": "", - "selectAll": "", - "deselectAll": "" + "label": "Importer fra docker", + "loading": "Laster docker-bilder", + "noImagesFound": "Ingen docker-bilder funnet", + "listFoundImages": "Liste over funnede bilder", + "listAlreadyImportedImages": "Liste over allerede importerte bilder", + "allImagesAlreadyImported": "Alle bilder er allerede importert", + "onlyAdminCanImport": "Bare administratorer kan importere fra docker", + "selectAll": "Velg alle", + "deselectAll": "Velg bort alle" }, "provider": { - "label": "" + "label": "Leverandør" }, "identifier": { - "label": "", - "placeholder": "" + "label": "Identifikator", + "placeholder": "Navn eller Eier/Navn" }, "name": { - "label": "" + "label": "Navn" }, "versionFilter": { - "label": "", + "label": "Versjonsfilter", "prefix": { - "label": "" + "label": "Prefiks" }, "precision": { - "label": "", + "label": "Presisjon", "options": { - "none": "" + "none": "Ingen" } }, "suffix": { - "label": "" + "label": "Suffiks" }, "regex": { - "label": "" + "label": "Regulært uttrykk" } }, "edit": { - "label": "" + "label": "Rediger" }, "editForm": { - "title": "", + "title": "Rediger repository", "cancel": { - "label": "" + "label": "Avbryt" }, "confirm": { - "label": "" + "label": "Bekreft" } }, "importForm": { - "title": "" + "title": "Importer fra Docker" }, "example": { - "label": "" + "label": "Eksempel" }, - "invalid": "", + "invalid": "Ugyldig repository-definisjon, kontroller verdiene", "noProvider": { - "label": "", - "tooltip": "" + "label": "Ingen leverandør", + "tooltip": "Leverandøren kunne ikke tolkes, sett den manuelt etter import av bildene" } } }, - "not-found": "", - "pre-release": "", - "archived": "", - "forked": "", - "starsCount": "", - "forksCount": "", - "issuesCount": "", - "markViewed": "", - "openProjectPage": "", - "openReleasePage": "", - "releaseDescription": "", - "projectDescription": "", - "created": "", + "not-found": "Ikke funnet", + "pre-release": "Forhåndsutgivelse", + "archived": "Arkivert", + "forked": "Forgrenet", + "starsCount": "Stjerner", + "forksCount": "Forgreninger", + "issuesCount": "Åpne saker", + "markViewed": "Merk som sett", + "openProjectPage": "Åpne prosjektside", + "openReleasePage": "Åpne releaseside", + "releaseDescription": "Utgivelsesbeskrivelse", + "projectDescription": "Prosjektbeskrivelse", + "created": "Opprettet", "error": { - "label": "", + "label": "Feil", "messages": { - "invalidIdentifier": "", - "noMatchingVersion": "", - "noReleasesFound": "", - "noProviderSeleceted": "", - "noProviderResponse": "" + "invalidIdentifier": "Ugyldig identifikator", + "noMatchingVersion": "Ingen samsvarende versjon funnet", + "noReleasesFound": "Ingen utgivelser funnet", + "noProviderSeleceted": "Ingen leverandør valgt", + "noProviderResponse": "Ingen respons fra leverandør" } } }, @@ -2488,125 +2488,125 @@ "option": {}, "card": { "vpn": { - "countConnected": "" + "countConnected": "{count} tilkoblet" } }, "error": { - "integrationsDisconnected": "", - "unknownContentOption": "" + "integrationsDisconnected": "Ingen data tilgjengelig, alle integrasjoner er frakoblet", + "unknownContentOption": "Ukjent innholdsvalg for nettverkskontroller-sammendragswidget: " }, - "name": "", - "description": "" + "name": "Nettverkskontroller-sammendrag", + "description": "Viser sammendrag av en nettverkskontroller (som UniFi Controller)" }, "networkControllerStatus": { "card": { "variants": { "wired": { - "name": "" + "name": "Kablet" }, "wifi": { - "name": "" + "name": "Wi-Fi" } }, "users": { - "label": "" + "label": "Brukere" }, "guests": { - "label": "" + "label": "Gjester" } }, "option": { "content": { "option": { "wifi": { - "label": "" + "label": "Wi-Fi" }, "wired": { - "label": "" + "label": "Kablet" } }, - "label": "" + "label": "Widget-innhold" } }, "error": { - "integrationsDisconnected": "", - "unknownContentOption": "" + "integrationsDisconnected": "Ingen data tilgjengelig, alle integrasjoner er frakoblet", + "unknownContentOption": "Ukjent innholdsvalg for nettverksstatus-widget: " }, - "name": "", - "description": "" + "name": "Nettverksstatus", + "description": "Vis tilkoblede enheter på et nettverk" }, "networkController": { "error": { - "internalServerError": "" + "internalServerError": "Kunne ikke hente nettverkskontroller-sammendrag" } }, "firewall": { - "name": "", - "description": "", + "name": "Brannmur-overvåking", + "description": "Viser et sammendrag av brannmurer", "tab": { - "system": "", - "interfaces": "" + "system": "System", + "interfaces": "Grensesnitt" }, "error": { - "internalServerError": "" + "internalServerError": "Kunne ikke hente data fra brannmuren" }, "option": { - "interfaces": "" + "interfaces": "Nettverksgrensesnitt som skal vises" }, "widget": { - "fwname": "", - "version": "", - "versiontitle": "", - "cputitle": "", - "memorytitle": "", - "cpu": "", - "memory": "", + "fwname": "Navn", + "version": "Versjon", + "versiontitle": "Versjoner", + "cputitle": "CPU-bruk", + "memorytitle": "Minnebruk", + "cpu": "CPU", + "memory": "Minne", "interfaces": { - "name": "", - "trans": "", - "recv": "", - "title": "" + "name": "navn", + "trans": "Sendt", + "recv": "Mottatt", + "title": "Nettverksgrensesnitt" } } }, "notifications": { - "name": "", - "description": "", - "noItems": "", + "name": "Varsler", + "description": "Vis varselhistorikk fra en integrasjon", + "noItems": "Ingen varsler å vise.", "option": {} }, "systemResources": { - "name": "", - "description": "", + "name": "Systemressurser", + "description": "CPU, minne, disk og annen maskinvarebruk på systemet ditt", "option": { "hasShadow": { - "label": "" + "label": "Aktiver skyggelegging i diagram" }, "visibleCharts": { - "label": "", - "description": "", + "label": "Synlige diagrammer", + "description": "Velg diagrammene du vil vise.", "option": { - "cpu": "", - "memory": "", - "network": "" + "cpu": "CPU", + "memory": "Minne", + "network": "Nettverk" } }, "labelDisplayMode": { - "label": "", + "label": "Visningsmodus for etikett", "option": { - "textWithIcon": "", - "text": "", - "icon": "", - "hidden": "" + "textWithIcon": "Vis tekst med ikon", + "text": "Vis bare tekst", + "icon": "Vis bare ikon", + "hidden": "Skjul etikett" } } }, "card": { - "cpu": "", - "memory": "", - "network": "", - "up": "", - "down": "" + "cpu": "CPU", + "memory": "Minne", + "network": "NETT", + "up": "OPP", + "down": "NED" } } }, @@ -2729,10 +2729,10 @@ }, "backgroundImageUrl": { "label": "URL for bakgrunnsbilde", - "placeholder": "", + "placeholder": "Begynn å skrive for å søke i lokale bilder", "group": { - "your": "", - "other": "" + "your": "Dine bilder", + "other": "Andre bilder" } }, "backgroundImageAttachment": { @@ -2795,7 +2795,7 @@ "label": "Ikonfarge" }, "clearColor": { - "label": "" + "label": "Nullstill farge" }, "customCss": { "label": "Tilpasset css for denne tavlen", @@ -3030,8 +3030,8 @@ "integration": "Integrasjoner", "app": "Apper", "group": "Grupper", - "searchEngine": "", - "media": "" + "searchEngine": "Søkemotorer", + "media": "Medier" }, "statisticLabel": { "boards": "Tavler", @@ -3040,8 +3040,8 @@ "authorization": "Autorisasjon" }, "heroBanner": { - "title": "", - "subtitle": "" + "title": "Velkommen tilbake til din", + "subtitle": "{app} tavle" } }, "board": { @@ -3326,7 +3326,7 @@ "idle": "Inaktiv", "running": "Kjører", "error": "Feil", - "disabled": "" + "disabled": "Deaktivert" }, "job": { "minecraftServerStatus": { @@ -3378,99 +3378,99 @@ "label": "Media transkoding" }, "networkController": { - "label": "" + "label": "Nettverkskontroller" }, "refreshNotifications": { - "label": "" + "label": "Varseloppdaterer" }, "dockerContainers": { - "label": "" + "label": "Docker-beholdere" }, "firewallCpu": { - "label": "" + "label": "Brannmur-CPU" }, "firewallMemory": { - "label": "" + "label": "Brannmur-minne" }, "firewallVersion": { - "label": "" + "label": "Brannmur-versjon" }, "firewallInterfaces": { - "label": "" + "label": "Brannmur-grensesnitt" }, "weather": { - "label": "" + "label": "Vær" } }, "interval": { - "seconds": "", - "minutes": "", - "hours": "", - "midnight": "", - "weeklyMonday": "", + "seconds": "Hvert {interval, plural, =1 {sekund} other {# sekunder}}", + "minutes": "Hvert {interval, plural, =1 {minutt} other {# minutter}}", + "hours": "Hver {interval, plural, =1 {time} other {# timer}}", + "midnight": "Hver dag ved midnatt", + "weeklyMonday": "Hver uke på mandag", "update": { "success": { - "message": "" + "message": "Intervall oppdatert" }, "error": { - "message": "" + "message": "Kunne ikke oppdatere intervall" } } }, "settings": { - "title": "" + "title": "Oppgaveinnstillinger for {jobName}" }, "field": { "name": { - "label": "" + "label": "Navn" }, "interval": { - "label": "" + "label": "Planlagt intervall" }, "lastExecution": { - "label": "" + "label": "Siste kjøring" }, "actions": { - "label": "" + "label": "Handlinger" } }, "table": { - "search": "" + "search": "Søk i {count} oppgaver..." }, "action": { "refresh": { - "label": "" + "label": "Oppdater" } }, "refresh": { "success": { - "message": "" + "message": "Oppgaver ble oppdatert" }, "error": { - "message": "" + "message": "Kunne ikke oppdatere oppgaver" } }, "trigger": { "success": { - "message": "" + "message": "Oppgave startet" }, "error": { - "message": "" + "message": "Kunne ikke starte oppgave" } }, "enable": { "success": { - "message": "" + "message": "Oppgave aktivert" } }, "disable": { "success": { - "message": "" + "message": "Oppgave deaktivert" } }, "toggle": { "error": { - "message": "" + "message": "Kunne ikke bytte oppgavestatus" } } }, @@ -3527,19 +3527,19 @@ "subtitle": "{count} brukt i koden til Homarr" }, "hotkeys": { - "title": "", - "subtitle": "", + "title": "Hurtigtaster", + "subtitle": "Tastatursnarveier som forbedrer arbeidsflyten din", "field": { - "shortcut": "", - "action": "" + "shortcut": "Snarvei", + "action": "Handling" }, "action": { - "toggleBoardEdit": "", - "toggleColorScheme": "", - "saveNotebook": "", - "openSpotlight": "" + "toggleBoardEdit": "Slå av/på redigeringsmodus for tavle", + "toggleColorScheme": "Bytt lys/mørk modus", + "saveNotebook": "Lagre notatbok (kun i notatbok-widget)", + "openSpotlight": "Åpne søk" }, - "note": "" + "note": "Tips: Mod refererer til både Ctrl-tasten og ⌘ på macOS" } } } @@ -3549,9 +3549,9 @@ "title": "Containere", "table": { "updated": "Oppdatert {when}", - "search": "Søk i {count} containere", + "search": "Søk {count} containere", "selected": "{selectCount} av {totalCount} containere valgt", - "footer": "" + "footer": "Totalt {count} containere" }, "field": { "name": { @@ -3571,10 +3571,10 @@ }, "stats": { "cpu": { - "label": "" + "label": "CPU" }, "memory": { - "label": "" + "label": "Minne" } }, "containerImage": { @@ -3585,7 +3585,7 @@ } }, "action": { - "title": "", + "title": "Handlinger", "start": { "label": "Start", "notification": { @@ -3995,7 +3995,7 @@ "tools": { "label": "Verktøy", "tasks": { - "label": "" + "label": "Oppgaver" }, "docker": { "label": "Docker" @@ -4033,7 +4033,7 @@ "certificates": { "label": "Sertifikater", "hostnames": { - "label": "" + "label": "Vertsnavn" } } }, @@ -4400,7 +4400,7 @@ }, "delete": { "title": "Slett søkemotor", - "message": "Er du sikker på at du vil slette søkemotoren '{name}'?", + "message": "Er du sikker på at du vil slette søkemotoren {name}?", "notification": { "success": { "title": "Søkemotor slettet", @@ -4434,25 +4434,25 @@ "certificate": { "field": { "hostname": { - "label": "" + "label": "Vertsnavn" }, "subject": { - "label": "" + "label": "Emne" }, "issuer": { - "label": "" + "label": "Utsteder" }, "validFrom": { - "label": "" + "label": "Gyldig fra" }, "validTo": { - "label": "" + "label": "Gyldig til" }, "serialNumber": { - "label": "" + "label": "Serienummer" }, "fingerprint": { - "label": "" + "label": "Fingeravtrykk" } }, "page": { @@ -4463,19 +4463,19 @@ "title": "Det er ingen sertifikater enda" }, "invalid": { - "title": "", - "description": "" + "title": "Ugyldig sertifikat", + "description": "Kunne ikke tolke sertifikatet" }, "expires": "Utløper {when}", - "toHostnames": "" + "toHostnames": "Betrodde vertsnavn" }, "hostnames": { - "title": "", - "description": "", + "title": "Betrodde sertifikatvertsnavn", + "description": "Noen sertifikater tillater ikke domenet Homarr bruker for forespørsler. Alle betrodde vertsnavn med sine sertifikat-hash brukes for å omgå disse begrensningene.", "noResults": { - "title": "" + "title": "Det finnes ingen vertsnavn ennå" }, - "toCertificates": "" + "toCertificates": "Sertifikater" } }, "action": { @@ -4507,16 +4507,16 @@ } }, "removeHostname": { - "label": "", - "confirm": "", + "label": "Fjern betrodd vertsnavn", + "confirm": "Er du sikker på at du vil fjerne dette betrodde vertsnavnet? Dette kan gjøre at noen integrasjoner slutter å fungere.", "notification": { "success": { - "title": "", - "message": "" + "title": "Vertsnavn fjernet", + "message": "Vertsnavnet ble fjernet" }, "error": { - "title": "", - "message": "" + "title": "Vertsnavn ikke fjernet", + "message": "Vertsnavnet kunne ikke fjernes" } } } @@ -4525,10 +4525,10 @@ "log": { "level": { "option": { - "debug": "", - "info": "", - "warn": "", - "error": "" + "debug": "Feilsøk", + "info": "Info", + "warn": "Advarsel", + "error": "Feil" } } } diff --git a/packages/translation/src/lang/sl.json b/packages/translation/src/lang/sl.json index 194997b1d..7fc414127 100644 --- a/packages/translation/src/lang/sl.json +++ b/packages/translation/src/lang/sl.json @@ -177,8 +177,8 @@ } }, "forgotPassword": { - "label": "", - "description": "" + "label": "Ste pozabili geslo?", + "description": "Administrator lahko zažene ukaz:" } }, "register": { @@ -622,7 +622,7 @@ "description": "", "action": "" }, - "add": "" + "add": "Dodaj aplikacijo" } }, "integration": { @@ -1059,10 +1059,10 @@ "insert": "Vstavite", "remove": "Odstrani", "save": "Shrani", - "saveChanges": "Shranjevanje sprememb", + "saveChanges": "Shrani spremembe", "cancel": "Prekliči", "delete": "Izbriši", - "discard": "", + "discard": "Zapusti", "close": "", "confirm": "Potrdi", "continue": "", @@ -1125,13 +1125,13 @@ "userAvatar": { "menu": { "switchToDarkMode": "", - "switchToLightMode": "", - "management": "", - "preferences": "Vaše želje", - "logout": "", + "switchToLightMode": "Svetli način", + "management": "Nastavitve", + "preferences": "Prilagoditev", + "logout": "Odjava", "login": "Prijava", - "homeBoard": "", - "loggedOut": "", + "homeBoard": "Vaša nadzorna plošča", + "loggedOut": "Odjava uspešna", "updateAvailable": "" } }, @@ -1182,7 +1182,7 @@ "section": { "dynamic": { "action": { - "create": "", + "create": "Nova dinamična vsebina", "remove": "" }, "option": { @@ -1208,7 +1208,7 @@ } }, "action": { - "create": "", + "create": "Nova kategorija", "edit": "", "remove": "", "moveUp": "Premaknite se navzgor", @@ -1243,12 +1243,12 @@ }, "item": { "action": { - "create": "", + "create": "Nova vsebina", "import": "", - "edit": "", - "moveResize": "", - "duplicate": "", - "remove": "" + "edit": "Uredi gradnik", + "moveResize": "Premakni/spremeni", + "duplicate": "Podvoji", + "remove": "Izbriši" }, "menu": { "label": { @@ -2638,8 +2638,8 @@ "edit": { "notification": { "success": { - "title": "", - "message": "" + "title": "Spremembe so uveljavljene", + "message": "Vsebina je bila uspšeno shranjena" }, "error": { "title": "", @@ -2647,8 +2647,8 @@ } }, "confirmLeave": { - "title": "", - "message": "" + "title": "Neshranjene spremembe", + "message": "Vsebina ni shranjena, želite nadaljevati?" } }, "oldImport": { @@ -2716,16 +2716,16 @@ }, "field": { "pageTitle": { - "label": "" + "label": "Naslov strani" }, "metaTitle": { - "label": "" + "label": "Meta naslov" }, "logoImageUrl": { - "label": "" + "label": "URL logotipa" }, "faviconImageUrl": { - "label": "" + "label": "URL ikone" }, "backgroundImageUrl": { "label": "", @@ -2835,7 +2835,7 @@ "metaTitle": "" }, "setting": { - "title": "", + "title": "Nastavitve za {boardName} nadzorno ploščo", "section": { "general": { "title": "Splošno", @@ -2844,9 +2844,9 @@ "layout": { "title": "Postavitev", "responsive": { - "title": "", + "title": "Predloga", "action": { - "add": "" + "add": "Dodaj predlogo" } } }, @@ -2959,14 +2959,14 @@ "layout": { "field": { "name": { - "label": "" + "label": "Ime" }, "columnCount": { - "label": "" + "label": "Število stolpcev" }, "breakpoint": { - "label": "", - "description": "" + "label": "Prekinitvene točke", + "description": "Postavitev bo uporabljena na vseh zaslonih, večjih od te prelomne točke, do naslednje večje prelomne točke." } } }, @@ -4046,7 +4046,7 @@ } }, "search": { - "placeholder": "", + "placeholder": "Iskanje vsebine", "nothingFound": "", "error": { "fetch": "" diff --git a/packages/ui/index.ts b/packages/ui/index.ts index 42b81d757..0933ebe7d 100644 --- a/packages/ui/index.ts +++ b/packages/ui/index.ts @@ -3,4 +3,5 @@ import type { Icon123, IconProps } from "@tabler/icons-react"; export * from "./src"; export type TablerIcon = typeof Icon123; + export type TablerIconProps = IconProps; diff --git a/packages/ui/package.json b/packages/ui/package.json index e921db31b..0aad28842 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -32,7 +32,7 @@ "@mantine/core": "^8.3.10", "@mantine/dates": "^8.3.10", "@mantine/hooks": "^8.3.10", - "@tabler/icons-react": "^3.35.0", + "@tabler/icons-react": "^3.36.0", "mantine-react-table": "2.0.0-beta.9", "next": "16.1.1", "react": "19.2.3", diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 85556e121..e2cb773ca 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -51,7 +51,7 @@ "@mantine/charts": "^8.3.10", "@mantine/core": "^8.3.10", "@mantine/hooks": "^8.3.10", - "@tabler/icons-react": "^3.35.0", + "@tabler/icons-react": "^3.36.0", "@tiptap/extension-color": "3.14.0", "@tiptap/extension-highlight": "3.14.0", "@tiptap/extension-image": "3.14.0", diff --git a/packages/widgets/src/errors/base.ts b/packages/widgets/src/errors/base.ts index 0f16a82eb..35f158bec 100644 --- a/packages/widgets/src/errors/base.ts +++ b/packages/widgets/src/errors/base.ts @@ -1,6 +1,5 @@ -import type { TablerIcon } from "@tabler/icons-react"; - import type { stringOrTranslation } from "@homarr/translation"; +import type { TablerIcon } from "@homarr/ui"; export abstract class ErrorBoundaryError extends Error { public abstract getErrorBoundaryData(): { diff --git a/packages/widgets/src/media-transcoding/component.tsx b/packages/widgets/src/media-transcoding/component.tsx index 33a838f30..c577c9401 100644 --- a/packages/widgets/src/media-transcoding/component.tsx +++ b/packages/widgets/src/media-transcoding/component.tsx @@ -2,11 +2,11 @@ import { useState } from "react"; import { Center, Divider, Group, Pagination, SegmentedControl, Stack, Text } from "@mantine/core"; -import type { TablerIcon } from "@tabler/icons-react"; import { IconClipboardList, IconCpu2, IconReportAnalytics } from "@tabler/icons-react"; import { clientApi } from "@homarr/api/client"; import { useI18n } from "@homarr/translation/client"; +import type { TablerIcon } from "@homarr/ui"; import { views } from "."; import type { WidgetComponentProps } from "../definition"; diff --git a/packages/widgets/src/system-resources/chart/memory-chart.tsx b/packages/widgets/src/system-resources/chart/memory-chart.tsx index b0c6d14c1..ac265db8a 100644 --- a/packages/widgets/src/system-resources/chart/memory-chart.tsx +++ b/packages/widgets/src/system-resources/chart/memory-chart.tsx @@ -47,7 +47,7 @@ export const SystemResourceMemoryChart = ({ return ( - {humanFileSize(value)} / {humanFileSize(totalCapacityInBytes)} ( + {humanFileSize(Math.round(value))} / {humanFileSize(totalCapacityInBytes)} ( {Math.round((value / totalCapacityInBytes) * 100)}%) diff --git a/packages/widgets/src/system-resources/component.tsx b/packages/widgets/src/system-resources/component.tsx index 623ed8aa2..46237a27c 100644 --- a/packages/widgets/src/system-resources/component.tsx +++ b/packages/widgets/src/system-resources/component.tsx @@ -22,6 +22,7 @@ export default function SystemResources({ integrationIds, options }: WidgetCompo }); const memoryCapacityInBytes = (data[0]?.healthInfo.memAvailableInBytes ?? 0) + (data[0]?.healthInfo.memUsedInBytes ?? 0); + const [items, setItems] = useState<{ cpu: number; memory: number; network: { up: number; down: number } | null }[]>( data.map((item) => ({ cpu: item.healthInfo.cpuUtilization, diff --git a/packages/widgets/src/system-resources/index.ts b/packages/widgets/src/system-resources/index.ts index 4e0fe27fa..d89d6952f 100644 --- a/packages/widgets/src/system-resources/index.ts +++ b/packages/widgets/src/system-resources/index.ts @@ -14,7 +14,7 @@ const labelDisplayModeOptions = { export const { definition, componentLoader } = createWidgetDefinition("systemResources", { icon: IconGraphFilled, - supportedIntegrations: ["dashDot", "openmediavault", "truenas"], + supportedIntegrations: ["dashDot", "openmediavault", "truenas", "unraid"], createOptions() { return optionsBuilder.from((factory) => ({ hasShadow: factory.switch({ defaultValue: true }), diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 52a6235c8..668c2d98c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,9 +10,9 @@ overrides: axios@>=1.0.0 <1.8.2: '>=1.13.2' brace-expansion@>=2.0.0 <=2.0.1: '>=4.0.1' brace-expansion@>=1.0.0 <=1.1.11: '>=4.0.1' - esbuild@<=0.24.2: '>=0.27.1' + esbuild@<=0.24.2: '>=0.27.2' form-data@>=4.0.0 <4.0.4: '>=4.0.5' - hono@<4.6.5: '>=4.11.2' + hono@<4.6.5: '>=4.11.3' linkifyjs@<4.3.2: '>=4.3.2' nanoid@>=4.0.0 <5.0.9: '>=5.1.6' prismjs@<1.30.0: '>=1.30.0' @@ -59,8 +59,8 @@ importers: specifier: ^14.1.0 version: 14.1.0(semantic-release@25.0.2(typescript@5.9.3)) '@testcontainers/redis': - specifier: ^11.10.0 - version: 11.10.0 + specifier: ^11.11.0 + version: 11.11.0 '@turbo/gen': specifier: ^2.7.2 version: 2.7.2(@swc/core@1.15.3)(@types/node@24.10.4)(typescript@5.9.3) @@ -80,8 +80,8 @@ importers: specifier: ^10.1.0 version: 10.1.0 jsdom: - specifier: ^27.3.0 - version: 27.3.0(postcss@8.5.6) + specifier: ^27.4.0 + version: 27.4.0(postcss@8.5.6) json5: specifier: ^2.2.3 version: 2.2.3 @@ -92,8 +92,8 @@ importers: specifier: ^25.0.2 version: 25.0.2(typescript@5.9.3) testcontainers: - specifier: ^11.10.0 - version: 11.10.0 + specifier: ^11.11.0 + version: 11.11.0 turbo: specifier: ^2.7.2 version: 2.7.2 @@ -101,11 +101,11 @@ importers: specifier: ^5.9.3 version: 5.9.3 vite-tsconfig-paths: - specifier: ^5.1.4 - version: 5.1.4(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.4)(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) + specifier: ^6.0.3 + version: 6.0.3(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.4)(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) vitest: specifier: ^4.0.16 - version: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jsdom@27.3.0(postcss@8.5.6))(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + version: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) apps/nextjs: dependencies: @@ -230,38 +230,38 @@ importers: specifier: 1.0.14 version: 1.0.14(webpack-sources@3.3.3) '@tabler/icons-react': - specifier: ^3.35.0 - version: 3.35.0(react@19.2.3) + specifier: ^3.36.0 + version: 3.36.0(react@19.2.3) '@tanstack/react-query': - specifier: ^5.90.12 - version: 5.90.12(react@19.2.3) + specifier: ^5.90.16 + version: 5.90.16(react@19.2.3) '@tanstack/react-query-devtools': - specifier: ^5.91.1 - version: 5.91.1(@tanstack/react-query@5.90.12(react@19.2.3))(react@19.2.3) + specifier: ^5.91.2 + version: 5.91.2(@tanstack/react-query@5.90.16(react@19.2.3))(react@19.2.3) '@tanstack/react-query-next-experimental': specifier: ^5.91.0 - version: 5.91.0(@tanstack/react-query@5.90.12(react@19.2.3))(next@16.1.1(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1))(react@19.2.3) + version: 5.91.0(@tanstack/react-query@5.90.16(react@19.2.3))(next@16.1.1(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1))(react@19.2.3) '@trpc/client': specifier: ^11.8.1 version: 11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3) '@trpc/next': specifier: ^11.8.1 - version: 11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/react-query@11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(next@16.1.1(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + version: 11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/react-query@11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(next@16.1.1(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) '@trpc/react-query': specifier: ^11.8.1 - version: 11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + version: 11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) '@trpc/server': specifier: ^11.8.1 version: 11.8.1(typescript@5.9.3) '@xterm/addon-canvas': specifier: ^0.7.0 - version: 0.7.0(@xterm/xterm@5.5.0) + version: 0.7.0(@xterm/xterm@6.0.0) '@xterm/addon-fit': specifier: 0.11.0 version: 0.11.0 '@xterm/xterm': - specifier: ^5.5.0 - version: 5.5.0 + specifier: ^6.0.0 + version: 6.0.0 babel-plugin-react-compiler: specifier: ^1.0.0 version: 1.0.0 @@ -284,14 +284,14 @@ importers: specifier: ^13.0.0 version: 13.0.0 isomorphic-dompurify: - specifier: ^2.34.0 - version: 2.34.0(postcss@8.5.6) + specifier: ^2.35.0 + version: 2.35.0(postcss@8.5.6) jotai: specifier: ^2.16.1 version: 2.16.1(@babel/core@7.26.0)(@babel/template@7.27.2)(@types/react@19.2.7)(react@19.2.3) mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(@tabler/icons-react@3.35.0(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(@tabler/icons-react@3.36.0(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) next: specifier: 16.1.1 version: 16.1.1(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1) @@ -308,8 +308,8 @@ importers: specifier: 19.2.3 version: 19.2.3(react@19.2.3) react-error-boundary: - specifier: ^6.0.0 - version: 6.0.0(react@19.2.3) + specifier: ^6.0.1 + version: 6.0.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react-simple-code-editor: specifier: ^0.14.1 version: 0.14.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -457,8 +457,8 @@ importers: specifier: ^11.0.0 version: 11.0.0 esbuild: - specifier: ^0.27.1 - version: 0.27.1 + specifier: ^0.27.2 + version: 0.27.2 eslint: specifier: ^9.39.2 version: 9.39.2 @@ -521,8 +521,8 @@ importers: specifier: ^8.18.1 version: 8.18.1 esbuild: - specifier: ^0.27.1 - version: 0.27.1 + specifier: ^0.27.2 + version: 0.27.2 eslint: specifier: ^9.39.2 version: 9.39.2 @@ -630,20 +630,20 @@ importers: specifier: ^1.4.0 version: 1.4.0 '@tanstack/react-query': - specifier: ^5.90.12 - version: 5.90.12(react@19.2.3) + specifier: ^5.90.16 + version: 5.90.16(react@19.2.3) '@trpc/client': specifier: ^11.8.1 version: 11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3) '@trpc/react-query': specifier: ^11.8.1 - version: 11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + version: 11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) '@trpc/server': specifier: ^11.8.1 version: 11.8.1(typescript@5.9.3) '@trpc/tanstack-react-query': specifier: ^11.8.1 - version: 11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + version: 11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) lodash.clonedeep: specifier: ^4.5.0 version: 4.5.0 @@ -715,8 +715,8 @@ importers: specifier: ^0.9.1 version: 0.9.1 ldapts: - specifier: 8.0.34 - version: 8.0.34 + specifier: 8.1.0 + version: 8.1.0 next: specifier: 16.1.1 version: 16.1.1(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1) @@ -817,8 +817,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript esbuild: - specifier: ^0.27.1 - version: 0.27.1 + specifier: ^0.27.2 + version: 0.27.2 eslint: specifier: ^9.39.2 version: 9.39.2 @@ -942,8 +942,8 @@ importers: specifier: workspace:^0.1.0 version: link:../cron-jobs '@tanstack/react-query': - specifier: ^5.90.12 - version: 5.90.12(react@19.2.3) + specifier: ^5.90.16 + version: 5.90.16(react@19.2.3) '@trpc/client': specifier: ^11.8.1 version: 11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3) @@ -952,7 +952,7 @@ importers: version: 11.8.1(typescript@5.9.3) '@trpc/tanstack-react-query': specifier: ^11.8.1 - version: 11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + version: 11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) node-cron: specifier: ^4.2.1 version: 4.2.1 @@ -1135,11 +1135,11 @@ importers: specifier: ^3.1.0 version: 3.1.0 '@testcontainers/mysql': - specifier: ^11.10.0 - version: 11.10.0 + specifier: ^11.11.0 + version: 11.11.0 '@testcontainers/postgresql': - specifier: ^11.10.0 - version: 11.10.0 + specifier: ^11.11.0 + version: 11.11.0 better-sqlite3: specifier: ^12.5.0 version: 12.5.0 @@ -1184,8 +1184,8 @@ importers: specifier: ^11.0.0 version: 11.0.0 esbuild: - specifier: ^0.27.1 - version: 0.27.1 + specifier: ^0.27.2 + version: 0.27.2 eslint: specifier: ^9.39.2 version: 9.39.2 @@ -1582,8 +1582,8 @@ importers: specifier: ^8.3.10 version: 8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@tabler/icons-react': - specifier: ^3.35.0 - version: 3.35.0(react@19.2.3) + specifier: ^3.36.0 + version: 3.36.0(react@19.2.3) dayjs: specifier: ^1.11.19 version: 1.11.19 @@ -1625,8 +1625,8 @@ importers: specifier: ^8.3.10 version: 8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@tabler/icons-react': - specifier: ^3.35.0 - version: 3.35.0(react@19.2.3) + specifier: ^3.36.0 + version: 3.36.0(react@19.2.3) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1978,8 +1978,8 @@ importers: specifier: ^8.3.10 version: 8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@tabler/icons-react': - specifier: ^3.35.0 - version: 3.35.0(react@19.2.3) + specifier: ^3.36.0 + version: 3.36.0(react@19.2.3) jotai: specifier: ^2.16.1 version: 2.16.1(@babel/core@7.28.5)(@babel/template@7.27.2)(@types/react@19.2.7)(react@19.2.3) @@ -2028,7 +2028,7 @@ importers: version: 4.3.1 mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(@tabler/icons-react@3.35.0(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(@tabler/icons-react@3.36.0(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) next: specifier: 16.1.1 version: 16.1.1(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1) @@ -2082,11 +2082,11 @@ importers: specifier: ^8.3.10 version: 8.3.10(react@19.2.3) '@tabler/icons-react': - specifier: ^3.35.0 - version: 3.35.0(react@19.2.3) + specifier: ^3.36.0 + version: 3.36.0(react@19.2.3) mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(@tabler/icons-react@3.35.0(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(@tabler/icons-react@3.36.0(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) next: specifier: 16.1.1 version: 16.1.1(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1) @@ -2231,8 +2231,8 @@ importers: specifier: ^8.3.10 version: 8.3.10(react@19.2.3) '@tabler/icons-react': - specifier: ^3.35.0 - version: 3.35.0(react@19.2.3) + specifier: ^3.36.0 + version: 3.36.0(react@19.2.3) '@tiptap/extension-color': specifier: 3.14.0 version: 3.14.0(@tiptap/extension-text-style@3.14.0(@tiptap/core@3.14.0(@tiptap/pm@3.14.0))) @@ -2292,7 +2292,7 @@ importers: version: 1.3.0(@mantine/form@8.3.10(react@19.2.3))(zod@4.2.1) mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(@tabler/icons-react@3.35.0(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(@tabler/icons-react@3.36.0(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) next: specifier: 16.1.1 version: 16.1.1(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1) @@ -2347,7 +2347,7 @@ importers: version: 2.7.2(eslint@9.39.2)(turbo@2.7.2) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2) + version: 2.32.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2) eslint-plugin-jsx-a11y: specifier: ^6.10.2 version: 6.10.2(eslint@9.39.2) @@ -2358,8 +2358,8 @@ importers: specifier: ^6.1.1 version: 6.1.1(eslint@9.39.2) typescript-eslint: - specifier: ^8.50.1 - version: 8.50.1(eslint@9.39.2)(typescript@5.9.3) + specifier: ^8.51.0 + version: 8.51.0(eslint@9.39.2)(typescript@5.9.3) devDependencies: '@homarr/prettier-config': specifier: workspace:^0.1.0 @@ -2817,8 +2817,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.27.1': - resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==} + '@esbuild/aix-ppc64@0.27.2': + resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -2829,8 +2829,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.27.1': - resolution: {integrity: sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==} + '@esbuild/android-arm64@0.27.2': + resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -2841,8 +2841,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.27.1': - resolution: {integrity: sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==} + '@esbuild/android-arm@0.27.2': + resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -2853,8 +2853,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.27.1': - resolution: {integrity: sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==} + '@esbuild/android-x64@0.27.2': + resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -2865,8 +2865,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.27.1': - resolution: {integrity: sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==} + '@esbuild/darwin-arm64@0.27.2': + resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -2877,8 +2877,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.27.1': - resolution: {integrity: sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==} + '@esbuild/darwin-x64@0.27.2': + resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -2889,8 +2889,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.27.1': - resolution: {integrity: sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==} + '@esbuild/freebsd-arm64@0.27.2': + resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -2901,8 +2901,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.1': - resolution: {integrity: sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==} + '@esbuild/freebsd-x64@0.27.2': + resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -2913,8 +2913,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.27.1': - resolution: {integrity: sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==} + '@esbuild/linux-arm64@0.27.2': + resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -2925,8 +2925,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.27.1': - resolution: {integrity: sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==} + '@esbuild/linux-arm@0.27.2': + resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -2937,8 +2937,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.27.1': - resolution: {integrity: sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==} + '@esbuild/linux-ia32@0.27.2': + resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -2949,8 +2949,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.27.1': - resolution: {integrity: sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==} + '@esbuild/linux-loong64@0.27.2': + resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -2961,8 +2961,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.27.1': - resolution: {integrity: sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==} + '@esbuild/linux-mips64el@0.27.2': + resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -2973,8 +2973,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.27.1': - resolution: {integrity: sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==} + '@esbuild/linux-ppc64@0.27.2': + resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -2985,8 +2985,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.27.1': - resolution: {integrity: sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==} + '@esbuild/linux-riscv64@0.27.2': + resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -2997,8 +2997,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.27.1': - resolution: {integrity: sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==} + '@esbuild/linux-s390x@0.27.2': + resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -3009,8 +3009,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.27.1': - resolution: {integrity: sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==} + '@esbuild/linux-x64@0.27.2': + resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -3021,8 +3021,8 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.27.1': - resolution: {integrity: sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==} + '@esbuild/netbsd-arm64@0.27.2': + resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -3033,8 +3033,8 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.1': - resolution: {integrity: sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==} + '@esbuild/netbsd-x64@0.27.2': + resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -3045,8 +3045,8 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.27.1': - resolution: {integrity: sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==} + '@esbuild/openbsd-arm64@0.27.2': + resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -3057,8 +3057,8 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.1': - resolution: {integrity: sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==} + '@esbuild/openbsd-x64@0.27.2': + resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -3069,8 +3069,8 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.27.1': - resolution: {integrity: sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==} + '@esbuild/openharmony-arm64@0.27.2': + resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] @@ -3081,8 +3081,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.27.1': - resolution: {integrity: sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==} + '@esbuild/sunos-x64@0.27.2': + resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -3093,8 +3093,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.27.1': - resolution: {integrity: sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==} + '@esbuild/win32-arm64@0.27.2': + resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -3105,8 +3105,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.27.1': - resolution: {integrity: sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==} + '@esbuild/win32-ia32@0.27.2': + resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -3117,8 +3117,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.27.1': - resolution: {integrity: sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==} + '@esbuild/win32-x64@0.27.2': + resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -3161,6 +3161,15 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@exodus/bytes@1.7.0': + resolution: {integrity: sha512-5i+BtvujK/vM07YCGDyz4C4AyDzLmhxHMtM5HpUyPRtJPBdFPsj290ffXW+UXY21/G7GtXeHD2nRmq0T1ShyQQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + '@exodus/crypto': ^1.0.0-rc.4 + peerDependenciesMeta: + '@exodus/crypto': + optional: true + '@extractus/feed-extractor@7.1.7': resolution: {integrity: sha512-eNeddvKK9rBxWSHj5zBo6ODihJqJtq+QzEQdVeadkOK48avmdela+c2JAfMcPEBMFaWcAYV4bUMhI9Tqi8mX2Q==} engines: {node: '>= 20'} @@ -3258,7 +3267,7 @@ packages: resolution: {integrity: sha512-kz323qIQkNQElEGroo/E9MKPDuIR5pkuk/XEWd50K+cSEKdmdiYx0PKWUdaNY2ecJYngtF+njDMsMKplL6zfEg==} engines: {node: '>=18.14.1'} peerDependencies: - hono: '>=4.11.2' + hono: '>=4.11.3' '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} @@ -4391,28 +4400,28 @@ packages: zod: optional: true - '@tabler/icons-react@3.35.0': - resolution: {integrity: sha512-XG7t2DYf3DyHT5jxFNp5xyLVbL4hMJYJhiSdHADzAjLRYfL7AnjlRfiHDHeXxkb2N103rEIvTsBRazxXtAUz2g==} + '@tabler/icons-react@3.36.0': + resolution: {integrity: sha512-sSZ00bEjTdTTskVFykq294RJq+9cFatwy4uYa78HcYBCXU1kSD1DIp5yoFsQXmybkIOKCjp18OnhAYk553UIfQ==} peerDependencies: react: '>= 16' - '@tabler/icons@3.35.0': - resolution: {integrity: sha512-yYXe+gJ56xlZFiXwV9zVoe3FWCGuZ/D7/G4ZIlDtGxSx5CGQK110wrnT29gUj52kEZoxqF7oURTk97GQxELOFQ==} + '@tabler/icons@3.36.0': + resolution: {integrity: sha512-z9OfTEG6QbaQWM9KBOxxUdpgvMUn0atageXyiaSc2gmYm51ORO8Ua7eUcjlks+Dc0YMK4rrodAFdK9SfjJ4ZcA==} '@tanstack/match-sorter-utils@8.19.4': resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} - '@tanstack/query-core@5.90.12': - resolution: {integrity: sha512-T1/8t5DhV/SisWjDnaiU2drl6ySvsHj1bHBCWNXd+/T+Hh1cf6JodyEYMd5sgwm+b/mETT4EV3H+zCVczCU5hg==} + '@tanstack/query-core@5.90.16': + resolution: {integrity: sha512-MvtWckSVufs/ja463/K4PyJeqT+HMlJWtw6PrCpywznd2NSgO3m4KwO9RqbFqGg6iDE8vVMFWMeQI4Io3eEYww==} - '@tanstack/query-devtools@5.91.1': - resolution: {integrity: sha512-l8bxjk6BMsCaVQH6NzQEE/bEgFy1hAs5qbgXl0xhzezlaQbPk6Mgz9BqEg2vTLPOHD8N4k+w/gdgCbEzecGyNg==} + '@tanstack/query-devtools@5.92.0': + resolution: {integrity: sha512-N8D27KH1vEpVacvZgJL27xC6yPFUy0Zkezn5gnB3L3gRCxlDeSuiya7fKge8Y91uMTnC8aSxBQhcK6ocY7alpQ==} - '@tanstack/react-query-devtools@5.91.1': - resolution: {integrity: sha512-tRnJYwEbH0kAOuToy8Ew7bJw1lX3AjkkgSlf/vzb+NpnqmHPdWM+lA2DSdGQSLi1SU0PDRrrCI1vnZnci96CsQ==} + '@tanstack/react-query-devtools@5.91.2': + resolution: {integrity: sha512-ZJ1503ay5fFeEYFUdo7LMNFzZryi6B0Cacrgr2h1JRkvikK1khgIq6Nq2EcblqEdIlgB/r7XDW8f8DQ89RuUgg==} peerDependencies: - '@tanstack/react-query': ^5.90.10 + '@tanstack/react-query': ^5.90.14 react: ^18 || ^19 '@tanstack/react-query-next-experimental@5.91.0': @@ -4422,8 +4431,8 @@ packages: next: ^13 || ^14 || ^15 || ^16 react: ^18 || ^19 - '@tanstack/react-query@5.90.12': - resolution: {integrity: sha512-graRZspg7EoEaw0a8faiUASCyJrqjKPdqJ9EwuDRUF9mEYJ1YPczI9H+/agJ0mOJkPCJDk0lsz5QTrLZ/jQ2rg==} + '@tanstack/react-query@5.90.16': + resolution: {integrity: sha512-bpMGOmV4OPmif7TNMteU/Ehf/hoC0Kf98PDc0F4BZkFrEapRMEqI/V6YS0lyzwSV6PQpY1y4xxArUIfBW5LVxQ==} peerDependencies: react: ^18 || ^19 @@ -4447,14 +4456,14 @@ packages: '@tanstack/virtual-core@3.11.2': resolution: {integrity: sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw==} - '@testcontainers/mysql@11.10.0': - resolution: {integrity: sha512-0DLD0ClFFLewUzD+yHm9lBHPn4OTXEGdgf1Jn0Xnw+noPVol5DeP+GqSUXZ3nfde36l8g5uRPNEgHFBOolVdPA==} + '@testcontainers/mysql@11.11.0': + resolution: {integrity: sha512-2EfFhUDEvEdwBwez+F/NhqP+h2rFzLzHYbRX0N/9/Lgdlq8TbsYWZ9SaWL9V0f1FWX89XnyZrT3i/j7m8MIESg==} - '@testcontainers/postgresql@11.10.0': - resolution: {integrity: sha512-d6QeN3KkXLJBdt0T6X3KKtdkHbaZdzCRPo133FSG8yOoGofQAYghtau39iUdeF9GAN8UTWZAxio40uYKBSV7xw==} + '@testcontainers/postgresql@11.11.0': + resolution: {integrity: sha512-Og64I/h5LKLVvUTkAcLeTXfFcMhh3dCHCypN3Uzd+tQMd70SpCfQ0LCP9v/U+MS7JBRzU9EmqhUFkTOm4hyZWw==} - '@testcontainers/redis@11.10.0': - resolution: {integrity: sha512-w/Hnv1IH8jJ4wjIgpSzoll1KABz2L28+i6JAZVSZuSzQPqeTeFa3mZHnRcdKJggjEIMDwpFlqjGXYRYKNAk0Fw==} + '@testcontainers/redis@11.11.0': + resolution: {integrity: sha512-IaDPNd1jRkshwJ69D7Nc3OTt5QQG1d4G1TZILSQ7gAVr4OqAJxoA9pV73ZvKIF/8LwxDDg136ApPlU9PcFtIKg==} '@tiptap/core@3.14.0': resolution: {integrity: sha512-nm0VWVA1Vq/jaKY3wyRXViL/kf78yMdH7qETpv4qZXDQLU+pdWV3IGoRTQTKESc7d8L1wL/2uCeByLNUJfrSIw==} @@ -4993,63 +5002,63 @@ packages: '@types/xml2js@0.4.14': resolution: {integrity: sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==} - '@typescript-eslint/eslint-plugin@8.50.1': - resolution: {integrity: sha512-PKhLGDq3JAg0Jk/aK890knnqduuI/Qj+udH7wCf0217IGi4gt+acgCyPVe79qoT+qKUvHMDQkwJeKW9fwl8Cyw==} + '@typescript-eslint/eslint-plugin@8.51.0': + resolution: {integrity: sha512-XtssGWJvypyM2ytBnSnKtHYOGT+4ZwTnBVl36TA4nRO2f4PRNGz5/1OszHzcZCvcBMh+qb7I06uoCmLTRdR9og==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.50.1 + '@typescript-eslint/parser': ^8.51.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.50.1': - resolution: {integrity: sha512-hM5faZwg7aVNa819m/5r7D0h0c9yC4DUlWAOvHAtISdFTc8xB86VmX5Xqabrama3wIPJ/q9RbGS1worb6JfnMg==} + '@typescript-eslint/parser@8.51.0': + resolution: {integrity: sha512-3xP4XzzDNQOIqBMWogftkwxhg5oMKApqY0BAflmLZiFYHqyhSOxv/cd/zPQLTcCXr4AkaKb25joocY0BD1WC6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.50.1': - resolution: {integrity: sha512-E1ur1MCVf+YiP89+o4Les/oBAVzmSbeRB0MQLfSlYtbWU17HPxZ6Bhs5iYmKZRALvEuBoXIZMOIRRc/P++Ortg==} + '@typescript-eslint/project-service@8.51.0': + resolution: {integrity: sha512-Luv/GafO07Z7HpiI7qeEW5NW8HUtZI/fo/kE0YbtQEFpJRUuR0ajcWfCE5bnMvL7QQFrmT/odMe8QZww8X2nfQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.50.1': - resolution: {integrity: sha512-mfRx06Myt3T4vuoHaKi8ZWNTPdzKPNBhiblze5N50//TSHOAQQevl/aolqA/BcqqbJ88GUnLqjjcBc8EWdBcVw==} + '@typescript-eslint/scope-manager@8.51.0': + resolution: {integrity: sha512-JhhJDVwsSx4hiOEQPeajGhCWgBMBwVkxC/Pet53EpBVs7zHHtayKefw1jtPaNRXpI9RA2uocdmpdfE7T+NrizA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.50.1': - resolution: {integrity: sha512-ooHmotT/lCWLXi55G4mvaUF60aJa012QzvLK0Y+Mp4WdSt17QhMhWOaBWeGTFVkb2gDgBe19Cxy1elPXylslDw==} + '@typescript-eslint/tsconfig-utils@8.51.0': + resolution: {integrity: sha512-Qi5bSy/vuHeWyir2C8u/uqGMIlIDu8fuiYWv48ZGlZ/k+PRPHtaAu7erpc7p5bzw2WNNSniuxoMSO4Ar6V9OXw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.50.1': - resolution: {integrity: sha512-7J3bf022QZE42tYMO6SL+6lTPKFk/WphhRPe9Tw/el+cEwzLz1Jjz2PX3GtGQVxooLDKeMVmMt7fWpYRdG5Etg==} + '@typescript-eslint/type-utils@8.51.0': + resolution: {integrity: sha512-0XVtYzxnobc9K0VU7wRWg1yiUrw4oQzexCG2V2IDxxCxhqBMSMbjB+6o91A+Uc0GWtgjCa3Y8bi7hwI0Tu4n5Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.50.1': - resolution: {integrity: sha512-v5lFIS2feTkNyMhd7AucE/9j/4V9v5iIbpVRncjk/K0sQ6Sb+Np9fgYS/63n6nwqahHQvbmujeBL7mp07Q9mlA==} + '@typescript-eslint/types@8.51.0': + resolution: {integrity: sha512-TizAvWYFM6sSscmEakjY3sPqGwxZRSywSsPEiuZF6d5GmGD9Gvlsv0f6N8FvAAA0CD06l3rIcWNbsN1e5F/9Ag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.50.1': - resolution: {integrity: sha512-woHPdW+0gj53aM+cxchymJCrh0cyS7BTIdcDxWUNsclr9VDkOSbqC13juHzxOmQ22dDkMZEpZB+3X1WpUvzgVQ==} + '@typescript-eslint/typescript-estree@8.51.0': + resolution: {integrity: sha512-1qNjGqFRmlq0VW5iVlcyHBbCjPB7y6SxpBkrbhNWMy/65ZoncXCEPJxkRZL8McrseNH6lFhaxCIaX+vBuFnRng==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.50.1': - resolution: {integrity: sha512-lCLp8H1T9T7gPbEuJSnHwnSuO9mDf8mfK/Nion5mZmiEaQD9sWf9W4dfeFqRyqRjF06/kBuTmAqcs9sewM2NbQ==} + '@typescript-eslint/utils@8.51.0': + resolution: {integrity: sha512-11rZYxSe0zabiKaCP2QAwRf/dnmgFgvTmeDTtZvUvXG3UuAdg/GU02NExmmIXzz3vLGgMdtrIosI84jITQOxUA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.50.1': - resolution: {integrity: sha512-IrDKrw7pCRUR94zeuCSUWQ+w8JEf5ZX5jl/e6AHGSLi1/zIr0lgutfn/7JpfCey+urpgQEdrZVYzCaVVKiTwhQ==} + '@typescript-eslint/visitor-keys@8.51.0': + resolution: {integrity: sha512-mM/JRQOzhVN1ykejrvwnBRV3+7yTKK8tVANVN3o1O0t0v7o+jqdVu9crPy5Y9dov15TJk/FTIgoUGHrTOVL3Zg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@umami/node@0.4.0': @@ -5184,8 +5193,8 @@ packages: '@xterm/addon-fit@0.11.0': resolution: {integrity: sha512-jYcgT6xtVYhnhgxh3QgYDnnNMYTcf8ElbxxFzX0IZo+vabQqSPAjC3c1wJrKB5E19VwQei89QCiZZP86DCPF7g==} - '@xterm/xterm@5.5.0': - resolution: {integrity: sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==} + '@xterm/xterm@6.0.0': + resolution: {integrity: sha512-TQwDdQGtwwDt+2cgKDLn0IRaSxYu1tSUjgKarSDkUM0ZNiSRXFpjxEsvc/Zgc5kq5omJ+V0a8/kIM2WD3sMOYg==} '@xtuc/ieee754@1.2.0': resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} @@ -6552,15 +6561,15 @@ packages: esbuild-register@3.6.0: resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} peerDependencies: - esbuild: '>=0.27.1' + esbuild: '>=0.27.2' esbuild@0.25.12: resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} hasBin: true - esbuild@0.27.1: - resolution: {integrity: sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==} + esbuild@0.27.2: + resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} engines: {node: '>=18'} hasBin: true @@ -7252,9 +7261,9 @@ packages: resolution: {integrity: sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==} engines: {node: '>=14'} - html-encoding-sniffer@4.0.0: - resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} - engines: {node: '>=18'} + html-encoding-sniffer@6.0.0: + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} html-entities@2.6.0: resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} @@ -7306,10 +7315,6 @@ packages: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - iconv-lite@0.7.0: resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} engines: {node: '>=0.10.0'} @@ -7703,8 +7708,8 @@ packages: resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} engines: {node: '>=16'} - isomorphic-dompurify@2.34.0: - resolution: {integrity: sha512-7VeB/tDBQ8jt1+syT563hmmejY01nuwizpUIFPfM1aw3iTgLLiVP4/Nh+PKhNoa1V/H+E6ZlNcowsXLbChPCpw==} + isomorphic-dompurify@2.35.0: + resolution: {integrity: sha512-a9+LQqylQCU8f1zmsYmg2tfrbdY2YS/Hc+xntcq/mDI2MY3Q108nq8K23BWDIg6YGC5JsUMC15fj2ZMqCzt/+A==} engines: {node: '>=20.19.5'} isomorphic-fetch@3.0.0: @@ -7794,8 +7799,8 @@ packages: jsbn@1.1.0: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - jsdom@27.3.0: - resolution: {integrity: sha512-GtldT42B8+jefDUC4yUKAvsaOrH7PDHmZxZXNgF2xMmymjUbRYJvpAybZAKEmXDGTM0mCsz8duOa4vTm5AY2Kg==} + jsdom@27.4.0: + resolution: {integrity: sha512-mjzqwWRD9Y1J1KUi7W97Gja1bwOOM5Ug0EZ6UDK3xS7j7mndrkwozHtSblfomlzyB4NepioNt+B2sOSzczVgtQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: canvas: ^3.0.0 @@ -7888,8 +7893,8 @@ packages: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} - ldapts@8.0.34: - resolution: {integrity: sha512-e9xnGsHVzFvQqQsCpMm/e+SCLS00dPypsT2ieoev+vGjD2Ex4bBdKhfu7YowCyFJtySG0AWM4ltlQ6e+SP+wjQ==} + ldapts@8.1.0: + resolution: {integrity: sha512-m3QzVVTzZeiEc/r1Nw4udwQVsX9dG98igIt8PPC+++0Cy9HIqF5iZWiwLEpKw70PZ7HGeEQSIQuqTPB5op0+bw==} engines: {node: '>=20'} levn@0.4.1: @@ -9236,10 +9241,11 @@ packages: peerDependencies: react: '>= 16.8 || 18.0.0' - react-error-boundary@6.0.0: - resolution: {integrity: sha512-gdlJjD7NWr0IfkPlaREN2d9uUZUlksrfOx7SX62VRerwXbMY6ftGCIZua1VG1aXFNOimhISsTq+Owp725b9SiA==} + react-error-boundary@6.0.1: + resolution: {integrity: sha512-zArgQpjJUN1ZLMEKWtifxQweW3yfvwL5j2nh3Pesze1qG6r5oCDMy/TA97bUF01wy4xCeeL4/pd8GHmvEsP3Bg==} peerDependencies: - react: '>=16.13.1' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 react-immutable-proptypes@2.2.0: resolution: {integrity: sha512-Vf4gBsePlwdGvSZoLSBfd4HAP93HDauMY4fDjXhreg/vg6F3Fj/MXDNyTbltPC/xZKmZc+cjLu3598DdYK6sgQ==} @@ -10148,8 +10154,8 @@ packages: engines: {node: '>=10'} hasBin: true - testcontainers@11.10.0: - resolution: {integrity: sha512-8hwK2EnrOZfrHPpDC7CPe03q7H8Vv8j3aXdcmFFyNV8dzpBzgZYmqyDtduJ8YQ5kbzj+A+jUXMQ6zI8B5U3z+g==} + testcontainers@11.11.0: + resolution: {integrity: sha512-nKTJn3n/gkyGg/3SVkOwX+isPOGSHlfI+CWMobSmvQrsj7YW01aWvl2pYIfV4LMd+C8or783yYrzKSK2JlP+Qw==} text-decoder@1.2.0: resolution: {integrity: sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==} @@ -10303,8 +10309,8 @@ packages: zod: ^4.0.0 zod-openapi: ^5.0.1 - ts-api-utils@2.1.0: - resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + ts-api-utils@2.3.0: + resolution: {integrity: sha512-6eg3Y9SF7SsAvGzRHQvvc1skDAhwI4YQ32ui1scxD1Ccr0G5qIIbUBT3pFTKX8kmWIQClHobtUdNuaBgwdfdWg==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -10484,8 +10490,8 @@ packages: types-ramda@0.30.1: resolution: {integrity: sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==} - typescript-eslint@8.50.1: - resolution: {integrity: sha512-ytTHO+SoYSbhAH9CrYnMhiLx8To6PSSvqnvXyPUgPETCvB6eBKmTI9w6XMPS3HsBRGkwTVBX+urA8dYQx6bHfQ==} + typescript-eslint@8.51.0: + resolution: {integrity: sha512-jh8ZuM5oEh2PSdyQG9YAEM1TCGuWenLSuSUhf/irbVUNW9O5FhbFVONviN2TgMTBnUmyHv7E56rYnfLZK6TkiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -10751,8 +10757,8 @@ packages: videojs-vtt.js@0.15.5: resolution: {integrity: sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==} - vite-tsconfig-paths@5.1.4: - resolution: {integrity: sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==} + vite-tsconfig-paths@6.0.3: + resolution: {integrity: sha512-7bL7FPX/DSviaZGYUKowWF1AiDVWjMjxNbE8lyaVGDezkedWqfGhlnQ4BZXre0ZN5P4kAgIJfAlgFDVyjrCIyg==} peerDependencies: vite: '>=7.3.0' peerDependenciesMeta: @@ -10878,11 +10884,6 @@ packages: webpack-cli: optional: true - whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} - deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation - whatwg-fetch@3.6.20: resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} @@ -11666,7 +11667,7 @@ snapshots: '@esbuild-kit/core-utils@3.3.2': dependencies: - esbuild: 0.27.1 + esbuild: 0.27.2 source-map-support: 0.5.21 '@esbuild-kit/esm-loader@2.6.5': @@ -11677,157 +11678,157 @@ snapshots: '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/aix-ppc64@0.27.1': + '@esbuild/aix-ppc64@0.27.2': optional: true '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm64@0.27.1': + '@esbuild/android-arm64@0.27.2': optional: true '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-arm@0.27.1': + '@esbuild/android-arm@0.27.2': optional: true '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/android-x64@0.27.1': + '@esbuild/android-x64@0.27.2': optional: true '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.27.1': + '@esbuild/darwin-arm64@0.27.2': optional: true '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/darwin-x64@0.27.1': + '@esbuild/darwin-x64@0.27.2': optional: true '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.27.1': + '@esbuild/freebsd-arm64@0.27.2': optional: true '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.27.1': + '@esbuild/freebsd-x64@0.27.2': optional: true '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm64@0.27.1': + '@esbuild/linux-arm64@0.27.2': optional: true '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-arm@0.27.1': + '@esbuild/linux-arm@0.27.2': optional: true '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-ia32@0.27.1': + '@esbuild/linux-ia32@0.27.2': optional: true '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-loong64@0.27.1': + '@esbuild/linux-loong64@0.27.2': optional: true '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-mips64el@0.27.1': + '@esbuild/linux-mips64el@0.27.2': optional: true '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-ppc64@0.27.1': + '@esbuild/linux-ppc64@0.27.2': optional: true '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.27.1': + '@esbuild/linux-riscv64@0.27.2': optional: true '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-s390x@0.27.1': + '@esbuild/linux-s390x@0.27.2': optional: true '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/linux-x64@0.27.1': + '@esbuild/linux-x64@0.27.2': optional: true '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.27.1': + '@esbuild/netbsd-arm64@0.27.2': optional: true '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.27.1': + '@esbuild/netbsd-x64@0.27.2': optional: true '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.27.1': + '@esbuild/openbsd-arm64@0.27.2': optional: true '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.27.1': + '@esbuild/openbsd-x64@0.27.2': optional: true '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.27.1': + '@esbuild/openharmony-arm64@0.27.2': optional: true '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/sunos-x64@0.27.1': + '@esbuild/sunos-x64@0.27.2': optional: true '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-arm64@0.27.1': + '@esbuild/win32-arm64@0.27.2': optional: true '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-ia32@0.27.1': + '@esbuild/win32-ia32@0.27.2': optional: true '@esbuild/win32-x64@0.25.12': optional: true - '@esbuild/win32-x64@0.27.1': + '@esbuild/win32-x64@0.27.2': optional: true '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2)': @@ -11876,6 +11877,8 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 + '@exodus/bytes@1.7.0': {} + '@extractus/feed-extractor@7.1.7': dependencies: '@ndaidong/bellajs': 12.0.1 @@ -12367,7 +12370,7 @@ snapshots: '@rrweb/types': 2.0.0-alpha.16 babel-plugin-syntax-hermes-parser: 0.21.1 ci-info: 4.0.0 - esbuild: 0.27.1 + esbuild: 0.27.2 faster-babel-types: 0.1.0(@babel/types@7.26.0) hono: 4.11.3 isomorphic-fetch: 3.0.0 @@ -13336,36 +13339,36 @@ snapshots: typescript: 5.9.3 zod: 4.2.1 - '@tabler/icons-react@3.35.0(react@19.2.3)': + '@tabler/icons-react@3.36.0(react@19.2.3)': dependencies: - '@tabler/icons': 3.35.0 + '@tabler/icons': 3.36.0 react: 19.2.3 - '@tabler/icons@3.35.0': {} + '@tabler/icons@3.36.0': {} '@tanstack/match-sorter-utils@8.19.4': dependencies: remove-accents: 0.5.0 - '@tanstack/query-core@5.90.12': {} + '@tanstack/query-core@5.90.16': {} - '@tanstack/query-devtools@5.91.1': {} + '@tanstack/query-devtools@5.92.0': {} - '@tanstack/react-query-devtools@5.91.1(@tanstack/react-query@5.90.12(react@19.2.3))(react@19.2.3)': + '@tanstack/react-query-devtools@5.91.2(@tanstack/react-query@5.90.16(react@19.2.3))(react@19.2.3)': dependencies: - '@tanstack/query-devtools': 5.91.1 - '@tanstack/react-query': 5.90.12(react@19.2.3) + '@tanstack/query-devtools': 5.92.0 + '@tanstack/react-query': 5.90.16(react@19.2.3) react: 19.2.3 - '@tanstack/react-query-next-experimental@5.91.0(@tanstack/react-query@5.90.12(react@19.2.3))(next@16.1.1(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1))(react@19.2.3)': + '@tanstack/react-query-next-experimental@5.91.0(@tanstack/react-query@5.90.16(react@19.2.3))(next@16.1.1(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1))(react@19.2.3)': dependencies: - '@tanstack/react-query': 5.90.12(react@19.2.3) + '@tanstack/react-query': 5.90.16(react@19.2.3) next: 16.1.1(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1) react: 19.2.3 - '@tanstack/react-query@5.90.12(react@19.2.3)': + '@tanstack/react-query@5.90.16(react@19.2.3)': dependencies: - '@tanstack/query-core': 5.90.12 + '@tanstack/query-core': 5.90.16 react: 19.2.3 '@tanstack/react-table@8.20.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': @@ -13384,23 +13387,23 @@ snapshots: '@tanstack/virtual-core@3.11.2': {} - '@testcontainers/mysql@11.10.0': + '@testcontainers/mysql@11.11.0': dependencies: - testcontainers: 11.10.0 + testcontainers: 11.11.0 transitivePeerDependencies: - bare-buffer - supports-color - '@testcontainers/postgresql@11.10.0': + '@testcontainers/postgresql@11.11.0': dependencies: - testcontainers: 11.10.0 + testcontainers: 11.11.0 transitivePeerDependencies: - bare-buffer - supports-color - '@testcontainers/redis@11.10.0': + '@testcontainers/redis@11.11.0': dependencies: - testcontainers: 11.10.0 + testcontainers: 11.11.0 transitivePeerDependencies: - bare-buffer - supports-color @@ -13646,7 +13649,7 @@ snapshots: '@trpc/server': 11.8.1(typescript@5.9.3) typescript: 5.9.3 - '@trpc/next@11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/react-query@11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(next@16.1.1(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + '@trpc/next@11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/react-query@11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(next@16.1.1(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': dependencies: '@trpc/client': 11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3) '@trpc/server': 11.8.1(typescript@5.9.3) @@ -13655,12 +13658,12 @@ snapshots: react-dom: 19.2.3(react@19.2.3) typescript: 5.9.3 optionalDependencies: - '@tanstack/react-query': 5.90.12(react@19.2.3) - '@trpc/react-query': 11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@tanstack/react-query': 5.90.16(react@19.2.3) + '@trpc/react-query': 11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) - '@trpc/react-query@11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + '@trpc/react-query@11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': dependencies: - '@tanstack/react-query': 5.90.12(react@19.2.3) + '@tanstack/react-query': 5.90.16(react@19.2.3) '@trpc/client': 11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3) '@trpc/server': 11.8.1(typescript@5.9.3) react: 19.2.3 @@ -13671,9 +13674,9 @@ snapshots: dependencies: typescript: 5.9.3 - '@trpc/tanstack-react-query@11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + '@trpc/tanstack-react-query@11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': dependencies: - '@tanstack/react-query': 5.90.12(react@19.2.3) + '@tanstack/react-query': 5.90.16(react@19.2.3) '@trpc/client': 11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3) '@trpc/server': 11.8.1(typescript@5.9.3) react: 19.2.3 @@ -14005,95 +14008,95 @@ snapshots: dependencies: '@types/node': 24.10.4 - '@typescript-eslint/eslint-plugin@8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.51.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.50.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.50.1 - '@typescript-eslint/type-utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.50.1 + '@typescript-eslint/parser': 8.51.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.51.0 + '@typescript-eslint/type-utils': 8.51.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.51.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.51.0 eslint: 9.39.2 ignore: 7.0.4 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.3.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.50.1 - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.50.1 + '@typescript-eslint/scope-manager': 8.51.0 + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.51.0 debug: 4.4.3 eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.50.1(typescript@5.9.3)': + '@typescript-eslint/project-service@8.51.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) - '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/tsconfig-utils': 8.51.0(typescript@5.9.3) + '@typescript-eslint/types': 8.51.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.50.1': + '@typescript-eslint/scope-manager@8.51.0': dependencies: - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/visitor-keys': 8.50.1 + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/visitor-keys': 8.51.0 - '@typescript-eslint/tsconfig-utils@8.50.1(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.51.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.50.1(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.51.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.51.0(eslint@9.39.2)(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.2 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.3.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.50.1': {} + '@typescript-eslint/types@8.51.0': {} - '@typescript-eslint/typescript-estree@8.50.1(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.51.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.50.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/visitor-keys': 8.50.1 + '@typescript-eslint/project-service': 8.51.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.51.0(typescript@5.9.3) + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/visitor-keys': 8.51.0 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.3 tinyglobby: 0.2.15 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.3.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.50.1(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.51.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) - '@typescript-eslint/scope-manager': 8.50.1 - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.51.0 + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.50.1': + '@typescript-eslint/visitor-keys@8.51.0': dependencies: - '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/types': 8.51.0 eslint-visitor-keys: 4.2.1 '@umami/node@0.4.0': {} @@ -14153,7 +14156,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jsdom@27.3.0(postcss@8.5.6))(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + vitest: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) transitivePeerDependencies: - supports-color @@ -14200,7 +14203,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vitest: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jsdom@27.3.0(postcss@8.5.6))(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + vitest: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) '@vitest/utils@4.0.16': dependencies: @@ -14287,13 +14290,13 @@ snapshots: '@xstate/fsm@1.6.5': {} - '@xterm/addon-canvas@0.7.0(@xterm/xterm@5.5.0)': + '@xterm/addon-canvas@0.7.0(@xterm/xterm@6.0.0)': dependencies: - '@xterm/xterm': 5.5.0 + '@xterm/xterm': 6.0.0 '@xterm/addon-fit@0.11.0': {} - '@xterm/xterm@5.5.0': {} + '@xterm/xterm@6.0.0': {} '@xtuc/ieee754@1.2.0': {} @@ -15832,34 +15835,34 @@ snapshots: '@esbuild/win32-ia32': 0.25.12 '@esbuild/win32-x64': 0.25.12 - esbuild@0.27.1: + esbuild@0.27.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.1 - '@esbuild/android-arm': 0.27.1 - '@esbuild/android-arm64': 0.27.1 - '@esbuild/android-x64': 0.27.1 - '@esbuild/darwin-arm64': 0.27.1 - '@esbuild/darwin-x64': 0.27.1 - '@esbuild/freebsd-arm64': 0.27.1 - '@esbuild/freebsd-x64': 0.27.1 - '@esbuild/linux-arm': 0.27.1 - '@esbuild/linux-arm64': 0.27.1 - '@esbuild/linux-ia32': 0.27.1 - '@esbuild/linux-loong64': 0.27.1 - '@esbuild/linux-mips64el': 0.27.1 - '@esbuild/linux-ppc64': 0.27.1 - '@esbuild/linux-riscv64': 0.27.1 - '@esbuild/linux-s390x': 0.27.1 - '@esbuild/linux-x64': 0.27.1 - '@esbuild/netbsd-arm64': 0.27.1 - '@esbuild/netbsd-x64': 0.27.1 - '@esbuild/openbsd-arm64': 0.27.1 - '@esbuild/openbsd-x64': 0.27.1 - '@esbuild/openharmony-arm64': 0.27.1 - '@esbuild/sunos-x64': 0.27.1 - '@esbuild/win32-arm64': 0.27.1 - '@esbuild/win32-ia32': 0.27.1 - '@esbuild/win32-x64': 0.27.1 + '@esbuild/aix-ppc64': 0.27.2 + '@esbuild/android-arm': 0.27.2 + '@esbuild/android-arm64': 0.27.2 + '@esbuild/android-x64': 0.27.2 + '@esbuild/darwin-arm64': 0.27.2 + '@esbuild/darwin-x64': 0.27.2 + '@esbuild/freebsd-arm64': 0.27.2 + '@esbuild/freebsd-x64': 0.27.2 + '@esbuild/linux-arm': 0.27.2 + '@esbuild/linux-arm64': 0.27.2 + '@esbuild/linux-ia32': 0.27.2 + '@esbuild/linux-loong64': 0.27.2 + '@esbuild/linux-mips64el': 0.27.2 + '@esbuild/linux-ppc64': 0.27.2 + '@esbuild/linux-riscv64': 0.27.2 + '@esbuild/linux-s390x': 0.27.2 + '@esbuild/linux-x64': 0.27.2 + '@esbuild/netbsd-arm64': 0.27.2 + '@esbuild/netbsd-x64': 0.27.2 + '@esbuild/openbsd-arm64': 0.27.2 + '@esbuild/openbsd-x64': 0.27.2 + '@esbuild/openharmony-arm64': 0.27.2 + '@esbuild/sunos-x64': 0.27.2 + '@esbuild/win32-arm64': 0.27.2 + '@esbuild/win32-ia32': 0.27.2 + '@esbuild/win32-x64': 0.27.2 escalade@3.2.0: {} @@ -15897,17 +15900,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.50.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.51.0(eslint@9.39.2)(typescript@5.9.3) eslint: 9.39.2 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15918,7 +15921,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.2 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -15930,7 +15933,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.50.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.51.0(eslint@9.39.2)(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -16695,9 +16698,11 @@ snapshots: hpagent@1.2.0: {} - html-encoding-sniffer@4.0.0: + html-encoding-sniffer@6.0.0: dependencies: - whatwg-encoding: 3.1.1 + '@exodus/bytes': 1.7.0 + transitivePeerDependencies: + - '@exodus/crypto' html-entities@2.6.0: {} @@ -16746,10 +16751,6 @@ snapshots: dependencies: safer-buffer: 2.1.2 - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - iconv-lite@0.7.0: dependencies: safer-buffer: 2.1.2 @@ -17130,11 +17131,12 @@ snapshots: isexe@3.1.1: optional: true - isomorphic-dompurify@2.34.0(postcss@8.5.6): + isomorphic-dompurify@2.35.0(postcss@8.5.6): dependencies: dompurify: 3.3.1 - jsdom: 27.3.0(postcss@8.5.6) + jsdom: 27.4.0(postcss@8.5.6) transitivePeerDependencies: + - '@exodus/crypto' - bufferutil - canvas - postcss @@ -17239,14 +17241,15 @@ snapshots: jsbn@1.1.0: {} - jsdom@27.3.0(postcss@8.5.6): + jsdom@27.4.0(postcss@8.5.6): dependencies: '@acemir/cssom': 0.9.28 '@asamuzakjp/dom-selector': 6.7.6 + '@exodus/bytes': 1.7.0 cssstyle: 5.3.4(postcss@8.5.6) data-urls: 6.0.0 decimal.js: 10.6.0 - html-encoding-sniffer: 4.0.0 + html-encoding-sniffer: 6.0.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 @@ -17256,12 +17259,12 @@ snapshots: tough-cookie: 6.0.0 w3c-xmlserializer: 5.0.0 webidl-conversions: 8.0.0 - whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 15.1.0 ws: 8.18.3 xml-name-validator: 5.0.0 transitivePeerDependencies: + - '@exodus/crypto' - bufferutil - postcss - supports-color @@ -17340,7 +17343,7 @@ snapshots: dependencies: readable-stream: 2.3.8 - ldapts@8.0.34: + ldapts@8.1.0: dependencies: '@types/asn1': 0.2.4 asn1: 0.2.6 @@ -17503,12 +17506,12 @@ snapshots: '@mantine/form': 8.3.10(react@19.2.3) zod: 4.2.1 - mantine-react-table@2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(@tabler/icons-react@3.35.0(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + mantine-react-table@2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(@tabler/icons-react@3.36.0(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@mantine/core': 8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@mantine/dates': 8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@mantine/hooks': 8.3.10(react@19.2.3) - '@tabler/icons-react': 3.35.0(react@19.2.3) + '@tabler/icons-react': 3.36.0(react@19.2.3) '@tanstack/match-sorter-utils': 8.19.4 '@tanstack/react-table': 8.20.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@tanstack/react-virtual': 3.11.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -18852,10 +18855,10 @@ snapshots: prop-types: 15.8.1 react: 19.2.3 - react-error-boundary@6.0.0(react@19.2.3): + react-error-boundary@6.0.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: - '@babel/runtime': 7.28.4 react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) react-immutable-proptypes@2.2.0(immutable@3.8.2): dependencies: @@ -20043,7 +20046,7 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 - testcontainers@11.10.0: + testcontainers@11.11.0: dependencies: '@balena/dockerignore': 1.0.2 '@types/dockerode': 3.3.47 @@ -20210,7 +20213,7 @@ snapshots: optionalDependencies: '@rollup/rollup-linux-x64-gnu': 4.6.1 - ts-api-utils@2.1.0(typescript@5.9.3): + ts-api-utils@2.3.0(typescript@5.9.3): dependencies: typescript: 5.9.3 @@ -20415,12 +20418,12 @@ snapshots: dependencies: ts-toolbelt: 9.6.0 - typescript-eslint@8.50.1(eslint@9.39.2)(typescript@5.9.3): + typescript-eslint@8.51.0(eslint@9.39.2)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/parser': 8.50.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.51.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.51.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.51.0(eslint@9.39.2)(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: @@ -20711,9 +20714,9 @@ snapshots: dependencies: global: 4.4.0 - vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.4)(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)): + vite-tsconfig-paths@6.0.3(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.4)(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)): dependencies: - debug: 4.3.7 + debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.3(typescript@5.9.3) optionalDependencies: @@ -20739,7 +20742,7 @@ snapshots: tsx: 4.20.5 yaml: 2.5.1 - vitest@4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jsdom@27.3.0(postcss@8.5.6))(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1): + vitest@4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1): dependencies: '@vitest/expect': 4.0.16 '@vitest/mocker': 4.0.16(vite@7.1.12(@types/node@24.10.4)(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) @@ -20764,7 +20767,7 @@ snapshots: optionalDependencies: '@types/node': 24.10.4 '@vitest/ui': 4.0.16(vitest@4.0.16) - jsdom: 27.3.0(postcss@8.5.6) + jsdom: 27.4.0(postcss@8.5.6) transitivePeerDependencies: - jiti - less @@ -20836,10 +20839,6 @@ snapshots: - esbuild - uglify-js - whatwg-encoding@3.1.1: - dependencies: - iconv-lite: 0.6.3 - whatwg-fetch@3.6.20: {} whatwg-mimetype@4.0.0: {} diff --git a/static-data/contributors.json b/static-data/contributors.json index fa266ad25..e97e63e56 100644 --- a/static-data/contributors.json +++ b/static-data/contributors.json @@ -1 +1 @@ -[{"login":"ajnart","avatar_url":"https://avatars.githubusercontent.com/u/49837342?v=4"},{"login":"manuel-rw","avatar_url":"https://avatars.githubusercontent.com/u/30572287?v=4"},{"login":"Meierschlumpf","avatar_url":"https://avatars.githubusercontent.com/u/63781622?v=4"},{"login":"SeDemal","avatar_url":"https://avatars.githubusercontent.com/u/26098587?v=4"},{"login":"lammersbjorn","avatar_url":"https://avatars.githubusercontent.com/u/71191962?v=4"},{"login":"LarveyOfficial","avatar_url":"https://avatars.githubusercontent.com/u/39219859?v=4"},{"login":"c00ldude1oo","avatar_url":"https://avatars.githubusercontent.com/u/15677803?v=4"},{"login":"InterN0te","avatar_url":"https://avatars.githubusercontent.com/u/10882916?v=4"},{"login":"Aimsucks","avatar_url":"https://avatars.githubusercontent.com/u/1828486?v=4"},{"login":"JannesV","avatar_url":"https://avatars.githubusercontent.com/u/5984244?v=4"},{"login":"MauriceNino","avatar_url":"https://avatars.githubusercontent.com/u/18658092?v=4"},{"login":"hillaliy","avatar_url":"https://avatars.githubusercontent.com/u/950010?v=4"},{"login":"Skeeww","avatar_url":"https://avatars.githubusercontent.com/u/9639992?v=4"},{"login":"RichyHBM","avatar_url":"https://avatars.githubusercontent.com/u/5472275?v=4"},{"login":"Bonfire","avatar_url":"https://avatars.githubusercontent.com/u/5704760?v=4"},{"login":"wieli99","avatar_url":"https://avatars.githubusercontent.com/u/46794825?v=4"},{"login":"ishaanparlikar","avatar_url":"https://avatars.githubusercontent.com/u/43013132?v=4"},{"login":"Zareix","avatar_url":"https://avatars.githubusercontent.com/u/29818713?v=4"},{"login":"tuggan","avatar_url":"https://avatars.githubusercontent.com/u/4325608?v=4"},{"login":"Spillebulle","avatar_url":"https://avatars.githubusercontent.com/u/46653946?v=4"},{"login":"tancak","avatar_url":"https://avatars.githubusercontent.com/u/11760749?v=4"},{"login":"spkesDE","avatar_url":"https://avatars.githubusercontent.com/u/1682314?v=4"},{"login":"j3lte","avatar_url":"https://avatars.githubusercontent.com/u/2557568?v=4"},{"login":"dslatt","avatar_url":"https://avatars.githubusercontent.com/u/5211001?v=4"},{"login":"Malong11-007","avatar_url":"https://avatars.githubusercontent.com/u/40298510?v=4"},{"login":"StefanB7","avatar_url":"https://avatars.githubusercontent.com/u/22056509?v=4"},{"login":"souravghosh01","avatar_url":"https://avatars.githubusercontent.com/u/37548139?v=4"},{"login":"SR3u","avatar_url":"https://avatars.githubusercontent.com/u/2380522?v=4"},{"login":"Rikpat","avatar_url":"https://avatars.githubusercontent.com/u/33869814?v=4"},{"login":"NormanJS","avatar_url":"https://avatars.githubusercontent.com/u/83409549?v=4"},{"login":"No-Maines-Land","avatar_url":"https://avatars.githubusercontent.com/u/20687725?v=4"},{"login":"stark1tty","avatar_url":"https://avatars.githubusercontent.com/u/69326376?v=4"},{"login":"Momcilo42","avatar_url":"https://avatars.githubusercontent.com/u/10118137?v=4"},{"login":"marius-arch","avatar_url":"https://avatars.githubusercontent.com/u/72494359?v=4"},{"login":"Lumilias","avatar_url":"https://avatars.githubusercontent.com/u/10852161?v=4"},{"login":"Havock94","avatar_url":"https://avatars.githubusercontent.com/u/7635248?v=4"},{"login":"Lollyde","avatar_url":"https://avatars.githubusercontent.com/u/11347524?v=4"},{"login":"krishnamuppaneni","avatar_url":"https://avatars.githubusercontent.com/u/4703366?v=4"},{"login":"devtobi","avatar_url":"https://avatars.githubusercontent.com/u/28538704?v=4"},{"login":"TyxTang","avatar_url":"https://avatars.githubusercontent.com/u/90897955?v=4"},{"login":"alotlikebeans","avatar_url":"https://avatars.githubusercontent.com/u/19630511?v=4"},{"login":"WillyJL","avatar_url":"https://avatars.githubusercontent.com/u/49810075?v=4"},{"login":"anonysoul","avatar_url":"https://avatars.githubusercontent.com/u/105715150?v=4"},{"login":"cospeedster","avatar_url":"https://avatars.githubusercontent.com/u/52749645?v=4"},{"login":"diederbert","avatar_url":"https://avatars.githubusercontent.com/u/162878798?v=4"},{"login":"digdilem","avatar_url":"https://avatars.githubusercontent.com/u/4052275?v=4"},{"login":"dinghino","avatar_url":"https://avatars.githubusercontent.com/u/14729459?v=4"},{"login":"gfomichev","avatar_url":"https://avatars.githubusercontent.com/u/1596146?v=4"},{"login":"gnattu","avatar_url":"https://avatars.githubusercontent.com/u/12995396?v=4"},{"login":"tuxpizza","avatar_url":"https://avatars.githubusercontent.com/u/84710786?v=4"},{"login":"xmarkurion","avatar_url":"https://avatars.githubusercontent.com/u/46654687?v=4"},{"login":"huanga","avatar_url":"https://avatars.githubusercontent.com/u/732970?v=4"},{"login":"taos15","avatar_url":"https://avatars.githubusercontent.com/u/122130728?v=4"},{"login":"arghyadipchak","avatar_url":"https://avatars.githubusercontent.com/u/32430374?v=4"},{"login":"AuthorShin","avatar_url":"https://avatars.githubusercontent.com/u/4959043?v=4"},{"login":"benniblot","avatar_url":"https://avatars.githubusercontent.com/u/47495914?v=4"},{"login":"bebsworthy","avatar_url":"https://avatars.githubusercontent.com/u/5266759?v=4"},{"login":"catrielmuller","avatar_url":"https://avatars.githubusercontent.com/u/2272323?v=4"},{"login":"Vysp3r","avatar_url":"https://avatars.githubusercontent.com/u/62019735?v=4"},{"login":"DR-Blogs","avatar_url":"https://avatars.githubusercontent.com/u/96393186?v=4"},{"login":"singular0","avatar_url":"https://avatars.githubusercontent.com/u/1925883?v=4"},{"login":"diogovalentte","avatar_url":"https://avatars.githubusercontent.com/u/49578155?v=4"},{"login":"codezninja","avatar_url":"https://avatars.githubusercontent.com/u/4400773?v=4"},{"login":"fabricionaweb","avatar_url":"https://avatars.githubusercontent.com/u/15933?v=4"},{"login":"nyok1912","avatar_url":"https://avatars.githubusercontent.com/u/32163949?v=4"},{"login":"bo3bdo","avatar_url":"https://avatars.githubusercontent.com/u/5271380?v=4"},{"login":"hskrtich","avatar_url":"https://avatars.githubusercontent.com/u/1214484?v=4"},{"login":"ishults","avatar_url":"https://avatars.githubusercontent.com/u/7275442?v=4"},{"login":"jelliuk","avatar_url":"https://avatars.githubusercontent.com/u/4790959?v=4"},{"login":"Moohan","avatar_url":"https://avatars.githubusercontent.com/u/5982260?v=4"},{"login":"tesar-tech","avatar_url":"https://avatars.githubusercontent.com/u/33880579?v=4"},{"login":"jbruell","avatar_url":"https://avatars.githubusercontent.com/u/31685172?v=4"},{"login":"JasonLeeB06","avatar_url":"https://avatars.githubusercontent.com/u/82266978?v=4"},{"login":"jeffersonraimon","avatar_url":"https://avatars.githubusercontent.com/u/80064475?v=4"},{"login":"jo-chemla","avatar_url":"https://avatars.githubusercontent.com/u/16822841?v=4"},{"login":"joser93","avatar_url":"https://avatars.githubusercontent.com/u/6912089?v=4"},{"login":"justijndepover","avatar_url":"https://avatars.githubusercontent.com/u/9008623?v=4"},{"login":"Aandree5","avatar_url":"https://avatars.githubusercontent.com/u/32734153?v=4"},{"login":"jackwellerreal","avatar_url":"https://avatars.githubusercontent.com/u/97435840?v=4"},{"login":"toineenzo","avatar_url":"https://avatars.githubusercontent.com/u/4921397?v=4"},{"login":"oben01","avatar_url":"https://avatars.githubusercontent.com/u/22369027?v=4"},{"login":"rezstje","avatar_url":"https://avatars.githubusercontent.com/u/45420315?v=4"},{"login":"castielwaverly","avatar_url":"https://avatars.githubusercontent.com/u/137005689?v=4"},{"login":"xoxyuxu","avatar_url":"https://avatars.githubusercontent.com/u/3543416?v=4"},{"login":"MaienM","avatar_url":"https://avatars.githubusercontent.com/u/583129?v=4"},{"login":"Copilot","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},{"login":"tech62","avatar_url":"https://avatars.githubusercontent.com/u/16237642?v=4"},{"login":"pitschi","avatar_url":"https://avatars.githubusercontent.com/u/6841565?v=4"},{"login":"lthomsen","avatar_url":"https://avatars.githubusercontent.com/u/28560325?v=4"},{"login":"generalmat82","avatar_url":"https://avatars.githubusercontent.com/u/110256073?v=4"},{"login":"CrazyWolf13","avatar_url":"https://avatars.githubusercontent.com/u/96661824?v=4"},{"login":"noahcroghan","avatar_url":"https://avatars.githubusercontent.com/u/27422774?v=4"},{"login":"NikeLaosClericus","avatar_url":"https://avatars.githubusercontent.com/u/39810627?v=4"},{"login":"NicolasNewman","avatar_url":"https://avatars.githubusercontent.com/u/16135852?v=4"},{"login":"itzTheMeow","avatar_url":"https://avatars.githubusercontent.com/u/50887230?v=4"},{"login":"leandroscardua","avatar_url":"https://avatars.githubusercontent.com/u/24698541?v=4"},{"login":"hotrungnhan","avatar_url":"https://avatars.githubusercontent.com/u/40029631?v=4"},{"login":"Kaotic3","avatar_url":"https://avatars.githubusercontent.com/u/80522225?v=4"},{"login":"HeapReaper","avatar_url":"https://avatars.githubusercontent.com/u/31496522?v=4"},{"login":"frankvHoof93","avatar_url":"https://avatars.githubusercontent.com/u/7346516?v=4"},{"login":"faugusto-oliveira","avatar_url":"https://avatars.githubusercontent.com/u/37384074?v=4"},{"login":"ieugen","avatar_url":"https://avatars.githubusercontent.com/u/1050920?v=4"},{"login":"DZ945brH","avatar_url":"https://avatars.githubusercontent.com/u/42635243?v=4"},{"login":"Oupsman","avatar_url":"https://avatars.githubusercontent.com/u/11260343?v=4"},{"login":"m0s4ik","avatar_url":"https://avatars.githubusercontent.com/u/26578395?v=4"},{"login":"AartSchinkel","avatar_url":"https://avatars.githubusercontent.com/u/189675191?v=4"}] \ No newline at end of file +[{"login":"ajnart","avatar_url":"https://avatars.githubusercontent.com/u/49837342?v=4"},{"login":"manuel-rw","avatar_url":"https://avatars.githubusercontent.com/u/30572287?v=4"},{"login":"Meierschlumpf","avatar_url":"https://avatars.githubusercontent.com/u/63781622?v=4"},{"login":"SeDemal","avatar_url":"https://avatars.githubusercontent.com/u/26098587?v=4"},{"login":"lammersbjorn","avatar_url":"https://avatars.githubusercontent.com/u/71191962?v=4"},{"login":"LarveyOfficial","avatar_url":"https://avatars.githubusercontent.com/u/39219859?v=4"},{"login":"c00ldude1oo","avatar_url":"https://avatars.githubusercontent.com/u/15677803?v=4"},{"login":"InterN0te","avatar_url":"https://avatars.githubusercontent.com/u/10882916?v=4"},{"login":"Aimsucks","avatar_url":"https://avatars.githubusercontent.com/u/1828486?v=4"},{"login":"JannesV","avatar_url":"https://avatars.githubusercontent.com/u/5984244?v=4"},{"login":"MauriceNino","avatar_url":"https://avatars.githubusercontent.com/u/18658092?v=4"},{"login":"hillaliy","avatar_url":"https://avatars.githubusercontent.com/u/950010?v=4"},{"login":"Skeeww","avatar_url":"https://avatars.githubusercontent.com/u/9639992?v=4"},{"login":"RichyHBM","avatar_url":"https://avatars.githubusercontent.com/u/5472275?v=4"},{"login":"Bonfire","avatar_url":"https://avatars.githubusercontent.com/u/5704760?v=4"},{"login":"wieli99","avatar_url":"https://avatars.githubusercontent.com/u/46794825?v=4"},{"login":"ishaanparlikar","avatar_url":"https://avatars.githubusercontent.com/u/43013132?v=4"},{"login":"Zareix","avatar_url":"https://avatars.githubusercontent.com/u/29818713?v=4"},{"login":"tuggan","avatar_url":"https://avatars.githubusercontent.com/u/4325608?v=4"},{"login":"Spillebulle","avatar_url":"https://avatars.githubusercontent.com/u/46653946?v=4"},{"login":"tancak","avatar_url":"https://avatars.githubusercontent.com/u/11760749?v=4"},{"login":"spkesDE","avatar_url":"https://avatars.githubusercontent.com/u/1682314?v=4"},{"login":"j3lte","avatar_url":"https://avatars.githubusercontent.com/u/2557568?v=4"},{"login":"dslatt","avatar_url":"https://avatars.githubusercontent.com/u/5211001?v=4"},{"login":"Malong11-007","avatar_url":"https://avatars.githubusercontent.com/u/40298510?v=4"},{"login":"StefanB7","avatar_url":"https://avatars.githubusercontent.com/u/22056509?v=4"},{"login":"souravghosh01","avatar_url":"https://avatars.githubusercontent.com/u/37548139?v=4"},{"login":"SR3u","avatar_url":"https://avatars.githubusercontent.com/u/2380522?v=4"},{"login":"Rikpat","avatar_url":"https://avatars.githubusercontent.com/u/33869814?v=4"},{"login":"NormanJS","avatar_url":"https://avatars.githubusercontent.com/u/83409549?v=4"},{"login":"No-Maines-Land","avatar_url":"https://avatars.githubusercontent.com/u/20687725?v=4"},{"login":"stark1tty","avatar_url":"https://avatars.githubusercontent.com/u/69326376?v=4"},{"login":"Momcilo42","avatar_url":"https://avatars.githubusercontent.com/u/10118137?v=4"},{"login":"marius-arch","avatar_url":"https://avatars.githubusercontent.com/u/72494359?v=4"},{"login":"Lumilias","avatar_url":"https://avatars.githubusercontent.com/u/10852161?v=4"},{"login":"Havock94","avatar_url":"https://avatars.githubusercontent.com/u/7635248?v=4"},{"login":"Lollyde","avatar_url":"https://avatars.githubusercontent.com/u/11347524?v=4"},{"login":"krishnamuppaneni","avatar_url":"https://avatars.githubusercontent.com/u/4703366?v=4"},{"login":"devtobi","avatar_url":"https://avatars.githubusercontent.com/u/28538704?v=4"},{"login":"TyxTang","avatar_url":"https://avatars.githubusercontent.com/u/90897955?v=4"},{"login":"alotlikebeans","avatar_url":"https://avatars.githubusercontent.com/u/19630511?v=4"},{"login":"WillyJL","avatar_url":"https://avatars.githubusercontent.com/u/49810075?v=4"},{"login":"anonysoul","avatar_url":"https://avatars.githubusercontent.com/u/105715150?v=4"},{"login":"cospeedster","avatar_url":"https://avatars.githubusercontent.com/u/52749645?v=4"},{"login":"diederbert","avatar_url":"https://avatars.githubusercontent.com/u/162878798?v=4"},{"login":"digdilem","avatar_url":"https://avatars.githubusercontent.com/u/4052275?v=4"},{"login":"dinghino","avatar_url":"https://avatars.githubusercontent.com/u/14729459?v=4"},{"login":"gfomichev","avatar_url":"https://avatars.githubusercontent.com/u/1596146?v=4"},{"login":"gnattu","avatar_url":"https://avatars.githubusercontent.com/u/12995396?v=4"},{"login":"tuxpizza","avatar_url":"https://avatars.githubusercontent.com/u/84710786?v=4"},{"login":"xmarkurion","avatar_url":"https://avatars.githubusercontent.com/u/46654687?v=4"},{"login":"huanga","avatar_url":"https://avatars.githubusercontent.com/u/732970?v=4"},{"login":"taos15","avatar_url":"https://avatars.githubusercontent.com/u/122130728?v=4"},{"login":"arghyadipchak","avatar_url":"https://avatars.githubusercontent.com/u/32430374?v=4"},{"login":"AuthorShin","avatar_url":"https://avatars.githubusercontent.com/u/4959043?v=4"},{"login":"benniblot","avatar_url":"https://avatars.githubusercontent.com/u/47495914?v=4"},{"login":"bebsworthy","avatar_url":"https://avatars.githubusercontent.com/u/5266759?v=4"},{"login":"catrielmuller","avatar_url":"https://avatars.githubusercontent.com/u/2272323?v=4"},{"login":"Vysp3r","avatar_url":"https://avatars.githubusercontent.com/u/62019735?v=4"},{"login":"DR-Blogs","avatar_url":"https://avatars.githubusercontent.com/u/96393186?v=4"},{"login":"singular0","avatar_url":"https://avatars.githubusercontent.com/u/1925883?v=4"},{"login":"diogovalentte","avatar_url":"https://avatars.githubusercontent.com/u/49578155?v=4"},{"login":"codezninja","avatar_url":"https://avatars.githubusercontent.com/u/4400773?v=4"},{"login":"fabricionaweb","avatar_url":"https://avatars.githubusercontent.com/u/15933?v=4"},{"login":"nyok1912","avatar_url":"https://avatars.githubusercontent.com/u/32163949?v=4"},{"login":"bo3bdo","avatar_url":"https://avatars.githubusercontent.com/u/5271380?v=4"},{"login":"hskrtich","avatar_url":"https://avatars.githubusercontent.com/u/1214484?v=4"},{"login":"ishults","avatar_url":"https://avatars.githubusercontent.com/u/7275442?v=4"},{"login":"jelliuk","avatar_url":"https://avatars.githubusercontent.com/u/4790959?v=4"},{"login":"Moohan","avatar_url":"https://avatars.githubusercontent.com/u/5982260?v=4"},{"login":"tesar-tech","avatar_url":"https://avatars.githubusercontent.com/u/33880579?v=4"},{"login":"jbruell","avatar_url":"https://avatars.githubusercontent.com/u/31685172?v=4"},{"login":"JasonLeeB06","avatar_url":"https://avatars.githubusercontent.com/u/82266978?v=4"},{"login":"jeffersonraimon","avatar_url":"https://avatars.githubusercontent.com/u/80064475?v=4"},{"login":"jo-chemla","avatar_url":"https://avatars.githubusercontent.com/u/16822841?v=4"},{"login":"joser93","avatar_url":"https://avatars.githubusercontent.com/u/6912089?v=4"},{"login":"justijndepover","avatar_url":"https://avatars.githubusercontent.com/u/9008623?v=4"},{"login":"Aandree5","avatar_url":"https://avatars.githubusercontent.com/u/32734153?v=4"},{"login":"jackwellerreal","avatar_url":"https://avatars.githubusercontent.com/u/97435840?v=4"},{"login":"toineenzo","avatar_url":"https://avatars.githubusercontent.com/u/4921397?v=4"},{"login":"oben01","avatar_url":"https://avatars.githubusercontent.com/u/22369027?v=4"},{"login":"rezstje","avatar_url":"https://avatars.githubusercontent.com/u/45420315?v=4"},{"login":"castielwaverly","avatar_url":"https://avatars.githubusercontent.com/u/137005689?v=4"},{"login":"xoxyuxu","avatar_url":"https://avatars.githubusercontent.com/u/3543416?v=4"},{"login":"MaienM","avatar_url":"https://avatars.githubusercontent.com/u/583129?v=4"},{"login":"Copilot","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},{"login":"tech62","avatar_url":"https://avatars.githubusercontent.com/u/16237642?v=4"},{"login":"pitschi","avatar_url":"https://avatars.githubusercontent.com/u/6841565?v=4"},{"login":"lthomsen","avatar_url":"https://avatars.githubusercontent.com/u/28560325?v=4"},{"login":"generalmat82","avatar_url":"https://avatars.githubusercontent.com/u/110256073?v=4"},{"login":"CrazyWolf13","avatar_url":"https://avatars.githubusercontent.com/u/96661824?v=4"},{"login":"noahcroghan","avatar_url":"https://avatars.githubusercontent.com/u/27422774?v=4"},{"login":"NikeLaosClericus","avatar_url":"https://avatars.githubusercontent.com/u/39810627?v=4"},{"login":"NicolasNewman","avatar_url":"https://avatars.githubusercontent.com/u/16135852?v=4"},{"login":"itzTheMeow","avatar_url":"https://avatars.githubusercontent.com/u/50887230?v=4"},{"login":"leandroscardua","avatar_url":"https://avatars.githubusercontent.com/u/24698541?v=4"},{"login":"hotrungnhan","avatar_url":"https://avatars.githubusercontent.com/u/40029631?v=4"},{"login":"Kaotic3","avatar_url":"https://avatars.githubusercontent.com/u/80522225?v=4"},{"login":"HeapReaper","avatar_url":"https://avatars.githubusercontent.com/u/31496522?v=4"},{"login":"frankvHoof93","avatar_url":"https://avatars.githubusercontent.com/u/7346516?v=4"},{"login":"faugusto-oliveira","avatar_url":"https://avatars.githubusercontent.com/u/37384074?v=4"},{"login":"ieugen","avatar_url":"https://avatars.githubusercontent.com/u/1050920?v=4"},{"login":"KartulUdus","avatar_url":"https://avatars.githubusercontent.com/u/23346150?v=4"},{"login":"DZ945brH","avatar_url":"https://avatars.githubusercontent.com/u/42635243?v=4"},{"login":"Oupsman","avatar_url":"https://avatars.githubusercontent.com/u/11260343?v=4"},{"login":"m0s4ik","avatar_url":"https://avatars.githubusercontent.com/u/26578395?v=4"},{"login":"AartSchinkel","avatar_url":"https://avatars.githubusercontent.com/u/189675191?v=4"}] \ No newline at end of file diff --git a/static-data/translators.json b/static-data/translators.json index 452550d31..0c36397cd 100644 --- a/static-data/translators.json +++ b/static-data/translators.json @@ -1 +1 @@ -[{"username":"carlchina","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/6697/medium/d22bbe7797bbeb30dbdc73a5648d329a_default.png"},{"username":"zielmann","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/7795/medium/ad22b8b8d5eb33e4154d53a454c862fd_default.png"},{"username":"Thalyn","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12494028/medium/5faf5acc945a874ed116c4567edaa09f_default.png"},{"username":"magnushj","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12503488/medium/68f32e33ea7b891960055c9f831f7344_default.png"},{"username":"almontegil","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12580457/medium/f4136cacbdfdb4c28ae7f85dc5f840db_default.png"},{"username":"andibing","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12664938/medium/b8be63e4dcb2e791ced1ffc9e3a049a5.jpg"},{"username":"gronare","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12680911/medium/c6eb14d1504156f34a158e507f73aa3d_default.png"},{"username":"SmartPhoneLover","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12701640/medium/ec95486662ec875cda080e778c3ff702.jpg"},{"username":"marcelotk_15","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12773227/medium/ecf6bea16ab0c873c131df2154ee9718_default.png"},{"username":"S3OD177","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13051544/medium/11dd990837f61f7e8f7d36b041a7fddb_default.png"},{"username":"marcg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13153301/medium/ebcf60fbf27deb148ec40a659566c6ff_default.png"},{"username":"BeersTeddy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13185230/medium/2f1f4e1effe74a23422b195cbefb2a95_default.png"},{"username":"jamesmcmahon0","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13245578/medium/586aa873b4abddbd9abc6f3de99ab70e.jpeg"},{"username":"b1nar10","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13286752/medium/249b02e3368752cb175446082015737c_default.png"},{"username":"vannCN","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13330448/medium/9b8a9ee3611e51e951e22d5fd4eb7d8d.jpg"},{"username":"binswm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13343482/medium/45dde0e6097b9b72705d2eba9dbbc276_default.png"},{"username":"SkewRam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13496556/medium/188f5c2deb7938eda51eb786cc4539ca.jpeg"},{"username":"raphcatarino","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13547726/medium/b003511e67df13a4b4b5689488fa8099.jpg"},{"username":"shillos5","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13600557/medium/b17650b2b84f829d54fa548c44c1ab27.jpeg"},{"username":"wolong98","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13641407/medium/f4634edc58c7857a357e5293543c15cf.jpg"},{"username":"spair0039","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14012333/medium/72430e96027c09c19141cac38eae4617.png"},{"username":"MajorMarcin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14072183/medium/0a197e64bb92b6ea94cecbb607512c45.jpg"},{"username":"KosmoMoustache","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14103535/medium/51c438cdd9f86e8811c75f4869de479c.png"},{"username":"Soochaehwa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14118689/medium/496a1ce63111547bf455a1e0a7ac75f1_default.png"},{"username":"garryfield","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14187035/medium/520c964706676045f6eeec1b08edc880.jpg"},{"username":"droidenko","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14444264/medium/4aa3a8e824f72bc9e5ec0d8de307095e.jpeg"},{"username":"maathis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14489950/medium/6eeddf13a757ee35f78f1763f94d95e1.jpeg"},{"username":"bukvam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14546502/medium/a819dc40a13c57395a17dc46e847d3ce.jpg"},{"username":"gm.cinalli","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14670666/medium/2d466a0fdbda40764526be86c97c0ab4.jpeg"},{"username":"antoine2tt","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14722148/medium/f88d926900862dd59007ea4b3419cb9d.png"},{"username":"cretzen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14799754/medium/3ba5c1805ec20c000d5810c07985afe9.jpg"},{"username":"ktKongTong","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14817246/medium/97cfc3c028dbdaf85ebd1102da71e58c.jpeg"},{"username":"marinkaberg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14861042/medium/2d5c4e62613f03082f3e645fa92efd59.jpeg"},{"username":"djismgaming","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14934947/medium/f5a8570713c34ab0f7d5405d105e2a9a.jpeg"},{"username":"f1refa11","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14949159/medium/fd2ae63b8eb4462200ba96abf943c1b9.png"},{"username":"jeffersonraimon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15057621/medium/6dff469563860e2618bc9d45646d0ab4.png"},{"username":"giop98","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15057987/medium/b8a4825d3fc39fc662f35ee258db4b2d.jpeg"},{"username":"tomislav.kraljevic","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15118857/medium/e133f1061cc92850b854d05d8faaeafd.png"},{"username":"Walkx","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15202182/medium/5c37361ae45aeed487b34582c1f7ca37.png"},{"username":"andrea.rosso","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15246318/medium/11f3f5ef44ec7f55b6f143090e208704_default.png"},{"username":"ajnart","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15270132/medium/a0f107a463c8910ee96bc2fa843a17e3.jpeg"},{"username":"Witchling","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15282238/medium/9e196b6783415b10ca571b7673c2ef33.jpg"},{"username":"guineuu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15292058/medium/22fbb758bda3b7805d50bf21d38f2c20.jpeg"},{"username":"Bulgus","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15304568/medium/0e8787e5ceb02ed5c96a514d0068ae87.jpg"},{"username":"Narno","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15314996/medium/a6ba093f24884250a1bf6c6f2ca50f1b_default.png"},{"username":"BySempron","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15315986/medium/e3d22d7b1423c6823a9f36d595ed4bdb.png"},{"username":"jonathan.berglin.work","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15359236/medium/95930b2093db13b76179782f7322c5d5.png"},{"username":"icdmkg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15405504/medium/f334d16cde1ac4ffb935b440d03465af.gif"},{"username":"irithys","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15405614/medium/3086461c47cce0a0c031925e5f943412.png"},{"username":"JannesV","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419912/medium/a7809eb4b817d7c49b62cf10ae86b950.png"},{"username":"benniblot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419914/medium/8086b1573d31f152ba41949b3a172445.jpeg"},{"username":"pacjo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419916/medium/3cbeddbd7bc01faafb5a3bf47bba915b_default.png"},{"username":"Payou6994","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419934/medium/37c9b9b17dfb578404c1c1ddb73ba7a8.png"},{"username":"fzibi21","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419976/medium/0da688450358e0290a7b7359cc1f7328.png"},{"username":"WowMurdock","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420118/medium/de19576fccb495b6dfe4c4c04a56b834.png"},{"username":"hbooo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420120/medium/6c7c7f8db785061356ebb03d044d3329.jpeg"},{"username":"Manicraft1001","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420178/medium/50ec94563a06a9f74f33bd09f01eed4d.jpg"},{"username":"Void123","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420354/medium/86929d44df92a00f9fe900a985c196df_default.png"},{"username":"R4cc","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15422606/medium/a390979662b84694f59de30bdb732141.jpeg"},{"username":"fabricionaweb","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15425808/medium/a9354142e7ae5152c144409d55fda551_default.png"},{"username":"JokeOfDead","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15426890/medium/a383eac9365e9de64fd4ab1d6fd0cb95.jpeg"},{"username":"hkz","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15427174/medium/c88acefb0d7306e1f7470e872029fb39_default.png"},{"username":"Steken","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15428516/medium/d5aea5653c769c3a523182bdb60d1664.png"},{"username":"flar.anton","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15428592/medium/b01fdb365d892e9f811f77fcb50a80a2.jpeg"},{"username":"Bon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15433542/medium/5397da4dfc821f20b6ac14fe0c514e9a.jpeg"},{"username":"bfkadan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15434162/medium/4f9a0b43cfe3acaea60124c14ba7f44a.png"},{"username":"BunnySweety","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15434662/medium/f0ef200a6a0dcf0e1d0e9ecd4148f560_default.png"},{"username":"HRKings","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15436168/medium/69a31e461d38549f01864e7ef10d642e.png"},{"username":"wiston81","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15439078/medium/10f292c8d12a7c21a44b54495fa4a3d8.jpeg"},{"username":"qaz0911","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15440860/medium/3d3e50ee388c72dc4bf7a771761f2d89_default.png"},{"username":"qqyule","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15441462/medium/7a3cdf82710ffb5d8f388bc0bd010665.png"},{"username":"Bims0n","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15445560/medium/603220b603eeb3367e0f0d3fa675247c.jpg"},{"username":"TariqDaCoder","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15446228/medium/50b0f4040112bbd67690b769477398e5_default.png"},{"username":"Anarchon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15449644/medium/e925e1f3e3ffbf0f982391ce263a1a28.jpeg"},{"username":"Ashun","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15453020/medium/ccdcf51c73d6aae40751bb30beee1915_default.png"},{"username":"sebekmartin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15454038/medium/bcfb44598cdfd1d7cd4eb35812538962.jpeg"},{"username":"RagnarGraves","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15459882/medium/143d5af850c1154070a218bea124e9cb_default.png"},{"username":"PrtmPhlp","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15462414/medium/b80db55e9de301432dcd1f8c8b24fd49_default.png"},{"username":"DooYoo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15470768/medium/2a18cf4be67094724b508c9e1e698a21_default.png"},{"username":"espentruls","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15486092/medium/8e38afc3a4ff669226a0cfd3e420ff3a.jpeg"},{"username":"frisco82","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15486922/medium/4e1c5d4189b42508e660daa3c1c25b2a.jpeg"},{"username":"lupineDK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15491798/medium/461bd501e8371c062bf29ea171aedd36_default.png"},{"username":"hillaliy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15492732/medium/0bae17b421604892d888e3fc70cf0587.jpeg"},{"username":"MarcOrfilaCarreras","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15501072/medium/ea52b26c3c6f21e4931e38e3ce3f3d6e.png"},{"username":"robertbridda","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15507822/medium/a368c2e30411bb2da9b49290084191f3.png"},{"username":"MKoniuszko","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15518090/medium/87605434fcc839f6763ab07c50f6d232.jpeg"},{"username":"HeroSizy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15518710/medium/4e79c0e98cbeb536dd961e656331b509.png"},{"username":"dwt136","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15520022/medium/554422503f2baea43ace85facb4546fb_default.png"},{"username":"asifthewebguy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15526719/medium/b18931dd0c800d725048bd440646198b_default.png"},{"username":"eiloogs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15545537/medium/f290a2f1190983530a9b76b2e858a609.gif"},{"username":"_vytdv","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15547289/medium/60d8644cc8ad6f11a92ccea4a14cd098_default.png"},{"username":"crendasien","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15554645/medium/598ab1d4aaf6b8dccd5ba16be92da7b9.jpeg"},{"username":"edxo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15573823/medium/8a565b732a75a77f840dd123cdb30bf4.png"},{"username":"somerlev","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15617065/medium/f4b13513e311ec902d90b2f718412c55.jpg"},{"username":"kid1412621","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15643771/medium/dd455e32de652fa88e6fd97598bdffa7.png"},{"username":"suming","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15644717/medium/244159dfe10fa03436205506f80c9e25.png"},{"username":"nick.gher","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15647517/medium/5374a2c6fef60a3fbf0edf86b997c351_default.png"},{"username":"DataCat","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15650315/medium/ce7c1365adf35c5d490d77500a4607fb_default.png"},{"username":"dizo89","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15658375/medium/0ca745e5017d491fe1b22b0239904de8.jpeg"},{"username":"tee_noodle","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15674577/medium/804d9cf06f5196026acb6436b809d0da_default.png"},{"username":"Marty88","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15674593/medium/492b1509d52bd2809dea768121217125.jpeg"},{"username":"Spillebulle","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15677023/medium/20b98bb85062e07afe0e63618f8a5feb.PNG"},{"username":"petitmewen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15685239/medium/15de9b62d2e0bc25013435f1784bbcc1.jpeg"},{"username":"NoProsNoNoobs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15687709/medium/ae8f65fafeb8bcf74dcb8871bbe46461.png"},{"username":"y.gybson","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15690777/medium/b5cb5d2d5768904ff6586c727e3a6c77.jpeg"},{"username":"inside90","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15704947/medium/c1355fcb30dd76f8e39d98d1d49f1c52.png"},{"username":"RJSkudra","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15709853/medium/c3abf2774913dc4e81fb261d36d7668c.png"},{"username":"binge203","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15713937/medium/77c1cfa4314673db80e6881fd9f64668.gif"},{"username":"Mailootje","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15714337/medium/743c3bc4ab1989966a375eeeec83d8b8.jpeg"},{"username":"tim-wiegers","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15719805/medium/08a96f064813350661cd6b20bf3d7d99.png"},{"username":"GkhnG","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15722911/medium/71a027caec489ef6ce82bcf1888329d0_default.png"},{"username":"Zoen-Millo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15760967/medium/9e956f11adc5b34f5636268b5c485dbf.jpg"},{"username":"HooinKyoma","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15792897/medium/9489f0a9b368e0e827ae758b740a2eed.jpeg"},{"username":"wathergeen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15794495/medium/a83b7fc80d180669ebfd6deb3544cfd0.png"},{"username":"MoeToo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15818233/medium/d35cd6953717706eaf20f6c143c62947.png"},{"username":"itodouble","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15836233/medium/e984caea18fb0673bf319fcf28cef649.png"},{"username":"loslocitos","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15847901/medium/fe30d12fd2cf38212f929e13b169f9ec.jpeg"},{"username":"Oversleep","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15849065/medium/06141f13a6d541d753f3c2f2947b8068_default.png"},{"username":"Beardy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15865139/medium/fca6b9d2b3f52e286d1568f52b83b6a0_default.png"},{"username":"raelyan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15875457/medium/2f4fda1d1aaa5dcc79b328baf3f03151.jpeg"},{"username":"dolphin738","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15913763/medium/ee6fede7b8528ca642329ada80d1cc18.png"},{"username":"brunotco","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15916719/medium/09db45880fc05abc18adb8d932a5ecf9_default.png"},{"username":"LukeIsHereToDevelop","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15924739/medium/3e6cd3940297bb4ba7bb039c93e6f918.png"},{"username":"kennit","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15925879/medium/6b0733ad3c5949b91c55e4d8b03db8a5_default.png"},{"username":"kuunpire","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15950309/medium/8192a4f08f07086828ac9f74ed29a169.jpeg"},{"username":"Sandor-dev","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15951759/medium/0216c2da4eb028164ebbecf1c72f6271_default.png"},{"username":"Meierschlumpf","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15953187/medium/23c744faef1ab84fbdc9351a7850aab6.jpeg"},{"username":"harmlesscat","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15970733/medium/dd8d0214a0250c932bb518b1b55e45a2_default.png"},{"username":"OrzWTF","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15976121/medium/4c4557cbff7ff7b0503455bc59c020e0.jpeg"},{"username":"tagaishi","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15977271/medium/eade504c83a5a1ff831c80a538fbdb44_default.png"},{"username":"azurite928","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15981895/medium/547ccc459ee123e78b5401c499f1022d.png"},{"username":"Ronner231","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16021342/medium/7734d550df2de5a2fec2ffff33e7024c.jpeg"},{"username":"ugyes","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16034148/medium/ed001e3f470a2dea9a8ce955b18e7bd5.png"},{"username":"rpieja","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16045554/medium/bd55baca2ef8b92502a760cc9ee7c505_default.png"},{"username":"flambyisyou","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16051620/medium/3a3bc0c90f6b95ab4ef74396a0a17beb.png"},{"username":"Topbcy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16077170/medium/d3aed33ea56330338756cfcd89477cfe.jpeg"},{"username":"ai5d02sb","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16084674/medium/7c8119fe2a5ca71bb15f636916a42b95_default.png"},{"username":"explosiveparrot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16097722/medium/7762f80fc1da63f5b2eb87de9d640324_default.png"},{"username":"DestroyCom","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16111544/medium/83e3d3ac5c8bfed634cd1a074854db67.png"},{"username":"neotraxo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16116966/medium/b30df957873329019a8a90a69f6efe3a.png"},{"username":"gzxpa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16123314/medium/487b05577310a946b0b98bc72c11213b_default.png"},{"username":"TORIK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16124732/medium/de770890e6411860ac06e8cc2dc0abd0_default.png"},{"username":"sergio.pibot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16138114/medium/80db802b2fcd6bbf19ea4c7413367dca.jpeg"},{"username":"karam-ajaj","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16139838/medium/7539ab958d3c85d5f67e7849483ea8f7.jpeg"},{"username":"SimonHenz97","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16151520/medium/9b94a85b536688e2d94538c384fd0a76.png"},{"username":"olsson82","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16198988/medium/eeaab4cba210c537424d4204754b604e.png"},{"username":"bo3bdo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16222806/medium/8652f3beacb6098dde5a4cd0a29fe80d.jpeg"},{"username":"AngryPlayer04","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16245192/medium/342715274f4dc31fd4132cdae9126188.jpeg"},{"username":"ehatamm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16245884/medium/979d5e5526fe545be9bf46db481f7182.jpeg"},{"username":"Balionelis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16246058/medium/986d62ba363594c517d966fe9178dcbb.png"},{"username":"kwargs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16248816/medium/19ce11f04bf1ae2637e0483399c675f9_default.png"},{"username":"lucicu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16273892/medium/3b09e8f3bead221ef98d6a45a16851dc_default.png"},{"username":"Michael5564445","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16357688/medium/9d9026a8bf3eaccb0417da240932ebf7.png"},{"username":"Netscream","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16359198/medium/694e0c8572dc8a47e6d63da31ec5b992.png"},{"username":"belicstefan04","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16368142/medium/4742dcfd7bf7ad7e33e37ac44fba7e0f.png"},{"username":"Hamad2066","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16371478/medium/f37bbc7685b6757defdbd1494236af61.jpeg"},{"username":"3ct0pl4sm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16399616/medium/ce796d1c40163975624c0a483e56374f.png"},{"username":"sanchez.marcell626","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16433865/medium/3ddde1314764cc2205ffdcd1ae719a91.png"},{"username":"Minoctis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16490079/medium/91fd0849303a4eca033d660d0a7b6854.jpeg"},{"username":"vittoriosoccorso","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16498805/medium/17086b2f1981f734edd1572f79c3158a.jpeg"},{"username":"Worgen325","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16533177/medium/4a62cc6b06095751aeb4b1b3e96db93f.png"},{"username":"homarr","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16657003/medium/3afabfd3de949a54ff5d40ad04552aba.png"},{"username":"mwgg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16658379/medium/763dd09f5c238cc5324d4d5357985292.png"},{"username":"kiwinho","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16671855/medium/bfe3a2d497dc4748a04d02e4ae2139cb.jpeg"},{"username":"tjvg4m34r13","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16679135/medium/7a483b9b0abe0d925e54808e1cb38fa0.jpeg"},{"username":"Diegoem","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16705921/medium/29ce68ebc191fc3f65499511b12de98f_default.png"},{"username":"bouks69","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16746091/medium/b58b1fc08520de416198be9df5d093eb.jpeg"},{"username":"futhgar","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16748067/medium/b8c526b097f9aa9d687250cac3df16dc.jpeg"},{"username":"GrimSQL","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16764343/medium/fff729a76d1f8fbcdaee9bb0c0f5f3fd.png"},{"username":"chnikel","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16767047/medium/3dda2a37e03049dafefe6697bb00f75c.png"},{"username":"yuki19870616","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16767951/medium/f59c848e38382cda6c8464b0a7b9e642_default.png"},{"username":"noamdal","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16782245/medium/b4a72a61f9caf138f0322c0cb987e6d0.png"},{"username":"MalithRukshan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16809057/medium/084d6a5b35fbbeacc70e7021197d222f.png"},{"username":"minirope19","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16930929/medium/e8cbbc26747e31c5a8959215e1dd067b.jpeg"},{"username":"toineenzo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12371852/medium/9f1b2bedb4794c59479cd289bdba9fab.png"},{"username":"ArcaneWater","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12421105/medium/1ac82517a6c658f6b62c48aebcb17e86_default.png"},{"username":"Ebedami","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12974801/medium/b596dea5c09454c4c828eac558389755.jpg"},{"username":"SergiSvK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13320543/medium/3df3c79cc5f0c53716c559cd3fd2fc20.png"},{"username":"jeongeon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13362856/medium/eb572f72cde5e5526c517ca3a6489850_default.png"},{"username":"MrTranCFCVN","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13439475/medium/a1789d69c85d90c667194b5d6a518c08_default.png"},{"username":"Cruellest","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13610615/medium/2a74faa0947ee08d18f7946fb8602c1e.jpg"},{"username":"Thario","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14491372/medium/dd5e142070802a672900121aa3f332a6_default.png"},{"username":"albanobattistella","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14686194/medium/564afcfd76f5cd24751bd669cf4943aa.jpg"},{"username":"Kachelkaiser","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14763406/medium/203a781797da4a18fe0f4e7db8fd547c.png"},{"username":"regi4","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14842936/medium/f7e1d672f562a7db61ba6b4b8f4de41d.png"},{"username":"baton5129","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14891064/medium/8d438f557b82977dd02f0ead3187265f.PNG"},{"username":"meviper","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15958903/medium/209f521ce33a05831fa8d7d1b7babc20_default.png"},{"username":"TheRedCyclops","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16486399/medium/7f39226180120d5a9efcb8e13d8aec8e_default.png"},{"username":"dymek37","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16659221/medium/d1dc6d11d7e7fc370efc5070e837ae03.png"},{"username":"B3CKDOOR","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16744975/medium/e6c7b2d45e76465d54e6efb67c83da7d.png"},{"username":"Larsluph","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16779933/medium/ed7d36f8b44013bad3a16ac0491bd0f7.png"},{"username":"FOEDI","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16781001/medium/6b4552fb72e359aa016f7a054078fac8.png"},{"username":"xmarkurion","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16805443/medium/34a20428427de5aaef99c7d140646803.png"},{"username":"gregid","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16806705/medium/f3c8f4a20436e8538929130142bbc104.png"},{"username":"Flameberg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16820453/medium/d47be866148474c9d05fec6fbe406d88.png"},{"username":"Playfust","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16872865/medium/5f4609cc711e5fb9fa8a0b178635769c.jpeg"},{"username":"Cotignac","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16879297/medium/81ff353edf030699a159bb79cda26e84.jpg"},{"username":"LeaHun","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16916375/medium/618520f0543b1e212ebc83d66b683d4b_default.png"},{"username":"jackwellerreal","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16919717/medium/37bbfdc03893f141133ccc619593266d.png"},{"username":"andrius.cim","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16967845/medium/46028fc1a0ddfaaeebcb37b39739625d_default.png"},{"username":"xjxexrxrxyx","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17041412/medium/d34d664166db6fb25579bca9ff3b50b4.jpeg"},{"username":"bilhal.fellah","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17044572/medium/d1ec6f17e4aa013e9eededc83778d2c6.png"},{"username":"the_octo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17058060/medium/7423ab3a4cabb67f5decb2e2dfa2b675_default.png"},{"username":"BamesJond","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17075846/medium/128d7ffd40254c8e376f45678e2fc620_default.png"},{"username":"Kornikus","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17134240/medium/d7a42b2c30db46ff152699ca01f9e11a_default.png"},{"username":"xoxyuxu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17176526/medium/108055aa24343043de852e412bec74be.png"},{"username":"cryptodntsleep","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17249408/medium/b9e15aa2b24a0dbc1e4f194aa8ed5109.png"},{"username":"yaniorg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17261842/medium/7dbfc77f21c826845961243c44540d26.jpg"},{"username":"Vidariondr","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17262438/medium/45fbc71be02ef27296b6f423e97b6a03_default.png"},{"username":"Fastery","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17263066/medium/701b0edc59676174863ad651528bbb37.jpeg"},{"username":"stratself","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17290388/medium/57d9d8161b3fd0abf4dc5558b4a1fa05_default.png"},{"username":"wuzeqin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17292606/medium/b9e0308410b31337e2d7aa6ed346d718_default.png"},{"username":"ChristopherBull","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17304338/medium/21a175ce596bfae81430767467908b90.jpeg"},{"username":"darkbcnlord","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17311436/medium/b271bc0b419ec3a26ddb7b63ff8ffc4b.png"},{"username":"zhoran1997","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17344028/medium/c8f450b5a8f1e9494a45dc60af7ce63e.png"},{"username":"gilalves1703","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17447768/medium/3f1de562a5c2391c88bbf8d5cf40a266.png"},{"username":"iServeCloud","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17470960/medium/11649b99d609438d66455a4d2fdc70f7.png"},{"username":"guibolzantvbox","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17474136/medium/59a576e6da538664ceb972253916fa02.jpeg"}] \ No newline at end of file +[{"username":"carlchina","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/6697/medium/d22bbe7797bbeb30dbdc73a5648d329a_default.png"},{"username":"zielmann","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/7795/medium/ad22b8b8d5eb33e4154d53a454c862fd_default.png"},{"username":"Thalyn","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12494028/medium/5faf5acc945a874ed116c4567edaa09f_default.png"},{"username":"magnushj","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12503488/medium/68f32e33ea7b891960055c9f831f7344_default.png"},{"username":"almontegil","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12580457/medium/f4136cacbdfdb4c28ae7f85dc5f840db_default.png"},{"username":"andibing","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12664938/medium/b8be63e4dcb2e791ced1ffc9e3a049a5.jpg"},{"username":"gronare","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12680911/medium/c6eb14d1504156f34a158e507f73aa3d_default.png"},{"username":"SmartPhoneLover","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12701640/medium/ec95486662ec875cda080e778c3ff702.jpg"},{"username":"marcelotk_15","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12773227/medium/ecf6bea16ab0c873c131df2154ee9718_default.png"},{"username":"S3OD177","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13051544/medium/11dd990837f61f7e8f7d36b041a7fddb_default.png"},{"username":"marcg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13153301/medium/ebcf60fbf27deb148ec40a659566c6ff_default.png"},{"username":"BeersTeddy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13185230/medium/2f1f4e1effe74a23422b195cbefb2a95_default.png"},{"username":"jamesmcmahon0","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13245578/medium/586aa873b4abddbd9abc6f3de99ab70e.jpeg"},{"username":"b1nar10","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13286752/medium/249b02e3368752cb175446082015737c_default.png"},{"username":"vannCN","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13330448/medium/9b8a9ee3611e51e951e22d5fd4eb7d8d.jpg"},{"username":"binswm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13343482/medium/45dde0e6097b9b72705d2eba9dbbc276_default.png"},{"username":"SkewRam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13496556/medium/188f5c2deb7938eda51eb786cc4539ca.jpeg"},{"username":"raphcatarino","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13547726/medium/b003511e67df13a4b4b5689488fa8099.jpg"},{"username":"shillos5","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13600557/medium/b17650b2b84f829d54fa548c44c1ab27.jpeg"},{"username":"wolong98","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13641407/medium/f4634edc58c7857a357e5293543c15cf.jpg"},{"username":"spair0039","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14012333/medium/72430e96027c09c19141cac38eae4617.png"},{"username":"MajorMarcin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14072183/medium/0a197e64bb92b6ea94cecbb607512c45.jpg"},{"username":"KosmoMoustache","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14103535/medium/51c438cdd9f86e8811c75f4869de479c.png"},{"username":"Soochaehwa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14118689/medium/496a1ce63111547bf455a1e0a7ac75f1_default.png"},{"username":"garryfield","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14187035/medium/520c964706676045f6eeec1b08edc880.jpg"},{"username":"droidenko","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14444264/medium/4aa3a8e824f72bc9e5ec0d8de307095e.jpeg"},{"username":"maathis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14489950/medium/6eeddf13a757ee35f78f1763f94d95e1.jpeg"},{"username":"bukvam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14546502/medium/a819dc40a13c57395a17dc46e847d3ce.jpg"},{"username":"gm.cinalli","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14670666/medium/2d466a0fdbda40764526be86c97c0ab4.jpeg"},{"username":"antoine2tt","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14722148/medium/f88d926900862dd59007ea4b3419cb9d.png"},{"username":"cretzen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14799754/medium/3ba5c1805ec20c000d5810c07985afe9.jpg"},{"username":"ktKongTong","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14817246/medium/97cfc3c028dbdaf85ebd1102da71e58c.jpeg"},{"username":"marinkaberg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14861042/medium/2d5c4e62613f03082f3e645fa92efd59.jpeg"},{"username":"djismgaming","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14934947/medium/f5a8570713c34ab0f7d5405d105e2a9a.jpeg"},{"username":"f1refa11","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14949159/medium/fd2ae63b8eb4462200ba96abf943c1b9.png"},{"username":"jeffersonraimon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15057621/medium/6dff469563860e2618bc9d45646d0ab4.png"},{"username":"giop98","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15057987/medium/b8a4825d3fc39fc662f35ee258db4b2d.jpeg"},{"username":"tomislav.kraljevic","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15118857/medium/e133f1061cc92850b854d05d8faaeafd.png"},{"username":"Walkx","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15202182/medium/5c37361ae45aeed487b34582c1f7ca37.png"},{"username":"andrea.rosso","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15246318/medium/11f3f5ef44ec7f55b6f143090e208704_default.png"},{"username":"ajnart","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15270132/medium/a0f107a463c8910ee96bc2fa843a17e3.jpeg"},{"username":"Witchling","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15282238/medium/9e196b6783415b10ca571b7673c2ef33.jpg"},{"username":"guineuu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15292058/medium/22fbb758bda3b7805d50bf21d38f2c20.jpeg"},{"username":"Bulgus","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15304568/medium/0e8787e5ceb02ed5c96a514d0068ae87.jpg"},{"username":"Narno","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15314996/medium/a6ba093f24884250a1bf6c6f2ca50f1b_default.png"},{"username":"BySempron","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15315986/medium/e3d22d7b1423c6823a9f36d595ed4bdb.png"},{"username":"jonathan.berglin.work","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15359236/medium/95930b2093db13b76179782f7322c5d5.png"},{"username":"icdmkg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15405504/medium/f334d16cde1ac4ffb935b440d03465af.gif"},{"username":"irithys","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15405614/medium/3086461c47cce0a0c031925e5f943412.png"},{"username":"JannesV","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419912/medium/a7809eb4b817d7c49b62cf10ae86b950.png"},{"username":"benniblot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419914/medium/8086b1573d31f152ba41949b3a172445.jpeg"},{"username":"pacjo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419916/medium/3cbeddbd7bc01faafb5a3bf47bba915b_default.png"},{"username":"Payou6994","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419934/medium/37c9b9b17dfb578404c1c1ddb73ba7a8.png"},{"username":"fzibi21","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419976/medium/0da688450358e0290a7b7359cc1f7328.png"},{"username":"WowMurdock","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420118/medium/de19576fccb495b6dfe4c4c04a56b834.png"},{"username":"hbooo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420120/medium/6c7c7f8db785061356ebb03d044d3329.jpeg"},{"username":"Manicraft1001","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420178/medium/50ec94563a06a9f74f33bd09f01eed4d.jpg"},{"username":"Void123","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420354/medium/86929d44df92a00f9fe900a985c196df_default.png"},{"username":"R4cc","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15422606/medium/a390979662b84694f59de30bdb732141.jpeg"},{"username":"fabricionaweb","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15425808/medium/a9354142e7ae5152c144409d55fda551_default.png"},{"username":"JokeOfDead","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15426890/medium/a383eac9365e9de64fd4ab1d6fd0cb95.jpeg"},{"username":"hkz","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15427174/medium/c88acefb0d7306e1f7470e872029fb39_default.png"},{"username":"Steken","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15428516/medium/d5aea5653c769c3a523182bdb60d1664.png"},{"username":"flar.anton","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15428592/medium/b01fdb365d892e9f811f77fcb50a80a2.jpeg"},{"username":"Bon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15433542/medium/5397da4dfc821f20b6ac14fe0c514e9a.jpeg"},{"username":"bfkadan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15434162/medium/4f9a0b43cfe3acaea60124c14ba7f44a.png"},{"username":"BunnySweety","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15434662/medium/f0ef200a6a0dcf0e1d0e9ecd4148f560_default.png"},{"username":"HRKings","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15436168/medium/69a31e461d38549f01864e7ef10d642e.png"},{"username":"wiston81","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15439078/medium/10f292c8d12a7c21a44b54495fa4a3d8.jpeg"},{"username":"qaz0911","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15440860/medium/3d3e50ee388c72dc4bf7a771761f2d89_default.png"},{"username":"qqyule","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15441462/medium/7a3cdf82710ffb5d8f388bc0bd010665.png"},{"username":"Bims0n","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15445560/medium/603220b603eeb3367e0f0d3fa675247c.jpg"},{"username":"TariqDaCoder","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15446228/medium/50b0f4040112bbd67690b769477398e5_default.png"},{"username":"Anarchon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15449644/medium/e925e1f3e3ffbf0f982391ce263a1a28.jpeg"},{"username":"Ashun","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15453020/medium/ccdcf51c73d6aae40751bb30beee1915_default.png"},{"username":"sebekmartin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15454038/medium/bcfb44598cdfd1d7cd4eb35812538962.jpeg"},{"username":"RagnarGraves","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15459882/medium/143d5af850c1154070a218bea124e9cb_default.png"},{"username":"PrtmPhlp","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15462414/medium/b80db55e9de301432dcd1f8c8b24fd49_default.png"},{"username":"DooYoo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15470768/medium/2a18cf4be67094724b508c9e1e698a21_default.png"},{"username":"espentruls","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15486092/medium/8e38afc3a4ff669226a0cfd3e420ff3a.jpeg"},{"username":"frisco82","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15486922/medium/4e1c5d4189b42508e660daa3c1c25b2a.jpeg"},{"username":"lupineDK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15491798/medium/461bd501e8371c062bf29ea171aedd36_default.png"},{"username":"hillaliy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15492732/medium/0bae17b421604892d888e3fc70cf0587.jpeg"},{"username":"MarcOrfilaCarreras","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15501072/medium/ea52b26c3c6f21e4931e38e3ce3f3d6e.png"},{"username":"robertbridda","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15507822/medium/a368c2e30411bb2da9b49290084191f3.png"},{"username":"MKoniuszko","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15518090/medium/87605434fcc839f6763ab07c50f6d232.jpeg"},{"username":"HeroSizy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15518710/medium/4e79c0e98cbeb536dd961e656331b509.png"},{"username":"dwt136","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15520022/medium/554422503f2baea43ace85facb4546fb_default.png"},{"username":"asifthewebguy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15526719/medium/b18931dd0c800d725048bd440646198b_default.png"},{"username":"eiloogs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15545537/medium/f290a2f1190983530a9b76b2e858a609.gif"},{"username":"_vytdv","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15547289/medium/60d8644cc8ad6f11a92ccea4a14cd098_default.png"},{"username":"crendasien","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15554645/medium/598ab1d4aaf6b8dccd5ba16be92da7b9.jpeg"},{"username":"edxo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15573823/medium/8a565b732a75a77f840dd123cdb30bf4.png"},{"username":"somerlev","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15617065/medium/f4b13513e311ec902d90b2f718412c55.jpg"},{"username":"kid1412621","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15643771/medium/dd455e32de652fa88e6fd97598bdffa7.png"},{"username":"suming","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15644717/medium/244159dfe10fa03436205506f80c9e25.png"},{"username":"nick.gher","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15647517/medium/5374a2c6fef60a3fbf0edf86b997c351_default.png"},{"username":"DataCat","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15650315/medium/ce7c1365adf35c5d490d77500a4607fb_default.png"},{"username":"dizo89","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15658375/medium/0ca745e5017d491fe1b22b0239904de8.jpeg"},{"username":"tee_noodle","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15674577/medium/804d9cf06f5196026acb6436b809d0da_default.png"},{"username":"Marty88","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15674593/medium/492b1509d52bd2809dea768121217125.jpeg"},{"username":"Spillebulle","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15677023/medium/20b98bb85062e07afe0e63618f8a5feb.PNG"},{"username":"petitmewen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15685239/medium/15de9b62d2e0bc25013435f1784bbcc1.jpeg"},{"username":"NoProsNoNoobs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15687709/medium/ae8f65fafeb8bcf74dcb8871bbe46461.png"},{"username":"y.gybson","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15690777/medium/b5cb5d2d5768904ff6586c727e3a6c77.jpeg"},{"username":"inside90","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15704947/medium/c1355fcb30dd76f8e39d98d1d49f1c52.png"},{"username":"RJSkudra","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15709853/medium/c3abf2774913dc4e81fb261d36d7668c.png"},{"username":"binge203","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15713937/medium/77c1cfa4314673db80e6881fd9f64668.gif"},{"username":"Mailootje","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15714337/medium/743c3bc4ab1989966a375eeeec83d8b8.jpeg"},{"username":"tim-wiegers","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15719805/medium/08a96f064813350661cd6b20bf3d7d99.png"},{"username":"GkhnG","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15722911/medium/71a027caec489ef6ce82bcf1888329d0_default.png"},{"username":"Zoen-Millo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15760967/medium/9e956f11adc5b34f5636268b5c485dbf.jpg"},{"username":"HooinKyoma","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15792897/medium/9489f0a9b368e0e827ae758b740a2eed.jpeg"},{"username":"wathergeen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15794495/medium/a83b7fc80d180669ebfd6deb3544cfd0.png"},{"username":"MoeToo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15818233/medium/d35cd6953717706eaf20f6c143c62947.png"},{"username":"itodouble","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15836233/medium/e984caea18fb0673bf319fcf28cef649.png"},{"username":"loslocitos","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15847901/medium/fe30d12fd2cf38212f929e13b169f9ec.jpeg"},{"username":"Oversleep","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15849065/medium/06141f13a6d541d753f3c2f2947b8068_default.png"},{"username":"Beardy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15865139/medium/fca6b9d2b3f52e286d1568f52b83b6a0_default.png"},{"username":"raelyan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15875457/medium/2f4fda1d1aaa5dcc79b328baf3f03151.jpeg"},{"username":"dolphin738","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15913763/medium/ee6fede7b8528ca642329ada80d1cc18.png"},{"username":"brunotco","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15916719/medium/09db45880fc05abc18adb8d932a5ecf9_default.png"},{"username":"LukeIsHereToDevelop","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15924739/medium/3e6cd3940297bb4ba7bb039c93e6f918.png"},{"username":"kennit","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15925879/medium/6b0733ad3c5949b91c55e4d8b03db8a5_default.png"},{"username":"kuunpire","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15950309/medium/8192a4f08f07086828ac9f74ed29a169.jpeg"},{"username":"Sandor-dev","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15951759/medium/0216c2da4eb028164ebbecf1c72f6271_default.png"},{"username":"Meierschlumpf","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15953187/medium/23c744faef1ab84fbdc9351a7850aab6.jpeg"},{"username":"harmlesscat","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15970733/medium/dd8d0214a0250c932bb518b1b55e45a2_default.png"},{"username":"OrzWTF","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15976121/medium/4c4557cbff7ff7b0503455bc59c020e0.jpeg"},{"username":"tagaishi","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15977271/medium/eade504c83a5a1ff831c80a538fbdb44_default.png"},{"username":"azurite928","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15981895/medium/547ccc459ee123e78b5401c499f1022d.png"},{"username":"Ronner231","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16021342/medium/7734d550df2de5a2fec2ffff33e7024c.jpeg"},{"username":"ugyes","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16034148/medium/ed001e3f470a2dea9a8ce955b18e7bd5.png"},{"username":"rpieja","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16045554/medium/bd55baca2ef8b92502a760cc9ee7c505_default.png"},{"username":"flambyisyou","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16051620/medium/3a3bc0c90f6b95ab4ef74396a0a17beb.png"},{"username":"Topbcy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16077170/medium/d3aed33ea56330338756cfcd89477cfe.jpeg"},{"username":"ai5d02sb","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16084674/medium/7c8119fe2a5ca71bb15f636916a42b95_default.png"},{"username":"explosiveparrot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16097722/medium/7762f80fc1da63f5b2eb87de9d640324_default.png"},{"username":"DestroyCom","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16111544/medium/83e3d3ac5c8bfed634cd1a074854db67.png"},{"username":"neotraxo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16116966/medium/b30df957873329019a8a90a69f6efe3a.png"},{"username":"gzxpa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16123314/medium/487b05577310a946b0b98bc72c11213b_default.png"},{"username":"TORIK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16124732/medium/de770890e6411860ac06e8cc2dc0abd0_default.png"},{"username":"sergio.pibot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16138114/medium/80db802b2fcd6bbf19ea4c7413367dca.jpeg"},{"username":"karam-ajaj","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16139838/medium/7539ab958d3c85d5f67e7849483ea8f7.jpeg"},{"username":"SimonHenz97","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16151520/medium/9b94a85b536688e2d94538c384fd0a76.png"},{"username":"olsson82","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16198988/medium/eeaab4cba210c537424d4204754b604e.png"},{"username":"bo3bdo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16222806/medium/8652f3beacb6098dde5a4cd0a29fe80d.jpeg"},{"username":"AngryPlayer04","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16245192/medium/342715274f4dc31fd4132cdae9126188.jpeg"},{"username":"ehatamm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16245884/medium/979d5e5526fe545be9bf46db481f7182.jpeg"},{"username":"Balionelis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16246058/medium/986d62ba363594c517d966fe9178dcbb.png"},{"username":"kwargs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16248816/medium/19ce11f04bf1ae2637e0483399c675f9_default.png"},{"username":"lucicu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16273892/medium/3b09e8f3bead221ef98d6a45a16851dc_default.png"},{"username":"Michael5564445","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16357688/medium/9d9026a8bf3eaccb0417da240932ebf7.png"},{"username":"Netscream","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16359198/medium/694e0c8572dc8a47e6d63da31ec5b992.png"},{"username":"belicstefan04","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16368142/medium/4742dcfd7bf7ad7e33e37ac44fba7e0f.png"},{"username":"Hamad2066","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16371478/medium/f37bbc7685b6757defdbd1494236af61.jpeg"},{"username":"3ct0pl4sm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16399616/medium/ce796d1c40163975624c0a483e56374f.png"},{"username":"sanchez.marcell626","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16433865/medium/3ddde1314764cc2205ffdcd1ae719a91.png"},{"username":"Minoctis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16490079/medium/91fd0849303a4eca033d660d0a7b6854.jpeg"},{"username":"vittoriosoccorso","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16498805/medium/17086b2f1981f734edd1572f79c3158a.jpeg"},{"username":"Worgen325","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16533177/medium/4a62cc6b06095751aeb4b1b3e96db93f.png"},{"username":"homarr","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16657003/medium/3afabfd3de949a54ff5d40ad04552aba.png"},{"username":"mwgg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16658379/medium/763dd09f5c238cc5324d4d5357985292.png"},{"username":"kiwinho","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16671855/medium/bfe3a2d497dc4748a04d02e4ae2139cb.jpeg"},{"username":"tjvg4m34r13","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16679135/medium/7a483b9b0abe0d925e54808e1cb38fa0.jpeg"},{"username":"Diegoem","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16705921/medium/29ce68ebc191fc3f65499511b12de98f_default.png"},{"username":"bouks69","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16746091/medium/b58b1fc08520de416198be9df5d093eb.jpeg"},{"username":"futhgar","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16748067/medium/b8c526b097f9aa9d687250cac3df16dc.jpeg"},{"username":"GrimSQL","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16764343/medium/fff729a76d1f8fbcdaee9bb0c0f5f3fd.png"},{"username":"chnikel","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16767047/medium/3dda2a37e03049dafefe6697bb00f75c.png"},{"username":"yuki19870616","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16767951/medium/f59c848e38382cda6c8464b0a7b9e642_default.png"},{"username":"noamdal","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16782245/medium/b4a72a61f9caf138f0322c0cb987e6d0.png"},{"username":"MalithRukshan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16809057/medium/084d6a5b35fbbeacc70e7021197d222f.png"},{"username":"minirope19","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16930929/medium/e8cbbc26747e31c5a8959215e1dd067b.jpeg"},{"username":"prubin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17503492/medium/96ac87644691e49c1f983f2f094e541c_default.png"},{"username":"toineenzo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12371852/medium/9f1b2bedb4794c59479cd289bdba9fab.png"},{"username":"ArcaneWater","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12421105/medium/1ac82517a6c658f6b62c48aebcb17e86_default.png"},{"username":"Ebedami","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12974801/medium/b596dea5c09454c4c828eac558389755.jpg"},{"username":"SergiSvK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13320543/medium/3df3c79cc5f0c53716c559cd3fd2fc20.png"},{"username":"jeongeon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13362856/medium/eb572f72cde5e5526c517ca3a6489850_default.png"},{"username":"MrTranCFCVN","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13439475/medium/a1789d69c85d90c667194b5d6a518c08_default.png"},{"username":"Kf637","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13530622/medium/118b00bb72d01d3229c97409637e25d1_default.png"},{"username":"Cruellest","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13610615/medium/2a74faa0947ee08d18f7946fb8602c1e.jpg"},{"username":"Thario","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14491372/medium/dd5e142070802a672900121aa3f332a6_default.png"},{"username":"albanobattistella","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14686194/medium/564afcfd76f5cd24751bd669cf4943aa.jpg"},{"username":"Kachelkaiser","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14763406/medium/203a781797da4a18fe0f4e7db8fd547c.png"},{"username":"regi4","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14842936/medium/f7e1d672f562a7db61ba6b4b8f4de41d.png"},{"username":"baton5129","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14891064/medium/8d438f557b82977dd02f0ead3187265f.PNG"},{"username":"meviper","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15958903/medium/209f521ce33a05831fa8d7d1b7babc20_default.png"},{"username":"TheRedCyclops","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16486399/medium/7f39226180120d5a9efcb8e13d8aec8e_default.png"},{"username":"dymek37","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16659221/medium/d1dc6d11d7e7fc370efc5070e837ae03.png"},{"username":"B3CKDOOR","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16744975/medium/e6c7b2d45e76465d54e6efb67c83da7d.png"},{"username":"Larsluph","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16779933/medium/ed7d36f8b44013bad3a16ac0491bd0f7.png"},{"username":"FOEDI","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16781001/medium/6b4552fb72e359aa016f7a054078fac8.png"},{"username":"xmarkurion","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16805443/medium/34a20428427de5aaef99c7d140646803.png"},{"username":"gregid","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16806705/medium/f3c8f4a20436e8538929130142bbc104.png"},{"username":"Flameberg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16820453/medium/d47be866148474c9d05fec6fbe406d88.png"},{"username":"Playfust","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16872865/medium/5f4609cc711e5fb9fa8a0b178635769c.jpeg"},{"username":"Cotignac","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16879297/medium/81ff353edf030699a159bb79cda26e84.jpg"},{"username":"LeaHun","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16916375/medium/618520f0543b1e212ebc83d66b683d4b_default.png"},{"username":"jackwellerreal","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16919717/medium/37bbfdc03893f141133ccc619593266d.png"},{"username":"andrius.cim","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16967845/medium/46028fc1a0ddfaaeebcb37b39739625d_default.png"},{"username":"xjxexrxrxyx","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17041412/medium/d34d664166db6fb25579bca9ff3b50b4.jpeg"},{"username":"bilhal.fellah","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17044572/medium/d1ec6f17e4aa013e9eededc83778d2c6.png"},{"username":"the_octo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17058060/medium/7423ab3a4cabb67f5decb2e2dfa2b675_default.png"},{"username":"BamesJond","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17075846/medium/128d7ffd40254c8e376f45678e2fc620_default.png"},{"username":"Kornikus","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17134240/medium/d7a42b2c30db46ff152699ca01f9e11a_default.png"},{"username":"xoxyuxu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17176526/medium/108055aa24343043de852e412bec74be.png"},{"username":"cryptodntsleep","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17249408/medium/b9e15aa2b24a0dbc1e4f194aa8ed5109.png"},{"username":"yaniorg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17261842/medium/7dbfc77f21c826845961243c44540d26.jpg"},{"username":"Vidariondr","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17262438/medium/45fbc71be02ef27296b6f423e97b6a03_default.png"},{"username":"Fastery","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17263066/medium/701b0edc59676174863ad651528bbb37.jpeg"},{"username":"stratself","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17290388/medium/57d9d8161b3fd0abf4dc5558b4a1fa05_default.png"},{"username":"wuzeqin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17292606/medium/b9e0308410b31337e2d7aa6ed346d718_default.png"},{"username":"ChristopherBull","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17304338/medium/21a175ce596bfae81430767467908b90.jpeg"},{"username":"darkbcnlord","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17311436/medium/b271bc0b419ec3a26ddb7b63ff8ffc4b.png"},{"username":"zhoran1997","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17344028/medium/c8f450b5a8f1e9494a45dc60af7ce63e.png"},{"username":"gilalves1703","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17447768/medium/3f1de562a5c2391c88bbf8d5cf40a266.png"},{"username":"iServeCloud","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17470960/medium/11649b99d609438d66455a4d2fdc70f7.png"},{"username":"guibolzantvbox","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17474136/medium/59a576e6da538664ceb972253916fa02.jpeg"},{"username":"ivann136","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17506062/medium/67d09ada36fac5f444a1f7517e3a97bd_default.png"}] \ No newline at end of file diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index c795b706d..3214ec298 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -24,7 +24,7 @@ "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^6.1.1", - "typescript-eslint": "^8.50.1" + "typescript-eslint": "^8.51.0" }, "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0",