aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/cloud_federation_api/lib/Capabilities.php39
-rw-r--r--apps/cloud_federation_api/lib/Controller/RequestHandlerController.php179
-rw-r--r--apps/cloud_federation_api/openapi.json33
-rw-r--r--apps/dav/l10n/eu.js2
-rw-r--r--apps/dav/l10n/eu.json2
-rw-r--r--apps/dav/l10n/gl.js2
-rw-r--r--apps/dav/l10n/gl.json2
-rw-r--r--apps/federatedfilesharing/l10n/eu.js4
-rw-r--r--apps/federatedfilesharing/l10n/eu.json4
-rw-r--r--apps/federatedfilesharing/lib/FederatedShareProvider.php3
-rw-r--r--apps/federatedfilesharing/lib/Notifications.php3
-rw-r--r--apps/files/l10n/eu.js28
-rw-r--r--apps/files/l10n/eu.json28
-rw-r--r--apps/files/src/components/FilesListVirtual.vue20
-rw-r--r--apps/files/src/views/FilesList.vue23
-rw-r--r--apps/files_external/l10n/eu.js8
-rw-r--r--apps/files_external/l10n/eu.json8
-rw-r--r--apps/files_external/l10n/it.js9
-rw-r--r--apps/files_external/l10n/it.json9
-rw-r--r--apps/files_external/lib/Config/SystemMountPoint.php3
-rw-r--r--apps/files_reminders/l10n/ar.js4
-rw-r--r--apps/files_reminders/l10n/ar.json4
-rw-r--r--apps/files_reminders/l10n/cs.js4
-rw-r--r--apps/files_reminders/l10n/cs.json4
-rw-r--r--apps/files_reminders/l10n/de.js4
-rw-r--r--apps/files_reminders/l10n/de.json4
-rw-r--r--apps/files_reminders/l10n/de_DE.js4
-rw-r--r--apps/files_reminders/l10n/de_DE.json4
-rw-r--r--apps/files_reminders/l10n/el.js4
-rw-r--r--apps/files_reminders/l10n/el.json4
-rw-r--r--apps/files_reminders/l10n/en_GB.js4
-rw-r--r--apps/files_reminders/l10n/en_GB.json4
-rw-r--r--apps/files_reminders/l10n/es.js4
-rw-r--r--apps/files_reminders/l10n/es.json4
-rw-r--r--apps/files_reminders/l10n/eu.js21
-rw-r--r--apps/files_reminders/l10n/eu.json19
-rw-r--r--apps/files_reminders/l10n/fi.js4
-rw-r--r--apps/files_reminders/l10n/fi.json4
-rw-r--r--apps/files_reminders/l10n/fr.js4
-rw-r--r--apps/files_reminders/l10n/fr.json4
-rw-r--r--apps/files_reminders/l10n/ga.js4
-rw-r--r--apps/files_reminders/l10n/ga.json4
-rw-r--r--apps/files_reminders/l10n/gl.js4
-rw-r--r--apps/files_reminders/l10n/gl.json4
-rw-r--r--apps/files_reminders/l10n/hu.js4
-rw-r--r--apps/files_reminders/l10n/hu.json4
-rw-r--r--apps/files_reminders/l10n/it.js4
-rw-r--r--apps/files_reminders/l10n/it.json4
-rw-r--r--apps/files_reminders/l10n/ja.js4
-rw-r--r--apps/files_reminders/l10n/ja.json4
-rw-r--r--apps/files_reminders/l10n/ko.js4
-rw-r--r--apps/files_reminders/l10n/ko.json4
-rw-r--r--apps/files_reminders/l10n/lt_LT.js4
-rw-r--r--apps/files_reminders/l10n/lt_LT.json4
-rw-r--r--apps/files_reminders/l10n/mk.js4
-rw-r--r--apps/files_reminders/l10n/mk.json4
-rw-r--r--apps/files_reminders/l10n/nb.js4
-rw-r--r--apps/files_reminders/l10n/nb.json4
-rw-r--r--apps/files_reminders/l10n/pl.js4
-rw-r--r--apps/files_reminders/l10n/pl.json4
-rw-r--r--apps/files_reminders/l10n/pt_BR.js4
-rw-r--r--apps/files_reminders/l10n/pt_BR.json4
-rw-r--r--apps/files_reminders/l10n/ro.js4
-rw-r--r--apps/files_reminders/l10n/ro.json4
-rw-r--r--apps/files_reminders/l10n/ru.js4
-rw-r--r--apps/files_reminders/l10n/ru.json4
-rw-r--r--apps/files_reminders/l10n/sc.js4
-rw-r--r--apps/files_reminders/l10n/sc.json4
-rw-r--r--apps/files_reminders/l10n/sr.js4
-rw-r--r--apps/files_reminders/l10n/sr.json4
-rw-r--r--apps/files_reminders/l10n/sv.js4
-rw-r--r--apps/files_reminders/l10n/sv.json4
-rw-r--r--apps/files_reminders/l10n/tr.js4
-rw-r--r--apps/files_reminders/l10n/tr.json4
-rw-r--r--apps/files_reminders/l10n/ug.js4
-rw-r--r--apps/files_reminders/l10n/ug.json4
-rw-r--r--apps/files_reminders/l10n/uk.js4
-rw-r--r--apps/files_reminders/l10n/uk.json4
-rw-r--r--apps/files_reminders/l10n/zh_CN.js4
-rw-r--r--apps/files_reminders/l10n/zh_CN.json4
-rw-r--r--apps/files_reminders/l10n/zh_HK.js4
-rw-r--r--apps/files_reminders/l10n/zh_HK.json4
-rw-r--r--apps/files_reminders/l10n/zh_TW.js4
-rw-r--r--apps/files_reminders/l10n/zh_TW.json4
-rw-r--r--apps/files_sharing/l10n/eu.js2
-rw-r--r--apps/files_sharing/l10n/eu.json2
-rw-r--r--apps/files_sharing/l10n/it.js9
-rw-r--r--apps/files_sharing/l10n/it.json9
-rw-r--r--apps/files_sharing/lib/External/Storage.php1
-rw-r--r--apps/files_trashbin/lib/Sabre/TrashbinPlugin.php10
-rw-r--r--apps/settings/l10n/ar.js2
-rw-r--r--apps/settings/l10n/ar.json2
-rw-r--r--apps/settings/l10n/en_GB.js2
-rw-r--r--apps/settings/l10n/en_GB.json2
-rw-r--r--apps/settings/l10n/eu.js12
-rw-r--r--apps/settings/l10n/eu.json12
-rw-r--r--apps/settings/l10n/gl.js8
-rw-r--r--apps/settings/l10n/gl.json8
-rw-r--r--apps/settings/l10n/it.js55
-rw-r--r--apps/settings/l10n/it.json55
-rw-r--r--apps/settings/l10n/zh_HK.js2
-rw-r--r--apps/settings/l10n/zh_HK.json2
-rw-r--r--apps/settings/lib/AppInfo/Application.php3
-rw-r--r--apps/systemtags/l10n/it.js11
-rw-r--r--apps/systemtags/l10n/it.json11
-rw-r--r--apps/systemtags/l10n/zh_CN.js1
-rw-r--r--apps/systemtags/l10n/zh_CN.json1
-rw-r--r--apps/user_ldap/l10n/it.js9
-rw-r--r--apps/user_ldap/l10n/it.json9
-rw-r--r--build/integration/features/bootstrap/FederationContext.php2
-rw-r--r--build/integration/federation_features/cleanup-remote-storage.feature21
-rw-r--r--core/Command/App/Remove.php4
-rw-r--r--core/Command/Encryption/MigrateKeyStorage.php48
-rw-r--r--core/Controller/OCMController.php12
-rw-r--r--core/Migrations/Version31000Date20240101084401.php135
-rw-r--r--core/l10n/eu.js2
-rw-r--r--core/l10n/eu.json2
-rw-r--r--core/l10n/gl.js4
-rw-r--r--core/l10n/gl.json4
-rw-r--r--cypress/e2e/files_sharing/public-share/view_view-only-no-download.cy.ts4
-rw-r--r--cypress/e2e/files_sharing/public-share/view_view-only.cy.ts4
-rw-r--r--dist/files-main.js4
-rw-r--r--dist/files-main.js.map2
-rw-r--r--lib/composer/composer/autoload_classmap.php27
-rw-r--r--lib/composer/composer/autoload_static.php27
-rw-r--r--lib/l10n/eu.js1
-rw-r--r--lib/l10n/eu.json1
-rw-r--r--lib/private/Federation/CloudFederationProviderManager.php98
-rw-r--r--lib/private/Files/Storage/Wrapper/Encoding.php4
-rw-r--r--lib/private/OCM/Model/OCMProvider.php49
-rw-r--r--lib/private/OCM/OCMDiscoveryService.php48
-rw-r--r--lib/private/OCM/OCMSignatoryManager.php160
-rw-r--r--lib/private/Security/IdentityProof/Manager.php51
-rw-r--r--lib/private/Security/Signature/Db/SignatoryMapper.php114
-rw-r--r--lib/private/Security/Signature/Model/IncomingSignedRequest.php268
-rw-r--r--lib/private/Security/Signature/Model/OutgoingSignedRequest.php229
-rw-r--r--lib/private/Security/Signature/Model/SignedRequest.php216
-rw-r--r--lib/private/Security/Signature/SignatureManager.php425
-rw-r--r--lib/private/Server.php17
-rw-r--r--lib/public/OCM/IOCMProvider.php24
-rw-r--r--lib/unstable/Config/Exceptions/IncorrectTypeException.php1
-rw-r--r--lib/unstable/Config/Exceptions/TypeConflictException.php1
-rw-r--r--lib/unstable/Config/Exceptions/UnknownKeyException.php1
-rw-r--r--lib/unstable/Config/IUserConfig.php43
-rw-r--r--lib/unstable/Config/ValueType.php9
-rw-r--r--lib/unstable/Security/Signature/Enum/DigestAlgorithm.php34
-rw-r--r--lib/unstable/Security/Signature/Enum/SignatoryStatus.php24
-rw-r--r--lib/unstable/Security/Signature/Enum/SignatoryType.php30
-rw-r--r--lib/unstable/Security/Signature/Enum/SignatureAlgorithm.php21
-rw-r--r--lib/unstable/Security/Signature/Exceptions/IdentityNotFoundException.php15
-rw-r--r--lib/unstable/Security/Signature/Exceptions/IncomingRequestException.php15
-rw-r--r--lib/unstable/Security/Signature/Exceptions/InvalidKeyOriginException.php15
-rw-r--r--lib/unstable/Security/Signature/Exceptions/InvalidSignatureException.php15
-rw-r--r--lib/unstable/Security/Signature/Exceptions/SignatoryConflictException.php15
-rw-r--r--lib/unstable/Security/Signature/Exceptions/SignatoryException.php15
-rw-r--r--lib/unstable/Security/Signature/Exceptions/SignatoryNotFoundException.php15
-rw-r--r--lib/unstable/Security/Signature/Exceptions/SignatureElementNotFoundException.php15
-rw-r--r--lib/unstable/Security/Signature/Exceptions/SignatureException.php17
-rw-r--r--lib/unstable/Security/Signature/Exceptions/SignatureNotFoundException.php15
-rw-r--r--lib/unstable/Security/Signature/IIncomingSignedRequest.php66
-rw-r--r--lib/unstable/Security/Signature/IOutgoingSignedRequest.php112
-rw-r--r--lib/unstable/Security/Signature/ISignatoryManager.php73
-rw-r--r--lib/unstable/Security/Signature/ISignatureManager.php136
-rw-r--r--lib/unstable/Security/Signature/ISignedRequest.php121
-rw-r--r--lib/unstable/Security/Signature/Model/Signatory.php194
-rw-r--r--version.php2
166 files changed, 3569 insertions, 395 deletions
diff --git a/apps/cloud_federation_api/lib/Capabilities.php b/apps/cloud_federation_api/lib/Capabilities.php
index ca4ea928cb8..deca7fe1733 100644
--- a/apps/cloud_federation_api/lib/Capabilities.php
+++ b/apps/cloud_federation_api/lib/Capabilities.php
@@ -6,20 +6,27 @@ declare(strict_types=1);
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-
namespace OCA\CloudFederationAPI;
+use NCU\Security\Signature\Exceptions\IdentityNotFoundException;
+use NCU\Security\Signature\Exceptions\SignatoryException;
+use OC\OCM\OCMSignatoryManager;
use OCP\Capabilities\ICapability;
+use OCP\IAppConfig;
use OCP\IURLGenerator;
use OCP\OCM\Exceptions\OCMArgumentException;
use OCP\OCM\IOCMProvider;
+use Psr\Log\LoggerInterface;
class Capabilities implements ICapability {
- public const API_VERSION = '1.0-proposal1';
+ public const API_VERSION = '1.1'; // informative, real version.
public function __construct(
private IURLGenerator $urlGenerator,
+ private IAppConfig $appConfig,
private IOCMProvider $provider,
+ private readonly OCMSignatoryManager $ocmSignatoryManager,
+ private readonly LoggerInterface $logger,
) {
}
@@ -28,15 +35,20 @@ class Capabilities implements ICapability {
*
* @return array{
* ocm: array{
+ * apiVersion: '1.0-proposal1',
* enabled: bool,
- * apiVersion: string,
* endPoint: string,
+ * publicKey: array{
+ * keyId: string,
+ * publicKeyPem: string,
+ * },
* resourceTypes: list<array{
* name: string,
* shareTypes: list<string>,
* protocols: array<string, string>
- * }>,
- * },
+ * }>,
+ * version: string
+ * }
* }
* @throws OCMArgumentException
*/
@@ -60,6 +72,21 @@ class Capabilities implements ICapability {
$this->provider->addResourceType($resource);
- return ['ocm' => $this->provider->jsonSerialize()];
+ // Adding a public key to the ocm discovery
+ try {
+ if (!$this->appConfig->getValueBool('core', OCMSignatoryManager::APPCONFIG_SIGN_DISABLED, lazy: true)) {
+ /**
+ * @experimental 31.0.0
+ * @psalm-suppress UndefinedInterfaceMethod
+ */
+ $this->provider->setSignatory($this->ocmSignatoryManager->getLocalSignatory());
+ } else {
+ $this->logger->debug('ocm public key feature disabled');
+ }
+ } catch (SignatoryException|IdentityNotFoundException $e) {
+ $this->logger->warning('cannot generate local signatory', ['exception' => $e]);
+ }
+
+ return ['ocm' => json_decode(json_encode($this->provider->jsonSerialize()), true)];
}
}
diff --git a/apps/cloud_federation_api/lib/Controller/RequestHandlerController.php b/apps/cloud_federation_api/lib/Controller/RequestHandlerController.php
index a7b17f010ce..a243d286c71 100644
--- a/apps/cloud_federation_api/lib/Controller/RequestHandlerController.php
+++ b/apps/cloud_federation_api/lib/Controller/RequestHandlerController.php
@@ -5,8 +5,17 @@
*/
namespace OCA\CloudFederationAPI\Controller;
+use NCU\Security\Signature\Exceptions\IdentityNotFoundException;
+use NCU\Security\Signature\Exceptions\IncomingRequestException;
+use NCU\Security\Signature\Exceptions\SignatoryNotFoundException;
+use NCU\Security\Signature\Exceptions\SignatureException;
+use NCU\Security\Signature\Exceptions\SignatureNotFoundException;
+use NCU\Security\Signature\IIncomingSignedRequest;
+use NCU\Security\Signature\ISignatureManager;
+use OC\OCM\OCMSignatoryManager;
use OCA\CloudFederationAPI\Config;
use OCA\CloudFederationAPI\ResponseDefinitions;
+use OCA\FederatedFileSharing\AddressHandler;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\Attribute\BruteForceProtection;
@@ -22,11 +31,14 @@ use OCP\Federation\Exceptions\ProviderDoesNotExistsException;
use OCP\Federation\ICloudFederationFactory;
use OCP\Federation\ICloudFederationProviderManager;
use OCP\Federation\ICloudIdManager;
+use OCP\IAppConfig;
use OCP\IGroupManager;
use OCP\IRequest;
use OCP\IURLGenerator;
use OCP\IUserManager;
use OCP\Share\Exceptions\ShareNotFound;
+use OCP\Share\IProviderFactory;
+use OCP\Share\IShare;
use OCP\Util;
use Psr\Log\LoggerInterface;
@@ -50,8 +62,13 @@ class RequestHandlerController extends Controller {
private IURLGenerator $urlGenerator,
private ICloudFederationProviderManager $cloudFederationProviderManager,
private Config $config,
+ private readonly AddressHandler $addressHandler,
+ private readonly IAppConfig $appConfig,
private ICloudFederationFactory $factory,
private ICloudIdManager $cloudIdManager,
+ private readonly ISignatureManager $signatureManager,
+ private readonly OCMSignatoryManager $signatoryManager,
+ private readonly IProviderFactory $shareProviderFactory,
) {
parent::__construct($appName, $request);
}
@@ -81,11 +98,20 @@ class RequestHandlerController extends Controller {
#[NoCSRFRequired]
#[BruteForceProtection(action: 'receiveFederatedShare')]
public function addShare($shareWith, $name, $description, $providerId, $owner, $ownerDisplayName, $sharedBy, $sharedByDisplayName, $protocol, $shareType, $resourceType) {
+ try {
+ // if request is signed and well signed, no exception are thrown
+ // if request is not signed and host is known for not supporting signed request, no exception are thrown
+ $signedRequest = $this->getSignedRequest();
+ $this->confirmSignedOrigin($signedRequest, 'owner', $owner);
+ } catch (IncomingRequestException $e) {
+ $this->logger->warning('incoming request exception', ['exception' => $e]);
+ return new JSONResponse(['message' => $e->getMessage(), 'validationErrors' => []], Http::STATUS_BAD_REQUEST);
+ }
+
// check if all required parameters are set
if ($shareWith === null ||
$name === null ||
$providerId === null ||
- $owner === null ||
$resourceType === null ||
$shareType === null ||
!is_array($protocol) ||
@@ -208,6 +234,16 @@ class RequestHandlerController extends Controller {
#[PublicPage]
#[BruteForceProtection(action: 'receiveFederatedShareNotification')]
public function receiveNotification($notificationType, $resourceType, $providerId, ?array $notification) {
+ try {
+ // if request is signed and well signed, no exception are thrown
+ // if request is not signed and host is known for not supporting signed request, no exception are thrown
+ $signedRequest = $this->getSignedRequest();
+ $this->confirmShareOrigin($signedRequest, $notification['sharedSecret'] ?? '');
+ } catch (IncomingRequestException $e) {
+ $this->logger->warning('incoming request exception', ['exception' => $e]);
+ return new JSONResponse(['message' => $e->getMessage(), 'validationErrors' => []], Http::STATUS_BAD_REQUEST);
+ }
+
// check if all required parameters are set
if ($notificationType === null ||
$resourceType === null ||
@@ -256,6 +292,7 @@ class RequestHandlerController extends Controller {
$response->throttle();
return $response;
} catch (\Exception $e) {
+ $this->logger->warning('incoming notification exception', ['exception' => $e]);
return new JSONResponse(
[
'message' => 'Internal error at ' . $this->urlGenerator->getBaseUrl(),
@@ -286,4 +323,144 @@ class RequestHandlerController extends Controller {
return $uid;
}
+
+
+ /**
+ * returns signed request if available.
+ * throw an exception:
+ * - if request is signed, but wrongly signed
+ * - if request is not signed but instance is configured to only accept signed ocm request
+ *
+ * @return IIncomingSignedRequest|null null if remote does not (and never did) support signed request
+ * @throws IncomingRequestException
+ */
+ private function getSignedRequest(): ?IIncomingSignedRequest {
+ try {
+ $signedRequest = $this->signatureManager->getIncomingSignedRequest($this->signatoryManager);
+ $this->logger->debug('signed request available', ['signedRequest' => $signedRequest]);
+ return $signedRequest;
+ } catch (SignatureNotFoundException|SignatoryNotFoundException $e) {
+ $this->logger->debug('remote does not support signed request', ['exception' => $e]);
+ // remote does not support signed request.
+ // currently we still accept unsigned request until lazy appconfig
+ // core.enforce_signed_ocm_request is set to true (default: false)
+ if ($this->appConfig->getValueBool('core', OCMSignatoryManager::APPCONFIG_SIGN_ENFORCED, lazy: true)) {
+ $this->logger->notice('ignored unsigned request', ['exception' => $e]);
+ throw new IncomingRequestException('Unsigned request');
+ }
+ } catch (SignatureException $e) {
+ $this->logger->warning('wrongly signed request', ['exception' => $e]);
+ throw new IncomingRequestException('Invalid signature');
+ }
+ return null;
+ }
+
+
+ /**
+ * confirm that the value related to $key entry from the payload is in format userid@hostname
+ * and compare hostname with the origin of the signed request.
+ *
+ * If request is not signed, we still verify that the hostname from the extracted value does,
+ * actually, not support signed request
+ *
+ * @param IIncomingSignedRequest|null $signedRequest
+ * @param string $key entry from data available in data
+ * @param string $value value itself used in case request is not signed
+ *
+ * @throws IncomingRequestException
+ */
+ private function confirmSignedOrigin(?IIncomingSignedRequest $signedRequest, string $key, string $value): void {
+ if ($signedRequest === null) {
+ $instance = $this->getHostFromFederationId($value);
+ try {
+ $this->signatureManager->getSignatory($instance);
+ throw new IncomingRequestException('instance is supposed to sign its request');
+ } catch (SignatoryNotFoundException) {
+ return;
+ }
+ }
+
+ $body = json_decode($signedRequest->getBody(), true) ?? [];
+ $entry = trim($body[$key] ?? '', '@');
+ if ($this->getHostFromFederationId($entry) !== $signedRequest->getOrigin()) {
+ throw new IncomingRequestException('share initiation (' . $signedRequest->getOrigin() . ') from different instance (' . $entry . ') [key=' . $key . ']');
+ }
+ }
+
+
+ /**
+ * confirm that the value related to share token is in format userid@hostname
+ * and compare hostname with the origin of the signed request.
+ *
+ * If request is not signed, we still verify that the hostname from the extracted value does,
+ * actually, not support signed request
+ *
+ * @param IIncomingSignedRequest|null $signedRequest
+ * @param string $token
+ *
+ * @throws IncomingRequestException
+ */
+ private function confirmShareOrigin(?IIncomingSignedRequest $signedRequest, string $token): void {
+ if ($token === '') {
+ throw new BadRequestException(['sharedSecret']);
+ }
+
+ $provider = $this->shareProviderFactory->getProviderForType(IShare::TYPE_REMOTE);
+ $share = $provider->getShareByToken($token);
+ try {
+ $this->confirmShareEntry($signedRequest, $share->getSharedWith());
+ } catch (IncomingRequestException $e) {
+ // notification might come from the instance that owns the share
+ $this->logger->debug('could not confirm origin on sharedWith (' . $share->getSharedWIth() . '); going with shareOwner (' . $share->getShareOwner() . ')', ['exception' => $e]);
+ try {
+ $this->confirmShareEntry($signedRequest, $share->getShareOwner());
+ } catch (IncomingRequestException $f) {
+ // if both entry are failing, we log first exception as warning and second exception
+ // will be logged as warning by the controller
+ $this->logger->warning('could not confirm origin on sharedWith (' . $share->getSharedWIth() . '); going with shareOwner (' . $share->getShareOwner() . ')', ['exception' => $e]);
+ throw $f;
+ }
+ }
+ }
+
+ /**
+ * @param IIncomingSignedRequest|null $signedRequest
+ * @param string $entry
+ *
+ * @return void
+ * @throws IncomingRequestException
+ */
+ private function confirmShareEntry(?IIncomingSignedRequest $signedRequest, string $entry): void {
+ $instance = $this->getHostFromFederationId($entry);
+ if ($signedRequest === null) {
+ try {
+ $this->signatureManager->getSignatory($instance);
+ throw new IncomingRequestException('instance is supposed to sign its request');
+ } catch (SignatoryNotFoundException) {
+ return;
+ }
+ } elseif ($instance !== $signedRequest->getOrigin()) {
+ throw new IncomingRequestException('token sharedWith (' . $instance . ') not linked to origin (' . $signedRequest->getOrigin() . ')');
+ }
+ }
+
+ /**
+ * @param string $entry
+ * @return string
+ * @throws IncomingRequestException
+ */
+ private function getHostFromFederationId(string $entry): string {
+ if (!str_contains($entry, '@')) {
+ throw new IncomingRequestException('entry ' . $entry . ' does not contains @');
+ }
+ $rightPart = substr($entry, strrpos($entry, '@') + 1);
+
+ // in case the full scheme is sent; getting rid of it
+ $rightPart = $this->addressHandler->removeProtocolFromUrl($rightPart);
+ try {
+ return $this->signatureManager->extractIdentityFromUri('https://' . $rightPart);
+ } catch (IdentityNotFoundException) {
+ throw new IncomingRequestException('invalid host within federation id: ' . $entry);
+ }
+ }
}
diff --git a/apps/cloud_federation_api/openapi.json b/apps/cloud_federation_api/openapi.json
index d15c7cef813..1c69ea2d083 100644
--- a/apps/cloud_federation_api/openapi.json
+++ b/apps/cloud_federation_api/openapi.json
@@ -43,21 +43,41 @@
"ocm": {
"type": "object",
"required": [
- "enabled",
"apiVersion",
+ "enabled",
"endPoint",
- "resourceTypes"
+ "publicKey",
+ "resourceTypes",
+ "version"
],
"properties": {
+ "apiVersion": {
+ "type": "string",
+ "enum": [
+ "1.0-proposal1"
+ ]
+ },
"enabled": {
"type": "boolean"
},
- "apiVersion": {
- "type": "string"
- },
"endPoint": {
"type": "string"
},
+ "publicKey": {
+ "type": "object",
+ "required": [
+ "keyId",
+ "publicKeyPem"
+ ],
+ "properties": {
+ "keyId": {
+ "type": "string"
+ },
+ "publicKeyPem": {
+ "type": "string"
+ }
+ }
+ },
"resourceTypes": {
"type": "array",
"items": {
@@ -85,6 +105,9 @@
}
}
}
+ },
+ "version": {
+ "type": "string"
}
}
}
diff --git a/apps/dav/l10n/eu.js b/apps/dav/l10n/eu.js
index 351be96889f..fe432a4102e 100644
--- a/apps/dav/l10n/eu.js
+++ b/apps/dav/l10n/eu.js
@@ -72,6 +72,8 @@ OC.L10N.register(
"Description: %s" : "Deskripzioa: %s",
"Where: %s" : "Non: %s",
"%1$s via %2$s" : "%2$s bidez, %1$s",
+ "In a %1$s on %2$s for the entire day" : " %1$s batean %2$s(e)n egun osorako",
+ "In a %1$s on %2$s between %3$s - %4$s" : "%1$s batean %2$s(e)n %3$s eta %4$s artean",
"Every Day for the entire day" : "Egunero egun osoan",
"Every Day for the entire day until %1$s" : "Egunero egun osoan %1$s arte",
"Every Day between %1$s - %2$s" : "Egunero %1$setatik %2$setara",
diff --git a/apps/dav/l10n/eu.json b/apps/dav/l10n/eu.json
index b9f4bdffb57..1c9a3a6b54f 100644
--- a/apps/dav/l10n/eu.json
+++ b/apps/dav/l10n/eu.json
@@ -70,6 +70,8 @@
"Description: %s" : "Deskripzioa: %s",
"Where: %s" : "Non: %s",
"%1$s via %2$s" : "%2$s bidez, %1$s",
+ "In a %1$s on %2$s for the entire day" : " %1$s batean %2$s(e)n egun osorako",
+ "In a %1$s on %2$s between %3$s - %4$s" : "%1$s batean %2$s(e)n %3$s eta %4$s artean",
"Every Day for the entire day" : "Egunero egun osoan",
"Every Day for the entire day until %1$s" : "Egunero egun osoan %1$s arte",
"Every Day between %1$s - %2$s" : "Egunero %1$setatik %2$setara",
diff --git a/apps/dav/l10n/gl.js b/apps/dav/l10n/gl.js
index a7047b11af1..f4a7fba1c69 100644
--- a/apps/dav/l10n/gl.js
+++ b/apps/dav/l10n/gl.js
@@ -274,7 +274,7 @@ OC.L10N.register(
"Notifications are sent via background jobs, so these must occur often enough." : "As notificacións enviaranse mediante procesos en segundo plano, polo que estes teñen que suceder con frecuencia.",
"Send reminder notifications to calendar sharees as well" : "Enviar notificacións de lembrete tamén aos que comparten calendario",
"Reminders are always sent to organizers and attendees." : "Os lembretes envíanselle sempre aos organizadores e aos asistentes.",
- "Enable notifications for events via push" : "Activar o envío de notificacións do automáticas para eventos",
+ "Enable notifications for events via push" : "Activar o envío de notificacións emerxentes para eventos",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instale tamén a {calendarappstoreopen}aplicación do Calendario{linkclose} ou {calendardocopen}conecte os seus escritorio e móbil para sincronizalos ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Asegúrese de ter configurado correctamente {emailopen}o servidor de correo-e{linkclose}.",
"There was an error updating your attendance status." : "Produciuse un erro ao actualizar o seu estado de asistencia.",
diff --git a/apps/dav/l10n/gl.json b/apps/dav/l10n/gl.json
index ecfd55ada41..9166e7e4b18 100644
--- a/apps/dav/l10n/gl.json
+++ b/apps/dav/l10n/gl.json
@@ -272,7 +272,7 @@
"Notifications are sent via background jobs, so these must occur often enough." : "As notificacións enviaranse mediante procesos en segundo plano, polo que estes teñen que suceder con frecuencia.",
"Send reminder notifications to calendar sharees as well" : "Enviar notificacións de lembrete tamén aos que comparten calendario",
"Reminders are always sent to organizers and attendees." : "Os lembretes envíanselle sempre aos organizadores e aos asistentes.",
- "Enable notifications for events via push" : "Activar o envío de notificacións do automáticas para eventos",
+ "Enable notifications for events via push" : "Activar o envío de notificacións emerxentes para eventos",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instale tamén a {calendarappstoreopen}aplicación do Calendario{linkclose} ou {calendardocopen}conecte os seus escritorio e móbil para sincronizalos ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Asegúrese de ter configurado correctamente {emailopen}o servidor de correo-e{linkclose}.",
"There was an error updating your attendance status." : "Produciuse un erro ao actualizar o seu estado de asistencia.",
diff --git a/apps/federatedfilesharing/l10n/eu.js b/apps/federatedfilesharing/l10n/eu.js
index 02879dce00e..9d38f88ff98 100644
--- a/apps/federatedfilesharing/l10n/eu.js
+++ b/apps/federatedfilesharing/l10n/eu.js
@@ -33,9 +33,11 @@ OC.L10N.register(
"Unable to update federated files sharing config" : "Ezin da eguneratu fitxategi partekatze federatuaren konfigurazioa",
"Federated Cloud" : "Hodei Federatua",
"You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Nextcloud zerbitzaria darabilen edo Open Cloud Mesh (OCM) zerbitzuarekin bateragarri den zerbitzua erabiltzen duen edonorekin partekatu dezakezu! Ipini beren Federatutako Hodei IDa partekatze leihoan. Horrelako zerbait izan ohi da: erabiltzailea@nextcloud.zerbitzaria.com",
+ "Your Federated Cloud ID" : "Zure federatutako hodei IDa",
"Share it so your friends can share files with you:" : "Bidali lagunei, zurekin fitxategiak parteka ditzaten:",
"Facebook" : "Facebook",
"X (formerly Twitter)" : "X (lehen Twitter)",
+ "formerly Twitter" : "lehen Twitter",
"Mastodon" : "Mastodon",
"Add to your website" : "Gehitu zure webgunera",
"Share with me via Nextcloud" : "Partekatu nirekin Nextcloud bidez",
@@ -44,12 +46,14 @@ OC.L10N.register(
"Share with me through my #Nextcloud Federated Cloud ID" : "Partekatu nirekin, nire federatutako #Nextcloud hodei IDa erabiliz",
"Cloud ID copied to the clipboard" : "Hodei IDa arbelean kopiatu da",
"Copy to clipboard" : "Kopiatu arbelera",
+ "Clipboard not available. Please copy the cloud ID manually." : "Arbela ez dago eskuragarri, mesedez kopiatu hodei IDa eskuz.",
"Copied!" : "Kopiatuta!",
"Cancel" : "Ezeztatu",
"Add remote share" : "Gehitu urruneko partekatzea",
"Remote share" : "Urruneko partekatzea",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "{owner}@{remote}(r)en {name} urruneko partekatzea gehitu nahi duzu?",
"Remote share password" : "Urruneko partekatzearen pasahitza",
+ "Incoming share could not be processed" : "Sarrerako partekatzea ezin izan da prozesatu",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "%1$spartekatzeak huts egin du dagoeneko %2$serabiltzailearekin partekatuta dagoelako",
"Not allowed to create a federated share with the same user" : "Ezin da erabiltzaile berarekin federatutako partekatzea sortu.",
"Adjust how people can share between servers. This includes shares between users on this server as well if they are using federated sharing." : "Doitu nola parteka dezakeen jendeak zerbitzarien artean. Horrek barne hartzen ditu zerbitzari honetako erabiltzaileen arteko partekatzeak, partekatze federatua erabiltzen ari badira.",
diff --git a/apps/federatedfilesharing/l10n/eu.json b/apps/federatedfilesharing/l10n/eu.json
index ee50e6e7515..d4e28b88c3f 100644
--- a/apps/federatedfilesharing/l10n/eu.json
+++ b/apps/federatedfilesharing/l10n/eu.json
@@ -31,9 +31,11 @@
"Unable to update federated files sharing config" : "Ezin da eguneratu fitxategi partekatze federatuaren konfigurazioa",
"Federated Cloud" : "Hodei Federatua",
"You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Nextcloud zerbitzaria darabilen edo Open Cloud Mesh (OCM) zerbitzuarekin bateragarri den zerbitzua erabiltzen duen edonorekin partekatu dezakezu! Ipini beren Federatutako Hodei IDa partekatze leihoan. Horrelako zerbait izan ohi da: erabiltzailea@nextcloud.zerbitzaria.com",
+ "Your Federated Cloud ID" : "Zure federatutako hodei IDa",
"Share it so your friends can share files with you:" : "Bidali lagunei, zurekin fitxategiak parteka ditzaten:",
"Facebook" : "Facebook",
"X (formerly Twitter)" : "X (lehen Twitter)",
+ "formerly Twitter" : "lehen Twitter",
"Mastodon" : "Mastodon",
"Add to your website" : "Gehitu zure webgunera",
"Share with me via Nextcloud" : "Partekatu nirekin Nextcloud bidez",
@@ -42,12 +44,14 @@
"Share with me through my #Nextcloud Federated Cloud ID" : "Partekatu nirekin, nire federatutako #Nextcloud hodei IDa erabiliz",
"Cloud ID copied to the clipboard" : "Hodei IDa arbelean kopiatu da",
"Copy to clipboard" : "Kopiatu arbelera",
+ "Clipboard not available. Please copy the cloud ID manually." : "Arbela ez dago eskuragarri, mesedez kopiatu hodei IDa eskuz.",
"Copied!" : "Kopiatuta!",
"Cancel" : "Ezeztatu",
"Add remote share" : "Gehitu urruneko partekatzea",
"Remote share" : "Urruneko partekatzea",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "{owner}@{remote}(r)en {name} urruneko partekatzea gehitu nahi duzu?",
"Remote share password" : "Urruneko partekatzearen pasahitza",
+ "Incoming share could not be processed" : "Sarrerako partekatzea ezin izan da prozesatu",
"Sharing %1$s failed, because this item is already shared with user %2$s" : "%1$spartekatzeak huts egin du dagoeneko %2$serabiltzailearekin partekatuta dagoelako",
"Not allowed to create a federated share with the same user" : "Ezin da erabiltzaile berarekin federatutako partekatzea sortu.",
"Adjust how people can share between servers. This includes shares between users on this server as well if they are using federated sharing." : "Doitu nola parteka dezakeen jendeak zerbitzarien artean. Horrek barne hartzen ditu zerbitzari honetako erabiltzaileen arteko partekatzeak, partekatze federatua erabiltzen ari badira.",
diff --git a/apps/federatedfilesharing/lib/FederatedShareProvider.php b/apps/federatedfilesharing/lib/FederatedShareProvider.php
index 11e78f5cb97..139c873b0d6 100644
--- a/apps/federatedfilesharing/lib/FederatedShareProvider.php
+++ b/apps/federatedfilesharing/lib/FederatedShareProvider.php
@@ -250,7 +250,8 @@ class FederatedShareProvider implements IShareProvider {
$remote,
$shareWith,
$share->getPermissions(),
- $share->getNode()->getName()
+ $share->getNode()->getName(),
+ $share->getShareType(),
);
return [$token, $remoteId];
diff --git a/apps/federatedfilesharing/lib/Notifications.php b/apps/federatedfilesharing/lib/Notifications.php
index 3c971773587..3a111ae0ed0 100644
--- a/apps/federatedfilesharing/lib/Notifications.php
+++ b/apps/federatedfilesharing/lib/Notifications.php
@@ -108,12 +108,13 @@ class Notifications {
* @throws HintException
* @throws \OC\ServerNotAvailableException
*/
- public function requestReShare($token, $id, $shareId, $remote, $shareWith, $permission, $filename) {
+ public function requestReShare($token, $id, $shareId, $remote, $shareWith, $permission, $filename, $shareType) {
$fields = [
'shareWith' => $shareWith,
'token' => $token,
'permission' => $permission,
'remoteId' => $shareId,
+ 'shareType' => $shareType,
];
$ocmFields = $fields;
diff --git a/apps/files/l10n/eu.js b/apps/files/l10n/eu.js
index e9b1494ada6..521a2e0c425 100644
--- a/apps/files/l10n/eu.js
+++ b/apps/files/l10n/eu.js
@@ -79,6 +79,8 @@ OC.L10N.register(
"\"{displayName}\" action failed" : "\"{displayName}\" ekintzak huts egin du",
"Toggle selection for file \"{displayName}\"" : "Ordeztu hautatutakoa \"{displayName}\" fitxategiarekin",
"Toggle selection for folder \"{displayName}\"" : "Ordeztu hautatutakoa \"{displayName}\" karpetarekin",
+ "File is loading" : "Fitxategia kargatzen ari da",
+ "Folder is loading" : "Karpeta kargatzen ari da",
"Rename file" : "Berrizendatu fitxategia",
"Filename" : "Fitxategi-izena",
"Folder name" : "Karpetaren izena",
@@ -86,6 +88,7 @@ OC.L10N.register(
"Another entry with the same name already exists." : "Izen bereko beste sarrera bat badago jada.",
"Invalid filename." : "Fitxategi-izen baliogabea.",
"Renamed \"{oldName}\" to \"{newName}\"" : "\"{oldName}\" \"{newName}\"(e)ra berrizendatu da.",
+ "Unknown date" : "Data ezezaguna",
"Pending" : "Zain",
"Clear filter" : "Garbitu iragazkia",
"Modified" : "Aldatuta",
@@ -200,9 +203,13 @@ OC.L10N.register(
"Confirm deletion" : "Berretsi ezabaketa",
"Cancel" : "Utzi",
"Edit file locally" : "Editatu fitxategia lokalean",
+ "The file should now open on your device. If it doesn't, please check that you have the desktop app installed." : "Fitxategia orain zure gailuan ireki beharko litzateke. Hala ez bada, egiaztatu mahaigaineko aplikazioa instalatuta duzula.",
+ "Retry and close" : "Saiatu berriro eta itxi",
"Edit online" : "Editatu sarean",
"Failed to redirect to client" : "Bezerora birbideratzeak huts egin du",
"Edit locally" : "Editatu lokalean",
+ "Moving \"{source}\" to \"{destination}\" …" : "«{source}» «{destination}»(e)ra mugitzen",
+ "Copying \"{source}\" to \"{destination}\" …" : "«{source}» «{destination}»(e)ra mugitzen",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Ezin duzu fitxategi/karpeta bat berera edo bere azpikarpeta batera mugitu",
"(copy)" : "(kopiatu)",
"(copy %n)" : "(kopiatu %n)",
@@ -235,6 +242,7 @@ OC.L10N.register(
"PDFs" : "PDFak",
"Folders" : "Karpetak",
"Audio" : "Audio",
+ "Photos and images" : "Argazkiak eta irudiak",
"Videos" : "Bideoak",
"New folder creation cancelled" : "Karpeta berrien sorrera bertan behera utzi da",
"Created new folder \"{name}\"" : "\"{name}\" karpeta berria sortu da",
@@ -257,19 +265,28 @@ OC.L10N.register(
"Files moved successfully" : "Fitxategiak behar bezala mugitu dira",
"Conflicts resolution skipped" : "Gatazkak konpontzea saihestu da",
"Upload cancelled" : "Igotzea bertan behera utzi da",
+ "Adding the file extension \"{new}\" may render the file unreadable." : "«{new}» fitxategiaren luzapena gehitzeak fitxategia irakurezin bihur dezake.",
+ "Removing the file extension \"{old}\" may render the file unreadable." : "«{old}» fitxategiaren luzapena kentzeak fitxategia irakurezin bihur dezake.",
+ "Changing the file extension from \"{old}\" to \"{new}\" may render the file unreadable." : "Fitxategiaren luzapena «{old}»(e)tik «{new}»(e)ra aldatzeak irakurezin bihur dezake.",
+ "Change file extension" : "Aldatu fitxategiaren luzapena",
+ "Keep {oldextension}" : "Mantendu {oldextension}",
+ "Use {newextension}" : "Erabili {newextension}",
+ "Remove extension" : "Kendu luzapena",
"This operation is forbidden" : "Eragiketa hau debekatuta dago",
"This directory is unavailable, please check the logs or contact the administrator" : "Direktorio hau ez dago erabilgarri, egiaztatu egunkariak edo jarri administratzailearekin harremanetan",
"Storage is temporarily not available" : "Biltegia ez dago erabilgarri aldi baterako",
+ "Unexpected error: {error}" : "Ustekabeko errorea: {error}",
"_{folderCount} folder_::_{folderCount} folders_" : ["Karpeta {folderCount}","{folderCount} karpeta"],
"_{fileCount} file_::_{fileCount} files_" : ["Fitxategi {fileCount}","{fileCount} fitxategi"],
"_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["Fitxategi 1 eta karpeta {folderCount}","Fitxategi 1 eta {folderCount} karpeta"],
"_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["Fitxategi {fileCount} eta karpeta 1","{fileCount} fitxategi eta karpeta 1"],
"{fileCount} files and {folderCount} folders" : "{fileCount} fitxategi eta {folderCount} fitxategi",
"Filename must not be empty." : "Fitxategi-izenak ez du hutsik egon behar.",
- "\"{char}\" is not allowed inside a filename." : "\"{char}\" ez da onartzen fitxategi-izen baten barruan..",
+ "\"{char}\" is not allowed inside a filename." : "\"{char}\" ez da onartzen fitxategi-izen baten barruan.",
"\"{segment}\" is a reserved name and not allowed for filenames." : "\"{segment}\" izen erreserbatua da eta ez da onartzen fitxategi-izenetan.",
"\"{extension}\" is not an allowed filetype." : "\"{extension}\" fitxategi mota ez dago baimenduta.",
"Filenames must not end with \"{extension}\"." : "Fitxategi-izenak ez dira \"{extension}\"rekin amaitu behar..",
+ "List of favorite files and folders." : "Gogoko fitxategi eta karpeten zerrenda.",
"No favorites yet" : "Gogokorik ez oraindik",
"Files and folders you mark as favorite will show up here" : "Gogokotzat markatutako fitxategi eta karpetak hemen agertuko dira",
"All files" : "Fitxategi guztiak",
@@ -369,6 +386,10 @@ OC.L10N.register(
"An error occurred while trying to update the tags" : "Errore bat gertatu da etiketak eguneratzen saiatzean",
"\"remote user\"" : "\"urruneko erabiltzailea\"",
"{newName} already exists." : "{newName} badago aurretik.",
+ "\"{segment}\" is not allowed inside a filename." : "«{segment}» ez da onartzen fitxategi-izen baten barruan.",
+ "\"{segment}\" is a forbidden file or folder name." : "«{segment}» debekatutako fitxategi edo karpeta-izen bat da.",
+ "\"{segment}\" is not an allowed filetype." : "«{segment}» fitxategi-mota ez da onartzen.",
+ "Filenames must not end with \"{segment}\"." : "Fitxategi-izenak ez dira «{segment}»(e)rekin amaitu behar.",
"Name cannot be empty" : "Izena ezin da hutsik egon",
"Another entry with the same name already exists" : "Badago izen hori duen beste sarrera bat",
"Could not rename \"{oldName}\", it does not exist any more" : "Ezin izan da \"{oldName}\" berrizendatu, ez da existitzen dagoeneko",
@@ -386,6 +407,9 @@ OC.L10N.register(
"Text file" : "Testu-fitxategia",
"New text file.txt" : "Testu-fitxategi berria.txt",
"Direct link was copied (only works for people who have access to this file/folder)" : "Esteka zuzena kopiatu da (fitxategi/karpeta honetara sarbidea dutenentzat bakarrik balio du)",
- "Copy direct link (only works for people who have access to this file/folder)" : "Kopiatu esteka zuzena (fitxategi/karpeta honetara sarbidea dutenentzat bakarrik balio du)"
+ "Copy direct link (only works for people who have access to this file/folder)" : "Kopiatu esteka zuzena (fitxategi/karpeta honetara sarbidea dutenentzat bakarrik balio du)",
+ "Favored" : "Mesedetua",
+ "Favor" : "Mesedea",
+ "Not favored" : "Mesedetu gabe"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/eu.json b/apps/files/l10n/eu.json
index a5b18572d17..f8d910f7102 100644
--- a/apps/files/l10n/eu.json
+++ b/apps/files/l10n/eu.json
@@ -77,6 +77,8 @@
"\"{displayName}\" action failed" : "\"{displayName}\" ekintzak huts egin du",
"Toggle selection for file \"{displayName}\"" : "Ordeztu hautatutakoa \"{displayName}\" fitxategiarekin",
"Toggle selection for folder \"{displayName}\"" : "Ordeztu hautatutakoa \"{displayName}\" karpetarekin",
+ "File is loading" : "Fitxategia kargatzen ari da",
+ "Folder is loading" : "Karpeta kargatzen ari da",
"Rename file" : "Berrizendatu fitxategia",
"Filename" : "Fitxategi-izena",
"Folder name" : "Karpetaren izena",
@@ -84,6 +86,7 @@
"Another entry with the same name already exists." : "Izen bereko beste sarrera bat badago jada.",
"Invalid filename." : "Fitxategi-izen baliogabea.",
"Renamed \"{oldName}\" to \"{newName}\"" : "\"{oldName}\" \"{newName}\"(e)ra berrizendatu da.",
+ "Unknown date" : "Data ezezaguna",
"Pending" : "Zain",
"Clear filter" : "Garbitu iragazkia",
"Modified" : "Aldatuta",
@@ -198,9 +201,13 @@
"Confirm deletion" : "Berretsi ezabaketa",
"Cancel" : "Utzi",
"Edit file locally" : "Editatu fitxategia lokalean",
+ "The file should now open on your device. If it doesn't, please check that you have the desktop app installed." : "Fitxategia orain zure gailuan ireki beharko litzateke. Hala ez bada, egiaztatu mahaigaineko aplikazioa instalatuta duzula.",
+ "Retry and close" : "Saiatu berriro eta itxi",
"Edit online" : "Editatu sarean",
"Failed to redirect to client" : "Bezerora birbideratzeak huts egin du",
"Edit locally" : "Editatu lokalean",
+ "Moving \"{source}\" to \"{destination}\" …" : "«{source}» «{destination}»(e)ra mugitzen",
+ "Copying \"{source}\" to \"{destination}\" …" : "«{source}» «{destination}»(e)ra mugitzen",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Ezin duzu fitxategi/karpeta bat berera edo bere azpikarpeta batera mugitu",
"(copy)" : "(kopiatu)",
"(copy %n)" : "(kopiatu %n)",
@@ -233,6 +240,7 @@
"PDFs" : "PDFak",
"Folders" : "Karpetak",
"Audio" : "Audio",
+ "Photos and images" : "Argazkiak eta irudiak",
"Videos" : "Bideoak",
"New folder creation cancelled" : "Karpeta berrien sorrera bertan behera utzi da",
"Created new folder \"{name}\"" : "\"{name}\" karpeta berria sortu da",
@@ -255,19 +263,28 @@
"Files moved successfully" : "Fitxategiak behar bezala mugitu dira",
"Conflicts resolution skipped" : "Gatazkak konpontzea saihestu da",
"Upload cancelled" : "Igotzea bertan behera utzi da",
+ "Adding the file extension \"{new}\" may render the file unreadable." : "«{new}» fitxategiaren luzapena gehitzeak fitxategia irakurezin bihur dezake.",
+ "Removing the file extension \"{old}\" may render the file unreadable." : "«{old}» fitxategiaren luzapena kentzeak fitxategia irakurezin bihur dezake.",
+ "Changing the file extension from \"{old}\" to \"{new}\" may render the file unreadable." : "Fitxategiaren luzapena «{old}»(e)tik «{new}»(e)ra aldatzeak irakurezin bihur dezake.",
+ "Change file extension" : "Aldatu fitxategiaren luzapena",
+ "Keep {oldextension}" : "Mantendu {oldextension}",
+ "Use {newextension}" : "Erabili {newextension}",
+ "Remove extension" : "Kendu luzapena",
"This operation is forbidden" : "Eragiketa hau debekatuta dago",
"This directory is unavailable, please check the logs or contact the administrator" : "Direktorio hau ez dago erabilgarri, egiaztatu egunkariak edo jarri administratzailearekin harremanetan",
"Storage is temporarily not available" : "Biltegia ez dago erabilgarri aldi baterako",
+ "Unexpected error: {error}" : "Ustekabeko errorea: {error}",
"_{folderCount} folder_::_{folderCount} folders_" : ["Karpeta {folderCount}","{folderCount} karpeta"],
"_{fileCount} file_::_{fileCount} files_" : ["Fitxategi {fileCount}","{fileCount} fitxategi"],
"_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["Fitxategi 1 eta karpeta {folderCount}","Fitxategi 1 eta {folderCount} karpeta"],
"_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["Fitxategi {fileCount} eta karpeta 1","{fileCount} fitxategi eta karpeta 1"],
"{fileCount} files and {folderCount} folders" : "{fileCount} fitxategi eta {folderCount} fitxategi",
"Filename must not be empty." : "Fitxategi-izenak ez du hutsik egon behar.",
- "\"{char}\" is not allowed inside a filename." : "\"{char}\" ez da onartzen fitxategi-izen baten barruan..",
+ "\"{char}\" is not allowed inside a filename." : "\"{char}\" ez da onartzen fitxategi-izen baten barruan.",
"\"{segment}\" is a reserved name and not allowed for filenames." : "\"{segment}\" izen erreserbatua da eta ez da onartzen fitxategi-izenetan.",
"\"{extension}\" is not an allowed filetype." : "\"{extension}\" fitxategi mota ez dago baimenduta.",
"Filenames must not end with \"{extension}\"." : "Fitxategi-izenak ez dira \"{extension}\"rekin amaitu behar..",
+ "List of favorite files and folders." : "Gogoko fitxategi eta karpeten zerrenda.",
"No favorites yet" : "Gogokorik ez oraindik",
"Files and folders you mark as favorite will show up here" : "Gogokotzat markatutako fitxategi eta karpetak hemen agertuko dira",
"All files" : "Fitxategi guztiak",
@@ -367,6 +384,10 @@
"An error occurred while trying to update the tags" : "Errore bat gertatu da etiketak eguneratzen saiatzean",
"\"remote user\"" : "\"urruneko erabiltzailea\"",
"{newName} already exists." : "{newName} badago aurretik.",
+ "\"{segment}\" is not allowed inside a filename." : "«{segment}» ez da onartzen fitxategi-izen baten barruan.",
+ "\"{segment}\" is a forbidden file or folder name." : "«{segment}» debekatutako fitxategi edo karpeta-izen bat da.",
+ "\"{segment}\" is not an allowed filetype." : "«{segment}» fitxategi-mota ez da onartzen.",
+ "Filenames must not end with \"{segment}\"." : "Fitxategi-izenak ez dira «{segment}»(e)rekin amaitu behar.",
"Name cannot be empty" : "Izena ezin da hutsik egon",
"Another entry with the same name already exists" : "Badago izen hori duen beste sarrera bat",
"Could not rename \"{oldName}\", it does not exist any more" : "Ezin izan da \"{oldName}\" berrizendatu, ez da existitzen dagoeneko",
@@ -384,6 +405,9 @@
"Text file" : "Testu-fitxategia",
"New text file.txt" : "Testu-fitxategi berria.txt",
"Direct link was copied (only works for people who have access to this file/folder)" : "Esteka zuzena kopiatu da (fitxategi/karpeta honetara sarbidea dutenentzat bakarrik balio du)",
- "Copy direct link (only works for people who have access to this file/folder)" : "Kopiatu esteka zuzena (fitxategi/karpeta honetara sarbidea dutenentzat bakarrik balio du)"
+ "Copy direct link (only works for people who have access to this file/folder)" : "Kopiatu esteka zuzena (fitxategi/karpeta honetara sarbidea dutenentzat bakarrik balio du)",
+ "Favored" : "Mesedetua",
+ "Favor" : "Mesedea",
+ "Not favored" : "Mesedetu gabe"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/src/components/FilesListVirtual.vue b/apps/files/src/components/FilesListVirtual.vue
index 52ba69d8b97..81c4c5ac666 100644
--- a/apps/files/src/components/FilesListVirtual.vue
+++ b/apps/files/src/components/FilesListVirtual.vue
@@ -62,7 +62,7 @@ import type { Node as NcNode } from '@nextcloud/files'
import type { ComponentPublicInstance, PropType } from 'vue'
import type { UserConfig } from '../types'
-import { getFileListHeaders, Folder, View, getFileActions, FileType } from '@nextcloud/files'
+import { getFileListHeaders, Folder, Permission, View, getFileActions, FileType } from '@nextcloud/files'
import { showError } from '@nextcloud/dialogs'
import { translate as t } from '@nextcloud/l10n'
import { subscribe, unsubscribe } from '@nextcloud/event-bus'
@@ -170,12 +170,28 @@ export default defineComponent({
return [...this.headers].sort((a, b) => a.order - b.order)
},
+ cantUpload() {
+ return this.currentFolder && (this.currentFolder.permissions & Permission.CREATE) === 0
+ },
+
+ isQuotaExceeded() {
+ return this.currentFolder?.attributes?.['quota-available-bytes'] === 0
+ },
+
caption() {
const defaultCaption = t('files', 'List of files and folders.')
const viewCaption = this.currentView.caption || defaultCaption
+ const cantUploadCaption = this.cantUpload ? t('files', 'You don’t have permission to upload or create files here.') : null
+ const quotaExceededCaption = this.isQuotaExceeded ? t('files', 'You have used your space quota and cannot upload files anymore.') : null
const sortableCaption = t('files', 'Column headers with buttons are sortable.')
const virtualListNote = t('files', 'This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list.')
- return `${viewCaption}\n${sortableCaption}\n${virtualListNote}`
+ return [
+ viewCaption,
+ cantUploadCaption,
+ quotaExceededCaption,
+ sortableCaption,
+ virtualListNote,
+ ].filter(Boolean).join('\n')
},
selectedNodes() {
diff --git a/apps/files/src/views/FilesList.vue b/apps/files/src/views/FilesList.vue
index 9bb1cc05d81..7e8bd9f1795 100644
--- a/apps/files/src/views/FilesList.vue
+++ b/apps/files/src/views/FilesList.vue
@@ -22,21 +22,8 @@
</template>
</NcButton>
- <!-- Disabled upload button -->
- <NcButton v-if="!canUpload || isQuotaExceeded"
- :aria-label="cantUploadLabel"
- :title="cantUploadLabel"
- class="files-list__header-upload-button--disabled"
- :disabled="true"
- type="secondary">
- <template #icon>
- <PlusIcon :size="20" />
- </template>
- {{ t('files', 'New') }}
- </NcButton>
-
<!-- Uploader -->
- <UploadPicker v-else-if="currentFolder"
+ <UploadPicker v-if="canUpload && !isQuotaExceeded && currentFolder"
allow-folders
class="files-list__header-upload-button"
:content="getContent"
@@ -170,7 +157,6 @@ import NcButton from '@nextcloud/vue/dist/Components/NcButton.js'
import NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'
import NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js'
import NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'
-import PlusIcon from 'vue-material-design-icons/Plus.vue'
import AccountPlusIcon from 'vue-material-design-icons/AccountPlus.vue'
import ViewGridIcon from 'vue-material-design-icons/ViewGrid.vue'
@@ -210,7 +196,6 @@ export default defineComponent({
NcEmptyContent,
NcIconSvgWrapper,
NcLoadingIcon,
- PlusIcon,
AccountPlusIcon,
UploadPicker,
ViewGridIcon,
@@ -430,12 +415,6 @@ export default defineComponent({
isQuotaExceeded() {
return this.currentFolder?.attributes?.['quota-available-bytes'] === 0
},
- cantUploadLabel() {
- if (this.isQuotaExceeded) {
- return t('files', 'Your have used your space quota and cannot upload files anymore')
- }
- return t('files', 'You don’t have permission to upload or create files here')
- },
/**
* Check if current folder has share permissions
diff --git a/apps/files_external/l10n/eu.js b/apps/files_external/l10n/eu.js
index f5fe60a3729..fd24df5f32b 100644
--- a/apps/files_external/l10n/eu.js
+++ b/apps/files_external/l10n/eu.js
@@ -95,6 +95,10 @@ OC.L10N.register(
"External storage support" : "Kanpoko biltegiratzearen euskarria",
"Adds basic external storage support" : "Kanpoko biltegiratzearen oinarrizko euskarria gehitzen du",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Aplikazio honek aukera ematen die administratzaileei kanpoko biltegiratze hornitzaileetara konexioak konfiguratzeko, hala nola, FTP zerbitzariak, S3 edo SWIFT objektuen biltegiak, beste Nextcloud zerbitzariak, WebDAV zerbitzariak eta gehiago. Administratzaileak aukeratu dezake ze biltegiratze mota gaitu nahi dituen eta biltegiratze kokaleku horiek kontu, talde edo sistema osorako munta ditzake. Erabiltzaileek beren erroko Nextcloud direktorioan karpeta berri bat agertu dela ikusiko dute; bertara sarbidea izango dute eta Nextcloudeko beste edozein karpeta bezala erabil dezakete. Kanpoko biltegiratzeak kanpoko kokaleku horietan gordetako fitxategiak partekatzeko aukera ere ematen die erabiltzaileei. Kasu horietan, hartzaileak kanpoko biltegiratzeko fitxategira sarbidea eskatzen duenean fitxategiaren jabearen kredentzialak erabiltzen dira, modu horretan hartzaileak partekatutako fitxategia atzitu dezakeela ziurtatuz.\n\nKanpoko biltegiratzea GUI edo komando lerro bidez konfigura daiteke. Bigarren aukerak malgutasun handiagoa eskaintzen dio administratzaileari, kanpoko biltegiratzeen muntatzea multzoka konfiguratzeko eta muntatze lehentasunak ezartzeko. Eskuragarri dago informazio gehiago kanpoko biltegiratzeen GUIaren eta kanpoko biltegiratzearen konfigurazio fitxategiaren dokumentazioetan.",
+ "Storage credentials" : "Biltegiaren kredentzialak",
+ "To access the storage, you need to provide the authentication credentials." : "Biltegian sartzeko, autentifikazio-kredentzialak eman behar dituzu.",
+ "Enter the storage login" : "Sartu biltegiratze-saioa",
+ "Enter the storage password" : "Sartu biltegiratze pasahitza",
"Submit" : "Bidali",
"Unable to update this external storage config. {statusMessage}" : "Ezin izan da kanpoko biltegiaren konfigurazioa aldatu. {statusMessage}",
"New configuration successfully saved" : "Konfigurazio berria ondo gorde da",
@@ -125,6 +129,7 @@ OC.L10N.register(
"Once every direct access" : "Sarbide zuzen bakoitzean",
"Read only" : "Irakurtzeko soilik",
"Disconnect" : "Deskonektatu",
+ "Unknown backend: {backendName}" : "Backend ezezaguna: {backendName}",
"Admin defined" : "Administratzaileak definitua",
"Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Egoeraren egiaztatze automatikoa desgaituta dago konfiguratutako biltegiratze kopuru handia dela eta, egin klik egoera egiaztatzeko",
"Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Ziur kanpoko biltegiratze hau deskonektatu nahi duzula? Biltegiratzea ez da erabilgarri egongo Nextclouden eta fitxategi eta karpeta hauek ezabatuko ditu une honetan konektatuta dagoen edozein sinkronizazio-bezerotan, baina ez du fitxategi edo karpetarik ezabatuko kanpoko biltegian.",
@@ -156,6 +161,7 @@ OC.L10N.register(
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Aplikazio honek aukera ematen die administratzaileei kanpoko biltegiratze hornitzaileetara konexioak konfiguratzeko, hala nola, FTP zerbitzariak, S3 edo SWIFT objektuen biltegiak, beste Nextcloud zerbitzariak, WebDAV zerbitzariak eta gehiago. Administratzaileak aukeratu dezake ze biltegiratze mota gaitu nahi dituen eta biltegiratze kokaleku horiek erabiltzaile batentzat, talde batentzat edo sistema osorako munta ditzake. Erabiltzaileek beren erroko Nextcloud direktorioan karpeta berri bat agertu dela ikusiko dute; bertara sarbidea izango dute eta Nextcloudeko beste edozein karpeta bezala erabil dezakete. Kanpoko biltegiratzeak kanpoko kokaleku horietan gordetako fitxategiak partekatzeko aukera ere ematen die erabiltzaileei. Kasu horietan, hartzaileak kanpoko biltegiratzeko fitxategira sarbidea eskatzen duenean fitxategiaren jabearen kredentzialak erabiltzen dira, modu horretan hartzaileak partekatutako fitxategia atzitu dezakeela ziurtatuz.\n\nKanpoko biltegiratzea GUI edo komando lerro bidez konfigura daiteke. Bigarren aukerak malgutasun handiagoa eskaintzen dio erabiltzaile aurreratuari, kanpoko biltegiratzeen muntatzea multzoka konfiguratzeko eta muntatze lehentasunak ezartzeko. Eskuragarri dago informazio gehiago kanpoko biltegiratzeen GUIaren eta kanpoko biltegiratzearen konfigurazio fitxategiaren dokumentazioetan.",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Kanpoko biltegiratzeak aukera ematen dizu kanpoko biltegiratze zerbitzuak eta gailuak erabiltzeko Nextlcloudeko bigarren mailako biltegiratze gailu bezala. Gainera, aukera eman diezaiekezu erabiltzaileei beren kanpoko biltegiratze zerbitzuak muntatzeko.",
"All users" : "Erabiltzaile guztiak",
- "Allow users to mount external storage" : "Baimendu erabiltzaileek kanpoko biltegiratze zerbitzuak muntatzea"
+ "Allow users to mount external storage" : "Baimendu erabiltzaileek kanpoko biltegiratze zerbitzuak muntatzea",
+ "To access the storage, you need to provide the authentification informations." : "Biltegian sartzeko, autentifikazio-informazioa eman behar duzu."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/eu.json b/apps/files_external/l10n/eu.json
index 0c48cad28d6..ebafba06b22 100644
--- a/apps/files_external/l10n/eu.json
+++ b/apps/files_external/l10n/eu.json
@@ -93,6 +93,10 @@
"External storage support" : "Kanpoko biltegiratzearen euskarria",
"Adds basic external storage support" : "Kanpoko biltegiratzearen oinarrizko euskarria gehitzen du",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Aplikazio honek aukera ematen die administratzaileei kanpoko biltegiratze hornitzaileetara konexioak konfiguratzeko, hala nola, FTP zerbitzariak, S3 edo SWIFT objektuen biltegiak, beste Nextcloud zerbitzariak, WebDAV zerbitzariak eta gehiago. Administratzaileak aukeratu dezake ze biltegiratze mota gaitu nahi dituen eta biltegiratze kokaleku horiek kontu, talde edo sistema osorako munta ditzake. Erabiltzaileek beren erroko Nextcloud direktorioan karpeta berri bat agertu dela ikusiko dute; bertara sarbidea izango dute eta Nextcloudeko beste edozein karpeta bezala erabil dezakete. Kanpoko biltegiratzeak kanpoko kokaleku horietan gordetako fitxategiak partekatzeko aukera ere ematen die erabiltzaileei. Kasu horietan, hartzaileak kanpoko biltegiratzeko fitxategira sarbidea eskatzen duenean fitxategiaren jabearen kredentzialak erabiltzen dira, modu horretan hartzaileak partekatutako fitxategia atzitu dezakeela ziurtatuz.\n\nKanpoko biltegiratzea GUI edo komando lerro bidez konfigura daiteke. Bigarren aukerak malgutasun handiagoa eskaintzen dio administratzaileari, kanpoko biltegiratzeen muntatzea multzoka konfiguratzeko eta muntatze lehentasunak ezartzeko. Eskuragarri dago informazio gehiago kanpoko biltegiratzeen GUIaren eta kanpoko biltegiratzearen konfigurazio fitxategiaren dokumentazioetan.",
+ "Storage credentials" : "Biltegiaren kredentzialak",
+ "To access the storage, you need to provide the authentication credentials." : "Biltegian sartzeko, autentifikazio-kredentzialak eman behar dituzu.",
+ "Enter the storage login" : "Sartu biltegiratze-saioa",
+ "Enter the storage password" : "Sartu biltegiratze pasahitza",
"Submit" : "Bidali",
"Unable to update this external storage config. {statusMessage}" : "Ezin izan da kanpoko biltegiaren konfigurazioa aldatu. {statusMessage}",
"New configuration successfully saved" : "Konfigurazio berria ondo gorde da",
@@ -123,6 +127,7 @@
"Once every direct access" : "Sarbide zuzen bakoitzean",
"Read only" : "Irakurtzeko soilik",
"Disconnect" : "Deskonektatu",
+ "Unknown backend: {backendName}" : "Backend ezezaguna: {backendName}",
"Admin defined" : "Administratzaileak definitua",
"Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Egoeraren egiaztatze automatikoa desgaituta dago konfiguratutako biltegiratze kopuru handia dela eta, egin klik egoera egiaztatzeko",
"Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Ziur kanpoko biltegiratze hau deskonektatu nahi duzula? Biltegiratzea ez da erabilgarri egongo Nextclouden eta fitxategi eta karpeta hauek ezabatuko ditu une honetan konektatuta dagoen edozein sinkronizazio-bezerotan, baina ez du fitxategi edo karpetarik ezabatuko kanpoko biltegian.",
@@ -154,6 +159,7 @@
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Aplikazio honek aukera ematen die administratzaileei kanpoko biltegiratze hornitzaileetara konexioak konfiguratzeko, hala nola, FTP zerbitzariak, S3 edo SWIFT objektuen biltegiak, beste Nextcloud zerbitzariak, WebDAV zerbitzariak eta gehiago. Administratzaileak aukeratu dezake ze biltegiratze mota gaitu nahi dituen eta biltegiratze kokaleku horiek erabiltzaile batentzat, talde batentzat edo sistema osorako munta ditzake. Erabiltzaileek beren erroko Nextcloud direktorioan karpeta berri bat agertu dela ikusiko dute; bertara sarbidea izango dute eta Nextcloudeko beste edozein karpeta bezala erabil dezakete. Kanpoko biltegiratzeak kanpoko kokaleku horietan gordetako fitxategiak partekatzeko aukera ere ematen die erabiltzaileei. Kasu horietan, hartzaileak kanpoko biltegiratzeko fitxategira sarbidea eskatzen duenean fitxategiaren jabearen kredentzialak erabiltzen dira, modu horretan hartzaileak partekatutako fitxategia atzitu dezakeela ziurtatuz.\n\nKanpoko biltegiratzea GUI edo komando lerro bidez konfigura daiteke. Bigarren aukerak malgutasun handiagoa eskaintzen dio erabiltzaile aurreratuari, kanpoko biltegiratzeen muntatzea multzoka konfiguratzeko eta muntatze lehentasunak ezartzeko. Eskuragarri dago informazio gehiago kanpoko biltegiratzeen GUIaren eta kanpoko biltegiratzearen konfigurazio fitxategiaren dokumentazioetan.",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Kanpoko biltegiratzeak aukera ematen dizu kanpoko biltegiratze zerbitzuak eta gailuak erabiltzeko Nextlcloudeko bigarren mailako biltegiratze gailu bezala. Gainera, aukera eman diezaiekezu erabiltzaileei beren kanpoko biltegiratze zerbitzuak muntatzeko.",
"All users" : "Erabiltzaile guztiak",
- "Allow users to mount external storage" : "Baimendu erabiltzaileek kanpoko biltegiratze zerbitzuak muntatzea"
+ "Allow users to mount external storage" : "Baimendu erabiltzaileek kanpoko biltegiratze zerbitzuak muntatzea",
+ "To access the storage, you need to provide the authentification informations." : "Biltegian sartzeko, autentifikazio-informazioa eman behar duzu."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/it.js b/apps/files_external/l10n/it.js
index e15e236de93..c0bb4146ac3 100644
--- a/apps/files_external/l10n/it.js
+++ b/apps/files_external/l10n/it.js
@@ -94,6 +94,11 @@ OC.L10N.register(
"External storage" : "Archiviazione esterna",
"External storage support" : "Supporto archiviazioni esterne",
"Adds basic external storage support" : "Aggiunge un supporto di base per archiviazioni esterne",
+ "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Questa applicazione consente agli amministratori di configurare connessioni a provider di archiviazione esterni, come server FTP, archivi di oggetti S3 o SWIFT, altri server Nextcloud, server WebDAV e altro ancora. L'amministrazione può scegliere quali tipi di archiviazione abilitare e montare queste posizioni di archiviazione per un account, un gruppo o l'intero sistema. Gli utenti vedranno apparire una nuova cartella nella loro directory principale di Nextcloud, a cui potranno accedere e utilizzare come qualsiasi altra cartella Nextcloud. L'archiviazione esterna consente inoltre alle persone di condividere file archiviati in queste posizioni esterne. In questi casi, le credenziali del proprietario del file vengono utilizzate quando il destinatario richiede il file da un archivio esterno, garantendo così che il destinatario possa accedere al file condiviso.\n\nL'archiviazione esterna può essere configurata utilizzando la GUI o dalla riga di comando. Questa seconda opzione offre all'amministrazione maggiore flessibilità per la configurazione dei montaggi di archiviazione esterni in blocco e l'impostazione delle priorità di montaggio. Ulteriori informazioni sono disponibili nella documentazione della GUI dell'archiviazione esterna e nella documentazione del file di configurazione dell'archiviazione esterna.",
+ "Storage credentials" : "Credenziali dello spazio di archiviazione",
+ "To access the storage, you need to provide the authentication credentials." : "Per accedere allo spazio di archiviazione è necessario fornire le credenziali di autenticazione.",
+ "Enter the storage login" : "Inserisci le credenziali dello spazio di archiviazione",
+ "Enter the storage password" : "Inserisci la password dello spazio di archiviazione",
"Submit" : "Invia",
"Unable to update this external storage config. {statusMessage}" : "Impossibile aggiornare questa configurazione di archiviazione esterna. {statusMessage}",
"New configuration successfully saved" : "Nuova configurazione salvata correttamente",
@@ -124,6 +129,7 @@ OC.L10N.register(
"Once every direct access" : "Una volta per ogni accesso diretto",
"Read only" : "Sola lettura",
"Disconnect" : "Disconnetti",
+ "Unknown backend: {backendName}" : "Backend sconosciuto: {backendName}",
"Admin defined" : "Definito dall'amministratore",
"Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Il controllo automatico dello stato è disabilitato a causa del numero elevato di archivi configurati, fai clic per controllare lo stato",
"Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Sei sicuro di voler disconnettere questo spazio di archiviazione esterno? Ciò renderà lo spazio di archiviazione non disponibile in Nextcloud e comporterà l'eliminazione di questi file e cartelle su qualsiasi client di sincronizzazione attualmente connesso, ma non eliminerà alcun file e cartella sullo spazio di archiviazione esterno stesso.",
@@ -155,6 +161,7 @@ OC.L10N.register(
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Questa applicazione consente agli amministratori di configurare connessioni a fornitori di archiviazione esterna, come server FTP, archivi di oggetti S3 o SWIFT, altri server Nextcloud, server WebDAV e altro. Gli amministratori possono scegliere quale tipo di archiviazione abilitare e possono montare queste posizioni di archiviazione per un utente, un gruppo o per l'intero sistema. Gli utenti vedranno una nuova cartella apparire nella loro cartella radice di Nextcloud, che possono accedere e utilizzare come qualsiasi altra cartella di Nextcloud. L'archiviazione esterna consente anche agli utenti di condividere file archiviati in queste posizioni esterne. In questi casi, le credenziali del proprietario del file sono utilizzate quando il destinatario richiede il file da archiviazione esterna, assicurando in tal modo che il destinatario possa accedere al file condiviso.\n\nL'archiviazione esterna può essere configurata utilizzando l'interfaccia grafica o la riga di comando. Questa seconda opzione fornisce maggiore flessibilità all'utente avanzato per una configurazione massiva dei punti di mount delle archiviazioni esterne e l'impostazione delle priorità dei punti di mount. Altre informazioni sono disponibili nella documentazione dell'interfaccia grafica dell'archiviazione esterna e nella documentazione del file di configurazione delle archiviazioni esterne.",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Archiviazioni esterne ti consente di montare servizi di archiviazione esterna e dispositivi come dispositivi di archiviazione secondari di Nextcloud. Puoi anche permettere agli utenti di montare i propri servizi di archiviazione esterna.",
"All users" : "Tutti gli utenti",
- "Allow users to mount external storage" : "Consenti agli utenti di montare archiviazioni esterne"
+ "Allow users to mount external storage" : "Consenti agli utenti di montare archiviazioni esterne",
+ "To access the storage, you need to provide the authentification informations." : "Per accedere allo spazio di archiviazione è necessario fornire le informazioni di autenticazione."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/files_external/l10n/it.json b/apps/files_external/l10n/it.json
index 26ebe693e5f..16680664008 100644
--- a/apps/files_external/l10n/it.json
+++ b/apps/files_external/l10n/it.json
@@ -92,6 +92,11 @@
"External storage" : "Archiviazione esterna",
"External storage support" : "Supporto archiviazioni esterne",
"Adds basic external storage support" : "Aggiunge un supporto di base per archiviazioni esterne",
+ "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Questa applicazione consente agli amministratori di configurare connessioni a provider di archiviazione esterni, come server FTP, archivi di oggetti S3 o SWIFT, altri server Nextcloud, server WebDAV e altro ancora. L'amministrazione può scegliere quali tipi di archiviazione abilitare e montare queste posizioni di archiviazione per un account, un gruppo o l'intero sistema. Gli utenti vedranno apparire una nuova cartella nella loro directory principale di Nextcloud, a cui potranno accedere e utilizzare come qualsiasi altra cartella Nextcloud. L'archiviazione esterna consente inoltre alle persone di condividere file archiviati in queste posizioni esterne. In questi casi, le credenziali del proprietario del file vengono utilizzate quando il destinatario richiede il file da un archivio esterno, garantendo così che il destinatario possa accedere al file condiviso.\n\nL'archiviazione esterna può essere configurata utilizzando la GUI o dalla riga di comando. Questa seconda opzione offre all'amministrazione maggiore flessibilità per la configurazione dei montaggi di archiviazione esterni in blocco e l'impostazione delle priorità di montaggio. Ulteriori informazioni sono disponibili nella documentazione della GUI dell'archiviazione esterna e nella documentazione del file di configurazione dell'archiviazione esterna.",
+ "Storage credentials" : "Credenziali dello spazio di archiviazione",
+ "To access the storage, you need to provide the authentication credentials." : "Per accedere allo spazio di archiviazione è necessario fornire le credenziali di autenticazione.",
+ "Enter the storage login" : "Inserisci le credenziali dello spazio di archiviazione",
+ "Enter the storage password" : "Inserisci la password dello spazio di archiviazione",
"Submit" : "Invia",
"Unable to update this external storage config. {statusMessage}" : "Impossibile aggiornare questa configurazione di archiviazione esterna. {statusMessage}",
"New configuration successfully saved" : "Nuova configurazione salvata correttamente",
@@ -122,6 +127,7 @@
"Once every direct access" : "Una volta per ogni accesso diretto",
"Read only" : "Sola lettura",
"Disconnect" : "Disconnetti",
+ "Unknown backend: {backendName}" : "Backend sconosciuto: {backendName}",
"Admin defined" : "Definito dall'amministratore",
"Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Il controllo automatico dello stato è disabilitato a causa del numero elevato di archivi configurati, fai clic per controllare lo stato",
"Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Sei sicuro di voler disconnettere questo spazio di archiviazione esterno? Ciò renderà lo spazio di archiviazione non disponibile in Nextcloud e comporterà l'eliminazione di questi file e cartelle su qualsiasi client di sincronizzazione attualmente connesso, ma non eliminerà alcun file e cartella sullo spazio di archiviazione esterno stesso.",
@@ -153,6 +159,7 @@
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Questa applicazione consente agli amministratori di configurare connessioni a fornitori di archiviazione esterna, come server FTP, archivi di oggetti S3 o SWIFT, altri server Nextcloud, server WebDAV e altro. Gli amministratori possono scegliere quale tipo di archiviazione abilitare e possono montare queste posizioni di archiviazione per un utente, un gruppo o per l'intero sistema. Gli utenti vedranno una nuova cartella apparire nella loro cartella radice di Nextcloud, che possono accedere e utilizzare come qualsiasi altra cartella di Nextcloud. L'archiviazione esterna consente anche agli utenti di condividere file archiviati in queste posizioni esterne. In questi casi, le credenziali del proprietario del file sono utilizzate quando il destinatario richiede il file da archiviazione esterna, assicurando in tal modo che il destinatario possa accedere al file condiviso.\n\nL'archiviazione esterna può essere configurata utilizzando l'interfaccia grafica o la riga di comando. Questa seconda opzione fornisce maggiore flessibilità all'utente avanzato per una configurazione massiva dei punti di mount delle archiviazioni esterne e l'impostazione delle priorità dei punti di mount. Altre informazioni sono disponibili nella documentazione dell'interfaccia grafica dell'archiviazione esterna e nella documentazione del file di configurazione delle archiviazioni esterne.",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Archiviazioni esterne ti consente di montare servizi di archiviazione esterna e dispositivi come dispositivi di archiviazione secondari di Nextcloud. Puoi anche permettere agli utenti di montare i propri servizi di archiviazione esterna.",
"All users" : "Tutti gli utenti",
- "Allow users to mount external storage" : "Consenti agli utenti di montare archiviazioni esterne"
+ "Allow users to mount external storage" : "Consenti agli utenti di montare archiviazioni esterne",
+ "To access the storage, you need to provide the authentification informations." : "Per accedere allo spazio di archiviazione è necessario fornire le informazioni di autenticazione."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files_external/lib/Config/SystemMountPoint.php b/apps/files_external/lib/Config/SystemMountPoint.php
index d3159c2cc80..af0bf792140 100644
--- a/apps/files_external/lib/Config/SystemMountPoint.php
+++ b/apps/files_external/lib/Config/SystemMountPoint.php
@@ -8,7 +8,8 @@ declare(strict_types=1);
namespace OCA\Files_External\Config;
+use OCP\Files\Mount\IShareOwnerlessMount;
use OCP\Files\Mount\ISystemMountPoint;
-class SystemMountPoint extends ExternalMountPoint implements ISystemMountPoint {
+class SystemMountPoint extends ExternalMountPoint implements ISystemMountPoint, IShareOwnerlessMount {
}
diff --git a/apps/files_reminders/l10n/ar.js b/apps/files_reminders/l10n/ar.js
index 121edb320b0..a4fb0489277 100644
--- a/apps/files_reminders/l10n/ar.js
+++ b/apps/files_reminders/l10n/ar.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "أعرُض الملف",
"View folder" : "أعرُض المجلد",
"Set file reminders" : "تعيين تذكيرات للملفات",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 تذكيرات الملفات File reminders**\n\nتعيين تذكيرات الملفات.",
"We will remind you of this file" : "سوف يتم تذكيرك بهذا الملف",
"Please choose a valid date & time" : "من فضلك، إختَر وقتاً و تاريخاً صحيحين",
"Cancel" : "إلغاء",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "نهاية هذا الأسبوع",
"Set reminder for this weekend" : "عيّن التذكير لنهاية هذا الأسبوع",
"Next week" : "الأسبوع القادم",
- "Set reminder for next week" : "عيّن التذكير للأسبوع القادم"
+ "Set reminder for next week" : "عيّن التذكير للأسبوع القادم",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 تذكيرات الملفات File reminders**\n\nتعيين تذكيرات الملفات."
},
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
diff --git a/apps/files_reminders/l10n/ar.json b/apps/files_reminders/l10n/ar.json
index 2bdb614dad4..4230103cbb6 100644
--- a/apps/files_reminders/l10n/ar.json
+++ b/apps/files_reminders/l10n/ar.json
@@ -4,7 +4,6 @@
"View file" : "أعرُض الملف",
"View folder" : "أعرُض المجلد",
"Set file reminders" : "تعيين تذكيرات للملفات",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 تذكيرات الملفات File reminders**\n\nتعيين تذكيرات الملفات.",
"We will remind you of this file" : "سوف يتم تذكيرك بهذا الملف",
"Please choose a valid date & time" : "من فضلك، إختَر وقتاً و تاريخاً صحيحين",
"Cancel" : "إلغاء",
@@ -25,6 +24,7 @@
"This weekend" : "نهاية هذا الأسبوع",
"Set reminder for this weekend" : "عيّن التذكير لنهاية هذا الأسبوع",
"Next week" : "الأسبوع القادم",
- "Set reminder for next week" : "عيّن التذكير للأسبوع القادم"
+ "Set reminder for next week" : "عيّن التذكير للأسبوع القادم",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 تذكيرات الملفات File reminders**\n\nتعيين تذكيرات الملفات."
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/cs.js b/apps/files_reminders/l10n/cs.js
index 72fd1029ab1..188a2fcacd5 100644
--- a/apps/files_reminders/l10n/cs.js
+++ b/apps/files_reminders/l10n/cs.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Zobrazit soubor",
"View folder" : "Zobrazit složku",
"Set file reminders" : "Nastavit připomínky souborů",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Připomínky souborů**\n\nNastavte připomínky souborů.",
"We will remind you of this file" : "Připomeneme vám tento soubor",
"Please choose a valid date & time" : "Zvolte platný datum a čas",
"Cancel" : "Storno",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "Tento víkend",
"Set reminder for this weekend" : "Nastavit připomínku na tento víkend",
"Next week" : "Příští týden",
- "Set reminder for next week" : "Nastavit připomínku pro příští týden"
+ "Set reminder for next week" : "Nastavit připomínku pro příští týden",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Připomínky souborů**\n\nNastavte připomínky souborů."
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
diff --git a/apps/files_reminders/l10n/cs.json b/apps/files_reminders/l10n/cs.json
index da8d7714f42..b27f957f7ff 100644
--- a/apps/files_reminders/l10n/cs.json
+++ b/apps/files_reminders/l10n/cs.json
@@ -4,7 +4,6 @@
"View file" : "Zobrazit soubor",
"View folder" : "Zobrazit složku",
"Set file reminders" : "Nastavit připomínky souborů",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Připomínky souborů**\n\nNastavte připomínky souborů.",
"We will remind you of this file" : "Připomeneme vám tento soubor",
"Please choose a valid date & time" : "Zvolte platný datum a čas",
"Cancel" : "Storno",
@@ -25,6 +24,7 @@
"This weekend" : "Tento víkend",
"Set reminder for this weekend" : "Nastavit připomínku na tento víkend",
"Next week" : "Příští týden",
- "Set reminder for next week" : "Nastavit připomínku pro příští týden"
+ "Set reminder for next week" : "Nastavit připomínku pro příští týden",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Připomínky souborů**\n\nNastavte připomínky souborů."
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/de.js b/apps/files_reminders/l10n/de.js
index fd4824e5ef1..840bc50225f 100644
--- a/apps/files_reminders/l10n/de.js
+++ b/apps/files_reminders/l10n/de.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Datei anzeigen",
"View folder" : "Ordner anzeigen",
"Set file reminders" : "Dateierinnerungen setzen",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Dateierinnerungen**\n\nSetze Dateierinnerungen.",
"We will remind you of this file" : "Du wirst an diese Datei erinnert",
"Please choose a valid date & time" : "Bitte gültiges Datum und Uhrzeit wählen",
"Cancel" : "Abbrechen",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "Dieses Wochenende",
"Set reminder for this weekend" : "Erinnerung für dieses Wochenende erstellen",
"Next week" : "Nächste Woche",
- "Set reminder for next week" : "Erinnerung für nächste Woche erstellen"
+ "Set reminder for next week" : "Erinnerung für nächste Woche erstellen",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Dateierinnerungen**\n\nSetze Dateierinnerungen."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_reminders/l10n/de.json b/apps/files_reminders/l10n/de.json
index d3dd9d66034..a1420e0ba05 100644
--- a/apps/files_reminders/l10n/de.json
+++ b/apps/files_reminders/l10n/de.json
@@ -4,7 +4,6 @@
"View file" : "Datei anzeigen",
"View folder" : "Ordner anzeigen",
"Set file reminders" : "Dateierinnerungen setzen",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Dateierinnerungen**\n\nSetze Dateierinnerungen.",
"We will remind you of this file" : "Du wirst an diese Datei erinnert",
"Please choose a valid date & time" : "Bitte gültiges Datum und Uhrzeit wählen",
"Cancel" : "Abbrechen",
@@ -25,6 +24,7 @@
"This weekend" : "Dieses Wochenende",
"Set reminder for this weekend" : "Erinnerung für dieses Wochenende erstellen",
"Next week" : "Nächste Woche",
- "Set reminder for next week" : "Erinnerung für nächste Woche erstellen"
+ "Set reminder for next week" : "Erinnerung für nächste Woche erstellen",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Dateierinnerungen**\n\nSetze Dateierinnerungen."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/de_DE.js b/apps/files_reminders/l10n/de_DE.js
index 420acc51ab8..584ad09f9c0 100644
--- a/apps/files_reminders/l10n/de_DE.js
+++ b/apps/files_reminders/l10n/de_DE.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Datei anzeigen",
"View folder" : "Ordner anzeigen",
"Set file reminders" : "Dateierinnerungen setzen",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Dateierinnerungen**\n\nSetze Dateierinnerungen.",
"We will remind you of this file" : "Sie werden an diese Datei erinnert",
"Please choose a valid date & time" : "Bitte gültiges Datum und Uhrzeit wählen",
"Cancel" : "Abbrechen",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "Dieses Wochenende",
"Set reminder for this weekend" : "Erinnerung für kommendes Wochenende erstellen",
"Next week" : "Nächste Woche",
- "Set reminder for next week" : "Erinnerung für nächste Woche erstellen"
+ "Set reminder for next week" : "Erinnerung für nächste Woche erstellen",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Dateierinnerungen**\n\nSetze Dateierinnerungen."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_reminders/l10n/de_DE.json b/apps/files_reminders/l10n/de_DE.json
index 70b894a0461..4ab64716cf4 100644
--- a/apps/files_reminders/l10n/de_DE.json
+++ b/apps/files_reminders/l10n/de_DE.json
@@ -4,7 +4,6 @@
"View file" : "Datei anzeigen",
"View folder" : "Ordner anzeigen",
"Set file reminders" : "Dateierinnerungen setzen",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Dateierinnerungen**\n\nSetze Dateierinnerungen.",
"We will remind you of this file" : "Sie werden an diese Datei erinnert",
"Please choose a valid date & time" : "Bitte gültiges Datum und Uhrzeit wählen",
"Cancel" : "Abbrechen",
@@ -25,6 +24,7 @@
"This weekend" : "Dieses Wochenende",
"Set reminder for this weekend" : "Erinnerung für kommendes Wochenende erstellen",
"Next week" : "Nächste Woche",
- "Set reminder for next week" : "Erinnerung für nächste Woche erstellen"
+ "Set reminder for next week" : "Erinnerung für nächste Woche erstellen",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Dateierinnerungen**\n\nSetze Dateierinnerungen."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/el.js b/apps/files_reminders/l10n/el.js
index dc060ab5bbe..d81e468f079 100644
--- a/apps/files_reminders/l10n/el.js
+++ b/apps/files_reminders/l10n/el.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Προβολή αρχείου",
"View folder" : "Προβολή φακέλου",
"Set file reminders" : "Ορίστε υπενθυμίσεις αρχείων",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Υπενθυμίσεις αρχείων**\n\nΟρίστε υπενθυμίσεις αρχείων.",
"Please choose a valid date & time" : "Επιλέξτε μια έγκυρη ημερομηνία και ώρα",
"Cancel" : "Ακύρωση",
"Clear reminder" : "Εκκαθάριση υπενθύμισης",
@@ -23,6 +22,7 @@ OC.L10N.register(
"This weekend" : "Αυτό το Σαββατοκύριακο",
"Set reminder for this weekend" : "Ορίστε υπενθύμιση για αυτό το Σαββατοκύριακο",
"Next week" : "Επόμενη εβδομάδα",
- "Set reminder for next week" : "Ορίστε υπενθύμιση για την επόμενη εβδομάδα"
+ "Set reminder for next week" : "Ορίστε υπενθύμιση για την επόμενη εβδομάδα",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Υπενθυμίσεις αρχείων**\n\nΟρίστε υπενθυμίσεις αρχείων."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_reminders/l10n/el.json b/apps/files_reminders/l10n/el.json
index ed84c8a2ea2..97131aaa403 100644
--- a/apps/files_reminders/l10n/el.json
+++ b/apps/files_reminders/l10n/el.json
@@ -4,7 +4,6 @@
"View file" : "Προβολή αρχείου",
"View folder" : "Προβολή φακέλου",
"Set file reminders" : "Ορίστε υπενθυμίσεις αρχείων",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Υπενθυμίσεις αρχείων**\n\nΟρίστε υπενθυμίσεις αρχείων.",
"Please choose a valid date & time" : "Επιλέξτε μια έγκυρη ημερομηνία και ώρα",
"Cancel" : "Ακύρωση",
"Clear reminder" : "Εκκαθάριση υπενθύμισης",
@@ -21,6 +20,7 @@
"This weekend" : "Αυτό το Σαββατοκύριακο",
"Set reminder for this weekend" : "Ορίστε υπενθύμιση για αυτό το Σαββατοκύριακο",
"Next week" : "Επόμενη εβδομάδα",
- "Set reminder for next week" : "Ορίστε υπενθύμιση για την επόμενη εβδομάδα"
+ "Set reminder for next week" : "Ορίστε υπενθύμιση για την επόμενη εβδομάδα",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Υπενθυμίσεις αρχείων**\n\nΟρίστε υπενθυμίσεις αρχείων."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/en_GB.js b/apps/files_reminders/l10n/en_GB.js
index d71234269e2..364f6515eab 100644
--- a/apps/files_reminders/l10n/en_GB.js
+++ b/apps/files_reminders/l10n/en_GB.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "View file",
"View folder" : "View folder",
"Set file reminders" : "Set file reminders",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 File reminders**\n\nSet file reminders.",
"We will remind you of this file" : "We will remind you of this file",
"Please choose a valid date & time" : "Please choose a valid date & time",
"Cancel" : "Cancel",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "This weekend",
"Set reminder for this weekend" : "Set reminder for this weekend",
"Next week" : "Next week",
- "Set reminder for next week" : "Set reminder for next week"
+ "Set reminder for next week" : "Set reminder for next week",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 File reminders**\n\nSet file reminders."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_reminders/l10n/en_GB.json b/apps/files_reminders/l10n/en_GB.json
index b385425916f..e07735ac3a3 100644
--- a/apps/files_reminders/l10n/en_GB.json
+++ b/apps/files_reminders/l10n/en_GB.json
@@ -4,7 +4,6 @@
"View file" : "View file",
"View folder" : "View folder",
"Set file reminders" : "Set file reminders",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 File reminders**\n\nSet file reminders.",
"We will remind you of this file" : "We will remind you of this file",
"Please choose a valid date & time" : "Please choose a valid date & time",
"Cancel" : "Cancel",
@@ -25,6 +24,7 @@
"This weekend" : "This weekend",
"Set reminder for this weekend" : "Set reminder for this weekend",
"Next week" : "Next week",
- "Set reminder for next week" : "Set reminder for next week"
+ "Set reminder for next week" : "Set reminder for next week",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 File reminders**\n\nSet file reminders."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/es.js b/apps/files_reminders/l10n/es.js
index ab2001272ad..14d91eb1465 100644
--- a/apps/files_reminders/l10n/es.js
+++ b/apps/files_reminders/l10n/es.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Ver archivo",
"View folder" : "Ver carpeta",
"Set file reminders" : "Establecer recordatorios de archivo",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Recordatorios de archivo**\n\nEstablecer recordatorios de archivo.",
"We will remind you of this file" : "Le recordaremos de este archivo",
"Please choose a valid date & time" : "Por favor, escoja una fecha y hora válidas",
"Cancel" : "Cancelar",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "Este fin de semana",
"Set reminder for this weekend" : "Configurar recordatorio para este fin de semana",
"Next week" : "Semana siguiente",
- "Set reminder for next week" : "Configurar recordatorio para la semana que viene"
+ "Set reminder for next week" : "Configurar recordatorio para la semana que viene",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Recordatorios de archivo**\n\nEstablecer recordatorios de archivo."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/files_reminders/l10n/es.json b/apps/files_reminders/l10n/es.json
index 170f0c232d4..6e65cc415a7 100644
--- a/apps/files_reminders/l10n/es.json
+++ b/apps/files_reminders/l10n/es.json
@@ -4,7 +4,6 @@
"View file" : "Ver archivo",
"View folder" : "Ver carpeta",
"Set file reminders" : "Establecer recordatorios de archivo",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Recordatorios de archivo**\n\nEstablecer recordatorios de archivo.",
"We will remind you of this file" : "Le recordaremos de este archivo",
"Please choose a valid date & time" : "Por favor, escoja una fecha y hora válidas",
"Cancel" : "Cancelar",
@@ -25,6 +24,7 @@
"This weekend" : "Este fin de semana",
"Set reminder for this weekend" : "Configurar recordatorio para este fin de semana",
"Next week" : "Semana siguiente",
- "Set reminder for next week" : "Configurar recordatorio para la semana que viene"
+ "Set reminder for next week" : "Configurar recordatorio para la semana que viene",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Recordatorios de archivo**\n\nEstablecer recordatorios de archivo."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/eu.js b/apps/files_reminders/l10n/eu.js
new file mode 100644
index 00000000000..e5cb815ada5
--- /dev/null
+++ b/apps/files_reminders/l10n/eu.js
@@ -0,0 +1,21 @@
+OC.L10N.register(
+ "files_reminders",
+ {
+ "File reminders" : "Fitxategiaren gogorarazpenak",
+ "View file" : "Ikusi fitxategia",
+ "View folder" : "Ikusi karpeta",
+ "Cancel" : "Utzi",
+ "Clear reminder" : "Garbitu gogorarazpena",
+ "Set reminder" : "Ezarri gogorarazpena",
+ "Failed to clear reminder" : "Gogorarazpena garbitzeak huts egin du",
+ "Set custom reminder" : "Ezarri gogorarazpen pertsonalizatua",
+ "Later today" : "Beranduago gaur",
+ "Set reminder for later today" : "Ezarri gogorarazpena gaur beranduagorako",
+ "Tomorrow" : "Bihar",
+ "Set reminder for tomorrow" : "Ezarri gogorarazpena biharko",
+ "This weekend" : "Asteburu hau",
+ "Set reminder for this weekend" : "Ezarri gogorarazpena asteburu honetarako",
+ "Next week" : "Hurrengo astea",
+ "Set reminder for next week" : "Ezarri gogorarazpena hurrengo asterako"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_reminders/l10n/eu.json b/apps/files_reminders/l10n/eu.json
new file mode 100644
index 00000000000..fb85c1bef4b
--- /dev/null
+++ b/apps/files_reminders/l10n/eu.json
@@ -0,0 +1,19 @@
+{ "translations": {
+ "File reminders" : "Fitxategiaren gogorarazpenak",
+ "View file" : "Ikusi fitxategia",
+ "View folder" : "Ikusi karpeta",
+ "Cancel" : "Utzi",
+ "Clear reminder" : "Garbitu gogorarazpena",
+ "Set reminder" : "Ezarri gogorarazpena",
+ "Failed to clear reminder" : "Gogorarazpena garbitzeak huts egin du",
+ "Set custom reminder" : "Ezarri gogorarazpen pertsonalizatua",
+ "Later today" : "Beranduago gaur",
+ "Set reminder for later today" : "Ezarri gogorarazpena gaur beranduagorako",
+ "Tomorrow" : "Bihar",
+ "Set reminder for tomorrow" : "Ezarri gogorarazpena biharko",
+ "This weekend" : "Asteburu hau",
+ "Set reminder for this weekend" : "Ezarri gogorarazpena asteburu honetarako",
+ "Next week" : "Hurrengo astea",
+ "Set reminder for next week" : "Ezarri gogorarazpena hurrengo asterako"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/fi.js b/apps/files_reminders/l10n/fi.js
index 5e3327be7dc..c19b7944c90 100644
--- a/apps/files_reminders/l10n/fi.js
+++ b/apps/files_reminders/l10n/fi.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Näytä tiedosto",
"View folder" : "Näytä kansio",
"Set file reminders" : "Aseta tiedostomuistutuksia",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Tiedostomuistutukset**\n\nAseta tiedostomuistutuksia.",
"We will remind you of this file" : "Muistutamme sinua tästä tiedostosta",
"Please choose a valid date & time" : "Valitse kelvollinen päivä ja aika",
"Cancel" : "Peruuta",
@@ -26,6 +25,7 @@ OC.L10N.register(
"This weekend" : "Tämä viikonloppu",
"Set reminder for this weekend" : "Aseta muistutus tälle viikonlopulle",
"Next week" : "Seuraava viikko",
- "Set reminder for next week" : "Aseta muistutus seuraavalle viikolle"
+ "Set reminder for next week" : "Aseta muistutus seuraavalle viikolle",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Tiedostomuistutukset**\n\nAseta tiedostomuistutuksia."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_reminders/l10n/fi.json b/apps/files_reminders/l10n/fi.json
index 42b0e5146a4..33a85038764 100644
--- a/apps/files_reminders/l10n/fi.json
+++ b/apps/files_reminders/l10n/fi.json
@@ -4,7 +4,6 @@
"View file" : "Näytä tiedosto",
"View folder" : "Näytä kansio",
"Set file reminders" : "Aseta tiedostomuistutuksia",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Tiedostomuistutukset**\n\nAseta tiedostomuistutuksia.",
"We will remind you of this file" : "Muistutamme sinua tästä tiedostosta",
"Please choose a valid date & time" : "Valitse kelvollinen päivä ja aika",
"Cancel" : "Peruuta",
@@ -24,6 +23,7 @@
"This weekend" : "Tämä viikonloppu",
"Set reminder for this weekend" : "Aseta muistutus tälle viikonlopulle",
"Next week" : "Seuraava viikko",
- "Set reminder for next week" : "Aseta muistutus seuraavalle viikolle"
+ "Set reminder for next week" : "Aseta muistutus seuraavalle viikolle",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Tiedostomuistutukset**\n\nAseta tiedostomuistutuksia."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/fr.js b/apps/files_reminders/l10n/fr.js
index e34629c463f..9567ec7bd57 100644
--- a/apps/files_reminders/l10n/fr.js
+++ b/apps/files_reminders/l10n/fr.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Voir le fichier",
"View folder" : "Voir le dossier",
"Set file reminders" : "Définir des rappels pour des fichiers",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Rappels de fichiers**\n\nDéfinissez des rappels de fichiers.",
"We will remind you of this file" : "Nous vous rappellerons de ce fichier",
"Please choose a valid date & time" : "Veuillez choisir une date et une heure valables",
"Cancel" : "Annuler",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "Ce week-end",
"Set reminder for this weekend" : "Définir un rappel pour ce week-end",
"Next week" : "Semaine suivante",
- "Set reminder for next week" : "Définir un rappel pour la semaine prochaine"
+ "Set reminder for next week" : "Définir un rappel pour la semaine prochaine",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Rappels de fichiers**\n\nDéfinissez des rappels de fichiers."
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/files_reminders/l10n/fr.json b/apps/files_reminders/l10n/fr.json
index b7f10a054cc..6e7049467c1 100644
--- a/apps/files_reminders/l10n/fr.json
+++ b/apps/files_reminders/l10n/fr.json
@@ -4,7 +4,6 @@
"View file" : "Voir le fichier",
"View folder" : "Voir le dossier",
"Set file reminders" : "Définir des rappels pour des fichiers",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Rappels de fichiers**\n\nDéfinissez des rappels de fichiers.",
"We will remind you of this file" : "Nous vous rappellerons de ce fichier",
"Please choose a valid date & time" : "Veuillez choisir une date et une heure valables",
"Cancel" : "Annuler",
@@ -25,6 +24,7 @@
"This weekend" : "Ce week-end",
"Set reminder for this weekend" : "Définir un rappel pour ce week-end",
"Next week" : "Semaine suivante",
- "Set reminder for next week" : "Définir un rappel pour la semaine prochaine"
+ "Set reminder for next week" : "Définir un rappel pour la semaine prochaine",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Rappels de fichiers**\n\nDéfinissez des rappels de fichiers."
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/ga.js b/apps/files_reminders/l10n/ga.js
index 0d73093683a..a8e660d3d7c 100644
--- a/apps/files_reminders/l10n/ga.js
+++ b/apps/files_reminders/l10n/ga.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Féach ar chomhad",
"View folder" : "Féach ar fhillteán",
"Set file reminders" : "Socraigh meabhrúcháin comhaid",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Meabhrúcháin comhaid**\n\nSocraigh meabhrúcháin comhaid.",
"We will remind you of this file" : "Cuirfimid an comhad seo i gcuimhne duit",
"Please choose a valid date & time" : "Roghnaigh dáta agus am bailí le do thoil",
"Cancel" : "Cealaigh",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "An deireadh seachtaine seo",
"Set reminder for this weekend" : "Socraigh meabhrúchán don deireadh seachtaine seo",
"Next week" : "An tseachtain seo chugainn",
- "Set reminder for next week" : "Socraigh meabhrúchán don tseachtain seo chugainn"
+ "Set reminder for next week" : "Socraigh meabhrúchán don tseachtain seo chugainn",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Meabhrúcháin comhaid**\n\nSocraigh meabhrúcháin comhaid."
},
"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);");
diff --git a/apps/files_reminders/l10n/ga.json b/apps/files_reminders/l10n/ga.json
index 2fbc46ff235..c95d09a0acd 100644
--- a/apps/files_reminders/l10n/ga.json
+++ b/apps/files_reminders/l10n/ga.json
@@ -4,7 +4,6 @@
"View file" : "Féach ar chomhad",
"View folder" : "Féach ar fhillteán",
"Set file reminders" : "Socraigh meabhrúcháin comhaid",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Meabhrúcháin comhaid**\n\nSocraigh meabhrúcháin comhaid.",
"We will remind you of this file" : "Cuirfimid an comhad seo i gcuimhne duit",
"Please choose a valid date & time" : "Roghnaigh dáta agus am bailí le do thoil",
"Cancel" : "Cealaigh",
@@ -25,6 +24,7 @@
"This weekend" : "An deireadh seachtaine seo",
"Set reminder for this weekend" : "Socraigh meabhrúchán don deireadh seachtaine seo",
"Next week" : "An tseachtain seo chugainn",
- "Set reminder for next week" : "Socraigh meabhrúchán don tseachtain seo chugainn"
+ "Set reminder for next week" : "Socraigh meabhrúchán don tseachtain seo chugainn",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Meabhrúcháin comhaid**\n\nSocraigh meabhrúcháin comhaid."
},"pluralForm" :"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/gl.js b/apps/files_reminders/l10n/gl.js
index 91f41b71c18..a3325f9d4c5 100644
--- a/apps/files_reminders/l10n/gl.js
+++ b/apps/files_reminders/l10n/gl.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Ver ficheiro",
"View folder" : "Ver cartafol",
"Set file reminders" : "Definir lembretes de ficheiros",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Lembretes de ficheiros**\n\nDefinir lembretes de ficheiros.",
"We will remind you of this file" : "Lembrarémoslle este ficheiro",
"Please choose a valid date & time" : "Escolla unha data e hora válidas",
"Cancel" : "Cancelar",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "Este fin de semana",
"Set reminder for this weekend" : "Definir un lembrete para este fin de semana",
"Next week" : "Semana seguinte",
- "Set reminder for next week" : "Definir un lembrete para a semana seguinte"
+ "Set reminder for next week" : "Definir un lembrete para a semana seguinte",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Lembretes de ficheiros**\n\nDefinir lembretes de ficheiros."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_reminders/l10n/gl.json b/apps/files_reminders/l10n/gl.json
index 82c7e83eee2..d250bccb002 100644
--- a/apps/files_reminders/l10n/gl.json
+++ b/apps/files_reminders/l10n/gl.json
@@ -4,7 +4,6 @@
"View file" : "Ver ficheiro",
"View folder" : "Ver cartafol",
"Set file reminders" : "Definir lembretes de ficheiros",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Lembretes de ficheiros**\n\nDefinir lembretes de ficheiros.",
"We will remind you of this file" : "Lembrarémoslle este ficheiro",
"Please choose a valid date & time" : "Escolla unha data e hora válidas",
"Cancel" : "Cancelar",
@@ -25,6 +24,7 @@
"This weekend" : "Este fin de semana",
"Set reminder for this weekend" : "Definir un lembrete para este fin de semana",
"Next week" : "Semana seguinte",
- "Set reminder for next week" : "Definir un lembrete para a semana seguinte"
+ "Set reminder for next week" : "Definir un lembrete para a semana seguinte",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Lembretes de ficheiros**\n\nDefinir lembretes de ficheiros."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/hu.js b/apps/files_reminders/l10n/hu.js
index 2818016f63a..454dbdfc9ec 100644
--- a/apps/files_reminders/l10n/hu.js
+++ b/apps/files_reminders/l10n/hu.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Fájl megtekintése",
"View folder" : "Mappa megtekintése",
"Set file reminders" : "Fájl emlékeztetők beállítása",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Fájl emlékeztetők**\n\nFájl emlékeztetők beállítása.",
"We will remind you of this file" : "Emlékeztetni fogjuk Önt erre a fájlra",
"Please choose a valid date & time" : "Adjon meg egy érvényes dátumot és időt",
"Cancel" : "Mégse",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "Ezen a héten",
"Set reminder for this weekend" : "Emlékeztető beállítása erre a hétvégére",
"Next week" : "Következő hét",
- "Set reminder for next week" : "Emlékeztető beállítása a következő hétre"
+ "Set reminder for next week" : "Emlékeztető beállítása a következő hétre",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Fájl emlékeztetők**\n\nFájl emlékeztetők beállítása."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_reminders/l10n/hu.json b/apps/files_reminders/l10n/hu.json
index 11ed35d88cb..7b80a86470a 100644
--- a/apps/files_reminders/l10n/hu.json
+++ b/apps/files_reminders/l10n/hu.json
@@ -4,7 +4,6 @@
"View file" : "Fájl megtekintése",
"View folder" : "Mappa megtekintése",
"Set file reminders" : "Fájl emlékeztetők beállítása",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Fájl emlékeztetők**\n\nFájl emlékeztetők beállítása.",
"We will remind you of this file" : "Emlékeztetni fogjuk Önt erre a fájlra",
"Please choose a valid date & time" : "Adjon meg egy érvényes dátumot és időt",
"Cancel" : "Mégse",
@@ -25,6 +24,7 @@
"This weekend" : "Ezen a héten",
"Set reminder for this weekend" : "Emlékeztető beállítása erre a hétvégére",
"Next week" : "Következő hét",
- "Set reminder for next week" : "Emlékeztető beállítása a következő hétre"
+ "Set reminder for next week" : "Emlékeztető beállítása a következő hétre",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Fájl emlékeztetők**\n\nFájl emlékeztetők beállítása."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/it.js b/apps/files_reminders/l10n/it.js
index 99a5279b6b7..123bddbd9fa 100644
--- a/apps/files_reminders/l10n/it.js
+++ b/apps/files_reminders/l10n/it.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Visualizza file",
"View folder" : "Visualizza cartella",
"Set file reminders" : "Imposta promemoria per i file",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Promemoria file**\n\nImposta promemoria per i file.",
"We will remind you of this file" : "Ti ricorderemo questo file",
"Please choose a valid date & time" : "Si prega di scegliere una data valida & ora",
"Cancel" : "Annulla",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "Questo fine settimana",
"Set reminder for this weekend" : "Imposta promemoria per questo fine settimana",
"Next week" : "Settimana successiva",
- "Set reminder for next week" : "Imposta promemoria per la prossima settimana"
+ "Set reminder for next week" : "Imposta promemoria per la prossima settimana",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Promemoria file**\n\nImposta promemoria per i file."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/files_reminders/l10n/it.json b/apps/files_reminders/l10n/it.json
index a9ac5ace74b..dc9a22e294e 100644
--- a/apps/files_reminders/l10n/it.json
+++ b/apps/files_reminders/l10n/it.json
@@ -4,7 +4,6 @@
"View file" : "Visualizza file",
"View folder" : "Visualizza cartella",
"Set file reminders" : "Imposta promemoria per i file",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Promemoria file**\n\nImposta promemoria per i file.",
"We will remind you of this file" : "Ti ricorderemo questo file",
"Please choose a valid date & time" : "Si prega di scegliere una data valida & ora",
"Cancel" : "Annulla",
@@ -25,6 +24,7 @@
"This weekend" : "Questo fine settimana",
"Set reminder for this weekend" : "Imposta promemoria per questo fine settimana",
"Next week" : "Settimana successiva",
- "Set reminder for next week" : "Imposta promemoria per la prossima settimana"
+ "Set reminder for next week" : "Imposta promemoria per la prossima settimana",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Promemoria file**\n\nImposta promemoria per i file."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/ja.js b/apps/files_reminders/l10n/ja.js
index b7ba46020e0..96e38e6ee9c 100644
--- a/apps/files_reminders/l10n/ja.js
+++ b/apps/files_reminders/l10n/ja.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "ファイルを表示",
"View folder" : "フォルダーを表示",
"Set file reminders" : "ファイルのリマインダーを設定する",
- "**📣 File reminders**\n\nSet file reminders." : "**📣ファイル リマインダー**\n\nファイルのリマインダーを設定する。",
"We will remind you of this file" : "このファイルをリマインドします",
"Please choose a valid date & time" : "有効な日付と時間を選択してください。",
"Cancel" : "キャンセル",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "この週末",
"Set reminder for this weekend" : "今週末のリマインダーを設定する",
"Next week" : "来週",
- "Set reminder for next week" : "来週のリマインダーを設定する"
+ "Set reminder for next week" : "来週のリマインダーを設定する",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣ファイル リマインダー**\n\nファイルのリマインダーを設定する。"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_reminders/l10n/ja.json b/apps/files_reminders/l10n/ja.json
index 66dd100e963..ce5830b585c 100644
--- a/apps/files_reminders/l10n/ja.json
+++ b/apps/files_reminders/l10n/ja.json
@@ -4,7 +4,6 @@
"View file" : "ファイルを表示",
"View folder" : "フォルダーを表示",
"Set file reminders" : "ファイルのリマインダーを設定する",
- "**📣 File reminders**\n\nSet file reminders." : "**📣ファイル リマインダー**\n\nファイルのリマインダーを設定する。",
"We will remind you of this file" : "このファイルをリマインドします",
"Please choose a valid date & time" : "有効な日付と時間を選択してください。",
"Cancel" : "キャンセル",
@@ -25,6 +24,7 @@
"This weekend" : "この週末",
"Set reminder for this weekend" : "今週末のリマインダーを設定する",
"Next week" : "来週",
- "Set reminder for next week" : "来週のリマインダーを設定する"
+ "Set reminder for next week" : "来週のリマインダーを設定する",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣ファイル リマインダー**\n\nファイルのリマインダーを設定する。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/ko.js b/apps/files_reminders/l10n/ko.js
index 494e985ac8f..27e0f446163 100644
--- a/apps/files_reminders/l10n/ko.js
+++ b/apps/files_reminders/l10n/ko.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "파일 보기",
"View folder" : "폴더 보기",
"Set file reminders" : "파일 알림 설정",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 파일 알림**\n\n파일 알림을 설정하세요.",
"We will remind you of this file" : "이 파일에 대해 알림을 드립니다",
"Please choose a valid date & time" : "유효한 날짜와 시간을 지정하십시오",
"Cancel" : "취소",
@@ -25,6 +24,7 @@ OC.L10N.register(
"This weekend" : "이번 주말",
"Set reminder for this weekend" : "알림을 주말로 설정",
"Next week" : "다음주",
- "Set reminder for next week" : "알림을 다음주로 설정"
+ "Set reminder for next week" : "알림을 다음주로 설정",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 파일 알림**\n\n파일 알림을 설정하세요."
},
"nplurals=1; plural=0;");
diff --git a/apps/files_reminders/l10n/ko.json b/apps/files_reminders/l10n/ko.json
index 0d48efaa46d..b8e88dcc618 100644
--- a/apps/files_reminders/l10n/ko.json
+++ b/apps/files_reminders/l10n/ko.json
@@ -4,7 +4,6 @@
"View file" : "파일 보기",
"View folder" : "폴더 보기",
"Set file reminders" : "파일 알림 설정",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 파일 알림**\n\n파일 알림을 설정하세요.",
"We will remind you of this file" : "이 파일에 대해 알림을 드립니다",
"Please choose a valid date & time" : "유효한 날짜와 시간을 지정하십시오",
"Cancel" : "취소",
@@ -23,6 +22,7 @@
"This weekend" : "이번 주말",
"Set reminder for this weekend" : "알림을 주말로 설정",
"Next week" : "다음주",
- "Set reminder for next week" : "알림을 다음주로 설정"
+ "Set reminder for next week" : "알림을 다음주로 설정",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 파일 알림**\n\n파일 알림을 설정하세요."
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/lt_LT.js b/apps/files_reminders/l10n/lt_LT.js
index 0220911b03a..7ecb7added1 100644
--- a/apps/files_reminders/l10n/lt_LT.js
+++ b/apps/files_reminders/l10n/lt_LT.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Rodyti failą",
"View folder" : "Rodyti aplanką",
"Set file reminders" : "Nustatyti priminimus apie failus",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Priminimai apie failus**\n\nNustatyti priminimus apie failus.",
"Please choose a valid date & time" : "Pasirinkite tinkamą datą ir laiką",
"Cancel" : "Atsisakyti",
"Clear reminder" : "Panaikinti priminimą",
@@ -23,6 +22,7 @@ OC.L10N.register(
"This weekend" : "Šį savaitgalį",
"Set reminder for this weekend" : "Nustatyti priminimą šį savaitgalį",
"Next week" : "Kitą savaitę",
- "Set reminder for next week" : "Nustatyti priminimą kitą savaitę"
+ "Set reminder for next week" : "Nustatyti priminimą kitą savaitę",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Priminimai apie failus**\n\nNustatyti priminimus apie failus."
},
"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/apps/files_reminders/l10n/lt_LT.json b/apps/files_reminders/l10n/lt_LT.json
index 526aafc5c08..efdc15f2d54 100644
--- a/apps/files_reminders/l10n/lt_LT.json
+++ b/apps/files_reminders/l10n/lt_LT.json
@@ -4,7 +4,6 @@
"View file" : "Rodyti failą",
"View folder" : "Rodyti aplanką",
"Set file reminders" : "Nustatyti priminimus apie failus",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Priminimai apie failus**\n\nNustatyti priminimus apie failus.",
"Please choose a valid date & time" : "Pasirinkite tinkamą datą ir laiką",
"Cancel" : "Atsisakyti",
"Clear reminder" : "Panaikinti priminimą",
@@ -21,6 +20,7 @@
"This weekend" : "Šį savaitgalį",
"Set reminder for this weekend" : "Nustatyti priminimą šį savaitgalį",
"Next week" : "Kitą savaitę",
- "Set reminder for next week" : "Nustatyti priminimą kitą savaitę"
+ "Set reminder for next week" : "Nustatyti priminimą kitą savaitę",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Priminimai apie failus**\n\nNustatyti priminimus apie failus."
},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/mk.js b/apps/files_reminders/l10n/mk.js
index 49395d646e6..0ff75b705bd 100644
--- a/apps/files_reminders/l10n/mk.js
+++ b/apps/files_reminders/l10n/mk.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Види датотека",
"View folder" : "Види папка",
"Set file reminders" : "Постави потсетник на датотека",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Потсетник на датотеки**\n\nПостави потсетник на датотека.",
"Please choose a valid date & time" : "Внесете валиден датум & време",
"Cancel" : "Откажи",
"Clear reminder" : "Острани потсетник",
@@ -24,6 +23,7 @@ OC.L10N.register(
"This weekend" : "Овој викенд",
"Set reminder for this weekend" : "Постави потсетник за овој викенд",
"Next week" : "Следна недела",
- "Set reminder for next week" : "Постави потсетник за наредната недела"
+ "Set reminder for next week" : "Постави потсетник за наредната недела",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Потсетник на датотеки**\n\nПостави потсетник на датотека."
},
"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;");
diff --git a/apps/files_reminders/l10n/mk.json b/apps/files_reminders/l10n/mk.json
index 83f963dbf08..aed2f5de583 100644
--- a/apps/files_reminders/l10n/mk.json
+++ b/apps/files_reminders/l10n/mk.json
@@ -4,7 +4,6 @@
"View file" : "Види датотека",
"View folder" : "Види папка",
"Set file reminders" : "Постави потсетник на датотека",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Потсетник на датотеки**\n\nПостави потсетник на датотека.",
"Please choose a valid date & time" : "Внесете валиден датум & време",
"Cancel" : "Откажи",
"Clear reminder" : "Острани потсетник",
@@ -22,6 +21,7 @@
"This weekend" : "Овој викенд",
"Set reminder for this weekend" : "Постави потсетник за овој викенд",
"Next week" : "Следна недела",
- "Set reminder for next week" : "Постави потсетник за наредната недела"
+ "Set reminder for next week" : "Постави потсетник за наредната недела",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Потсетник на датотеки**\n\nПостави потсетник на датотека."
},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/nb.js b/apps/files_reminders/l10n/nb.js
index a5854907427..182b3f4d18a 100644
--- a/apps/files_reminders/l10n/nb.js
+++ b/apps/files_reminders/l10n/nb.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Vis fil",
"View folder" : "Vis mappe",
"Set file reminders" : "Angi filpåminnelser",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Filpåminnelser**\n\nAngi filpåminnelser.",
"We will remind you of this file" : "Vi minner deg på denne filen",
"Please choose a valid date & time" : "Vennligst velg en gyldig dato og tid",
"Cancel" : "Avbryt",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "Denne helgen",
"Set reminder for this weekend" : "Sett påminnelse for denne helgen",
"Next week" : "Neste uke",
- "Set reminder for next week" : "Sett påminnelse for neste uke"
+ "Set reminder for next week" : "Sett påminnelse for neste uke",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Filpåminnelser**\n\nAngi filpåminnelser."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_reminders/l10n/nb.json b/apps/files_reminders/l10n/nb.json
index 820334fc096..24d37d8d8c2 100644
--- a/apps/files_reminders/l10n/nb.json
+++ b/apps/files_reminders/l10n/nb.json
@@ -4,7 +4,6 @@
"View file" : "Vis fil",
"View folder" : "Vis mappe",
"Set file reminders" : "Angi filpåminnelser",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Filpåminnelser**\n\nAngi filpåminnelser.",
"We will remind you of this file" : "Vi minner deg på denne filen",
"Please choose a valid date & time" : "Vennligst velg en gyldig dato og tid",
"Cancel" : "Avbryt",
@@ -25,6 +24,7 @@
"This weekend" : "Denne helgen",
"Set reminder for this weekend" : "Sett påminnelse for denne helgen",
"Next week" : "Neste uke",
- "Set reminder for next week" : "Sett påminnelse for neste uke"
+ "Set reminder for next week" : "Sett påminnelse for neste uke",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Filpåminnelser**\n\nAngi filpåminnelser."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/pl.js b/apps/files_reminders/l10n/pl.js
index 2bce635a7b7..17b3defcd2b 100644
--- a/apps/files_reminders/l10n/pl.js
+++ b/apps/files_reminders/l10n/pl.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Zobacz plik",
"View folder" : "Wyświetl katalog",
"Set file reminders" : "Ustaw przypomnienia o plikach",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Przypomnienia o plikach**\n\nUstaw przypomnienia o plikach.",
"We will remind you of this file" : "Przypomnimy Tobie o tym pliku",
"Please choose a valid date & time" : "Wybierz prawidłową datę i godzinę",
"Cancel" : "Anuluj",
@@ -25,6 +24,7 @@ OC.L10N.register(
"This weekend" : "W ten weekend",
"Set reminder for this weekend" : "Ustaw przypomnienie na ten weekend",
"Next week" : "Następny tydzień",
- "Set reminder for next week" : "Ustaw przypomnienie na przyszły tydzień"
+ "Set reminder for next week" : "Ustaw przypomnienie na przyszły tydzień",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Przypomnienia o plikach**\n\nUstaw przypomnienia o plikach."
},
"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);");
diff --git a/apps/files_reminders/l10n/pl.json b/apps/files_reminders/l10n/pl.json
index 242e7503441..fa2a0a8b821 100644
--- a/apps/files_reminders/l10n/pl.json
+++ b/apps/files_reminders/l10n/pl.json
@@ -4,7 +4,6 @@
"View file" : "Zobacz plik",
"View folder" : "Wyświetl katalog",
"Set file reminders" : "Ustaw przypomnienia o plikach",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Przypomnienia o plikach**\n\nUstaw przypomnienia o plikach.",
"We will remind you of this file" : "Przypomnimy Tobie o tym pliku",
"Please choose a valid date & time" : "Wybierz prawidłową datę i godzinę",
"Cancel" : "Anuluj",
@@ -23,6 +22,7 @@
"This weekend" : "W ten weekend",
"Set reminder for this weekend" : "Ustaw przypomnienie na ten weekend",
"Next week" : "Następny tydzień",
- "Set reminder for next week" : "Ustaw przypomnienie na przyszły tydzień"
+ "Set reminder for next week" : "Ustaw przypomnienie na przyszły tydzień",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Przypomnienia o plikach**\n\nUstaw przypomnienia o plikach."
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/pt_BR.js b/apps/files_reminders/l10n/pt_BR.js
index b6746c8949c..adb45745962 100644
--- a/apps/files_reminders/l10n/pt_BR.js
+++ b/apps/files_reminders/l10n/pt_BR.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Ver arquivo",
"View folder" : "Ver pasta",
"Set file reminders" : "Define lembrete em arquivo",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Lembrete em Arquivo**\n\nDefine lembrete em arquivo.",
"We will remind you of this file" : "Vamos lembrá-lo deste arquivo",
"Please choose a valid date & time" : "Por favor escolha uma data e hora válida.",
"Cancel" : "Cancelar",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "Este fim de semana",
"Set reminder for this weekend" : "Definir lembrete para este fim de semana",
"Next week" : "Próxima semana",
- "Set reminder for next week" : "Definir lembrete para a próxima semana"
+ "Set reminder for next week" : "Definir lembrete para a próxima semana",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Lembrete em Arquivo**\n\nDefine lembrete em arquivo."
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/files_reminders/l10n/pt_BR.json b/apps/files_reminders/l10n/pt_BR.json
index d4a68f64b56..e97d120ec8c 100644
--- a/apps/files_reminders/l10n/pt_BR.json
+++ b/apps/files_reminders/l10n/pt_BR.json
@@ -4,7 +4,6 @@
"View file" : "Ver arquivo",
"View folder" : "Ver pasta",
"Set file reminders" : "Define lembrete em arquivo",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Lembrete em Arquivo**\n\nDefine lembrete em arquivo.",
"We will remind you of this file" : "Vamos lembrá-lo deste arquivo",
"Please choose a valid date & time" : "Por favor escolha uma data e hora válida.",
"Cancel" : "Cancelar",
@@ -25,6 +24,7 @@
"This weekend" : "Este fim de semana",
"Set reminder for this weekend" : "Definir lembrete para este fim de semana",
"Next week" : "Próxima semana",
- "Set reminder for next week" : "Definir lembrete para a próxima semana"
+ "Set reminder for next week" : "Definir lembrete para a próxima semana",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Lembrete em Arquivo**\n\nDefine lembrete em arquivo."
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/ro.js b/apps/files_reminders/l10n/ro.js
index 85ca2e68b65..35d51a6f90c 100644
--- a/apps/files_reminders/l10n/ro.js
+++ b/apps/files_reminders/l10n/ro.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Vezi fișierul",
"View folder" : "Vezi dosarul",
"Set file reminders" : "Setează memo pentru fișier",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Mementouri fișier**\n\nSetează mementorui fișier.",
"We will remind you of this file" : "Vă vom reaminti despre acest fișier",
"Please choose a valid date & time" : "Selectați o dată și o oră valide",
"Cancel" : "Anulare",
@@ -25,6 +24,7 @@ OC.L10N.register(
"This weekend" : "În acest weekend",
"Set reminder for this weekend" : "Setează memo pentru acest weekend",
"Next week" : "Saptămâna următoare",
- "Set reminder for next week" : "Setează memo pentru săptămâna viitoare"
+ "Set reminder for next week" : "Setează memo pentru săptămâna viitoare",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Mementouri fișier**\n\nSetează mementorui fișier."
},
"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));");
diff --git a/apps/files_reminders/l10n/ro.json b/apps/files_reminders/l10n/ro.json
index 50a7a5676e2..18b9cb03c7a 100644
--- a/apps/files_reminders/l10n/ro.json
+++ b/apps/files_reminders/l10n/ro.json
@@ -4,7 +4,6 @@
"View file" : "Vezi fișierul",
"View folder" : "Vezi dosarul",
"Set file reminders" : "Setează memo pentru fișier",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Mementouri fișier**\n\nSetează mementorui fișier.",
"We will remind you of this file" : "Vă vom reaminti despre acest fișier",
"Please choose a valid date & time" : "Selectați o dată și o oră valide",
"Cancel" : "Anulare",
@@ -23,6 +22,7 @@
"This weekend" : "În acest weekend",
"Set reminder for this weekend" : "Setează memo pentru acest weekend",
"Next week" : "Saptămâna următoare",
- "Set reminder for next week" : "Setează memo pentru săptămâna viitoare"
+ "Set reminder for next week" : "Setează memo pentru săptămâna viitoare",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Mementouri fișier**\n\nSetează mementorui fișier."
},"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/ru.js b/apps/files_reminders/l10n/ru.js
index 77b9f6f5134..143740bff4b 100644
--- a/apps/files_reminders/l10n/ru.js
+++ b/apps/files_reminders/l10n/ru.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Просмотреть файл",
"View folder" : "Просмотреть папку",
"Set file reminders" : "Установить напоминания о файлах",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Напоминания о файлах**\n\nУстановить напоминания о файлах.",
"We will remind you of this file" : "Мы напомним вам об этом файле",
"Please choose a valid date & time" : "Пожалуйста, выберите правильную дату и время",
"Cancel" : "Отмена",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "Эта неделя",
"Set reminder for this weekend" : "Установить напоминание на эти выходные",
"Next week" : "Следующая неделя",
- "Set reminder for next week" : "Установить напоминание на следующую неделю"
+ "Set reminder for next week" : "Установить напоминание на следующую неделю",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Напоминания о файлах**\n\nУстановить напоминания о файлах."
},
"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/apps/files_reminders/l10n/ru.json b/apps/files_reminders/l10n/ru.json
index e7f4bc3bbde..2f31bd25c67 100644
--- a/apps/files_reminders/l10n/ru.json
+++ b/apps/files_reminders/l10n/ru.json
@@ -4,7 +4,6 @@
"View file" : "Просмотреть файл",
"View folder" : "Просмотреть папку",
"Set file reminders" : "Установить напоминания о файлах",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Напоминания о файлах**\n\nУстановить напоминания о файлах.",
"We will remind you of this file" : "Мы напомним вам об этом файле",
"Please choose a valid date & time" : "Пожалуйста, выберите правильную дату и время",
"Cancel" : "Отмена",
@@ -25,6 +24,7 @@
"This weekend" : "Эта неделя",
"Set reminder for this weekend" : "Установить напоминание на эти выходные",
"Next week" : "Следующая неделя",
- "Set reminder for next week" : "Установить напоминание на следующую неделю"
+ "Set reminder for next week" : "Установить напоминание на следующую неделю",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Напоминания о файлах**\n\nУстановить напоминания о файлах."
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/sc.js b/apps/files_reminders/l10n/sc.js
index f214dfde1c4..871520d0e27 100644
--- a/apps/files_reminders/l10n/sc.js
+++ b/apps/files_reminders/l10n/sc.js
@@ -2,7 +2,6 @@ OC.L10N.register(
"files_reminders",
{
"Set file reminders" : "Cunfigura apuntos de archìviu",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Apuntos de archìviu**\n\nCunfigura apuntos de archìviu.",
"Cancel" : "Annulla",
"Set reminder" : "Cunfigura un'apuntu",
"Set reminder for \"{fileName}\"" : "Cunfigura un'apuntu pro \"{fileName}\"",
@@ -15,6 +14,7 @@ OC.L10N.register(
"Set reminder for tomorrow" : "Cunfigura un'apuntu pro cras",
"Set reminder for this weekend" : "Cunfigura un'apuntu pro custu fine de chida",
"Next week" : "Sa chida chi benit",
- "Set reminder for next week" : "Cunfigura un'apuntu pro chida chi benit"
+ "Set reminder for next week" : "Cunfigura un'apuntu pro chida chi benit",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Apuntos de archìviu**\n\nCunfigura apuntos de archìviu."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_reminders/l10n/sc.json b/apps/files_reminders/l10n/sc.json
index 0d150808fd4..2f54de989c8 100644
--- a/apps/files_reminders/l10n/sc.json
+++ b/apps/files_reminders/l10n/sc.json
@@ -1,6 +1,5 @@
{ "translations": {
"Set file reminders" : "Cunfigura apuntos de archìviu",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Apuntos de archìviu**\n\nCunfigura apuntos de archìviu.",
"Cancel" : "Annulla",
"Set reminder" : "Cunfigura un'apuntu",
"Set reminder for \"{fileName}\"" : "Cunfigura un'apuntu pro \"{fileName}\"",
@@ -13,6 +12,7 @@
"Set reminder for tomorrow" : "Cunfigura un'apuntu pro cras",
"Set reminder for this weekend" : "Cunfigura un'apuntu pro custu fine de chida",
"Next week" : "Sa chida chi benit",
- "Set reminder for next week" : "Cunfigura un'apuntu pro chida chi benit"
+ "Set reminder for next week" : "Cunfigura un'apuntu pro chida chi benit",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Apuntos de archìviu**\n\nCunfigura apuntos de archìviu."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/sr.js b/apps/files_reminders/l10n/sr.js
index c825f5d0da1..d83cf68b426 100644
--- a/apps/files_reminders/l10n/sr.js
+++ b/apps/files_reminders/l10n/sr.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Погледај фајл",
"View folder" : "Погледај фолдер",
"Set file reminders" : "Постави подсетнике о фајлу",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Подсетници о фајлу**\n\nПостављање подсетника о фајлу.",
"We will remind you of this file" : "Подсетићемо вас на овај фајл",
"Please choose a valid date & time" : "Молимо вас да изаберете исправни датум и време",
"Cancel" : "Откажи",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "Овог викенда",
"Set reminder for this weekend" : "Поставља подсетник за овај викенд",
"Next week" : "Наредне недеље",
- "Set reminder for next week" : "Поставља подсетник за наредну недељу"
+ "Set reminder for next week" : "Поставља подсетник за наредну недељу",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Подсетници о фајлу**\n\nПостављање подсетника о фајлу."
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/files_reminders/l10n/sr.json b/apps/files_reminders/l10n/sr.json
index 9e17becdbdf..d81f9799231 100644
--- a/apps/files_reminders/l10n/sr.json
+++ b/apps/files_reminders/l10n/sr.json
@@ -4,7 +4,6 @@
"View file" : "Погледај фајл",
"View folder" : "Погледај фолдер",
"Set file reminders" : "Постави подсетнике о фајлу",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Подсетници о фајлу**\n\nПостављање подсетника о фајлу.",
"We will remind you of this file" : "Подсетићемо вас на овај фајл",
"Please choose a valid date & time" : "Молимо вас да изаберете исправни датум и време",
"Cancel" : "Откажи",
@@ -25,6 +24,7 @@
"This weekend" : "Овог викенда",
"Set reminder for this weekend" : "Поставља подсетник за овај викенд",
"Next week" : "Наредне недеље",
- "Set reminder for next week" : "Поставља подсетник за наредну недељу"
+ "Set reminder for next week" : "Поставља подсетник за наредну недељу",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Подсетници о фајлу**\n\nПостављање подсетника о фајлу."
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/sv.js b/apps/files_reminders/l10n/sv.js
index 66cd6578bb0..cfd101f1a5a 100644
--- a/apps/files_reminders/l10n/sv.js
+++ b/apps/files_reminders/l10n/sv.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Visa fil",
"View folder" : "Visa mapp",
"Set file reminders" : "Ställ in filpåminnelser",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Filpåminnelser**\n\nStäll in filpåminnelser.",
"We will remind you of this file" : "Vi kommer att påminna dig om denna fil",
"Please choose a valid date & time" : "Välj ett giltigt datum och tid",
"Cancel" : "Avbryt",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "Denna helgen",
"Set reminder for this weekend" : "Ställ in påminnelse för denna helg",
"Next week" : "Nästa vecka",
- "Set reminder for next week" : "Ställ in påminnelse för nästa vecka"
+ "Set reminder for next week" : "Ställ in påminnelse för nästa vecka",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Filpåminnelser**\n\nStäll in filpåminnelser."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_reminders/l10n/sv.json b/apps/files_reminders/l10n/sv.json
index acbe80ee4bb..69783a7dcaa 100644
--- a/apps/files_reminders/l10n/sv.json
+++ b/apps/files_reminders/l10n/sv.json
@@ -4,7 +4,6 @@
"View file" : "Visa fil",
"View folder" : "Visa mapp",
"Set file reminders" : "Ställ in filpåminnelser",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Filpåminnelser**\n\nStäll in filpåminnelser.",
"We will remind you of this file" : "Vi kommer att påminna dig om denna fil",
"Please choose a valid date & time" : "Välj ett giltigt datum och tid",
"Cancel" : "Avbryt",
@@ -25,6 +24,7 @@
"This weekend" : "Denna helgen",
"Set reminder for this weekend" : "Ställ in påminnelse för denna helg",
"Next week" : "Nästa vecka",
- "Set reminder for next week" : "Ställ in påminnelse för nästa vecka"
+ "Set reminder for next week" : "Ställ in påminnelse för nästa vecka",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Filpåminnelser**\n\nStäll in filpåminnelser."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/tr.js b/apps/files_reminders/l10n/tr.js
index 7a5a6d5ab1c..b154161fd88 100644
--- a/apps/files_reminders/l10n/tr.js
+++ b/apps/files_reminders/l10n/tr.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Dosyayı görüntüle",
"View folder" : "Klasörü görüntüle",
"Set file reminders" : "Dosya anımsatıcıları ayarla",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Dosya anımsatıcıları**\n\nDosya anımsatıcıları ayarla.",
"We will remind you of this file" : "Size bu dosyayı anımsatacağız",
"Please choose a valid date & time" : "Lütfen geçerli bir tarih ve saat seçin",
"Cancel" : "İptal",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "Bu hafta sonu",
"Set reminder for this weekend" : "Bu hafta sonu için anımsatıcı ayarla",
"Next week" : "Sonraki hafta",
- "Set reminder for next week" : "Gelecek hafta için anımsatıcı ayarla"
+ "Set reminder for next week" : "Gelecek hafta için anımsatıcı ayarla",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Dosya anımsatıcıları**\n\nDosya anımsatıcıları ayarla."
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files_reminders/l10n/tr.json b/apps/files_reminders/l10n/tr.json
index d3ac3481bdb..161a6965385 100644
--- a/apps/files_reminders/l10n/tr.json
+++ b/apps/files_reminders/l10n/tr.json
@@ -4,7 +4,6 @@
"View file" : "Dosyayı görüntüle",
"View folder" : "Klasörü görüntüle",
"Set file reminders" : "Dosya anımsatıcıları ayarla",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Dosya anımsatıcıları**\n\nDosya anımsatıcıları ayarla.",
"We will remind you of this file" : "Size bu dosyayı anımsatacağız",
"Please choose a valid date & time" : "Lütfen geçerli bir tarih ve saat seçin",
"Cancel" : "İptal",
@@ -25,6 +24,7 @@
"This weekend" : "Bu hafta sonu",
"Set reminder for this weekend" : "Bu hafta sonu için anımsatıcı ayarla",
"Next week" : "Sonraki hafta",
- "Set reminder for next week" : "Gelecek hafta için anımsatıcı ayarla"
+ "Set reminder for next week" : "Gelecek hafta için anımsatıcı ayarla",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Dosya anımsatıcıları**\n\nDosya anımsatıcıları ayarla."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/ug.js b/apps/files_reminders/l10n/ug.js
index 8a85c06b821..3f85690bf91 100644
--- a/apps/files_reminders/l10n/ug.js
+++ b/apps/files_reminders/l10n/ug.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "ھۆججەتنى كۆرۈش",
"View folder" : "ھۆججەت قىسقۇچنى كۆرۈش",
"Set file reminders" : "ھۆججەت ئەسكەرتىشلىرىنى بەلگىلەڭ",
- "**📣 File reminders**\n\nSet file reminders." : "** 📣 ھۆججەت ئەسكەرتىشلىرى **\n\nھۆججەت ئەسكەرتىشلىرىنى بەلگىلەڭ.",
"We will remind you of this file" : "بۇ ھۆججەتنى ئەسكەرتىمىز",
"Please choose a valid date & time" : "ئىناۋەتلىك چېسلا ۋە ۋاقىتنى تاللاڭ",
"Cancel" : "بىكار قىلىش",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "بۇ ھەپتە ئاخىرى",
"Set reminder for this weekend" : "بۇ ھەپتە ئاخىرىدا ئەسكەرتىش بەلگىلەڭ",
"Next week" : "كېلەر ھەپتە",
- "Set reminder for next week" : "كېلەر ھەپتە ئەسكەرتىش بەلگىلەڭ"
+ "Set reminder for next week" : "كېلەر ھەپتە ئەسكەرتىش بەلگىلەڭ",
+ "**📣 File reminders**\n\nSet file reminders." : "** 📣 ھۆججەت ئەسكەرتىشلىرى **\n\nھۆججەت ئەسكەرتىشلىرىنى بەلگىلەڭ."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_reminders/l10n/ug.json b/apps/files_reminders/l10n/ug.json
index d22d36e8be4..0dd146644be 100644
--- a/apps/files_reminders/l10n/ug.json
+++ b/apps/files_reminders/l10n/ug.json
@@ -4,7 +4,6 @@
"View file" : "ھۆججەتنى كۆرۈش",
"View folder" : "ھۆججەت قىسقۇچنى كۆرۈش",
"Set file reminders" : "ھۆججەت ئەسكەرتىشلىرىنى بەلگىلەڭ",
- "**📣 File reminders**\n\nSet file reminders." : "** 📣 ھۆججەت ئەسكەرتىشلىرى **\n\nھۆججەت ئەسكەرتىشلىرىنى بەلگىلەڭ.",
"We will remind you of this file" : "بۇ ھۆججەتنى ئەسكەرتىمىز",
"Please choose a valid date & time" : "ئىناۋەتلىك چېسلا ۋە ۋاقىتنى تاللاڭ",
"Cancel" : "بىكار قىلىش",
@@ -25,6 +24,7 @@
"This weekend" : "بۇ ھەپتە ئاخىرى",
"Set reminder for this weekend" : "بۇ ھەپتە ئاخىرىدا ئەسكەرتىش بەلگىلەڭ",
"Next week" : "كېلەر ھەپتە",
- "Set reminder for next week" : "كېلەر ھەپتە ئەسكەرتىش بەلگىلەڭ"
+ "Set reminder for next week" : "كېلەر ھەپتە ئەسكەرتىش بەلگىلەڭ",
+ "**📣 File reminders**\n\nSet file reminders." : "** 📣 ھۆججەت ئەسكەرتىشلىرى **\n\nھۆججەت ئەسكەرتىشلىرىنى بەلگىلەڭ."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/uk.js b/apps/files_reminders/l10n/uk.js
index 43f081342d9..1c4504333e6 100644
--- a/apps/files_reminders/l10n/uk.js
+++ b/apps/files_reminders/l10n/uk.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "Переглянути файл",
"View folder" : "Переглянути каталог",
"Set file reminders" : "Встановити нагадування для файлу",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Нагадування для файлів**\n\nВстановити нагадування для файлу.",
"We will remind you of this file" : "Ми нагадаємо вам про цей файл.",
"Please choose a valid date & time" : "Виберіть дійсні дату та час",
"Cancel" : "Скасувати",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "Цими вихідними",
"Set reminder for this weekend" : "Встановити нагадування на ці вихідні",
"Next week" : "Наступний тиждень",
- "Set reminder for next week" : "Встановити нагадування на наступний тиждень"
+ "Set reminder for next week" : "Встановити нагадування на наступний тиждень",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Нагадування для файлів**\n\nВстановити нагадування для файлу."
},
"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);");
diff --git a/apps/files_reminders/l10n/uk.json b/apps/files_reminders/l10n/uk.json
index 8044106333b..a1c33270185 100644
--- a/apps/files_reminders/l10n/uk.json
+++ b/apps/files_reminders/l10n/uk.json
@@ -4,7 +4,6 @@
"View file" : "Переглянути файл",
"View folder" : "Переглянути каталог",
"Set file reminders" : "Встановити нагадування для файлу",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 Нагадування для файлів**\n\nВстановити нагадування для файлу.",
"We will remind you of this file" : "Ми нагадаємо вам про цей файл.",
"Please choose a valid date & time" : "Виберіть дійсні дату та час",
"Cancel" : "Скасувати",
@@ -25,6 +24,7 @@
"This weekend" : "Цими вихідними",
"Set reminder for this weekend" : "Встановити нагадування на ці вихідні",
"Next week" : "Наступний тиждень",
- "Set reminder for next week" : "Встановити нагадування на наступний тиждень"
+ "Set reminder for next week" : "Встановити нагадування на наступний тиждень",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 Нагадування для файлів**\n\nВстановити нагадування для файлу."
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/zh_CN.js b/apps/files_reminders/l10n/zh_CN.js
index 10d24303eec..7059830aa49 100644
--- a/apps/files_reminders/l10n/zh_CN.js
+++ b/apps/files_reminders/l10n/zh_CN.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "查看文件",
"View folder" : "查看文件夹",
"Set file reminders" : "设置文件提醒",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 文件提醒**\n\n设置文件提醒。",
"We will remind you of this file" : "我们将会提醒你该文件",
"Please choose a valid date & time" : "请选择一个有效的日期&时间",
"Cancel" : "取消",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "本周末",
"Set reminder for this weekend" : "本周末提醒",
"Next week" : "下周",
- "Set reminder for next week" : "下周提醒"
+ "Set reminder for next week" : "下周提醒",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 文件提醒**\n\n设置文件提醒。"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_reminders/l10n/zh_CN.json b/apps/files_reminders/l10n/zh_CN.json
index 566c6b9cc3d..8c2fdc92ad7 100644
--- a/apps/files_reminders/l10n/zh_CN.json
+++ b/apps/files_reminders/l10n/zh_CN.json
@@ -4,7 +4,6 @@
"View file" : "查看文件",
"View folder" : "查看文件夹",
"Set file reminders" : "设置文件提醒",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 文件提醒**\n\n设置文件提醒。",
"We will remind you of this file" : "我们将会提醒你该文件",
"Please choose a valid date & time" : "请选择一个有效的日期&时间",
"Cancel" : "取消",
@@ -25,6 +24,7 @@
"This weekend" : "本周末",
"Set reminder for this weekend" : "本周末提醒",
"Next week" : "下周",
- "Set reminder for next week" : "下周提醒"
+ "Set reminder for next week" : "下周提醒",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 文件提醒**\n\n设置文件提醒。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/zh_HK.js b/apps/files_reminders/l10n/zh_HK.js
index 2eadd3ac82d..7a7d6ddea85 100644
--- a/apps/files_reminders/l10n/zh_HK.js
+++ b/apps/files_reminders/l10n/zh_HK.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "檢視檔案",
"View folder" : "檢視資料夾",
"Set file reminders" : "設定檔案提醒",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 檔案提醒**\n\n設定檔案提醒。",
"We will remind you of this file" : "我們會提醒您該檔案",
"Please choose a valid date & time" : "請選擇有效的日期與時間",
"Cancel" : "取消",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "本週末",
"Set reminder for this weekend" : "設定本週末的提醒",
"Next week" : "下星期",
- "Set reminder for next week" : "設定下星期的提醒"
+ "Set reminder for next week" : "設定下星期的提醒",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 檔案提醒**\n\n設定檔案提醒。"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_reminders/l10n/zh_HK.json b/apps/files_reminders/l10n/zh_HK.json
index aab77340136..a6950a63e79 100644
--- a/apps/files_reminders/l10n/zh_HK.json
+++ b/apps/files_reminders/l10n/zh_HK.json
@@ -4,7 +4,6 @@
"View file" : "檢視檔案",
"View folder" : "檢視資料夾",
"Set file reminders" : "設定檔案提醒",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 檔案提醒**\n\n設定檔案提醒。",
"We will remind you of this file" : "我們會提醒您該檔案",
"Please choose a valid date & time" : "請選擇有效的日期與時間",
"Cancel" : "取消",
@@ -25,6 +24,7 @@
"This weekend" : "本週末",
"Set reminder for this weekend" : "設定本週末的提醒",
"Next week" : "下星期",
- "Set reminder for next week" : "設定下星期的提醒"
+ "Set reminder for next week" : "設定下星期的提醒",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 檔案提醒**\n\n設定檔案提醒。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_reminders/l10n/zh_TW.js b/apps/files_reminders/l10n/zh_TW.js
index 160725ccde7..39c1532b713 100644
--- a/apps/files_reminders/l10n/zh_TW.js
+++ b/apps/files_reminders/l10n/zh_TW.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"View file" : "檢視檔案",
"View folder" : "檢視資料夾",
"Set file reminders" : "設定檔案提醒",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 檔案提醒**\n\n設定檔案提醒。",
"We will remind you of this file" : "我們會提醒您該檔案",
"Please choose a valid date & time" : "請選擇有效的日期與時間",
"Cancel" : "取消",
@@ -27,6 +26,7 @@ OC.L10N.register(
"This weekend" : "本週末",
"Set reminder for this weekend" : "設定本週末的提醒",
"Next week" : "下週",
- "Set reminder for next week" : "設定下週的提醒"
+ "Set reminder for next week" : "設定下週的提醒",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 檔案提醒**\n\n設定檔案提醒。"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_reminders/l10n/zh_TW.json b/apps/files_reminders/l10n/zh_TW.json
index 0d0dbaa7373..5e643338df7 100644
--- a/apps/files_reminders/l10n/zh_TW.json
+++ b/apps/files_reminders/l10n/zh_TW.json
@@ -4,7 +4,6 @@
"View file" : "檢視檔案",
"View folder" : "檢視資料夾",
"Set file reminders" : "設定檔案提醒",
- "**📣 File reminders**\n\nSet file reminders." : "**📣 檔案提醒**\n\n設定檔案提醒。",
"We will remind you of this file" : "我們會提醒您該檔案",
"Please choose a valid date & time" : "請選擇有效的日期與時間",
"Cancel" : "取消",
@@ -25,6 +24,7 @@
"This weekend" : "本週末",
"Set reminder for this weekend" : "設定本週末的提醒",
"Next week" : "下週",
- "Set reminder for next week" : "設定下週的提醒"
+ "Set reminder for next week" : "設定下週的提醒",
+ "**📣 File reminders**\n\nSet file reminders." : "**📣 檔案提醒**\n\n設定檔案提醒。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/eu.js b/apps/files_sharing/l10n/eu.js
index c11bf68304e..c1e22138928 100644
--- a/apps/files_sharing/l10n/eu.js
+++ b/apps/files_sharing/l10n/eu.js
@@ -138,6 +138,8 @@ OC.L10N.register(
"Link copied to clipboard" : "Arbelara kopiatutako esteka",
"Email already added" : "Helbide elektronikoa dagoeneko gehituta dago",
"Invalid email address" : "Baliogabeko helbide elektronikoa",
+ "_{count} email address already added_::_{count} email addresses already added_" : ["Helbide elektroniko {count} gehitu da dagoeneko","{count} helbide elektroniko gehitu dira dagoeneko"],
+ "_{count} email address added_::_{count} email addresses added_" : ["Helbide elektroniko {count} gehitu da","{count} helbide elektroniko gehitu dira"],
"What are you requesting?" : "Zer eskatu nahi duzu?",
"Request subject" : "Eskaeraren gaia",
"Birthday party photos, History assignment…" : "Urtebetetze festako argazkiak, Historiako apunteak...",
diff --git a/apps/files_sharing/l10n/eu.json b/apps/files_sharing/l10n/eu.json
index cfa9b42a751..1c57e25ba38 100644
--- a/apps/files_sharing/l10n/eu.json
+++ b/apps/files_sharing/l10n/eu.json
@@ -136,6 +136,8 @@
"Link copied to clipboard" : "Arbelara kopiatutako esteka",
"Email already added" : "Helbide elektronikoa dagoeneko gehituta dago",
"Invalid email address" : "Baliogabeko helbide elektronikoa",
+ "_{count} email address already added_::_{count} email addresses already added_" : ["Helbide elektroniko {count} gehitu da dagoeneko","{count} helbide elektroniko gehitu dira dagoeneko"],
+ "_{count} email address added_::_{count} email addresses added_" : ["Helbide elektroniko {count} gehitu da","{count} helbide elektroniko gehitu dira"],
"What are you requesting?" : "Zer eskatu nahi duzu?",
"Request subject" : "Eskaeraren gaia",
"Birthday party photos, History assignment…" : "Urtebetetze festako argazkiak, Historiako apunteak...",
diff --git a/apps/files_sharing/l10n/it.js b/apps/files_sharing/l10n/it.js
index b9ccad055d2..aa8317f7539 100644
--- a/apps/files_sharing/l10n/it.js
+++ b/apps/files_sharing/l10n/it.js
@@ -188,6 +188,7 @@ OC.L10N.register(
"remote" : "remota",
"remote group" : "gruppo remoto",
"guest" : "ospite",
+ "by {initiator}" : "da {initiator}",
"Shared with the group {user} by {owner}" : "Condiviso con il gruppo {user} da {owner}",
"Shared with the conversation {user} by {owner}" : "Condiviso con la conversazione {user} da {owner}",
"Shared with {user} by {owner}" : "Condiviso con {user} da {owner}",
@@ -204,6 +205,10 @@ OC.L10N.register(
"Password protection (enforced)" : "Protezione con password (applicata)",
"Password protection" : "Protezione con password",
"Enter a password" : "Digita una password",
+ "Enable link expiration (enforced)" : "Abilita scadenza link (imposta)",
+ "Enable link expiration" : "Abilita scadenza link",
+ "Enter expiration date (enforced)" : "Inserisci la data di scadenza (imposta)",
+ "Enter expiration date" : "Inserisci la data di scadenza",
"Create share" : "Crea condivisione",
"Customize link" : "Personalizza il collegamento",
"Generate QR code" : "Genera codice QR",
@@ -284,6 +289,7 @@ OC.L10N.register(
"Share with guest" : "Condividi con ospite",
"Update share" : "Aggiorna condivisione",
"Save share" : "Salva condivisione",
+ "Replace current password" : "Sostituisci la password attuale",
"Others with access" : "Altri con accesso",
"No other accounts with access found" : "Nessun altro account trovato con accesso",
"Toggle list of others with access to this directory" : "Attiva l'elenco degli altri utenti con accesso a questa cartella ",
@@ -348,6 +354,8 @@ OC.L10N.register(
"Folder \"{path}\" has been unshared" : "La condivisione della cartella \"{path}\" è stata rimossa",
"Could not update share" : "Impossibile aggiornare la condivisione",
"Share saved" : "Condivisione salvata",
+ "Share expiry date saved" : "Data di scadenza della condivisione salvata",
+ "Share hide-download state saved" : "Stato nascondi-download della condivisione salvato",
"Share label saved" : "Condividi etichetta salvata",
"Share note for recipient saved" : "Condividi nota salvata per il destinatario",
"Share password saved" : "Condividi la password salvata",
@@ -400,6 +408,7 @@ OC.L10N.register(
"Circle" : "Cerchia",
"Allow download" : "Consenti scaricamento",
"No other users with access found" : "Nessun altro utente con accesso trovato",
+ "Share expire date saved" : "Data di scadenza della condivisione salvata",
"No entries found in this folder" : "Nessuna voce trovata in questa cartella",
"Name" : "Nome",
"Share time" : "Tempo di condivisione",
diff --git a/apps/files_sharing/l10n/it.json b/apps/files_sharing/l10n/it.json
index 8129afe1128..37c893bc92d 100644
--- a/apps/files_sharing/l10n/it.json
+++ b/apps/files_sharing/l10n/it.json
@@ -186,6 +186,7 @@
"remote" : "remota",
"remote group" : "gruppo remoto",
"guest" : "ospite",
+ "by {initiator}" : "da {initiator}",
"Shared with the group {user} by {owner}" : "Condiviso con il gruppo {user} da {owner}",
"Shared with the conversation {user} by {owner}" : "Condiviso con la conversazione {user} da {owner}",
"Shared with {user} by {owner}" : "Condiviso con {user} da {owner}",
@@ -202,6 +203,10 @@
"Password protection (enforced)" : "Protezione con password (applicata)",
"Password protection" : "Protezione con password",
"Enter a password" : "Digita una password",
+ "Enable link expiration (enforced)" : "Abilita scadenza link (imposta)",
+ "Enable link expiration" : "Abilita scadenza link",
+ "Enter expiration date (enforced)" : "Inserisci la data di scadenza (imposta)",
+ "Enter expiration date" : "Inserisci la data di scadenza",
"Create share" : "Crea condivisione",
"Customize link" : "Personalizza il collegamento",
"Generate QR code" : "Genera codice QR",
@@ -282,6 +287,7 @@
"Share with guest" : "Condividi con ospite",
"Update share" : "Aggiorna condivisione",
"Save share" : "Salva condivisione",
+ "Replace current password" : "Sostituisci la password attuale",
"Others with access" : "Altri con accesso",
"No other accounts with access found" : "Nessun altro account trovato con accesso",
"Toggle list of others with access to this directory" : "Attiva l'elenco degli altri utenti con accesso a questa cartella ",
@@ -346,6 +352,8 @@
"Folder \"{path}\" has been unshared" : "La condivisione della cartella \"{path}\" è stata rimossa",
"Could not update share" : "Impossibile aggiornare la condivisione",
"Share saved" : "Condivisione salvata",
+ "Share expiry date saved" : "Data di scadenza della condivisione salvata",
+ "Share hide-download state saved" : "Stato nascondi-download della condivisione salvato",
"Share label saved" : "Condividi etichetta salvata",
"Share note for recipient saved" : "Condividi nota salvata per il destinatario",
"Share password saved" : "Condividi la password salvata",
@@ -398,6 +406,7 @@
"Circle" : "Cerchia",
"Allow download" : "Consenti scaricamento",
"No other users with access found" : "Nessun altro utente con accesso trovato",
+ "Share expire date saved" : "Data di scadenza della condivisione salvata",
"No entries found in this folder" : "Nessuna voce trovata in questa cartella",
"Name" : "Nome",
"Share time" : "Tempo di condivisione",
diff --git a/apps/files_sharing/lib/External/Storage.php b/apps/files_sharing/lib/External/Storage.php
index dbf7d2af6e5..bacd2b3f7cf 100644
--- a/apps/files_sharing/lib/External/Storage.php
+++ b/apps/files_sharing/lib/External/Storage.php
@@ -88,6 +88,7 @@ class Storage extends DAV implements ISharedStorage, IDisableEncryptionStorage,
parent::__construct(
[
'secure' => ((parse_url($remote, PHP_URL_SCHEME) ?? 'https') === 'https'),
+ 'verify' => !$this->config->getSystemValueBool('sharing.federation.allowSelfSignedCertificates', false),
'host' => $host,
'root' => $webDavEndpoint,
'user' => $options['token'],
diff --git a/apps/files_trashbin/lib/Sabre/TrashbinPlugin.php b/apps/files_trashbin/lib/Sabre/TrashbinPlugin.php
index b2864e9a1c6..2a2e3a141dc 100644
--- a/apps/files_trashbin/lib/Sabre/TrashbinPlugin.php
+++ b/apps/files_trashbin/lib/Sabre/TrashbinPlugin.php
@@ -9,6 +9,7 @@ declare(strict_types=1);
namespace OCA\Files_Trashbin\Sabre;
use OCA\DAV\Connector\Sabre\FilesPlugin;
+use OCA\Files_Trashbin\Trash\ITrashItem;
use OCP\IPreview;
use Sabre\DAV\INode;
use Sabre\DAV\PropFind;
@@ -24,6 +25,7 @@ class TrashbinPlugin extends ServerPlugin {
public const TRASHBIN_TITLE = '{http://nextcloud.org/ns}trashbin-title';
public const TRASHBIN_DELETED_BY_ID = '{http://nextcloud.org/ns}trashbin-deleted-by-id';
public const TRASHBIN_DELETED_BY_DISPLAY_NAME = '{http://nextcloud.org/ns}trashbin-deleted-by-display-name';
+ public const TRASHBIN_BACKEND = '{http://nextcloud.org/ns}trashbin-backend';
/** @var Server */
private $server;
@@ -104,6 +106,14 @@ class TrashbinPlugin extends ServerPlugin {
$propFind->handle(FilesPlugin::MOUNT_TYPE_PROPERTYNAME, function () {
return '';
});
+
+ $propFind->handle(self::TRASHBIN_BACKEND, function () use ($node) {
+ $fileInfo = $node->getFileInfo();
+ if (!($fileInfo instanceof ITrashItem)) {
+ return '';
+ }
+ return $fileInfo->getTrashBackend()::class;
+ });
}
/**
diff --git a/apps/settings/l10n/ar.js b/apps/settings/l10n/ar.js
index 165842f092b..a0a4f4544cd 100644
--- a/apps/settings/l10n/ar.js
+++ b/apps/settings/l10n/ar.js
@@ -211,6 +211,8 @@ OC.L10N.register(
"Memcached is configured as distributed cache, but the wrong PHP module (\"memcache\") is installed. Please install the PHP module \"memcached\"." : "تم تكوين Memcached كذاكرة تخزين مؤقت موزعة، ولكن تمّ تثبيت وحدة PHP الخاطئة (\"memcache\"). الرجاء تثبيت وحدة PHP \"memcached\".",
"Memcached is configured as distributed cache, but the PHP module \"memcached\" is not installed. Please install the PHP module \"memcached\"." : "تم تكوين Memcached كذاكرة تخزين مؤقت موزعة، ولكن لم يتم تثبيت وحدة PHP \"memcached\". الرجاء تثبيت وحدة PHP \"memcached\".",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available." : "لم يتم تكوين ذاكرة تخزين مؤقت memcache. لتحسين الأداء، يرجى تكوين ذاكرة التخزين المؤقت، إذا كانت متوفرة.",
+ "Failed to write and read a value from local cache." : "تعذّرت كتابة قيمة إلى أو قراءتها من ذاكرة التخزين المؤقت المحلية.",
+ "Failed to write and read a value from distributed cache." : "تعذّرت كتابة قيمة إلى أو قراءتها من ذاكرة التخزين المؤقت الموزعة.",
"Configured" : "تمّ تكوينها",
"Mimetype migrations available" : "تتوفر عمليات ترحيل \"أنواع الوسائط\" Mimetype",
"One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command `occ maintenance:repair --include-expensive` to perform the migrations." : "تتوفر واحدة أو أكثر من عمليات ترحيل لـ\"أنواع الوسائط\" mimetype. في بعض الأحيان تتم إضافة أنواع وسائط mimetypes جديدة للتعامل بشكل أفضل مع أنواع معينة من الملفات. يستغرق ترحيل أنواع الوسائط mimetypes وقتاً طويلاً في حالة الخوادم الكبيرة؛ لذا لا يتم ذلك تلقائياً أثناء عمليات الترقية. لإجراء عمليات الترحيل، استعمل الأمر السطري: \n`occ Maintenance:repair --include-expensive` ",
diff --git a/apps/settings/l10n/ar.json b/apps/settings/l10n/ar.json
index 04df66477ad..b74656170dc 100644
--- a/apps/settings/l10n/ar.json
+++ b/apps/settings/l10n/ar.json
@@ -209,6 +209,8 @@
"Memcached is configured as distributed cache, but the wrong PHP module (\"memcache\") is installed. Please install the PHP module \"memcached\"." : "تم تكوين Memcached كذاكرة تخزين مؤقت موزعة، ولكن تمّ تثبيت وحدة PHP الخاطئة (\"memcache\"). الرجاء تثبيت وحدة PHP \"memcached\".",
"Memcached is configured as distributed cache, but the PHP module \"memcached\" is not installed. Please install the PHP module \"memcached\"." : "تم تكوين Memcached كذاكرة تخزين مؤقت موزعة، ولكن لم يتم تثبيت وحدة PHP \"memcached\". الرجاء تثبيت وحدة PHP \"memcached\".",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available." : "لم يتم تكوين ذاكرة تخزين مؤقت memcache. لتحسين الأداء، يرجى تكوين ذاكرة التخزين المؤقت، إذا كانت متوفرة.",
+ "Failed to write and read a value from local cache." : "تعذّرت كتابة قيمة إلى أو قراءتها من ذاكرة التخزين المؤقت المحلية.",
+ "Failed to write and read a value from distributed cache." : "تعذّرت كتابة قيمة إلى أو قراءتها من ذاكرة التخزين المؤقت الموزعة.",
"Configured" : "تمّ تكوينها",
"Mimetype migrations available" : "تتوفر عمليات ترحيل \"أنواع الوسائط\" Mimetype",
"One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command `occ maintenance:repair --include-expensive` to perform the migrations." : "تتوفر واحدة أو أكثر من عمليات ترحيل لـ\"أنواع الوسائط\" mimetype. في بعض الأحيان تتم إضافة أنواع وسائط mimetypes جديدة للتعامل بشكل أفضل مع أنواع معينة من الملفات. يستغرق ترحيل أنواع الوسائط mimetypes وقتاً طويلاً في حالة الخوادم الكبيرة؛ لذا لا يتم ذلك تلقائياً أثناء عمليات الترقية. لإجراء عمليات الترحيل، استعمل الأمر السطري: \n`occ Maintenance:repair --include-expensive` ",
diff --git a/apps/settings/l10n/en_GB.js b/apps/settings/l10n/en_GB.js
index 94fec99e7bb..87e880cf85b 100644
--- a/apps/settings/l10n/en_GB.js
+++ b/apps/settings/l10n/en_GB.js
@@ -211,6 +211,8 @@ OC.L10N.register(
"Memcached is configured as distributed cache, but the wrong PHP module (\"memcache\") is installed. Please install the PHP module \"memcached\"." : "Memcached is configured as distributed cache, but the wrong PHP module (\"memcache\") is installed. Please install the PHP module \"memcached\".",
"Memcached is configured as distributed cache, but the PHP module \"memcached\" is not installed. Please install the PHP module \"memcached\"." : "Memcached is configured as distributed cache, but the PHP module \"memcached\" is not installed. Please install the PHP module \"memcached\".",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available." : "No memory cache has been configured. To enhance performance, please configure a memcache, if available.",
+ "Failed to write and read a value from local cache." : "Failed to write and read a value from local cache.",
+ "Failed to write and read a value from distributed cache." : "Failed to write and read a value from distributed cache.",
"Configured" : "Configured",
"Mimetype migrations available" : "Mimetype migrations available",
"One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command `occ maintenance:repair --include-expensive` to perform the migrations." : "One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command `occ maintenance:repair --include-expensive` to perform the migrations.",
diff --git a/apps/settings/l10n/en_GB.json b/apps/settings/l10n/en_GB.json
index d8acdbdc7bc..304b1cb8e74 100644
--- a/apps/settings/l10n/en_GB.json
+++ b/apps/settings/l10n/en_GB.json
@@ -209,6 +209,8 @@
"Memcached is configured as distributed cache, but the wrong PHP module (\"memcache\") is installed. Please install the PHP module \"memcached\"." : "Memcached is configured as distributed cache, but the wrong PHP module (\"memcache\") is installed. Please install the PHP module \"memcached\".",
"Memcached is configured as distributed cache, but the PHP module \"memcached\" is not installed. Please install the PHP module \"memcached\"." : "Memcached is configured as distributed cache, but the PHP module \"memcached\" is not installed. Please install the PHP module \"memcached\".",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available." : "No memory cache has been configured. To enhance performance, please configure a memcache, if available.",
+ "Failed to write and read a value from local cache." : "Failed to write and read a value from local cache.",
+ "Failed to write and read a value from distributed cache." : "Failed to write and read a value from distributed cache.",
"Configured" : "Configured",
"Mimetype migrations available" : "Mimetype migrations available",
"One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command `occ maintenance:repair --include-expensive` to perform the migrations." : "One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command `occ maintenance:repair --include-expensive` to perform the migrations.",
diff --git a/apps/settings/l10n/eu.js b/apps/settings/l10n/eu.js
index 3913ec9fa5d..5c63fe4fbed 100644
--- a/apps/settings/l10n/eu.js
+++ b/apps/settings/l10n/eu.js
@@ -405,14 +405,19 @@ OC.L10N.register(
"Choose slide to display" : "Aukeratu erakusteko diapositiba",
"{index} of {total}" : "{total}(e)tik {index}",
"Daemon" : "Daemona",
+ "Deploy Daemon" : "Zabaldu daimona",
"Type" : "Mota",
"Display Name" : "Izena erakutsi",
+ "GPUs support" : "GPUen bateragarritasuna",
+ "Compute device" : "Konputazio gailua",
"Description" : "Deskripzioa",
"Details" : "Xehetasunak",
"All" : "Denak",
"Limit app usage to groups" : "Mugatu aplikazioaren erabilera taldeei",
"No results" : "Emaitzarik ez",
"Update to {version}" : "Eguneratu {version} bertsiora",
+ "Default Deploy daemon is not accessible" : "Zabalpen lehenetsia ez dago eskuragarri",
+ "Delete data on remove" : "Ezabatu datuak kentzean",
"This app has no minimum Nextcloud version assigned. This will be an error in the future." : "This app has no minimum Nextcloud version assigned. This will be an error in the future.",
"This app has no maximum Nextcloud version assigned. This will be an error in the future." : "This app has no maximum Nextcloud version assigned. This will be an error in the future.",
"This app cannot be installed because the following dependencies are not fulfilled:" : "Aplikazioa ezin da instalatu hurrengo menpekotasunak betetzen ez direlako:",
@@ -568,6 +573,9 @@ OC.L10N.register(
"Unable to update profile enabled state" : "Ezin izan da profila gaitutako egoerara eguneratu",
"The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected." : "Ikusgarritasunaren edo esparruaren ezarpen murriztaileena zure profilean errespetatzen da. Esaterako, ikusgarritasuna \"Erakutsi guztiei\" eta esparrua \"Pribatua\" gisa ezarrita badago, \"Pribatua\" errespetatzen da.",
"Unable to update visibility of {displayId}" : "Ezin izan da {displayId}(r)en ikusgarritasuna eguneratu",
+ "she/her" : "♀",
+ "he/him" : "♂",
+ "they/them" : "⚥/☿",
"Your role" : "Zure rola",
"Your X (formerly Twitter) handle" : "Zure X (lehen Twitter) erabiltzailea",
"Your website" : "Zure web orria",
@@ -705,6 +713,7 @@ OC.L10N.register(
"Headline" : "Izenburua",
"Organisation" : "Erakundea",
"Phone number" : "Telefono zenbakia",
+ "Pronouns" : "Izenordainak",
"Role" : "Zeregina",
"X (formerly Twitter)" : "X (lehen Twitter)",
"Website" : "Webgunea",
@@ -725,6 +734,8 @@ OC.L10N.register(
"Show to everyone" : "Erakutsi denei",
"Show to logged in accounts only" : "Erakutsi saioa hasi duten kontuei soilik",
"Hide" : "Ezkutatu",
+ "manual-install apps cannot be updated" : "eskuz instalatutako aplikazioak ezin dira eguneratu",
+ "Deploy and Enable" : "Zabaldu eta gaitu",
"Download and enable" : "Deskargatu eta gaitu",
"Disable" : "Ez-gaitu",
"Allow untested app" : "Baimendu probatu gabeko aplikazioa",
@@ -735,6 +746,7 @@ OC.L10N.register(
"Could not register device: Probably already registered" : "Ezin izan da gailua erregistratu: ziurrenik dagoeneko erregistratuta",
"Could not register device" : "Ezin izan da gailua erregistratu",
"An error occurred during the request. Unable to proceed." : "Errorea gertatu da eskaeran. Ezin da jarraitu.",
+ "The app has been enabled but needs to be updated." : "Aplikazioa gaitu da baina eguneratzea behar du.",
"Error: This app cannot be enabled because it makes the server unstable" : "Errorea: aplikazio hau ezin da gaitu zerbitzaria ezegonkorra izatea eragiten duelako",
"The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikazioa gaitu da baina eguneratu behar da. Eguneratze orrira joango zara 5 segundotan.",
"Do you really want to wipe your data from this device?" : "Ziur zaude gailu honetatik zure datu guztiak ezabatu nahi dituzula?",
diff --git a/apps/settings/l10n/eu.json b/apps/settings/l10n/eu.json
index 777824ae418..c6cf27b3e43 100644
--- a/apps/settings/l10n/eu.json
+++ b/apps/settings/l10n/eu.json
@@ -403,14 +403,19 @@
"Choose slide to display" : "Aukeratu erakusteko diapositiba",
"{index} of {total}" : "{total}(e)tik {index}",
"Daemon" : "Daemona",
+ "Deploy Daemon" : "Zabaldu daimona",
"Type" : "Mota",
"Display Name" : "Izena erakutsi",
+ "GPUs support" : "GPUen bateragarritasuna",
+ "Compute device" : "Konputazio gailua",
"Description" : "Deskripzioa",
"Details" : "Xehetasunak",
"All" : "Denak",
"Limit app usage to groups" : "Mugatu aplikazioaren erabilera taldeei",
"No results" : "Emaitzarik ez",
"Update to {version}" : "Eguneratu {version} bertsiora",
+ "Default Deploy daemon is not accessible" : "Zabalpen lehenetsia ez dago eskuragarri",
+ "Delete data on remove" : "Ezabatu datuak kentzean",
"This app has no minimum Nextcloud version assigned. This will be an error in the future." : "This app has no minimum Nextcloud version assigned. This will be an error in the future.",
"This app has no maximum Nextcloud version assigned. This will be an error in the future." : "This app has no maximum Nextcloud version assigned. This will be an error in the future.",
"This app cannot be installed because the following dependencies are not fulfilled:" : "Aplikazioa ezin da instalatu hurrengo menpekotasunak betetzen ez direlako:",
@@ -566,6 +571,9 @@
"Unable to update profile enabled state" : "Ezin izan da profila gaitutako egoerara eguneratu",
"The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected." : "Ikusgarritasunaren edo esparruaren ezarpen murriztaileena zure profilean errespetatzen da. Esaterako, ikusgarritasuna \"Erakutsi guztiei\" eta esparrua \"Pribatua\" gisa ezarrita badago, \"Pribatua\" errespetatzen da.",
"Unable to update visibility of {displayId}" : "Ezin izan da {displayId}(r)en ikusgarritasuna eguneratu",
+ "she/her" : "♀",
+ "he/him" : "♂",
+ "they/them" : "⚥/☿",
"Your role" : "Zure rola",
"Your X (formerly Twitter) handle" : "Zure X (lehen Twitter) erabiltzailea",
"Your website" : "Zure web orria",
@@ -703,6 +711,7 @@
"Headline" : "Izenburua",
"Organisation" : "Erakundea",
"Phone number" : "Telefono zenbakia",
+ "Pronouns" : "Izenordainak",
"Role" : "Zeregina",
"X (formerly Twitter)" : "X (lehen Twitter)",
"Website" : "Webgunea",
@@ -723,6 +732,8 @@
"Show to everyone" : "Erakutsi denei",
"Show to logged in accounts only" : "Erakutsi saioa hasi duten kontuei soilik",
"Hide" : "Ezkutatu",
+ "manual-install apps cannot be updated" : "eskuz instalatutako aplikazioak ezin dira eguneratu",
+ "Deploy and Enable" : "Zabaldu eta gaitu",
"Download and enable" : "Deskargatu eta gaitu",
"Disable" : "Ez-gaitu",
"Allow untested app" : "Baimendu probatu gabeko aplikazioa",
@@ -733,6 +744,7 @@
"Could not register device: Probably already registered" : "Ezin izan da gailua erregistratu: ziurrenik dagoeneko erregistratuta",
"Could not register device" : "Ezin izan da gailua erregistratu",
"An error occurred during the request. Unable to proceed." : "Errorea gertatu da eskaeran. Ezin da jarraitu.",
+ "The app has been enabled but needs to be updated." : "Aplikazioa gaitu da baina eguneratzea behar du.",
"Error: This app cannot be enabled because it makes the server unstable" : "Errorea: aplikazio hau ezin da gaitu zerbitzaria ezegonkorra izatea eragiten duelako",
"The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikazioa gaitu da baina eguneratu behar da. Eguneratze orrira joango zara 5 segundotan.",
"Do you really want to wipe your data from this device?" : "Ziur zaude gailu honetatik zure datu guztiak ezabatu nahi dituzula?",
diff --git a/apps/settings/l10n/gl.js b/apps/settings/l10n/gl.js
index 42197e271bc..dfd09fe190e 100644
--- a/apps/settings/l10n/gl.js
+++ b/apps/settings/l10n/gl.js
@@ -211,6 +211,8 @@ OC.L10N.register(
"Memcached is configured as distributed cache, but the wrong PHP module (\"memcache\") is installed. Please install the PHP module \"memcached\"." : "Memcached está configurado como memoria tobo distribuída, mais está instalado o módulo PHP incorrecto («memcache»). Instale o módulo PHP «memcached».",
"Memcached is configured as distributed cache, but the PHP module \"memcached\" is not installed. Please install the PHP module \"memcached\"." : "Memcached está configurado como memoria tobo distribuída, mais o módulo PHP «memcached» non está instalado. Instale o módulo PHP «memcached».",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available." : "Non se configurou ningunha memoria tobo de memoria. Para mellorar o rendemento, configure Memcache, se está dispoñíbel.",
+ "Failed to write and read a value from local cache." : "Produciuse un erro ao escribir e ler un valor da memoria tobo local.",
+ "Failed to write and read a value from distributed cache." : "Produciuse un erro ao escribir e ler un valor da memoria tobo distribuída.",
"Configured" : "Configurado",
"Mimetype migrations available" : "Migracións de tipo MIME dispoñíbeis",
"One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command `occ maintenance:repair --include-expensive` to perform the migrations." : "Están dispoñíbeis unha ou máis migracións de tipo mime. Ocasionalmente engádense novos tipos MIME para xestionar mellor certos tipos de ficheiros. A migración dos tipos MIME leva moito tempo en instancias grandes, polo que non se fai automaticamente durante as actualizacións. Use a orde «occ maintenance:repair --include-expensive» para realizar as migracións.",
@@ -274,10 +276,10 @@ OC.L10N.register(
"You are currently running PHP %s." : "Actualmente está a executar PHP %s.",
"PHP \"output_buffering\" option" : "Opción de PHP «output_buffering»",
"PHP configuration option \"output_buffering\" must be disabled" : "A opción de configuración de PHP «output_buffering» debe estar desactivada",
- "Push service" : "Servizo de notificacións automáticas",
+ "Push service" : "Servizo de notificacións emerxentes",
"Valid enterprise license" : "Licenza empresarial válida",
- "Free push service" : "Servizo de notificacións automáticas de balde",
- "This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications are limited to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at {link}." : "Esta é a compilación da comunidade sen asistencia de Nextcloud. Por mor do tamaño desta instancia, o rendemento, a fiabilidade e a escalabilidade non se poden garantir. As notificacións automáticas son limitadas para evitar a sobrecarga do noso servizo de balde. Obteña máis información sobre os beneficios de Nextcloud Enterprise en {link}.",
+ "Free push service" : "Servizo de notificacións emerxentes de balde",
+ "This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications are limited to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at {link}." : "Esta é a compilación da comunidade sen asistencia de Nextcloud. Por mor do tamaño desta instancia, o rendemento, a fiabilidade e a escalabilidade non se poden garantir. As notificacións emerxentes son limitadas para evitar a sobrecarga do noso servizo de balde. Obteña máis información sobre os beneficios de Nextcloud Enterprise en {link}.",
"Random generator" : "Xerador ao chou",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons." : "PHP non atopou ningunha fonte axeitada para a aleatoriedade, o que é moi desaconsellábel por razóns de seguridade.",
"Secure" : "Seguro",
diff --git a/apps/settings/l10n/gl.json b/apps/settings/l10n/gl.json
index 713749adfd9..e2e67005ade 100644
--- a/apps/settings/l10n/gl.json
+++ b/apps/settings/l10n/gl.json
@@ -209,6 +209,8 @@
"Memcached is configured as distributed cache, but the wrong PHP module (\"memcache\") is installed. Please install the PHP module \"memcached\"." : "Memcached está configurado como memoria tobo distribuída, mais está instalado o módulo PHP incorrecto («memcache»). Instale o módulo PHP «memcached».",
"Memcached is configured as distributed cache, but the PHP module \"memcached\" is not installed. Please install the PHP module \"memcached\"." : "Memcached está configurado como memoria tobo distribuída, mais o módulo PHP «memcached» non está instalado. Instale o módulo PHP «memcached».",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available." : "Non se configurou ningunha memoria tobo de memoria. Para mellorar o rendemento, configure Memcache, se está dispoñíbel.",
+ "Failed to write and read a value from local cache." : "Produciuse un erro ao escribir e ler un valor da memoria tobo local.",
+ "Failed to write and read a value from distributed cache." : "Produciuse un erro ao escribir e ler un valor da memoria tobo distribuída.",
"Configured" : "Configurado",
"Mimetype migrations available" : "Migracións de tipo MIME dispoñíbeis",
"One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command `occ maintenance:repair --include-expensive` to perform the migrations." : "Están dispoñíbeis unha ou máis migracións de tipo mime. Ocasionalmente engádense novos tipos MIME para xestionar mellor certos tipos de ficheiros. A migración dos tipos MIME leva moito tempo en instancias grandes, polo que non se fai automaticamente durante as actualizacións. Use a orde «occ maintenance:repair --include-expensive» para realizar as migracións.",
@@ -272,10 +274,10 @@
"You are currently running PHP %s." : "Actualmente está a executar PHP %s.",
"PHP \"output_buffering\" option" : "Opción de PHP «output_buffering»",
"PHP configuration option \"output_buffering\" must be disabled" : "A opción de configuración de PHP «output_buffering» debe estar desactivada",
- "Push service" : "Servizo de notificacións automáticas",
+ "Push service" : "Servizo de notificacións emerxentes",
"Valid enterprise license" : "Licenza empresarial válida",
- "Free push service" : "Servizo de notificacións automáticas de balde",
- "This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications are limited to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at {link}." : "Esta é a compilación da comunidade sen asistencia de Nextcloud. Por mor do tamaño desta instancia, o rendemento, a fiabilidade e a escalabilidade non se poden garantir. As notificacións automáticas son limitadas para evitar a sobrecarga do noso servizo de balde. Obteña máis información sobre os beneficios de Nextcloud Enterprise en {link}.",
+ "Free push service" : "Servizo de notificacións emerxentes de balde",
+ "This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications are limited to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at {link}." : "Esta é a compilación da comunidade sen asistencia de Nextcloud. Por mor do tamaño desta instancia, o rendemento, a fiabilidade e a escalabilidade non se poden garantir. As notificacións emerxentes son limitadas para evitar a sobrecarga do noso servizo de balde. Obteña máis información sobre os beneficios de Nextcloud Enterprise en {link}.",
"Random generator" : "Xerador ao chou",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons." : "PHP non atopou ningunha fonte axeitada para a aleatoriedade, o que é moi desaconsellábel por razóns de seguridade.",
"Secure" : "Seguro",
diff --git a/apps/settings/l10n/it.js b/apps/settings/l10n/it.js
index 50e29cc00f8..aa416aba75a 100644
--- a/apps/settings/l10n/it.js
+++ b/apps/settings/l10n/it.js
@@ -121,6 +121,12 @@ OC.L10N.register(
"Personal info" : "Informazioni personali",
"Mobile & desktop" : "Mobile e desktop",
"Email server" : "Server di posta",
+ "Mail Providers" : "Provider di Posta Elettronica",
+ "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "Il provider di posta elettronica consente l'invio di e-mail direttamente tramite l'account e-mail personale dell'utente. Al momento, questa funzionalità è limitata agli inviti del calendario. Richiede Nextcloud Mail 4.1 e un account e-mail in Nextcloud Mail che corrisponda all'indirizzo e-mail dell'utente in Nextcloud.",
+ "Send emails using" : "Invia email usando",
+ "User's email account" : "Account email degli utenti",
+ "System email account" : "Account email di sistema",
+ "Security & setup checks" : "Controlli di configurazione e sicurezza",
"Background jobs" : "Operazioni in background",
"Unlimited" : "Illimitata",
"Verifying" : "Verifica",
@@ -172,23 +178,61 @@ OC.L10N.register(
"Email test" : "Prova email",
"Email test was successfully sent" : "Il messaggio di prova è stato inviato correttamente",
"You have not set or verified your email server configuration, yet. Please head over to the \"Basic settings\" in order to set them. Afterwards, use the \"Send email\" button below the form to verify your settings." : "Non hai ancora impostato o verificato la configurazione del tuo server email. Vai alle \"Impostazioni di base\" per configurarle. Successivamente, utilizza il pulsante \"Invia email\" sotto il modulo per verificare le tue impostazioni.",
+ "Transactional File Locking" : "Blocco transazionale dei file",
+ "Transactional File Locking is disabled. This is not a a supported configuraton. It may lead to difficult to isolate problems including file corruption. Please remove the `'filelocking.enabled' => false` configuration entry from your `config.php` to avoid these problems." : "Il blocco transizionale dei file è disabilitato. Questa non è una configurazione supportata. Potrebbe risultare difficile isolare i problemi, inclusa la corruzione dei file. Per favore rimuovi la voce di configurazione `'filelocking.enabled' => false` dal tuo `config.php` per evitare questi problemi.",
"The database is used for transactional file locking. To enhance performance, please configure memcache, if available." : "Il database viene usato per il blocco di file transazionale. Per migliorare le prestazioni, configura memcache, se disponibile.",
"Forwarded for headers" : "Inoltrato per intestazioni",
"Your \"trusted_proxies\" setting is not correctly set, it should be an array." : "La tua impostazione \"trusted_proxies\" non è corretta, dovrebbe essere un array.",
+ "Your \"trusted_proxies\" setting is not correctly set, it should be an array of IP addresses - optionally with range in CIDR notation." : "L'impostazione \"trusted_proxies\" non è impostata correttamente, dovrebbe essere un array di indirizzi IP, facoltativamente con intervallo nella notazione CIDR.",
"The reverse proxy header configuration is incorrect. This is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud." : "La configurazione dell'intestazione del reverse proxy è errata. Questo è un problema di sicurezza e può consentire a un aggressore di falsificare il proprio indirizzo IP come visto da Nextcloud.",
"Your IP address was resolved as %s" : "Il tuo indirizzo IP è stato risolto come %s",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud." : "La configurazione dell'intestazione del reverse proxy è errata o stai accedendo a Nextcloud da un proxy fidato. Se non è così, si tratta di un problema di sicurezza e può consentire a un aggressore di falsificare il proprio indirizzo IP come visto da Nextcloud.",
+ "HTTPS access and URLs" : "Accesso HTTPS e URL",
+ "Accessing site insecurely via HTTP. You are strongly advised to set up your server to require HTTPS instead. Without it some important web functionality like \"copy to clipboard\" or \"service workers\" will not work!" : "Accesso al sito non sicuro tramite HTTP. Ti consigliamo vivamente di configurare il tuo server per gestire le richieste HTTPS. Senza di esse alcune importanti funzionalità web come \"copia negli appunti\" o \"operatori di servizio\" non funzioneranno!",
+ "Accessing site insecurely via HTTP." : "Accesso non sicuro al sito tramite HTTP.",
+ "You are accessing your instance over a secure connection, however your instance is generating insecure URLs. This likely means that your instance is behind a reverse proxy and the Nextcloud `overwrite*` config values are not set correctly." : "Stai accedendo alla tua istanza tramite una connessione protetta, tuttavia la tua istanza sta generando URL non sicuri. Ciò probabilmente significa che la tua istanza è protetta da un proxy inverso e che i valori di configurazione `overwrite*` di Nextcloud non sono impostati correttamente.",
+ "Your instance is generating insecure URLs. If you access your instance over HTTPS, this likely means that your instance is behind a reverse proxy and the Nextcloud `overwrite*` config values are not set correctly." : "La tua istanza sta generando URL non sicuri. Se accedi alla tua istanza tramite HTTPS, probabilmente significa che la tua istanza si trova dietro un proxy inverso e che i valori di configurazione `overwrite*` di Nextcloud non sono impostati correttamente.",
+ "You are accessing your instance over a secure connection, and your instance is generating secure URLs." : "Stai accedendo alla tua istanza tramite una connessione protetta e l'istanza sta generando URL protetti.",
"Internet connectivity" : "Connessione internet",
"Internet connectivity is disabled in configuration file." : "La connessione internet è disattivata nel file di configurazione.",
"This server has no working internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the internet to enjoy all features." : "Questo server non ha una connessione a Internet funzionante: diversi dispositivi finali non sono raggiungibili. Ciò significa che alcune delle funzionalità come il montaggio di archivi esterni, le notifiche degli aggiornamenti o l'installazione di applicazioni di terze parti non funzioneranno. Anche l'accesso remoto ai file e l'invio di email di notifica potrebbero non funzionare. Attiva la connessione a Internet del server se desideri disporre di tutte le funzionalità.",
"JavaScript modules support" : "Supporto dei moduli JavaScript ",
+ "Unable to run check for JavaScript support. Please remedy or confirm manually if your webserver serves `.mjs` files using the JavaScript MIME type." : "Impossibile eseguire la verifica del supporto JavaScript. Rimedio o conferma manualmente se il tuo server web gestisce file `.mjs` utilizzando il tipo MIME JavaScript.",
+ "Your webserver does not serve `.mjs` files using the JavaScript MIME type. This will break some apps by preventing browsers from executing the JavaScript files. You should configure your webserver to serve `.mjs` files with either the `text/javascript` or `application/javascript` MIME type." : "Il tuo server web non gestisce i file `.mjs` utilizzando il tipo MIME JavaScript. Ciò corromperà alcune app impedendo ai browser di eseguire i file JavaScript. Dovresti configurare il tuo server web per gestire i file `.mjs` con il tipo MIME `text/javascript` o `application/javascript`.",
+ "JavaScript source map support" : "Supporto della mappa sorgente JavaScript",
+ "Your webserver is not set up to serve `.js.map` files. Without these files, JavaScript Source Maps won't function properly, making it more challenging to troubleshoot and debug any issues that may arise." : "Il tuo server web non è configurato per gestire i file `.js.map`. Senza questi file, le mappe sorgente JavaScript non funzioneranno correttamente, rendendo più difficile la risoluzione dei problemi e il debug di eventuali problemi che potrebbero verificarsi.",
"Old server-side-encryption" : "Vecchia crittografia lato server",
"Disabled" : "Disabilitata",
"The old server-side-encryption format is enabled. We recommend disabling this." : "Il vecchio formato di cifratura lato server è abilitato. Ti consigliamo di disabilitarlo.",
"Maintenance window start" : "Inizio della finestra di manutenzione",
+ "Server has no maintenance window start time configured. This means resource intensive daily background jobs will also be executed during your main usage time. We recommend to set it to a time of low usage, so users are less impacted by the load caused from these heavy tasks." : "Per il server non è configurata l'ora di inizio della finestra di manutenzione. Ciò significa che i lavori in background giornalieri ad uso intensivo di risorse verranno eseguiti anche durante l'orario di utilizzo principale. Ti consigliamo di impostarla su un orario di utilizzo ridotto, in modo che gli utenti siano meno interessati dal carico causato da questa attività pesante.",
+ "Maintenance window to execute heavy background jobs is between {start}:00 UTC and {end}:00 UTC" : "La finestra di manutenzione per eseguire lavori pesanti in background inizia alle {start}:00 UTC e finisce alle {end}:00 UTC",
"Memcache" : "Memcache",
+ "Memcached is configured as distributed cache, but the wrong PHP module (\"memcache\") is installed. Please install the PHP module \"memcached\"." : "Memcached è configurato come cache distribuita, ma è installato il modulo PHP sbagliato (\"memcache\"). Installa il modulo PHP \"memcached\".",
+ "Memcached is configured as distributed cache, but the PHP module \"memcached\" is not installed. Please install the PHP module \"memcached\"." : "Memcached è configurata come cache distribuita, ma il modulo PHP \"memcached\" non è installato. Installa il modulo PHP \"memcached\".",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available." : "Nessuna cache di memoria è stata configurata. Per migliorare le prestazioni, si prega di configurare una memcache, se disponibile.",
+ "Failed to write and read a value from local cache." : "Impossibile scrivere e leggere un valore dalla cache locale.",
+ "Failed to write and read a value from distributed cache." : "Impossibile scrivere e leggere un valore dalla cache distribuita.",
"Configured" : "Configurato",
+ "Mimetype migrations available" : "Migrazioni di tipi MIME disponibili",
+ "One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command `occ maintenance:repair --include-expensive` to perform the migrations." : "Sono disponibili una o più migrazioni di tipi MIME. Occasionalmente vengono aggiunti nuovi tipi MIME per gestire meglio determinati tipi di file. La migrazione dei tipi MIME richiede molto tempo su istanze più grandi, quindi questa operazione non viene eseguita automaticamente durante gli aggiornamenti. Utilizza il comando \"occ Maintenance:repair --include-expensive\" per eseguire le migrazioni.",
+ "MySQL row format" : "Formato di riga MySQL",
+ "You are not using MySQL" : "Non stai utilizzando MySQL",
+ "None of your tables use ROW_FORMAT=Compressed" : "Nessuna delle tue tabelle utilizza ROW_FORMAT=Compressed",
+ "Incorrect row format found in your database. ROW_FORMAT=Dynamic offers the best database performances for Nextcloud. Please update row format on the following list: %s." : "Formato di riga errato trovato nel database. ROW_FORMAT=Dynamic offre le migliori prestazioni del database per Nextcloud. Aggiorna il formato della riga nel seguente elenco: %s.",
+ "MySQL Unicode support" : "Supporto Unicode MySQL",
+ "MySQL is used as database and does support 4-byte characters" : "MySQL viene utilizzato come database e supporta caratteri a 4 byte",
+ "MySQL is used as database but does not support 4-byte characters. To be able to handle 4-byte characters (like emojis) without issues in filenames or comments for example it is recommended to enable the 4-byte support in MySQL." : "MySQL viene utilizzato come database ma non supporta caratteri a 4 byte. Per poter gestire caratteri a 4 byte (come gli emoji) senza problemi nei nomi dei file o nei commenti, ad esempio, si consiglia di abilitare il supporto a 4 byte in MySQL.",
+ "OCS provider resolving" : "Risoluzione del provider OCS",
+ "Could not check if your web server properly resolves the OCM and OCS provider URLs." : "Impossibile verificare se il tuo server web risolve correttamente gli URL del provider OCM e OCS.",
+ "Your web server is not properly set up to resolve %1$s.\nThis is most likely related to a web server configuration that was not updated to deliver this folder directly.\nPlease compare your configuration against the shipped rewrite rules in \".htaccess\" for Apache or the provided one in the documentation for Nginx.\nOn Nginx those are typically the lines starting with \"location ~\" that need an update." : "Il tuo server web non è configurato correttamente per risolvere %1$s.\nCiò è molto probabilmente correlato alla configurazione di un server Web che non è stata aggiornata per fornire direttamente questa cartella.\nConfronta la tua configurazione con le regole di riscrittura fornite in \".htaccess\" per Apache o con quella fornita nella documentazione per Nginx.\nSu Nginx queste sono in genere le righe che iniziano con \"location ~\" che necessitano di un aggiornamento.",
+ "Overwrite CLI URL" : "Sovrascrivi URL CLI",
+ "The \"overwrite.cli.url\" option in your config.php is correctly set to \"%s\"." : "L'opzione \"overwrite.cli.url\" nel tuo config.php è impostata correttamente su \"%s\".",
+ "The \"overwrite.cli.url\" option in your config.php is set to \"%s\" which is a correct URL. Suggested URL is \"%s\"." : "L'opzione \"overwrite.cli.url\" nel tuo config.php è impostata su \"%s\" che è un URL corretto. L'URL suggerito è \"%s\".",
+ "Please make sure to set the \"overwrite.cli.url\" option in your config.php file to the URL that your users mainly use to access this Nextcloud. Suggestion: \"%s\". Otherwise there might be problems with the URL generation via cron. (It is possible though that the suggested URL is not the URL that your users mainly use to access this Nextcloud. Best is to double check this in any case.)" : "Assicurati di impostare l'opzione \"overwrite.cli.url\" nel tuo file config.php sull'URL che i tuoi utenti utilizzano principalmente per accedere a questo Nextcloud. Suggerimento: \"%s\". Altrimenti potrebbero esserci problemi con la generazione dell'URL tramite cron. (È possibile tuttavia che l'URL suggerito non sia l'URL utilizzato principalmente dai tuoi utenti per accedere a Nextcloud. La cosa migliore in ogni caso è di ricontrollarlo.)\n ",
+ "PHP APCu configuration" : "Configurazione PHP APCu",
+ "Your APCu cache has been running full, consider increasing the apc.shm_size php setting." : "La tua cache APCu è piena, valuta la possibilità di aumentare l'impostazione php apc.shm_size.",
+ "Your APCu cache is almost full at %s%%, consider increasing the apc.shm_size php setting." : "La tua cache APCu è quasi piena al %s%%, prendi in considerazione l'aumento dell'impostazione php apc.shm_size.",
"PHP default charset" : "Set di caratteri PHP predefinito",
"PHP configuration option \"default_charset\" should be UTF-8" : "L'opzione di configurazione PHP \"default_charset\" dovrebbe essere UTF-8",
"PHP set_time_limit" : "PHP set_time_limit",
@@ -199,12 +243,23 @@ OC.L10N.register(
"Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "La tua versione di PHP non supporta FreeType. Ciò causerà problemi con le immagini dei profili e con l'interfaccia delle impostazioni.",
"PHP getenv" : "getenv PHP",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP non sembra essere configurato correttamente per interrogare le variabili d'ambiente di sistema. Il test con getenv(\"PATH\") restituisce solo una risposta vuota.",
+ "PHP file size upload limit" : "Limite dimensione caricamento file PHP",
+ "The PHP upload_max_filesize is too low. A size of at least %1$s is recommended. Current value: %2$s." : "Il valore PHP upload_max_filesize è troppo basso. Ti suggeriamo un valore di almeno %1$s. Valore attuale: %2$s.",
+ "The PHP post_max_size is too low. A size of at least %1$s is recommended. Current value: %2$s." : "Il valore PHP post_max_size è troppo basso. Ti suggeriamo un valore di almeno %1$s. Valore attuale: %2$s.",
+ "The PHP max_input_time is too low. A time of at least %1$s is recommended. Current value: %2$s." : "Il valore PHP max_input_time è troppo basso. Raccomandiamo un valore di almeno %1$s. Valore attuale: %2$s.",
+ "The PHP max_execution_time is too low. A time of at least %1$s is recommended. Current value: %2$s." : "Il valore PHP max_execution_time è troppo basso. Raccomandiamo un valore di almeno %1$s. Valore attuale: %2$s.",
"PHP memory limit" : "Limite di memoria PHP",
"The PHP memory limit is below the recommended value of %s." : "Il limite di memoria di PHP è inferiore al valore consigliato di %s.",
"PHP modules" : "Moduli PHP",
"This instance is missing some required PHP modules. It is required to install them: %s." : "Questa istanza manca di alcuni moduli PHP richiesti. È necessario installarli: %s.",
+ "This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them:\n%s" : "In questa istanza mancano alcuni moduli PHP consigliati. Ti consigliamo vivamente di installari per garantire prestazioni migliori e una migliore compatibilità:\n%s",
"PHP opcache" : "PHP opcache",
"The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "Il modulo PHP OPcache non è caricato. Per prestazioni migliori consigliamo di caricarlo nella tua installazione di PHP.",
+ "OPcache is disabled. For better performance, it is recommended to apply \"opcache.enable=1\" to your PHP configuration." : "OPcache è disabilitata. Per prestazioni migliori, si consiglia di applicare \"opcache.enable=1\" alla configurazione PHP.",
+ "The shared memory based OPcache is disabled. For better performance, it is recommended to apply \"opcache.file_cache_only=0\" to your PHP configuration and use the file cache as second level cache only." : "L'OPcache basata sulla memoria condivisa è disabilitata. Per prestazioni migliori, si consiglia di applicare \"opcache.file_cache_only=0\" alla configurazione PHP e utilizzare la cache dei file esclusivamente come cache di secondo livello.",
+ "OPcache is not working as it should, opcache_get_status() returns false, please check configuration." : "OPcache non funziona come dovrebbe, opcache_get_status() restituisce false, controlla la configurazione.",
+ "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply \"opcache.max_accelerated_files\" to your PHP configuration with a value higher than \"%s\"." : "Il numero massimo di chiavi OPcache è stato quasi superato. Per garantire che tutti gli script possano essere mantenuti nella cache, si consiglia di applicare \"opcache.max_accelerated_files\" alla configurazione PHP con un valore superiore a \"%s\".",
+ "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply \"opcache.memory_consumption\" to your PHP configuration with a value higher than \"%s\"." : "Il buffer OPcache è quasi pieno. Per garantire che tutti gli script possano essere conservati nella cache, si consiglia di applicare \"opcache.memory_consumption\" alla configurazione PHP con un valore superiore a \"%s\".",
"Correctly configured" : "Configurato correttamente",
"PHP version" : "Versione PHP",
"You are currently running PHP %s." : "Attualmente stai usando PHP %s.",
diff --git a/apps/settings/l10n/it.json b/apps/settings/l10n/it.json
index 27957e00149..fac08636baa 100644
--- a/apps/settings/l10n/it.json
+++ b/apps/settings/l10n/it.json
@@ -119,6 +119,12 @@
"Personal info" : "Informazioni personali",
"Mobile & desktop" : "Mobile e desktop",
"Email server" : "Server di posta",
+ "Mail Providers" : "Provider di Posta Elettronica",
+ "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "Il provider di posta elettronica consente l'invio di e-mail direttamente tramite l'account e-mail personale dell'utente. Al momento, questa funzionalità è limitata agli inviti del calendario. Richiede Nextcloud Mail 4.1 e un account e-mail in Nextcloud Mail che corrisponda all'indirizzo e-mail dell'utente in Nextcloud.",
+ "Send emails using" : "Invia email usando",
+ "User's email account" : "Account email degli utenti",
+ "System email account" : "Account email di sistema",
+ "Security & setup checks" : "Controlli di configurazione e sicurezza",
"Background jobs" : "Operazioni in background",
"Unlimited" : "Illimitata",
"Verifying" : "Verifica",
@@ -170,23 +176,61 @@
"Email test" : "Prova email",
"Email test was successfully sent" : "Il messaggio di prova è stato inviato correttamente",
"You have not set or verified your email server configuration, yet. Please head over to the \"Basic settings\" in order to set them. Afterwards, use the \"Send email\" button below the form to verify your settings." : "Non hai ancora impostato o verificato la configurazione del tuo server email. Vai alle \"Impostazioni di base\" per configurarle. Successivamente, utilizza il pulsante \"Invia email\" sotto il modulo per verificare le tue impostazioni.",
+ "Transactional File Locking" : "Blocco transazionale dei file",
+ "Transactional File Locking is disabled. This is not a a supported configuraton. It may lead to difficult to isolate problems including file corruption. Please remove the `'filelocking.enabled' => false` configuration entry from your `config.php` to avoid these problems." : "Il blocco transizionale dei file è disabilitato. Questa non è una configurazione supportata. Potrebbe risultare difficile isolare i problemi, inclusa la corruzione dei file. Per favore rimuovi la voce di configurazione `'filelocking.enabled' => false` dal tuo `config.php` per evitare questi problemi.",
"The database is used for transactional file locking. To enhance performance, please configure memcache, if available." : "Il database viene usato per il blocco di file transazionale. Per migliorare le prestazioni, configura memcache, se disponibile.",
"Forwarded for headers" : "Inoltrato per intestazioni",
"Your \"trusted_proxies\" setting is not correctly set, it should be an array." : "La tua impostazione \"trusted_proxies\" non è corretta, dovrebbe essere un array.",
+ "Your \"trusted_proxies\" setting is not correctly set, it should be an array of IP addresses - optionally with range in CIDR notation." : "L'impostazione \"trusted_proxies\" non è impostata correttamente, dovrebbe essere un array di indirizzi IP, facoltativamente con intervallo nella notazione CIDR.",
"The reverse proxy header configuration is incorrect. This is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud." : "La configurazione dell'intestazione del reverse proxy è errata. Questo è un problema di sicurezza e può consentire a un aggressore di falsificare il proprio indirizzo IP come visto da Nextcloud.",
"Your IP address was resolved as %s" : "Il tuo indirizzo IP è stato risolto come %s",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud." : "La configurazione dell'intestazione del reverse proxy è errata o stai accedendo a Nextcloud da un proxy fidato. Se non è così, si tratta di un problema di sicurezza e può consentire a un aggressore di falsificare il proprio indirizzo IP come visto da Nextcloud.",
+ "HTTPS access and URLs" : "Accesso HTTPS e URL",
+ "Accessing site insecurely via HTTP. You are strongly advised to set up your server to require HTTPS instead. Without it some important web functionality like \"copy to clipboard\" or \"service workers\" will not work!" : "Accesso al sito non sicuro tramite HTTP. Ti consigliamo vivamente di configurare il tuo server per gestire le richieste HTTPS. Senza di esse alcune importanti funzionalità web come \"copia negli appunti\" o \"operatori di servizio\" non funzioneranno!",
+ "Accessing site insecurely via HTTP." : "Accesso non sicuro al sito tramite HTTP.",
+ "You are accessing your instance over a secure connection, however your instance is generating insecure URLs. This likely means that your instance is behind a reverse proxy and the Nextcloud `overwrite*` config values are not set correctly." : "Stai accedendo alla tua istanza tramite una connessione protetta, tuttavia la tua istanza sta generando URL non sicuri. Ciò probabilmente significa che la tua istanza è protetta da un proxy inverso e che i valori di configurazione `overwrite*` di Nextcloud non sono impostati correttamente.",
+ "Your instance is generating insecure URLs. If you access your instance over HTTPS, this likely means that your instance is behind a reverse proxy and the Nextcloud `overwrite*` config values are not set correctly." : "La tua istanza sta generando URL non sicuri. Se accedi alla tua istanza tramite HTTPS, probabilmente significa che la tua istanza si trova dietro un proxy inverso e che i valori di configurazione `overwrite*` di Nextcloud non sono impostati correttamente.",
+ "You are accessing your instance over a secure connection, and your instance is generating secure URLs." : "Stai accedendo alla tua istanza tramite una connessione protetta e l'istanza sta generando URL protetti.",
"Internet connectivity" : "Connessione internet",
"Internet connectivity is disabled in configuration file." : "La connessione internet è disattivata nel file di configurazione.",
"This server has no working internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the internet to enjoy all features." : "Questo server non ha una connessione a Internet funzionante: diversi dispositivi finali non sono raggiungibili. Ciò significa che alcune delle funzionalità come il montaggio di archivi esterni, le notifiche degli aggiornamenti o l'installazione di applicazioni di terze parti non funzioneranno. Anche l'accesso remoto ai file e l'invio di email di notifica potrebbero non funzionare. Attiva la connessione a Internet del server se desideri disporre di tutte le funzionalità.",
"JavaScript modules support" : "Supporto dei moduli JavaScript ",
+ "Unable to run check for JavaScript support. Please remedy or confirm manually if your webserver serves `.mjs` files using the JavaScript MIME type." : "Impossibile eseguire la verifica del supporto JavaScript. Rimedio o conferma manualmente se il tuo server web gestisce file `.mjs` utilizzando il tipo MIME JavaScript.",
+ "Your webserver does not serve `.mjs` files using the JavaScript MIME type. This will break some apps by preventing browsers from executing the JavaScript files. You should configure your webserver to serve `.mjs` files with either the `text/javascript` or `application/javascript` MIME type." : "Il tuo server web non gestisce i file `.mjs` utilizzando il tipo MIME JavaScript. Ciò corromperà alcune app impedendo ai browser di eseguire i file JavaScript. Dovresti configurare il tuo server web per gestire i file `.mjs` con il tipo MIME `text/javascript` o `application/javascript`.",
+ "JavaScript source map support" : "Supporto della mappa sorgente JavaScript",
+ "Your webserver is not set up to serve `.js.map` files. Without these files, JavaScript Source Maps won't function properly, making it more challenging to troubleshoot and debug any issues that may arise." : "Il tuo server web non è configurato per gestire i file `.js.map`. Senza questi file, le mappe sorgente JavaScript non funzioneranno correttamente, rendendo più difficile la risoluzione dei problemi e il debug di eventuali problemi che potrebbero verificarsi.",
"Old server-side-encryption" : "Vecchia crittografia lato server",
"Disabled" : "Disabilitata",
"The old server-side-encryption format is enabled. We recommend disabling this." : "Il vecchio formato di cifratura lato server è abilitato. Ti consigliamo di disabilitarlo.",
"Maintenance window start" : "Inizio della finestra di manutenzione",
+ "Server has no maintenance window start time configured. This means resource intensive daily background jobs will also be executed during your main usage time. We recommend to set it to a time of low usage, so users are less impacted by the load caused from these heavy tasks." : "Per il server non è configurata l'ora di inizio della finestra di manutenzione. Ciò significa che i lavori in background giornalieri ad uso intensivo di risorse verranno eseguiti anche durante l'orario di utilizzo principale. Ti consigliamo di impostarla su un orario di utilizzo ridotto, in modo che gli utenti siano meno interessati dal carico causato da questa attività pesante.",
+ "Maintenance window to execute heavy background jobs is between {start}:00 UTC and {end}:00 UTC" : "La finestra di manutenzione per eseguire lavori pesanti in background inizia alle {start}:00 UTC e finisce alle {end}:00 UTC",
"Memcache" : "Memcache",
+ "Memcached is configured as distributed cache, but the wrong PHP module (\"memcache\") is installed. Please install the PHP module \"memcached\"." : "Memcached è configurato come cache distribuita, ma è installato il modulo PHP sbagliato (\"memcache\"). Installa il modulo PHP \"memcached\".",
+ "Memcached is configured as distributed cache, but the PHP module \"memcached\" is not installed. Please install the PHP module \"memcached\"." : "Memcached è configurata come cache distribuita, ma il modulo PHP \"memcached\" non è installato. Installa il modulo PHP \"memcached\".",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available." : "Nessuna cache di memoria è stata configurata. Per migliorare le prestazioni, si prega di configurare una memcache, se disponibile.",
+ "Failed to write and read a value from local cache." : "Impossibile scrivere e leggere un valore dalla cache locale.",
+ "Failed to write and read a value from distributed cache." : "Impossibile scrivere e leggere un valore dalla cache distribuita.",
"Configured" : "Configurato",
+ "Mimetype migrations available" : "Migrazioni di tipi MIME disponibili",
+ "One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command `occ maintenance:repair --include-expensive` to perform the migrations." : "Sono disponibili una o più migrazioni di tipi MIME. Occasionalmente vengono aggiunti nuovi tipi MIME per gestire meglio determinati tipi di file. La migrazione dei tipi MIME richiede molto tempo su istanze più grandi, quindi questa operazione non viene eseguita automaticamente durante gli aggiornamenti. Utilizza il comando \"occ Maintenance:repair --include-expensive\" per eseguire le migrazioni.",
+ "MySQL row format" : "Formato di riga MySQL",
+ "You are not using MySQL" : "Non stai utilizzando MySQL",
+ "None of your tables use ROW_FORMAT=Compressed" : "Nessuna delle tue tabelle utilizza ROW_FORMAT=Compressed",
+ "Incorrect row format found in your database. ROW_FORMAT=Dynamic offers the best database performances for Nextcloud. Please update row format on the following list: %s." : "Formato di riga errato trovato nel database. ROW_FORMAT=Dynamic offre le migliori prestazioni del database per Nextcloud. Aggiorna il formato della riga nel seguente elenco: %s.",
+ "MySQL Unicode support" : "Supporto Unicode MySQL",
+ "MySQL is used as database and does support 4-byte characters" : "MySQL viene utilizzato come database e supporta caratteri a 4 byte",
+ "MySQL is used as database but does not support 4-byte characters. To be able to handle 4-byte characters (like emojis) without issues in filenames or comments for example it is recommended to enable the 4-byte support in MySQL." : "MySQL viene utilizzato come database ma non supporta caratteri a 4 byte. Per poter gestire caratteri a 4 byte (come gli emoji) senza problemi nei nomi dei file o nei commenti, ad esempio, si consiglia di abilitare il supporto a 4 byte in MySQL.",
+ "OCS provider resolving" : "Risoluzione del provider OCS",
+ "Could not check if your web server properly resolves the OCM and OCS provider URLs." : "Impossibile verificare se il tuo server web risolve correttamente gli URL del provider OCM e OCS.",
+ "Your web server is not properly set up to resolve %1$s.\nThis is most likely related to a web server configuration that was not updated to deliver this folder directly.\nPlease compare your configuration against the shipped rewrite rules in \".htaccess\" for Apache or the provided one in the documentation for Nginx.\nOn Nginx those are typically the lines starting with \"location ~\" that need an update." : "Il tuo server web non è configurato correttamente per risolvere %1$s.\nCiò è molto probabilmente correlato alla configurazione di un server Web che non è stata aggiornata per fornire direttamente questa cartella.\nConfronta la tua configurazione con le regole di riscrittura fornite in \".htaccess\" per Apache o con quella fornita nella documentazione per Nginx.\nSu Nginx queste sono in genere le righe che iniziano con \"location ~\" che necessitano di un aggiornamento.",
+ "Overwrite CLI URL" : "Sovrascrivi URL CLI",
+ "The \"overwrite.cli.url\" option in your config.php is correctly set to \"%s\"." : "L'opzione \"overwrite.cli.url\" nel tuo config.php è impostata correttamente su \"%s\".",
+ "The \"overwrite.cli.url\" option in your config.php is set to \"%s\" which is a correct URL. Suggested URL is \"%s\"." : "L'opzione \"overwrite.cli.url\" nel tuo config.php è impostata su \"%s\" che è un URL corretto. L'URL suggerito è \"%s\".",
+ "Please make sure to set the \"overwrite.cli.url\" option in your config.php file to the URL that your users mainly use to access this Nextcloud. Suggestion: \"%s\". Otherwise there might be problems with the URL generation via cron. (It is possible though that the suggested URL is not the URL that your users mainly use to access this Nextcloud. Best is to double check this in any case.)" : "Assicurati di impostare l'opzione \"overwrite.cli.url\" nel tuo file config.php sull'URL che i tuoi utenti utilizzano principalmente per accedere a questo Nextcloud. Suggerimento: \"%s\". Altrimenti potrebbero esserci problemi con la generazione dell'URL tramite cron. (È possibile tuttavia che l'URL suggerito non sia l'URL utilizzato principalmente dai tuoi utenti per accedere a Nextcloud. La cosa migliore in ogni caso è di ricontrollarlo.)\n ",
+ "PHP APCu configuration" : "Configurazione PHP APCu",
+ "Your APCu cache has been running full, consider increasing the apc.shm_size php setting." : "La tua cache APCu è piena, valuta la possibilità di aumentare l'impostazione php apc.shm_size.",
+ "Your APCu cache is almost full at %s%%, consider increasing the apc.shm_size php setting." : "La tua cache APCu è quasi piena al %s%%, prendi in considerazione l'aumento dell'impostazione php apc.shm_size.",
"PHP default charset" : "Set di caratteri PHP predefinito",
"PHP configuration option \"default_charset\" should be UTF-8" : "L'opzione di configurazione PHP \"default_charset\" dovrebbe essere UTF-8",
"PHP set_time_limit" : "PHP set_time_limit",
@@ -197,12 +241,23 @@
"Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "La tua versione di PHP non supporta FreeType. Ciò causerà problemi con le immagini dei profili e con l'interfaccia delle impostazioni.",
"PHP getenv" : "getenv PHP",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP non sembra essere configurato correttamente per interrogare le variabili d'ambiente di sistema. Il test con getenv(\"PATH\") restituisce solo una risposta vuota.",
+ "PHP file size upload limit" : "Limite dimensione caricamento file PHP",
+ "The PHP upload_max_filesize is too low. A size of at least %1$s is recommended. Current value: %2$s." : "Il valore PHP upload_max_filesize è troppo basso. Ti suggeriamo un valore di almeno %1$s. Valore attuale: %2$s.",
+ "The PHP post_max_size is too low. A size of at least %1$s is recommended. Current value: %2$s." : "Il valore PHP post_max_size è troppo basso. Ti suggeriamo un valore di almeno %1$s. Valore attuale: %2$s.",
+ "The PHP max_input_time is too low. A time of at least %1$s is recommended. Current value: %2$s." : "Il valore PHP max_input_time è troppo basso. Raccomandiamo un valore di almeno %1$s. Valore attuale: %2$s.",
+ "The PHP max_execution_time is too low. A time of at least %1$s is recommended. Current value: %2$s." : "Il valore PHP max_execution_time è troppo basso. Raccomandiamo un valore di almeno %1$s. Valore attuale: %2$s.",
"PHP memory limit" : "Limite di memoria PHP",
"The PHP memory limit is below the recommended value of %s." : "Il limite di memoria di PHP è inferiore al valore consigliato di %s.",
"PHP modules" : "Moduli PHP",
"This instance is missing some required PHP modules. It is required to install them: %s." : "Questa istanza manca di alcuni moduli PHP richiesti. È necessario installarli: %s.",
+ "This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them:\n%s" : "In questa istanza mancano alcuni moduli PHP consigliati. Ti consigliamo vivamente di installari per garantire prestazioni migliori e una migliore compatibilità:\n%s",
"PHP opcache" : "PHP opcache",
"The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "Il modulo PHP OPcache non è caricato. Per prestazioni migliori consigliamo di caricarlo nella tua installazione di PHP.",
+ "OPcache is disabled. For better performance, it is recommended to apply \"opcache.enable=1\" to your PHP configuration." : "OPcache è disabilitata. Per prestazioni migliori, si consiglia di applicare \"opcache.enable=1\" alla configurazione PHP.",
+ "The shared memory based OPcache is disabled. For better performance, it is recommended to apply \"opcache.file_cache_only=0\" to your PHP configuration and use the file cache as second level cache only." : "L'OPcache basata sulla memoria condivisa è disabilitata. Per prestazioni migliori, si consiglia di applicare \"opcache.file_cache_only=0\" alla configurazione PHP e utilizzare la cache dei file esclusivamente come cache di secondo livello.",
+ "OPcache is not working as it should, opcache_get_status() returns false, please check configuration." : "OPcache non funziona come dovrebbe, opcache_get_status() restituisce false, controlla la configurazione.",
+ "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply \"opcache.max_accelerated_files\" to your PHP configuration with a value higher than \"%s\"." : "Il numero massimo di chiavi OPcache è stato quasi superato. Per garantire che tutti gli script possano essere mantenuti nella cache, si consiglia di applicare \"opcache.max_accelerated_files\" alla configurazione PHP con un valore superiore a \"%s\".",
+ "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply \"opcache.memory_consumption\" to your PHP configuration with a value higher than \"%s\"." : "Il buffer OPcache è quasi pieno. Per garantire che tutti gli script possano essere conservati nella cache, si consiglia di applicare \"opcache.memory_consumption\" alla configurazione PHP con un valore superiore a \"%s\".",
"Correctly configured" : "Configurato correttamente",
"PHP version" : "Versione PHP",
"You are currently running PHP %s." : "Attualmente stai usando PHP %s.",
diff --git a/apps/settings/l10n/zh_HK.js b/apps/settings/l10n/zh_HK.js
index e528c04c5bf..c515bd718a5 100644
--- a/apps/settings/l10n/zh_HK.js
+++ b/apps/settings/l10n/zh_HK.js
@@ -211,6 +211,8 @@ OC.L10N.register(
"Memcached is configured as distributed cache, but the wrong PHP module (\"memcache\") is installed. Please install the PHP module \"memcached\"." : "已設定 Memcached 為分散式快取,但安裝了錯誤的 PHP 模組「memcache」。請安裝 PHP 模組「memcached」。",
"Memcached is configured as distributed cache, but the PHP module \"memcached\" is not installed. Please install the PHP module \"memcached\"." : "已設定 Memcached 為分散式快取,但未安裝 PHP 模組「memcached」。請安裝 PHP 模組「memcached」。",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available." : "尚未配置內存緩存。為提升性能,請配置內存緩存(如果可用)。",
+ "Failed to write and read a value from local cache." : "無法從近端緩存寫入或讀取數值。",
+ "Failed to write and read a value from distributed cache." : "無法從分佈式緩存寫入或讀取數值。",
"Configured" : "已配置",
"Mimetype migrations available" : "有可用的 MIME 類型遷移",
"One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command `occ maintenance:repair --include-expensive` to perform the migrations." : "有一個或多個 MIME 類型的遷移可用。有時會添加新的 MIME 類型以更好地處理某些檔案類型。在較大的實例上遷移 MIME 類型需要很長時間,因此在升級過程中不會自動執行。請使用命令 `occ maintenance:repair --include-expensive` 來執行遷移。",
diff --git a/apps/settings/l10n/zh_HK.json b/apps/settings/l10n/zh_HK.json
index 875297341f1..dc33c304d20 100644
--- a/apps/settings/l10n/zh_HK.json
+++ b/apps/settings/l10n/zh_HK.json
@@ -209,6 +209,8 @@
"Memcached is configured as distributed cache, but the wrong PHP module (\"memcache\") is installed. Please install the PHP module \"memcached\"." : "已設定 Memcached 為分散式快取,但安裝了錯誤的 PHP 模組「memcache」。請安裝 PHP 模組「memcached」。",
"Memcached is configured as distributed cache, but the PHP module \"memcached\" is not installed. Please install the PHP module \"memcached\"." : "已設定 Memcached 為分散式快取,但未安裝 PHP 模組「memcached」。請安裝 PHP 模組「memcached」。",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available." : "尚未配置內存緩存。為提升性能,請配置內存緩存(如果可用)。",
+ "Failed to write and read a value from local cache." : "無法從近端緩存寫入或讀取數值。",
+ "Failed to write and read a value from distributed cache." : "無法從分佈式緩存寫入或讀取數值。",
"Configured" : "已配置",
"Mimetype migrations available" : "有可用的 MIME 類型遷移",
"One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command `occ maintenance:repair --include-expensive` to perform the migrations." : "有一個或多個 MIME 類型的遷移可用。有時會添加新的 MIME 類型以更好地處理某些檔案類型。在較大的實例上遷移 MIME 類型需要很長時間,因此在升級過程中不會自動執行。請使用命令 `occ maintenance:repair --include-expensive` 來執行遷移。",
diff --git a/apps/settings/lib/AppInfo/Application.php b/apps/settings/lib/AppInfo/Application.php
index 124915efe7f..2841b181d1a 100644
--- a/apps/settings/lib/AppInfo/Application.php
+++ b/apps/settings/lib/AppInfo/Application.php
@@ -58,7 +58,6 @@ use OCA\Settings\SetupChecks\PhpDefaultCharset;
use OCA\Settings\SetupChecks\PhpDisabledFunctions;
use OCA\Settings\SetupChecks\PhpFreetypeSupport;
use OCA\Settings\SetupChecks\PhpGetEnv;
-use OCA\Settings\SetupChecks\PhpMaxFileSize;
use OCA\Settings\SetupChecks\PhpMemoryLimit;
use OCA\Settings\SetupChecks\PhpModules;
use OCA\Settings\SetupChecks\PhpOpcacheSetup;
@@ -204,7 +203,7 @@ class Application extends App implements IBootstrap {
$context->registerSetupCheck(PhpFreetypeSupport::class);
$context->registerSetupCheck(PhpApcuConfig::class);
$context->registerSetupCheck(PhpGetEnv::class);
- $context->registerSetupCheck(PhpMaxFileSize::class);
+ // Temporarily disabled $context->registerSetupCheck(PhpMaxFileSize::class);
$context->registerSetupCheck(PhpMemoryLimit::class);
$context->registerSetupCheck(PhpModules::class);
$context->registerSetupCheck(PhpOpcacheSetup::class);
diff --git a/apps/systemtags/l10n/it.js b/apps/systemtags/l10n/it.js
index 085fe09b589..3a2346e0122 100644
--- a/apps/systemtags/l10n/it.js
+++ b/apps/systemtags/l10n/it.js
@@ -66,7 +66,16 @@ OC.L10N.register(
"Deleted tag" : "Etichetta eliminata",
"Failed to delete tag" : "Eliminazione etichetta fallita",
"Manage tags" : "Gestisci etichette",
+ "Applying tags changes…" : "Applico le modifiche ai tag...",
+ "Search or create tag" : "Cerca o crea tag",
+ "Create new tag" : "Crea un nuovo tag",
+ "Select or create tags to apply to all selected files" : "Seleziona o crea i tag da applicare a tutti i file selezionati",
"Cancel" : "Annulla",
+ "Apply changes" : "Applica modifiche",
+ "{displayName} (hidden)" : "{displayName} (nascosto)",
+ "{displayName} (restricted)" : "{displayName} (limitato)",
+ "Failed to apply tags changes" : "Impossibile applicare le modifiche ai tag",
+ "File tags modification canceled" : "Modifiche ai tag dei file annullate",
"Loading collaborative tags …" : "Caricamento etichette collaborative …",
"Search or create collaborative tags" : "Cerca o crea etichette collaborative",
"No tags to select, type to create a new tag" : "Nessuna etichetta da selezionare, digita per crearne una nuova",
@@ -79,8 +88,10 @@ OC.L10N.register(
"List of tags and their associated files and folders." : "Lista di etichette e dei loro file e cartelle associati.",
"No tags found" : "Nessuna etichetta trovata",
"Tags you have created will show up here." : "Le etichette che hai creato saranno mostrate qui.",
+ "Failed to load tag" : "Impossibile caricare i tag",
"Failed to load last used tags" : "Caricamento ultime etichette usate fallito",
"Missing \"Content-Location\" header" : "Intestazione \"Content-Location\" mancante",
+ "A tag with the same name already exists" : "Esiste già un tag con lo stesso nome",
"Failed to load tags for file" : "Caricamento delle etichette per il file fallito",
"Failed to set tag for file" : "Impostazione dell'etichetta per il file fallita",
"Failed to delete tag for file" : "Eliminazione dell'etichetta per il file fallita",
diff --git a/apps/systemtags/l10n/it.json b/apps/systemtags/l10n/it.json
index fff0a8d6eb3..233384d9ffe 100644
--- a/apps/systemtags/l10n/it.json
+++ b/apps/systemtags/l10n/it.json
@@ -64,7 +64,16 @@
"Deleted tag" : "Etichetta eliminata",
"Failed to delete tag" : "Eliminazione etichetta fallita",
"Manage tags" : "Gestisci etichette",
+ "Applying tags changes…" : "Applico le modifiche ai tag...",
+ "Search or create tag" : "Cerca o crea tag",
+ "Create new tag" : "Crea un nuovo tag",
+ "Select or create tags to apply to all selected files" : "Seleziona o crea i tag da applicare a tutti i file selezionati",
"Cancel" : "Annulla",
+ "Apply changes" : "Applica modifiche",
+ "{displayName} (hidden)" : "{displayName} (nascosto)",
+ "{displayName} (restricted)" : "{displayName} (limitato)",
+ "Failed to apply tags changes" : "Impossibile applicare le modifiche ai tag",
+ "File tags modification canceled" : "Modifiche ai tag dei file annullate",
"Loading collaborative tags …" : "Caricamento etichette collaborative …",
"Search or create collaborative tags" : "Cerca o crea etichette collaborative",
"No tags to select, type to create a new tag" : "Nessuna etichetta da selezionare, digita per crearne una nuova",
@@ -77,8 +86,10 @@
"List of tags and their associated files and folders." : "Lista di etichette e dei loro file e cartelle associati.",
"No tags found" : "Nessuna etichetta trovata",
"Tags you have created will show up here." : "Le etichette che hai creato saranno mostrate qui.",
+ "Failed to load tag" : "Impossibile caricare i tag",
"Failed to load last used tags" : "Caricamento ultime etichette usate fallito",
"Missing \"Content-Location\" header" : "Intestazione \"Content-Location\" mancante",
+ "A tag with the same name already exists" : "Esiste già un tag con lo stesso nome",
"Failed to load tags for file" : "Caricamento delle etichette per il file fallito",
"Failed to set tag for file" : "Impostazione dell'etichetta per il file fallita",
"Failed to delete tag for file" : "Eliminazione dell'etichetta per il file fallita",
diff --git a/apps/systemtags/l10n/zh_CN.js b/apps/systemtags/l10n/zh_CN.js
index 951e2d69c95..c9f88d559b6 100644
--- a/apps/systemtags/l10n/zh_CN.js
+++ b/apps/systemtags/l10n/zh_CN.js
@@ -64,6 +64,7 @@ OC.L10N.register(
"Deleted tag" : "删除标签",
"Failed to delete tag" : "删除标签失败",
"Manage tags" : "管理标签",
+ "Create new tag" : "创建新标签",
"Cancel" : "取消",
"Loading collaborative tags …" : "正在加载协作标签 ...",
"Search or create collaborative tags" : "搜索或创建协作标签",
diff --git a/apps/systemtags/l10n/zh_CN.json b/apps/systemtags/l10n/zh_CN.json
index bedfc512fb6..e50288946c4 100644
--- a/apps/systemtags/l10n/zh_CN.json
+++ b/apps/systemtags/l10n/zh_CN.json
@@ -62,6 +62,7 @@
"Deleted tag" : "删除标签",
"Failed to delete tag" : "删除标签失败",
"Manage tags" : "管理标签",
+ "Create new tag" : "创建新标签",
"Cancel" : "取消",
"Loading collaborative tags …" : "正在加载协作标签 ...",
"Search or create collaborative tags" : "搜索或创建协作标签",
diff --git a/apps/user_ldap/l10n/it.js b/apps/user_ldap/l10n/it.js
index aa31c0e640d..996d6ac522e 100644
--- a/apps/user_ldap/l10n/it.js
+++ b/apps/user_ldap/l10n/it.js
@@ -62,8 +62,13 @@ OC.L10N.register(
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["La tua password scadrà tra %n giorno.","La tua password scadrà oggi tra %n giorni.","La tua password scadrà oggi tra %n giorni."],
"LDAP/AD integration" : "Integrazione LDAP/AD",
"LDAP Connection" : "Connessione LDAP",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Associazione non riuscita per questa configurazione LDAP: %s","Associazione non riuscita per %n configurazioni LDAP: %s","Associazione non riuscita per %n configurazioni LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Ricerca fallita per questa configurazione LDAP: %s","Ricerca fallita per %n configurazioni LDAP: %s","Ricerca fallita per %n configurazioni LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["C'è una configurazione LDAP inattiva: %s","Ci sono %n configurazioni LDAP inattive: %s","Ci sono %n configurazioni LDAP inattive: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["L'associazione e la ricerca funzionano sulla connessione LDAP configurata (%s)","L'associazione e la ricerca funzionano sulle %n connessioni LDAP configurate (%s)","L'associazione e la ricerca funzionano sulle %n connessioni LDAP configurate (%s)"],
"Invalid LDAP UUIDs" : "UUID LDAP non validi",
"None found" : "Nessuno trovato",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Sono stati trovati UUID non validi di account o gruppi LDAP. Controlla le impostazioni \"Ignora rilevamento UUID\" nella parte Esperto della configurazione LDAP e utilizza \"occ ldap:update-uuid\" per aggiornarle.",
"_%n group found_::_%n groups found_" : ["%n gruppo trovato","%n gruppi trovati","%n gruppi trovati"],
"> 1000 groups found" : "> 1000 gruppi trovati",
"> 1000 users found" : "> 1000 utenti trovati",
@@ -207,6 +212,10 @@ OC.L10N.register(
"User profile Headline will be set from the specified attribute" : "Il titolo del profilo utente verrà impostato dall'attributo specificato",
"Biography Field" : "Campo biografia",
"User profile Biography will be set from the specified attribute" : "La biografia del profilo utente verrà impostata dall'attributo specificato",
+ "Birthdate Field" : "Campo Data di Nascita",
+ "User profile Date of birth will be set from the specified attribute" : "La data di nascita del Profilo Utente verrà impostata dall'attributo specificato",
+ "Pronouns Field" : "Campo Pronome",
+ "User profile Pronouns will be set from the specified attribute" : "Il pronome del Profilo Utente verrà impostato dall'attributo specificato",
"Internal Username" : "Nome utente interno",
"By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "In modo predefinito, il nome utente interno sarà creato dall'attributo UUID. Ciò assicura che il nome utente sia univoco e che non sia necessario convertire i caratteri. Il nome utente interno consente l'uso solo di determinati caratteri: [ a-zA-Z0-9_.@- ]. Altri caratteri sono sostituiti con il corrispondente ASCII o semplicemente omessi. In caso di conflitto, sarà aggiunto/incrementato un numero. Il nome utente interno è usato per identificare un utente internamente. È anche il nome predefinito per la cartella home dell'utente. Costituisce anche una parte di URL remoti, ad esempio per tutti i servizi DAV. Con questa impostazione, il comportamento predefinito può essere scavalcato. Le modifiche avranno effetto solo sui nuovo utenti LDAP associati (aggiunti). Lascialo vuoto per ottenere il comportamento predefinito.",
"Internal Username Attribute:" : "Attributo nome utente interno:",
diff --git a/apps/user_ldap/l10n/it.json b/apps/user_ldap/l10n/it.json
index 30ef92c60e4..6814102b2ef 100644
--- a/apps/user_ldap/l10n/it.json
+++ b/apps/user_ldap/l10n/it.json
@@ -60,8 +60,13 @@
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["La tua password scadrà tra %n giorno.","La tua password scadrà oggi tra %n giorni.","La tua password scadrà oggi tra %n giorni."],
"LDAP/AD integration" : "Integrazione LDAP/AD",
"LDAP Connection" : "Connessione LDAP",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Associazione non riuscita per questa configurazione LDAP: %s","Associazione non riuscita per %n configurazioni LDAP: %s","Associazione non riuscita per %n configurazioni LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Ricerca fallita per questa configurazione LDAP: %s","Ricerca fallita per %n configurazioni LDAP: %s","Ricerca fallita per %n configurazioni LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["C'è una configurazione LDAP inattiva: %s","Ci sono %n configurazioni LDAP inattive: %s","Ci sono %n configurazioni LDAP inattive: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["L'associazione e la ricerca funzionano sulla connessione LDAP configurata (%s)","L'associazione e la ricerca funzionano sulle %n connessioni LDAP configurate (%s)","L'associazione e la ricerca funzionano sulle %n connessioni LDAP configurate (%s)"],
"Invalid LDAP UUIDs" : "UUID LDAP non validi",
"None found" : "Nessuno trovato",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Sono stati trovati UUID non validi di account o gruppi LDAP. Controlla le impostazioni \"Ignora rilevamento UUID\" nella parte Esperto della configurazione LDAP e utilizza \"occ ldap:update-uuid\" per aggiornarle.",
"_%n group found_::_%n groups found_" : ["%n gruppo trovato","%n gruppi trovati","%n gruppi trovati"],
"> 1000 groups found" : "> 1000 gruppi trovati",
"> 1000 users found" : "> 1000 utenti trovati",
@@ -205,6 +210,10 @@
"User profile Headline will be set from the specified attribute" : "Il titolo del profilo utente verrà impostato dall'attributo specificato",
"Biography Field" : "Campo biografia",
"User profile Biography will be set from the specified attribute" : "La biografia del profilo utente verrà impostata dall'attributo specificato",
+ "Birthdate Field" : "Campo Data di Nascita",
+ "User profile Date of birth will be set from the specified attribute" : "La data di nascita del Profilo Utente verrà impostata dall'attributo specificato",
+ "Pronouns Field" : "Campo Pronome",
+ "User profile Pronouns will be set from the specified attribute" : "Il pronome del Profilo Utente verrà impostato dall'attributo specificato",
"Internal Username" : "Nome utente interno",
"By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "In modo predefinito, il nome utente interno sarà creato dall'attributo UUID. Ciò assicura che il nome utente sia univoco e che non sia necessario convertire i caratteri. Il nome utente interno consente l'uso solo di determinati caratteri: [ a-zA-Z0-9_.@- ]. Altri caratteri sono sostituiti con il corrispondente ASCII o semplicemente omessi. In caso di conflitto, sarà aggiunto/incrementato un numero. Il nome utente interno è usato per identificare un utente internamente. È anche il nome predefinito per la cartella home dell'utente. Costituisce anche una parte di URL remoti, ad esempio per tutti i servizi DAV. Con questa impostazione, il comportamento predefinito può essere scavalcato. Le modifiche avranno effetto solo sui nuovo utenti LDAP associati (aggiunti). Lascialo vuoto per ottenere il comportamento predefinito.",
"Internal Username Attribute:" : "Attributo nome utente interno:",
diff --git a/build/integration/features/bootstrap/FederationContext.php b/build/integration/features/bootstrap/FederationContext.php
index e146b46644c..bbd81396df5 100644
--- a/build/integration/features/bootstrap/FederationContext.php
+++ b/build/integration/features/bootstrap/FederationContext.php
@@ -38,7 +38,7 @@ class FederationContext implements Context, SnippetAcceptingContext {
$port = getenv('PORT_FED');
- self::$phpFederatedServerPid = exec('php -S localhost:' . $port . ' -t ../../ >/dev/null & echo $!');
+ self::$phpFederatedServerPid = exec('PHP_CLI_SERVER_WORKERS=2 php -S localhost:' . $port . ' -t ../../ >/dev/null & echo $!');
}
/**
diff --git a/build/integration/federation_features/cleanup-remote-storage.feature b/build/integration/federation_features/cleanup-remote-storage.feature
index 6339edb60b6..a3585bdee96 100644
--- a/build/integration/federation_features/cleanup-remote-storage.feature
+++ b/build/integration/federation_features/cleanup-remote-storage.feature
@@ -4,6 +4,27 @@ Feature: cleanup-remote-storage
Background:
Given using api version "1"
+ Scenario: cleanup remote storage with no storage
+ Given Using server "LOCAL"
+ And user "user0" exists
+ Given Using server "REMOTE"
+ And user "user1" exists
+ # Rename file so it has a unique name in the target server (as the target
+ # server may have its own /textfile0.txt" file)
+ And User "user1" copies file "/textfile0.txt" to "/remote-share.txt"
+ And User "user1" from server "REMOTE" shares "/remote-share.txt" with user "user0" from server "LOCAL"
+ And As an "user1"
+ And Deleting last share
+ And the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And Deleting last share
+ And Using server "LOCAL"
+ When invoking occ with "sharing:cleanup-remote-storage"
+ Then the command was successful
+ And the command output contains the text "0 remote storage(s) need(s) to be checked"
+ And the command output contains the text "0 remote share(s) exist"
+ And the command output contains the text "no storages deleted"
+
Scenario: cleanup remote storage with active storages
Given Using server "LOCAL"
And user "user0" exists
diff --git a/core/Command/App/Remove.php b/core/Command/App/Remove.php
index ee60fcc0827..2ea10930427 100644
--- a/core/Command/App/Remove.php
+++ b/core/Command/App/Remove.php
@@ -49,9 +49,9 @@ class Remove extends Command implements CompletionAwareInterface {
protected function execute(InputInterface $input, OutputInterface $output): int {
$appId = $input->getArgument('app-id');
- // Check if the app is installed
+ // Check if the app is enabled
if (!$this->manager->isInstalled($appId)) {
- $output->writeln($appId . ' is not installed');
+ $output->writeln($appId . ' is not enabled');
return 1;
}
diff --git a/core/Command/Encryption/MigrateKeyStorage.php b/core/Command/Encryption/MigrateKeyStorage.php
index ddd17eaa0b7..c2090d22d1c 100644
--- a/core/Command/Encryption/MigrateKeyStorage.php
+++ b/core/Command/Encryption/MigrateKeyStorage.php
@@ -30,7 +30,7 @@ class MigrateKeyStorage extends Command {
parent::__construct();
}
- protected function configure() {
+ protected function configure(): void {
parent::configure();
$this
->setName('encryption:migrate-key-storage-format')
@@ -50,15 +50,12 @@ class MigrateKeyStorage extends Command {
/**
* Move keys to new key storage root
*
- * @param string $root
- * @param OutputInterface $output
- * @return bool
* @throws \Exception
*/
protected function updateKeys(string $root, OutputInterface $output): bool {
$output->writeln('Start to update the keys:');
- $this->updateSystemKeys($root);
+ $this->updateSystemKeys($root, $output);
$this->updateUsersKeys($root, $output);
$this->config->deleteSystemValue('encryption.key_storage_migrated');
return true;
@@ -67,15 +64,15 @@ class MigrateKeyStorage extends Command {
/**
* Move system key folder
*/
- protected function updateSystemKeys(string $root): void {
+ protected function updateSystemKeys(string $root, OutputInterface $output): void {
if (!$this->rootView->is_dir($root . '/files_encryption')) {
return;
}
- $this->traverseKeys($root . '/files_encryption', null);
+ $this->traverseKeys($root . '/files_encryption', null, $output);
}
- private function traverseKeys(string $folder, ?string $uid) {
+ private function traverseKeys(string $folder, ?string $uid, OutputInterface $output): void {
$listing = $this->rootView->getDirectoryContent($folder);
foreach ($listing as $node) {
@@ -91,6 +88,11 @@ class MigrateKeyStorage extends Command {
$content = $this->rootView->file_get_contents($path);
+ if ($content === false) {
+ $output->writeln("<error>Failed to open path $path</error>");
+ continue;
+ }
+
try {
$this->crypto->decrypt($content);
continue;
@@ -109,14 +111,14 @@ class MigrateKeyStorage extends Command {
}
}
- private function traverseFileKeys(string $folder) {
+ private function traverseFileKeys(string $folder, OutputInterface $output): void {
$listing = $this->rootView->getDirectoryContent($folder);
foreach ($listing as $node) {
if ($node['mimetype'] === 'httpd/unix-directory') {
- $this->traverseFileKeys($folder . '/' . $node['name']);
+ $this->traverseFileKeys($folder . '/' . $node['name'], $output);
} else {
- $endsWith = function ($haystack, $needle) {
+ $endsWith = function (string $haystack, string $needle): bool {
$length = strlen($needle);
if ($length === 0) {
return true;
@@ -133,6 +135,11 @@ class MigrateKeyStorage extends Command {
$content = $this->rootView->file_get_contents($path);
+ if ($content === false) {
+ $output->writeln("<error>Failed to open path $path</error>");
+ continue;
+ }
+
try {
$this->crypto->decrypt($content);
continue;
@@ -154,10 +161,8 @@ class MigrateKeyStorage extends Command {
/**
* setup file system for the given user
- *
- * @param string $uid
*/
- protected function setupUserFS($uid) {
+ protected function setupUserFS(string $uid): void {
\OC_Util::tearDownFS();
\OC_Util::setupFS($uid);
}
@@ -165,11 +170,8 @@ class MigrateKeyStorage extends Command {
/**
* iterate over each user and move the keys to the new storage
- *
- * @param string $root
- * @param OutputInterface $output
*/
- protected function updateUsersKeys(string $root, OutputInterface $output) {
+ protected function updateUsersKeys(string $root, OutputInterface $output): void {
$progress = new ProgressBar($output);
$progress->start();
@@ -181,7 +183,7 @@ class MigrateKeyStorage extends Command {
foreach ($users as $user) {
$progress->advance();
$this->setupUserFS($user);
- $this->updateUserKeys($root, $user);
+ $this->updateUserKeys($root, $user, $output);
}
$offset += $limit;
} while (count($users) >= $limit);
@@ -192,20 +194,18 @@ class MigrateKeyStorage extends Command {
/**
* move user encryption folder to new root folder
*
- * @param string $root
- * @param string $user
* @throws \Exception
*/
- protected function updateUserKeys(string $root, string $user) {
+ protected function updateUserKeys(string $root, string $user, OutputInterface $output): void {
if ($this->userManager->userExists($user)) {
$source = $root . '/' . $user . '/files_encryption/OC_DEFAULT_MODULE';
if ($this->rootView->is_dir($source)) {
- $this->traverseKeys($source, $user);
+ $this->traverseKeys($source, $user, $output);
}
$source = $root . '/' . $user . '/files_encryption/keys';
if ($this->rootView->is_dir($source)) {
- $this->traverseFileKeys($source);
+ $this->traverseFileKeys($source, $output);
}
}
}
diff --git a/core/Controller/OCMController.php b/core/Controller/OCMController.php
index 59529b66e12..f15a4a56779 100644
--- a/core/Controller/OCMController.php
+++ b/core/Controller/OCMController.php
@@ -17,7 +17,7 @@ use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
use OCP\AppFramework\Http\Attribute\PublicPage;
use OCP\AppFramework\Http\DataResponse;
use OCP\Capabilities\ICapability;
-use OCP\IConfig;
+use OCP\IAppConfig;
use OCP\IRequest;
use OCP\Server;
use Psr\Container\ContainerExceptionInterface;
@@ -31,7 +31,7 @@ use Psr\Log\LoggerInterface;
class OCMController extends Controller {
public function __construct(
IRequest $request,
- private IConfig $config,
+ private readonly IAppConfig $appConfig,
private LoggerInterface $logger,
) {
parent::__construct('core', $request);
@@ -54,10 +54,10 @@ class OCMController extends Controller {
public function discovery(): DataResponse {
try {
$cap = Server::get(
- $this->config->getAppValue(
- 'core',
- 'ocm_providers',
- '\OCA\CloudFederationAPI\Capabilities'
+ $this->appConfig->getValueString(
+ 'core', 'ocm_providers',
+ \OCA\CloudFederationAPI\Capabilities::class,
+ lazy: true
)
);
diff --git a/core/Migrations/Version31000Date20240101084401.php b/core/Migrations/Version31000Date20240101084401.php
new file mode 100644
index 00000000000..60792dcac21
--- /dev/null
+++ b/core/Migrations/Version31000Date20240101084401.php
@@ -0,0 +1,135 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OC\Core\Migrations;
+
+use Closure;
+use OCP\DB\ISchemaWrapper;
+use OCP\DB\Types;
+use OCP\Migration\Attributes\AddIndex;
+use OCP\Migration\Attributes\CreateTable;
+use OCP\Migration\Attributes\IndexType;
+use OCP\Migration\IOutput;
+use OCP\Migration\SimpleMigrationStep;
+
+/**
+ * @since 31.0.0
+ */
+#[CreateTable(
+ table: 'sec_signatory',
+ columns: ['id', 'key_id_sum', 'key_id', 'host', 'provider_id', 'account', 'public_key', 'metadata', 'type', 'status', 'creation', 'last_updated'],
+ description: 'new table to store remove public/private key pairs'
+)]
+#[AddIndex(
+ table: 'sec_signatory',
+ type: IndexType::PRIMARY
+)]
+#[AddIndex(
+ table: 'sec_signatory',
+ type: IndexType::UNIQUE,
+ description: 'confirm uniqueness per host, provider and account'
+)]
+#[AddIndex(
+ table: 'sec_signatory',
+ type: IndexType::INDEX,
+ description: 'to search on key and provider'
+)]
+class Version31000Date20240101084401 extends SimpleMigrationStep {
+ public function description(): string {
+ return "creating new table 'sec_signatory' to store remote signatories";
+ }
+
+ public function name(): string {
+ return 'create sec_signatory';
+ }
+
+ /**
+ * @param IOutput $output
+ * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
+ * @param array $options
+ * @return null|ISchemaWrapper
+ */
+ public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
+ /** @var ISchemaWrapper $schema */
+ $schema = $schemaClosure();
+
+ if (!$schema->hasTable('sec_signatory')) {
+ $table = $schema->createTable('sec_signatory');
+ $table->addColumn('id', Types::BIGINT, [
+ 'notnull' => true,
+ 'length' => 64,
+ 'autoincrement' => true,
+ 'unsigned' => true,
+ ]);
+ // key_id_sum will store a hash version of the key_id, more appropriate for search/index
+ $table->addColumn('key_id_sum', Types::STRING, [
+ 'notnull' => true,
+ 'length' => 127,
+ ]);
+ $table->addColumn('key_id', Types::STRING, [
+ 'notnull' => true,
+ 'length' => 512
+ ]);
+ // host/provider_id/account will help generate a unique entry, not based on key_id
+ // this way, a spoofed instance cannot publish a new key_id for same host+provider_id
+ // account will be used only to stored multiple keys for the same provider_id/host
+ $table->addColumn('host', Types::STRING, [
+ 'notnull' => true,
+ 'length' => 512
+ ]);
+ $table->addColumn('provider_id', Types::STRING, [
+ 'notnull' => true,
+ 'length' => 31,
+ ]);
+ $table->addColumn('account', Types::STRING, [
+ 'notnull' => false,
+ 'length' => 127,
+ 'default' => ''
+ ]);
+ $table->addColumn('public_key', Types::TEXT, [
+ 'notnull' => true,
+ 'default' => ''
+ ]);
+ $table->addColumn('metadata', Types::TEXT, [
+ 'notnull' => true,
+ 'default' => '[]'
+ ]);
+ // type+status are informative about the trustability of remote instance and status of the signatory
+ $table->addColumn('type', Types::SMALLINT, [
+ 'notnull' => true,
+ 'length' => 2,
+ 'default' => 9
+ ]);
+ $table->addColumn('status', Types::SMALLINT, [
+ 'notnull' => true,
+ 'length' => 2,
+ 'default' => 0,
+ ]);
+ $table->addColumn('creation', Types::INTEGER, [
+ 'notnull' => false,
+ 'length' => 4,
+ 'default' => 0,
+ 'unsigned' => true,
+ ]);
+ $table->addColumn('last_updated', Types::INTEGER, [
+ 'notnull' => false,
+ 'length' => 4,
+ 'default' => 0,
+ 'unsigned' => true,
+ ]);
+
+ $table->setPrimaryKey(['id'], 'sec_sig_id');
+ $table->addUniqueIndex(['provider_id', 'host', 'account'], 'sec_sig_unic');
+ $table->addIndex(['key_id_sum', 'provider_id'], 'sec_sig_key');
+
+ return $schema;
+ }
+
+ return null;
+ }
+}
diff --git a/core/l10n/eu.js b/core/l10n/eu.js
index 7b45402d40e..c395a742549 100644
--- a/core/l10n/eu.js
+++ b/core/l10n/eu.js
@@ -180,6 +180,7 @@ OC.L10N.register(
"Schedule work & meetings, synced with all your devices." : "Antolatu lana eta bilerak, zure gailu guztiekin sinkronizatuta.",
"Keep your colleagues and friends in one place without leaking their private info." : "Eduki zure lankide eta lagun guztiak leku bakarrean, beren informazioa pribatu mantenduz.",
"Simple email app nicely integrated with Files, Contacts and Calendar." : "Fitxategiak, Kontaktuak eta Egutegiarekin integratutako posta elektronikoko aplikazio soila.",
+ "Chatting, video calls, screen sharing, online meetings and web conferencing – in your browser and with mobile apps." : "Txata, bideo-deiak, pantaila partekatzea, lineako bilerak eta web konferentziak - zure nabigatzailean eta mugikorrerako aplikazioekin.",
"Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Dokumentu, kalkulu-orri eta aurkezpen kolaboratiboak, Collabora Online-en sortuak.",
"Distraction free note taking app." : "Distrakziorik gabeko oharrak hartzeko aplikazioa.",
"Settings menu" : "Ezarpenen menua",
@@ -262,6 +263,7 @@ OC.L10N.register(
"Rename" : "Berrizendatu",
"Collaborative tags" : "Elkarlaneko etiketak",
"No tags found" : "Ez da etiketarik aurkitu",
+ "Clipboard not available, please copy manually" : "Arbela ez dago eskuragarri, mesedez kopiatu eskuz",
"Personal" : "Pertsonala",
"Accounts" : "Kontuak",
"Admin" : "Admin",
diff --git a/core/l10n/eu.json b/core/l10n/eu.json
index c92270e21d8..b55ba0071ba 100644
--- a/core/l10n/eu.json
+++ b/core/l10n/eu.json
@@ -178,6 +178,7 @@
"Schedule work & meetings, synced with all your devices." : "Antolatu lana eta bilerak, zure gailu guztiekin sinkronizatuta.",
"Keep your colleagues and friends in one place without leaking their private info." : "Eduki zure lankide eta lagun guztiak leku bakarrean, beren informazioa pribatu mantenduz.",
"Simple email app nicely integrated with Files, Contacts and Calendar." : "Fitxategiak, Kontaktuak eta Egutegiarekin integratutako posta elektronikoko aplikazio soila.",
+ "Chatting, video calls, screen sharing, online meetings and web conferencing – in your browser and with mobile apps." : "Txata, bideo-deiak, pantaila partekatzea, lineako bilerak eta web konferentziak - zure nabigatzailean eta mugikorrerako aplikazioekin.",
"Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Dokumentu, kalkulu-orri eta aurkezpen kolaboratiboak, Collabora Online-en sortuak.",
"Distraction free note taking app." : "Distrakziorik gabeko oharrak hartzeko aplikazioa.",
"Settings menu" : "Ezarpenen menua",
@@ -260,6 +261,7 @@
"Rename" : "Berrizendatu",
"Collaborative tags" : "Elkarlaneko etiketak",
"No tags found" : "Ez da etiketarik aurkitu",
+ "Clipboard not available, please copy manually" : "Arbela ez dago eskuragarri, mesedez kopiatu eskuz",
"Personal" : "Pertsonala",
"Accounts" : "Kontuak",
"Admin" : "Admin",
diff --git a/core/l10n/gl.js b/core/l10n/gl.js
index da4ad50d9b8..e7b41857461 100644
--- a/core/l10n/gl.js
+++ b/core/l10n/gl.js
@@ -27,7 +27,7 @@ OC.L10N.register(
"Could not complete login" : "Non foi posíbel completar o acceso",
"State token missing" : "Falta o testemuño de estado",
"Your login token is invalid or has expired" : "O seu testemuño de acceso non é válido ou caducou",
- "This community release of Nextcloud is unsupported and push notifications are limited." : "Esta versión da comunidade de Nextcloud non é compatíbel e as notificacións automáticas son limitadas.",
+ "This community release of Nextcloud is unsupported and push notifications are limited." : "Esta versión da comunidade de Nextcloud non é compatíbel e as notificacións emerxentes son limitadas.",
"Login" : "Acceder",
"Unsupported email length (>255)" : "Lonxitude de correo-e non admitida (>255)",
"Password reset is disabled" : "O restabelecemento de contrasinal está desactivado",
@@ -329,7 +329,7 @@ OC.L10N.register(
"Grant access" : "Permitir o acceso",
"Alternative log in using app password" : "Acceso alternativo usando o contrasinal da aplicación",
"Account access" : "Acceso á conta",
- "Currently logged in as %1$s (%2$s)." : "Agora está accedendo como %1$s (%2$s).",
+ "Currently logged in as %1$s (%2$s)." : "Agora está conectado como %1$s (%2$s).",
"You are about to grant %1$s access to your %2$s account." : "Está a piques de concederlle a %1$s permiso para acceder á súa conta %2$s.",
"Account connected" : "Conta conectada",
"Your client should now be connected!" : "O seu cliente xa debe estar conectado!",
diff --git a/core/l10n/gl.json b/core/l10n/gl.json
index 646dae97190..de7e826ed7f 100644
--- a/core/l10n/gl.json
+++ b/core/l10n/gl.json
@@ -25,7 +25,7 @@
"Could not complete login" : "Non foi posíbel completar o acceso",
"State token missing" : "Falta o testemuño de estado",
"Your login token is invalid or has expired" : "O seu testemuño de acceso non é válido ou caducou",
- "This community release of Nextcloud is unsupported and push notifications are limited." : "Esta versión da comunidade de Nextcloud non é compatíbel e as notificacións automáticas son limitadas.",
+ "This community release of Nextcloud is unsupported and push notifications are limited." : "Esta versión da comunidade de Nextcloud non é compatíbel e as notificacións emerxentes son limitadas.",
"Login" : "Acceder",
"Unsupported email length (>255)" : "Lonxitude de correo-e non admitida (>255)",
"Password reset is disabled" : "O restabelecemento de contrasinal está desactivado",
@@ -327,7 +327,7 @@
"Grant access" : "Permitir o acceso",
"Alternative log in using app password" : "Acceso alternativo usando o contrasinal da aplicación",
"Account access" : "Acceso á conta",
- "Currently logged in as %1$s (%2$s)." : "Agora está accedendo como %1$s (%2$s).",
+ "Currently logged in as %1$s (%2$s)." : "Agora está conectado como %1$s (%2$s).",
"You are about to grant %1$s access to your %2$s account." : "Está a piques de concederlle a %1$s permiso para acceder á súa conta %2$s.",
"Account connected" : "Conta conectada",
"Your client should now be connected!" : "O seu cliente xa debe estar conectado!",
diff --git a/cypress/e2e/files_sharing/public-share/view_view-only-no-download.cy.ts b/cypress/e2e/files_sharing/public-share/view_view-only-no-download.cy.ts
index abcb9ccae62..0e2d2edab6c 100644
--- a/cypress/e2e/files_sharing/public-share/view_view-only-no-download.cy.ts
+++ b/cypress/e2e/files_sharing/public-share/view_view-only-no-download.cy.ts
@@ -96,9 +96,5 @@ describe('files_sharing: Public share - View only', { testIsolation: true }, ()
// wait for file list to be ready
getRowForFile('foo.txt')
.should('be.visible')
-
- cy.contains('button', 'New')
- .should('be.visible')
- .and('be.disabled')
})
})
diff --git a/cypress/e2e/files_sharing/public-share/view_view-only.cy.ts b/cypress/e2e/files_sharing/public-share/view_view-only.cy.ts
index 709908f8f6c..511a1caeb09 100644
--- a/cypress/e2e/files_sharing/public-share/view_view-only.cy.ts
+++ b/cypress/e2e/files_sharing/public-share/view_view-only.cy.ts
@@ -78,10 +78,6 @@ describe('files_sharing: Public share - View only', { testIsolation: true }, ()
// wait for file list to be ready
getRowForFile('foo.txt')
.should('be.visible')
-
- cy.contains('button', 'New')
- .should('be.visible')
- .and('be.disabled')
})
it('Only download action is actions available', () => {
diff --git a/dist/files-main.js b/dist/files-main.js
index cad40984af1..4a19ce23d90 100644
--- a/dist/files-main.js
+++ b/dist/files-main.js
@@ -1,2 +1,2 @@
-(()=>{"use strict";var e,s,i,n={45943:(e,s,i)=>{var n=i(21777),a=i(35810),r=i(65899),o=i(85471);const l=(0,r.Ey)();var d=i(63814),m=i(82490),c=i(40173);o.Ay.use(c.Ay);const u=c.Ay.prototype.push;c.Ay.prototype.push=function(e,t,s){return t||s?u.call(this,e,t,s):u.call(this,e).catch((e=>e))};const g=new c.Ay({mode:"history",base:(0,d.Jv)("/apps/files"),linkActiveClass:"active",routes:[{path:"/",redirect:{name:"filelist",params:{view:"files"}}},{path:"/:view/:fileid(\\d+)?",name:"filelist",props:!0}],stringifyQuery(e){const t=m.A.stringify(e).replace(/%2F/gim,"/");return t?"?"+t:""}});class f{constructor(e){(function(e,t,s){(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var s=t.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s})(this,"router",void 0),this.router=e}get name(){return this.router.currentRoute.name}get query(){return this.router.currentRoute.query||{}}get params(){return this.router.currentRoute.params||{}}get _router(){return this.router}goTo(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.router.push({path:e,replace:t})}goToRoute(e,t,s,i){return this.router.push({name:e,query:s,params:t,replace:i})}}function p(e,t,s){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var s=t.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}var h=i(82680),w=i(22378),v=i(61338),A=i(53334);const C={name:"CogIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var b=i(14486);const y=(0,b.A)(C,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon cog-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var x=i(42530),_=i(52439),k=i(27345),T=i(42115);function S(e,t,s){var i,n=s||{},a=n.noTrailing,r=void 0!==a&&a,o=n.noLeading,l=void 0!==o&&o,d=n.debounceMode,m=void 0===d?void 0:d,c=!1,u=0;function g(){i&&clearTimeout(i)}function f(){for(var s=arguments.length,n=new Array(s),a=0;a<s;a++)n[a]=arguments[a];var o=this,d=Date.now()-u;function f(){u=Date.now(),t.apply(o,n)}function p(){i=void 0}c||(l||!m||i||f(),g(),void 0===m&&d>e?l?(u=Date.now(),r||(i=setTimeout(m?p:f,e))):f():!0!==r&&(i=setTimeout(m?p:f,void 0===m?e-d:e)))}return f.cancel=function(e){var t=(e||{}).upcomingOnly,s=void 0!==t&&t;g(),c=!s},f}var L=i(32981),N=i(85168),F=i(65043);const E={name:"ChartPieIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},U=(0,b.A)(E,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon chart-pie-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M11,2V22C5.9,21.5 2,17.2 2,12C2,6.8 5.9,2.5 11,2M13,2V11H22C21.5,6.2 17.8,2.5 13,2M13,13V22C17.7,21.5 21.5,17.8 22,13H13Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var I=i(95101);const P=(0,i(35947).YK)().setApp("files").detectUser().build(),B={name:"NavigationQuota",components:{ChartPie:U,NcAppNavigationItem:_.A,NcProgressBar:I.A},data:()=>({loadingStorageStats:!1,storageStats:(0,L.C)("files","storageStats",null)}),computed:{storageStatsTitle(){const e=(0,a.v7)(this.storageStats?.used,!1,!1),t=(0,a.v7)(this.storageStats?.quota,!1,!1);return this.storageStats?.quota<0?this.t("files","{usedQuotaByte} used",{usedQuotaByte:e}):this.t("files","{used} of {quota} used",{used:e,quota:t})},storageStatsTooltip(){return this.storageStats.relative?this.t("files","{relative}% used",this.storageStats):""}},beforeMount(){setInterval(this.throttleUpdateStorageStats,6e4),(0,v.B1)("files:node:created",this.throttleUpdateStorageStats),(0,v.B1)("files:node:deleted",this.throttleUpdateStorageStats),(0,v.B1)("files:node:moved",this.throttleUpdateStorageStats),(0,v.B1)("files:node:updated",this.throttleUpdateStorageStats)},mounted(){this.storageStats?.quota>0&&0===this.storageStats?.free&&this.showStorageFullWarning()},methods:{debounceUpdateStorageStats:(z={}.atBegin,S(200,(function(e){this.updateStorageStats(e)}),{debounceMode:!1!==(void 0!==z&&z)})),throttleUpdateStorageStats:S(1e3,(function(e){this.updateStorageStats(e)})),async updateStorageStats(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(!this.loadingStorageStats){this.loadingStorageStats=!0;try{const e=await F.Ay.get((0,d.Jv)("/apps/files/api/v1/stats"));if(!e?.data?.data)throw new Error("Invalid storage stats");this.storageStats?.free>0&&0===e.data.data?.free&&e.data.data?.quota>0&&this.showStorageFullWarning(),this.storageStats=e.data.data}catch(s){P.error("Could not refresh storage stats",{error:s}),e&&(0,N.Qg)(t("files","Could not refresh storage stats"))}finally{this.loadingStorageStats=!1}}},showStorageFullWarning(){(0,N.Qg)(this.t("files","Your storage is full, files can not be updated or synced anymore!"))},t:A.Tl}};var z,D=i(85072),O=i.n(D),R=i(97825),j=i.n(R),M=i(77659),V=i.n(M),$=i(55056),W=i.n($),H=i(10540),q=i.n(H),G=i(41113),Y=i.n(G),K=i(84877),Q={};Q.styleTagTransform=Y(),Q.setAttributes=W(),Q.insert=V().bind(null,"head"),Q.domAPI=j(),Q.insertStyleElement=q(),O()(K.A,Q),K.A&&K.A.locals&&K.A.locals;const J=(0,b.A)(B,(function(){var e=this,t=e._self._c;return e.storageStats?t("NcAppNavigationItem",{staticClass:"app-navigation-entry__settings-quota",class:{"app-navigation-entry__settings-quota--not-unlimited":e.storageStats.quota>=0},attrs:{"aria-description":e.t("files","Storage information"),loading:e.loadingStorageStats,name:e.storageStatsTitle,title:e.storageStatsTooltip,"data-cy-files-navigation-settings-quota":""},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),e.debounceUpdateStorageStats.apply(null,arguments)}}},[t("ChartPie",{attrs:{slot:"icon",size:20},slot:"icon"}),e._v(" "),e.storageStats.quota>=0?t("NcProgressBar",{attrs:{slot:"extra","aria-label":e.t("files","Storage quota"),error:e.storageStats.relative>80,value:Math.min(e.storageStats.relative,100)},slot:"extra"}):e._e()],1):e._e()}),[],!1,null,"6ed9379e",null).exports;var X=i(44346),Z=i(14727),ee=i(32073),te=i(31773),se=i(16879);const ie={name:"Setting",props:{el:{type:Function,required:!0}},mounted(){this.$el.appendChild(this.el())}},ne=(0,b.A)(ie,(function(){return(0,this._self._c)("div")}),[],!1,null,null,null).exports,ae=(0,L.C)("files","config",{show_hidden:!1,crop_image_previews:!0,sort_favorites_first:!0,sort_folders_first:!0,grid_view:!1}),re=function(){const e=(0,r.nY)("userconfig",{state:()=>({userConfig:ae}),actions:{onUpdate(e,t){o.Ay.set(this.userConfig,e,t)},async update(e,t){await F.Ay.put((0,d.Jv)("/apps/files/api/v1/config/"+e),{value:t}),(0,v.Ic)("files:config:updated",{key:e,value:t})}}})(...arguments);return e._initialized||((0,v.B1)("files:config:updated",(function(t){let{key:s,value:i}=t;e.onUpdate(s,i)})),e._initialized=!0),e},oe={name:"Settings",components:{Clipboard:te.A,NcAppSettingsDialog:X.N,NcAppSettingsSection:Z.A,NcCheckboxRadioSwitch:ee.A,NcInputField:se.A,Setting:ne},props:{open:{type:Boolean,default:!1}},setup:()=>({userConfigStore:re()}),data:()=>({settings:window.OCA?.Files?.Settings?.settings||[],webdavUrl:(0,d.dC)("dav/files/"+encodeURIComponent((0,n.HW)()?.uid)),webdavDocs:"https://docs.nextcloud.com/server/stable/go.php?to=user-webdav",appPasswordUrl:(0,d.Jv)("/settings/user/security#generate-app-token-section"),webdavUrlCopied:!1,enableGridView:(0,L.C)("core","config",[])["enable_non-accessible_features"]??!0}),computed:{userConfig(){return this.userConfigStore.userConfig}},beforeMount(){this.settings.forEach((e=>e.open()))},beforeDestroy(){this.settings.forEach((e=>e.close()))},methods:{onClose(){this.$emit("close")},setConfig(e,t){this.userConfigStore.update(e,t)},async copyCloudId(){document.querySelector("input#webdav-url-input").select(),navigator.clipboard?(await navigator.clipboard.writeText(this.webdavUrl),this.webdavUrlCopied=!0,(0,N.Te)(t("files","WebDAV URL copied to clipboard")),setTimeout((()=>{this.webdavUrlCopied=!1}),5e3)):(0,N.Qg)(t("files","Clipboard is not available"))},t:A.Tl}};var le=i(66921),de={};de.styleTagTransform=Y(),de.setAttributes=W(),de.insert=V().bind(null,"head"),de.domAPI=j(),de.insertStyleElement=q(),O()(le.A,de),le.A&&le.A.locals&&le.A.locals;const me=(0,b.A)(oe,(function(){var e=this,t=e._self._c;return t("NcAppSettingsDialog",{attrs:{open:e.open,"show-navigation":!0,name:e.t("files","Files settings")},on:{"update:open":e.onClose}},[t("NcAppSettingsSection",{attrs:{id:"settings",name:e.t("files","Files settings")}},[t("NcCheckboxRadioSwitch",{attrs:{"data-cy-files-settings-setting":"sort_favorites_first",checked:e.userConfig.sort_favorites_first},on:{"update:checked":function(t){return e.setConfig("sort_favorites_first",t)}}},[e._v("\n\t\t\t"+e._s(e.t("files","Sort favorites first"))+"\n\t\t")]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{"data-cy-files-settings-setting":"sort_folders_first",checked:e.userConfig.sort_folders_first},on:{"update:checked":function(t){return e.setConfig("sort_folders_first",t)}}},[e._v("\n\t\t\t"+e._s(e.t("files","Sort folders before files"))+"\n\t\t")]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{"data-cy-files-settings-setting":"show_hidden",checked:e.userConfig.show_hidden},on:{"update:checked":function(t){return e.setConfig("show_hidden",t)}}},[e._v("\n\t\t\t"+e._s(e.t("files","Show hidden files"))+"\n\t\t")]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{"data-cy-files-settings-setting":"crop_image_previews",checked:e.userConfig.crop_image_previews},on:{"update:checked":function(t){return e.setConfig("crop_image_previews",t)}}},[e._v("\n\t\t\t"+e._s(e.t("files","Crop image previews"))+"\n\t\t")]),e._v(" "),e.enableGridView?t("NcCheckboxRadioSwitch",{attrs:{"data-cy-files-settings-setting":"grid_view",checked:e.userConfig.grid_view},on:{"update:checked":function(t){return e.setConfig("grid_view",t)}}},[e._v("\n\t\t\t"+e._s(e.t("files","Enable the grid view"))+"\n\t\t")]):e._e(),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{"data-cy-files-settings-setting":"folder_tree",checked:e.userConfig.folder_tree},on:{"update:checked":function(t){return e.setConfig("folder_tree",t)}}},[e._v("\n\t\t\t"+e._s(e.t("files","Enable folder tree"))+"\n\t\t")])],1),e._v(" "),0!==e.settings.length?t("NcAppSettingsSection",{attrs:{id:"more-settings",name:e.t("files","Additional settings")}},[e._l(e.settings,(function(e){return[t("Setting",{key:e.name,attrs:{el:e.el}})]}))],2):e._e(),e._v(" "),t("NcAppSettingsSection",{attrs:{id:"webdav",name:e.t("files","WebDAV")}},[t("NcInputField",{attrs:{id:"webdav-url-input",label:e.t("files","WebDAV URL"),"show-trailing-button":!0,success:e.webdavUrlCopied,"trailing-button-label":e.t("files","Copy to clipboard"),value:e.webdavUrl,readonly:"readonly",type:"url"},on:{focus:function(e){return e.target.select()},"trailing-button-click":e.copyCloudId},scopedSlots:e._u([{key:"trailing-button-icon",fn:function(){return[t("Clipboard",{attrs:{size:20}})]},proxy:!0}])}),e._v(" "),t("em",[t("a",{staticClass:"setting-link",attrs:{href:e.webdavDocs,target:"_blank",rel:"noreferrer noopener"}},[e._v("\n\t\t\t\t"+e._s(e.t("files","Use this address to access your Files via WebDAV"))+" ↗\n\t\t\t")])]),e._v(" "),t("br"),e._v(" "),t("em",[t("a",{staticClass:"setting-link",attrs:{href:e.appPasswordUrl}},[e._v("\n\t\t\t\t"+e._s(e.t("files","If you have enabled 2FA, you must create and use a new app password by clicking here."))+" ↗\n\t\t\t")])])],1)],1)}),[],!1,null,"23881b2c",null).exports;var ce=i(54914),ue=i(6695);function ge(e){const t=(0,a.bh)(),s=(0,o.IJ)(t.views),i=(0,o.IJ)(t.active);function n(e){i.value=e.detail}function r(){s.value=t.views,(0,o.mu)(s)}return(0,o.sV)((()=>{t.addEventListener("update",r),t.addEventListener("updateActive",n),(0,v.B1)("files:navigation:updated",r)})),(0,o.hi)((()=>{t.removeEventListener("update",r),t.removeEventListener("updateActive",n)})),{currentView:i,views:s}}const fe=(0,L.C)("files","viewConfigs",{}),pe=function(){const e=(0,r.nY)("viewconfig",{state:()=>({viewConfig:fe}),getters:{getConfig:e=>t=>e.viewConfig[t]||{},getConfigs:e=>()=>e.viewConfig},actions:{onUpdate(e,t,s){this.viewConfig[e]||o.Ay.set(this.viewConfig,e,{}),o.Ay.set(this.viewConfig[e],t,s)},async update(e,t,s){F.Ay.put((0,d.Jv)("/apps/files/api/v1/views"),{value:s,view:e,key:t}),(0,v.Ic)("files:viewconfig:updated",{view:e,key:t,value:s})},setSortingBy(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"basename",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"files";this.update(t,"sorting_mode",e),this.update(t,"sorting_direction","asc")},toggleSortingDirection(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"files";const t="asc"===(this.getConfig(e)||{sorting_direction:"asc"}).sorting_direction?"desc":"asc";this.update(e,"sorting_direction",t)}}}),t=e(...arguments);return t._initialized||((0,v.B1)("files:viewconfig:updated",(function(e){let{view:s,key:i,value:n}=e;t.onUpdate(s,i,n)})),t._initialized=!0),t},he=(0,o.pM)({name:"FilesNavigationItem",components:{Fragment:ce.F,NcAppNavigationItem:_.A,NcIconSvgWrapper:ue.A},props:{parent:{type:Object,default:()=>({})},level:{type:Number,default:0},views:{type:Object,default:()=>({})}},setup(){const{currentView:e}=ge();return{currentView:e,viewConfigStore:pe()}},computed:{currentViews(){return this.level>=7?Object.values(this.views).reduce(((e,t)=>[...e,...t]),[]).filter((e=>e.params?.dir.startsWith(this.parent.params?.dir))):this.views[this.parent.id]??[]},style(){return 0===this.level||1===this.level||this.level>7?null:{"padding-left":"16px"}}},methods:{hasChildViews(e){return!(this.level>=7)&&this.views[e.id]?.length>0},useExactRouteMatching(e){return this.hasChildViews(e)},generateToNavigation(e){if(e.params){const{dir:t}=e.params;return{name:"filelist",params:{...e.params},query:{dir:t}}}return{name:"filelist",params:{view:e.id}}},isExpanded(e){return"boolean"==typeof this.viewConfigStore.getConfig(e.id)?.expanded?!0===this.viewConfigStore.getConfig(e.id).expanded:!0===e.expanded},async onOpen(e,t){const s=this.isExpanded(t);t.expanded=!s,this.viewConfigStore.update(t.id,"expanded",!s),e&&t.loadChildViews&&await t.loadChildViews(t)},filterView:(e,t)=>Object.fromEntries(Object.entries(e).filter((e=>{let[s,i]=e;return s!==t})))}}),we=(0,b.A)(he,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("Fragment",e._l(e.currentViews,(function(s){return t("NcAppNavigationItem",{key:s.id,staticClass:"files-navigation__item",style:e.style,attrs:{"allow-collapse":"",loading:s.loading,"data-cy-files-navigation-item":s.id,exact:e.useExactRouteMatching(s),icon:s.iconClass,name:s.name,open:e.isExpanded(s),pinned:s.sticky,to:e.generateToNavigation(s)},on:{"update:open":t=>e.onOpen(t,s)},scopedSlots:e._u([s.icon?{key:"icon",fn:function(){return[t("NcIconSvgWrapper",{attrs:{svg:s.icon}})]},proxy:!0}:null],null,!0)},[e._v(" "),s.loadChildViews&&!s.loaded?t("li",{staticStyle:{display:"none"}}):e._e(),e._v(" "),e.hasChildViews(s)?t("FilesNavigationItem",{attrs:{parent:s,level:e.level+1,views:e.filterView(e.views,e.parent.id)}}):e._e()],1)})),1)}),[],!1,null,null,null).exports;var ve=i(59271);class Ae extends a.L3{constructor(){super("files:filename",5),function(e,t,s){(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var s=t.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s}(this,"searchQuery",""),(0,v.B1)("files:navigation:changed",(()=>this.updateQuery("")))}filter(e){const t=this.searchQuery.toLocaleLowerCase().split(" ").filter(Boolean);return e.filter((e=>{const s=e.displayname.toLocaleLowerCase();return t.every((e=>s.includes(e)))}))}updateQuery(e){if((e=(e||"").trim())!==this.searchQuery){this.searchQuery=e,this.filterUpdated();const t=[];""!==e&&t.push({text:e,onclick:()=>{this.updateQuery("")}}),this.updateChips(t),this.dispatchTypedEvent("update:query",new CustomEvent("update:query",{detail:e}))}}}const Ce=(0,r.nY)("filters",{state:()=>({chips:{},filters:[],filtersChanged:!1}),getters:{activeChips:e=>Object.values(e.chips).flat(),sortedFilters:e=>e.filters.sort(((e,t)=>e.order-t.order)),filtersWithUI(){return this.sortedFilters.filter((e=>"mount"in e))}},actions:{addFilter(e){e.addEventListener("update:chips",this.onFilterUpdateChips),e.addEventListener("update:filter",this.onFilterUpdate),this.filters.push(e),P.debug("New file list filter registered",{id:e.id})},removeFilter(e){const t=this.filters.findIndex((t=>{let{id:s}=t;return s===e}));if(t>-1){const[s]=this.filters.splice(t,1);s.removeEventListener("update:chips",this.onFilterUpdateChips),s.removeEventListener("update:filter",this.onFilterUpdate),P.debug("Files list filter unregistered",{id:e})}},onFilterUpdate(){this.filtersChanged=!0},onFilterUpdateChips(e){const t=e.target.id;this.chips={...this.chips,[t]:[...e.detail]},P.debug("File list filter chips updated",{filter:t,chips:e.detail})},init(){(0,v.B1)("files:filter:added",this.addFilter),(0,v.B1)("files:filter:removed",this.removeFilter);for(const e of(0,a.sR)())this.addFilter(e)}}}),be=Intl.Collator([(0,A.Z0)(),(0,A.lO)()],{numeric:!0,usage:"sort"}),ye=(0,o.pM)({name:"Navigation",components:{IconCog:y,FilesNavigationItem:we,NavigationQuota:J,NcAppNavigation:x.A,NcAppNavigationItem:_.A,NcAppNavigationList:k.A,NcAppNavigationSearch:T.N,SettingsModal:me},setup(){const e=Ce(),t=pe(),{currentView:s,views:i}=ge(),{searchQuery:n}=function(){const e=(0,o.KR)(""),t=new Ae;function s(t){"update:query"===t.type&&(e.value=t.detail,t.stopPropagation())}return(0,o.sV)((()=>{t.addEventListener("update:query",s),(0,a.cZ)(t)})),(0,o.hi)((()=>{t.removeEventListener("update:query",s),(0,a.Dw)(t.id)})),(0,ve.o3)(e,(()=>{t.updateQuery(e.value)}),{throttle:800}),{searchQuery:e}}();return{currentView:s,searchQuery:n,t:A.Tl,views:i,filtersStore:e,viewConfigStore:t}},data:()=>({settingsOpened:!1}),computed:{currentViewId(){return this.$route?.params?.view||"files"},viewMap(){return this.views.reduce(((e,t)=>(e[t.parent]=[...e[t.parent]||[],t],e[t.parent].sort(((e,t)=>"number"==typeof e.order||"number"==typeof t.order?(e.order??0)-(t.order??0):be.compare(e.name,t.name))),e)),{})}},watch:{currentViewId(e,t){if(this.currentViewId!==this.currentView?.id){const s=this.views.find((e=>{let{id:t}=e;return t===this.currentViewId}));this.showView(s),P.debug(`Navigation changed from ${t} to ${e}`,{to:s})}}},created(){(0,v.B1)("files:folder-tree:initialized",this.loadExpandedViews),(0,v.B1)("files:folder-tree:expanded",this.loadExpandedViews)},beforeMount(){const e=this.views.find((e=>{let{id:t}=e;return t===this.currentViewId}));this.showView(e),P.debug("Navigation mounted. Showing requested view",{view:e})},methods:{async loadExpandedViews(){const e=this.viewConfigStore.getConfigs(),t=Object.entries(e).filter((e=>{let[t,s]=e;return!0===s.expanded})).map((e=>{let[t,s]=e;return this.$navigation.views.find((e=>e.id===t))})).filter(Boolean).filter((e=>e.loadChildViews&&!e.loaded));for(const e of t)await e.loadChildViews(e)},showView(e){window.OCA?.Files?.Sidebar?.close?.(),this.$navigation.setActive(e),(0,v.Ic)("files:navigation:changed",e)},openSettings(){this.settingsOpened=!0},onSettingsClose(){this.settingsOpened=!1}}});var xe=i(16912),_e={};_e.styleTagTransform=Y(),_e.setAttributes=W(),_e.insert=V().bind(null,"head"),_e.domAPI=j(),_e.insertStyleElement=q(),O()(xe.A,_e),xe.A&&xe.A.locals&&xe.A.locals;const ke=(0,b.A)(ye,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("NcAppNavigation",{staticClass:"files-navigation",attrs:{"data-cy-files-navigation":"","aria-label":e.t("files","Files")},scopedSlots:e._u([{key:"search",fn:function(){return[t("NcAppNavigationSearch",{attrs:{label:e.t("files","Filter filenames…")},model:{value:e.searchQuery,callback:function(t){e.searchQuery=t},expression:"searchQuery"}})]},proxy:!0},{key:"default",fn:function(){return[t("NcAppNavigationList",{staticClass:"files-navigation__list",attrs:{"aria-label":e.t("files","Views")}},[t("FilesNavigationItem",{attrs:{views:e.viewMap}})],1),e._v(" "),t("SettingsModal",{attrs:{open:e.settingsOpened,"data-cy-files-navigation-settings":""},on:{close:e.onSettingsClose}})]},proxy:!0},{key:"footer",fn:function(){return[t("ul",{staticClass:"app-navigation-entry__settings"},[t("NavigationQuota"),e._v(" "),t("NcAppNavigationItem",{attrs:{name:e.t("files","Files settings"),"data-cy-files-navigation-settings-button":""},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.openSettings.apply(null,arguments)}}},[t("IconCog",{attrs:{slot:"icon",size:20},slot:"icon"})],1)],1)]},proxy:!0}])})}),[],!1,null,"008142f0",null).exports;var Te=i(87485),Se=i(43627),Le=i(77905),Ne=i(24351),Fe=i(57578);const Ee={name:"ReloadIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ue=(0,b.A)(Ee,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon reload-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M2 12C2 16.97 6.03 21 11 21C13.39 21 15.68 20.06 17.4 18.4L15.9 16.9C14.63 18.25 12.86 19 11 19C4.76 19 1.64 11.46 6.05 7.05C10.46 2.64 18 5.77 18 12H15L19 16H19.1L23 12H20C20 7.03 15.97 3 11 3C6.03 3 2 7.03 2 12Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var Ie=i(36600);const Pe={name:"FormatListBulletedSquareIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Be=(0,b.A)(Pe,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon format-list-bulleted-square-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M3,4H7V8H3V4M9,5V7H21V5H9M3,10H7V14H3V10M9,11V13H21V11H9M3,16H7V20H3V16M9,17V19H21V17H9"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var ze=i(18195),De=i(24764),Oe=i(18503),Re=i(70995),je=i(28326),Me=i(59892),Ve=i(96078);const $e={name:"AccountPlusIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},We=(0,b.A)($e,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon account-plus-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,He={name:"ViewGridIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},qe=(0,b.A)(He,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon view-grid-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M3,11H11V3H3M3,21H11V13H3M13,21H21V13H13M13,3V11H21V3"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var Ge=i(49981);const Ye=new a.hY({id:"details",displayName:()=>(0,A.Tl)("files","Open details"),iconSvgInline:()=>Ge,enabled:e=>!(0,h.f)()&&1===e.length&&!!e[0]&&!!window?.OCA?.Files?.Sidebar&&((e[0].root?.startsWith("/files/")&&e[0].permissions!==a.aX.NONE)??!1),async exec(e,t,s){try{return window.OCA.Files.Sidebar.setActiveTab("sharing"),await window.OCA.Files.Sidebar.open(e.path),window.OCP.Files.Router.goToRoute(null,{view:t.id,fileid:String(e.fileid)},{...window.OCP.Files.Router.query,dir:s},!0),null}catch(e){return P.error("Error while opening sidebar",{error:e}),!1}},order:-50});let Ke;const Qe=(0,o.KR)(0),Je=new ResizeObserver((e=>{e[0].contentBoxSize?Qe.value=e[0].contentBoxSize[0].inlineSize:Qe.value=e[0].contentRect.width}));function Xe(){const e=document.querySelector("#app-content-vue")??document.body;e!==Ke&&(Ke&&Je.unobserve(Ke),Je.observe(e),Ke=e)}function Ze(){return(0,o.sV)(Xe),Xe(),(0,o.tB)(Qe)}function et(){const e=function(){var e=(0,o.nI)().proxy.$root;if(!e._$route){var t=(0,o.uY)(!0).run((function(){return(0,o.Gc)(Object.assign({},e.$router.currentRoute))}));e._$route=t,e.$router.afterEach((function(e){Object.assign(t,e)}))}return e._$route}();return{directory:(0,o.EW)((()=>String(e.query.dir||"/").replace(/^(.+)\/$/,"$1"))),fileId:(0,o.EW)((()=>{const t=Number.parseInt(e.params.fileid??"0")||null;return Number.isNaN(t)?null:t})),openFile:(0,o.EW)((()=>"openfile"in e.query&&("string"!=typeof e.query.openfile||"false"!==e.query.openfile.toLocaleLowerCase())))}}const tt=(0,a.H4)(),st=async e=>{const t=(0,a.VL)(),s=await tt.stat(`${a.lJ}${e.path}`,{details:!0,data:t});return(0,a.Al)(s.data)};var it=i(71225);const nt=function(){const e=at(...arguments),t=(0,r.nY)("paths",{state:()=>({paths:{}}),getters:{getPath:e=>(t,s)=>{if(e.paths[t])return e.paths[t][s]}},actions:{addPath(e){this.paths[e.service]||o.Ay.set(this.paths,e.service,{}),o.Ay.set(this.paths[e.service],e.path,e.source)},deletePath(e,t){this.paths[e]&&o.Ay.delete(this.paths[e],t)},onCreatedNode(e){const t=(0,a.bh)()?.active?.id||"files";e.fileid?(e.type===a.pt.Folder&&this.addPath({service:t,path:e.path,source:e.source}),this.addNodeToParentChildren(e)):P.error("Node has no fileid",{node:e})},onDeletedNode(e){const t=(0,a.bh)()?.active?.id||"files";e.type===a.pt.Folder&&this.deletePath(t,e.path),this.deleteNodeFromParentChildren(e)},onMovedNode(e){let{node:t,oldSource:s}=e;const i=(0,a.bh)()?.active?.id||"files";if(t.type===a.pt.Folder){const e=Object.entries(this.paths[i]).find((e=>{let[,t]=e;return t===s}));e?.[0]&&this.deletePath(i,e[0]),this.addPath({service:i,path:t.path,source:t.source})}const n=new a.ZH({source:s,owner:t.owner,mime:t.mime});this.deleteNodeFromParentChildren(n),this.addNodeToParentChildren(t)},deleteNodeFromParentChildren(t){const s=(0,a.bh)()?.active?.id||"files",i=(0,it.pD)(t.source),n="/"===t.dirname?e.getRoot(s):e.getNode(i);if(n){const e=new Set(n._children??[]);return e.delete(t.source),o.Ay.set(n,"_children",[...e.values()]),void P.debug("Children updated",{parent:n,node:t,children:n._children})}P.debug("Parent path does not exists, skipping children update",{node:t})},addNodeToParentChildren(t){const s=(0,a.bh)()?.active?.id||"files",i=(0,it.pD)(t.source),n="/"===t.dirname?e.getRoot(s):e.getNode(i);if(n){const e=new Set(n._children??[]);return e.add(t.source),o.Ay.set(n,"_children",[...e.values()]),void P.debug("Children updated",{parent:n,node:t,children:n._children})}P.debug("Parent path does not exists, skipping children update",{node:t})}}})(...arguments);return t._initialized||((0,v.B1)("files:node:created",t.onCreatedNode),(0,v.B1)("files:node:deleted",t.onDeletedNode),(0,v.B1)("files:node:moved",t.onMovedNode),t._initialized=!0),t},at=function(){const e=(0,r.nY)("files",{state:()=>({files:{},roots:{}}),getters:{getNode:e=>t=>e.files[t],getNodes:e=>t=>t.map((t=>e.files[t])).filter(Boolean),getNodesById:e=>t=>Object.values(e.files).filter((e=>e.fileid===t)),getRoot:e=>t=>e.roots[t]},actions:{getNodesByPath(e,t){const s=nt();let i;if(t&&"/"!==t){const n=s.getPath(e,t);n&&(i=this.getNode(n))}else i=this.getRoot(e);return(i?._children??[]).map((e=>this.getNode(e))).filter(Boolean)},updateNodes(e){const t=e.reduce(((e,t)=>t.fileid?(e[t.source]=t,e):(P.error("Trying to update/set a node without fileid",{node:t}),e)),{});o.Ay.set(this,"files",{...this.files,...t})},deleteNodes(e){e.forEach((e=>{e.source&&o.Ay.delete(this.files,e.source)}))},setRoot(e){let{service:t,root:s}=e;o.Ay.set(this.roots,t,s)},onDeletedNode(e){this.deleteNodes([e])},onCreatedNode(e){this.updateNodes([e])},onMovedNode(e){let{node:t,oldSource:s}=e;t.fileid?(o.Ay.delete(this.files,s),this.updateNodes([t])):P.error("Trying to update/set a node without fileid",{node:t})},async onUpdatedNode(e){if(!e.fileid)return void P.error("Trying to update/set a node without fileid",{node:e});const t=this.getNodesById(e.fileid);if(t.length>1)return await Promise.all(t.map(st)).then(this.updateNodes),void P.debug(t.length+" nodes updated in store",{fileid:e.fileid});e.source!==t[0].source?st(e).then((e=>this.updateNodes([e]))):this.updateNodes([e])}}})(...arguments);return e._initialized||((0,v.B1)("files:node:created",e.onCreatedNode),(0,v.B1)("files:node:deleted",e.onDeletedNode),(0,v.B1)("files:node:updated",e.onUpdatedNode),(0,v.B1)("files:node:moved",e.onMovedNode),e._initialized=!0),e},rt=(0,r.nY)("selection",{state:()=>({selected:[],lastSelection:[],lastSelectedIndex:null}),actions:{set(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];o.Ay.set(this,"selected",[...new Set(e)])},setLastIndex(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;o.Ay.set(this,"lastSelection",e?this.selected:[]),o.Ay.set(this,"lastSelectedIndex",e)},reset(){o.Ay.set(this,"selected",[]),o.Ay.set(this,"lastSelection",[]),o.Ay.set(this,"lastSelectedIndex",null)}}});let ot;const lt=function(){return ot=(0,Ne.g)(),(0,r.nY)("uploader",{state:()=>({queue:ot.queue})})(...arguments)};var dt=i(65714),mt=i(93191);class ct extends File{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];super([],e,{type:"httpd/unix-directory"}),function(e,t,s){(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var s=t.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s}(this,"_contents",void 0),this._contents=t}set contents(e){this._contents=e}get contents(){return this._contents}get size(){return this._computeDirectorySize(this)}get lastModified(){return 0===this._contents.length?Date.now():this._computeDirectoryMtime(this)}_computeDirectoryMtime(e){return e.contents.reduce(((e,t)=>t.lastModified>e?t.lastModified:e),0)}_computeDirectorySize(e){return e.contents.reduce(((e,t)=>e+t.size),0)}}const ut=async e=>{if(e.isFile)return new Promise(((t,s)=>{e.file(t,s)}));P.debug("Handling recursive file tree",{entry:e.name});const t=e,s=await gt(t),i=(await Promise.all(s.map(ut))).flat();return new ct(t.name,i)},gt=e=>{const t=e.createReader();return new Promise(((e,s)=>{const i=[],n=()=>{t.readEntries((t=>{t.length?(i.push(...t),n()):e(i)}),(e=>{s(e)}))};n()}))},ft=async e=>{const t=(0,a.H4)();if(!await t.exists(e)){P.debug("Directory does not exist, creating it",{absolutePath:e}),await t.createDirectory(e,{recursive:!0});const s=await t.stat(e,{details:!0,data:(0,a.VL)()});(0,v.Ic)("files:node:created",(0,a.Al)(s.data))}},pt=async(e,t,s)=>{try{const i=e.filter((e=>s.find((t=>t.basename===(e instanceof File?e.name:e.basename))))).filter(Boolean),n=e.filter((e=>!i.includes(e))),{selected:a,renamed:r}=await(0,Ne.o)(t.path,i,s);return P.debug("Conflict resolution",{uploads:n,selected:a,renamed:r}),0===a.length&&0===r.length?((0,N.cf)((0,A.Tl)("files","Conflicts resolution skipped")),P.info("User skipped the conflict resolution"),[]):[...n,...a,...r]}catch(e){console.error(e),(0,N.Qg)((0,A.Tl)("files","Upload cancelled")),P.error("User cancelled the upload")}return[]};var ht=i(36882),wt=i(39285),vt=i(49264);const At=(0,L.C)("files_sharing","sharePermissions",a.aX.NONE);let Ct;const bt=()=>(Ct||(Ct=new vt.A({concurrency:5})),Ct);var yt;!function(e){e.MOVE="Move",e.COPY="Copy",e.MOVE_OR_COPY="move-or-copy"}(yt||(yt={}));const xt=e=>{const t=e.reduce(((e,t)=>Math.min(e,t.permissions)),a.aX.ALL);return Boolean(t&a.aX.DELETE)},_t=e=>!!(e=>e.every((e=>!JSON.parse(e.attributes?.["share-attributes"]??"[]").some((e=>"permissions"===e.scope&&!1===e.value&&"download"===e.key)))))(e)&&!e.some((e=>e.permissions===a.aX.NONE))&&(!(0,h.f)()||Boolean(At&a.aX.CREATE));var kt=i(36117);const Tt=e=>(0,a.Al)(e),St=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/";e=(0,Se.join)(a.lJ,e);const t=new AbortController,s=(0,a.VL)();return new kt.CancelablePromise((async(i,n,a)=>{a((()=>t.abort()));try{const n=await tt.getDirectoryContents(e,{details:!0,data:s,includeSelf:!0,signal:t.signal}),a=n.data[0],r=n.data.slice(1);if(a.filename!==e&&`${a.filename}/`!==e)throw P.debug(`Exepected "${e}" but got filename "${a.filename}" instead.`),new Error("Root node does not match requested path");i({folder:Tt(a),contents:r.map((e=>{try{return Tt(e)}catch(t){return P.error(`Invalid node detected '${e.basename}'`,{error:t}),null}})).filter(Boolean)})}catch(e){n(e)}}))},Lt=e=>xt(e)?_t(e)?yt.MOVE_OR_COPY:yt.MOVE:yt.COPY,Nt=async function(e,t,s){let i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!t)return;if(t.type!==a.pt.Folder)throw new Error((0,A.Tl)("files","Destination is not a folder"));if(s===yt.MOVE&&e.dirname===t.path)throw new Error((0,A.Tl)("files","This file/folder is already in that directory"));if(`${t.path}/`.startsWith(`${e.path}/`))throw new Error((0,A.Tl)("files","You cannot move a file/folder onto itself or into a subfolder of itself"));o.Ay.set(e,"status",a.zI.LOADING);const n=function(e,t,s){const i=e===yt.MOVE?(0,A.Tl)("files",'Moving "{source}" to "{destination}" …',{source:t,destination:s}):(0,A.Tl)("files",'Copying "{source}" to "{destination}" …',{source:t,destination:s});let n;return n=(0,N.cf)(`<span class="icon icon-loading-small toast-loading-icon"></span> ${i}`,{isHTML:!0,timeout:N.DH,onRemove:()=>{n?.hideToast(),n=void 0}}),()=>n&&n.hideToast()}(s,e.basename,t.path),r=bt();return await r.add((async()=>{const r=e=>1===e?(0,A.Tl)("files","(copy)"):(0,A.Tl)("files","(copy %n)",void 0,e);try{const n=(0,a.H4)(),o=(0,Se.join)(a.lJ,e.path),l=(0,Se.join)(a.lJ,t.path);if(s===yt.COPY){let s=e.basename;if(!i){const t=await n.getDirectoryContents(l);s=(0,a.E6)(e.basename,t.map((e=>e.basename)),{suffix:r,ignoreFileExtension:e.type===a.pt.Folder})}if(await n.copyFile(o,(0,Se.join)(l,s)),e.dirname===t.path){const{data:e}=await n.stat((0,Se.join)(l,s),{details:!0,data:(0,a.VL)()});(0,v.Ic)("files:node:created",(0,a.Al)(e))}}else{if(!i){const s=await St(t.path);if((0,Ne.h)([e],s.contents))try{const{selected:i,renamed:n}=await(0,Ne.o)(t.path,[e],s.contents);if(!i.length&&!n.length)return}catch(e){return void(0,N.Qg)((0,A.Tl)("files","Move cancelled"))}}await n.moveFile(o,(0,Se.join)(l,e.basename)),(0,v.Ic)("files:node:deleted",e)}}catch(e){if((0,F.F0)(e)){if(412===e.response?.status)throw new Error((0,A.Tl)("files","A file or folder with that name already exists in this folder"));if(423===e.response?.status)throw new Error((0,A.Tl)("files","The files are locked"));if(404===e.response?.status)throw new Error((0,A.Tl)("files","The file does not exist anymore"));if(e.message)throw new Error(e.message)}throw P.debug(e),new Error}finally{o.Ay.set(e,"status",""),n()}}))};async function Ft(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"/",s=arguments.length>2?arguments[2]:void 0;const{resolve:i,reject:n,promise:r}=Promise.withResolvers(),o=s.map((e=>e.fileid)).filter(Boolean);return(0,N.a1)((0,A.Tl)("files","Choose destination")).allowDirectories(!0).setFilter((e=>!o.includes(e.fileid))).setMimeTypeFilter([]).setMultiSelect(!1).startAt(t).setButtonFactory(((t,n)=>{const r=[],o=(0,Se.basename)(n),l=s.map((e=>e.dirname)),d=s.map((e=>e.path));return e!==yt.COPY&&e!==yt.MOVE_OR_COPY||r.push({label:o?(0,A.Tl)("files","Copy to {target}",{target:o},void 0,{escape:!1,sanitize:!1}):(0,A.Tl)("files","Copy"),type:"primary",icon:ht,disabled:t.some((e=>!(e.permissions&a.aX.CREATE))),async callback(e){i({destination:e[0],action:yt.COPY})}}),l.includes(n)||d.includes(n)||e!==yt.MOVE&&e!==yt.MOVE_OR_COPY||r.push({label:o?(0,A.Tl)("files","Move to {target}",{target:o},void 0,{escape:!1,sanitize:!1}):(0,A.Tl)("files","Move"),type:e===yt.MOVE?"primary":"secondary",icon:wt,async callback(e){i({destination:e[0],action:yt.MOVE})}}),r})).build().pick().catch((e=>{P.debug(e),e instanceof N.vT?i(!1):n(new Error((0,A.Tl)("files","Move or copy operation failed")))})),r}new a.hY({id:"move-copy",displayName(e){switch(Lt(e)){case yt.MOVE:return(0,A.Tl)("files","Move");case yt.COPY:return(0,A.Tl)("files","Copy");case yt.MOVE_OR_COPY:return(0,A.Tl)("files","Move or copy")}},iconSvgInline:()=>wt,enabled:(e,t)=>"public-file-share"!==t.id&&!!e.every((e=>e.root?.startsWith("/files/")))&&e.length>0&&(xt(e)||_t(e)),async exec(e,t,s){const i=Lt([e]);let n;try{n=await Ft(i,s,[e])}catch(e){return P.error(e),!1}if(!1===n)return(0,N.cf)((0,A.Tl)("files",'Cancelled move or copy of "{filename}".',{filename:e.displayname})),null;try{return await Nt(e,n.destination,n.action),!0}catch(e){return!!(e instanceof Error&&e.message)&&((0,N.Qg)(e.message),null)}},async execBatch(e,t,s){const i=Lt(e),n=await Ft(i,s,e);if(!1===n)return(0,N.cf)(1===e.length?(0,A.Tl)("files",'Cancelled move or copy of "{filename}".',{filename:e[0].displayname}):(0,A.Tl)("files","Cancelled move or copy operation")),e.map((()=>null));const a=e.map((async e=>{try{return await Nt(e,n.destination,n.action),!0}catch(t){return P.error(`Failed to ${n.action} node`,{node:e,error:t}),!1}}));return await Promise.all(a)},order:15});const Et=async e=>{const t=e.filter((e=>"file"===e.kind||(P.debug("Skipping dropped item",{kind:e.kind,type:e.type}),!1))).map((e=>e?.getAsEntry?.()??e?.webkitGetAsEntry?.()??e));let s=!1;const i=new ct("root");for(const e of t)if(e instanceof DataTransferItem){P.warn("Could not get FilesystemEntry of item, falling back to file");const t=e.getAsFile();if(null===t){P.warn("Could not process DataTransferItem",{type:e.type,kind:e.kind}),(0,N.Qg)((0,A.Tl)("files","One of the dropped files could not be processed"));continue}if("httpd/unix-directory"===t.type||!t.type){s||(P.warn("Browser does not support Filesystem API. Directories will not be uploaded"),(0,N.I9)((0,A.Tl)("files","Your browser does not support the Filesystem API. Directories will not be uploaded")),s=!0);continue}i.contents.push(t)}else try{i.contents.push(await ut(e))}catch(e){P.error("Error while traversing file tree",{error:e})}return i},Ut=async(e,t,s)=>{const i=(0,Ne.g)();if(await(0,Ne.h)(e.contents,s)&&(e.contents=await pt(e.contents,t,s)),0===e.contents.length)return P.info("No files to upload",{root:e}),(0,N.cf)((0,A.Tl)("files","No files to upload")),[];P.debug(`Uploading files to ${t.path}`,{root:e,contents:e.contents});const n=[],r=async(e,s)=>{for(const o of e.contents){const e=(0,Se.join)(s,o.name);if(o instanceof ct){const s=(0,it.HS)(a.lJ,t.path,e);try{console.debug("Processing directory",{relativePath:e}),await ft(s),await r(o,e)}catch(e){(0,N.Qg)((0,A.Tl)("files","Unable to create the directory {directory}",{directory:o.name})),P.error("",{error:e,absolutePath:s,directory:o})}}else P.debug("Uploading file to "+(0,Se.join)(t.path,e),{file:o}),n.push(i.upload(e,o,t.source))}};i.pause(),await r(e,"/"),i.start();const o=(await Promise.allSettled(n)).filter((e=>"rejected"===e.status));return o.length>0?(P.error("Error while uploading files",{errors:o}),(0,N.Qg)((0,A.Tl)("files","Some files could not be uploaded")),[]):(P.debug("Files uploaded successfully"),(0,N.Te)((0,A.Tl)("files","Files uploaded successfully")),Promise.all(n))},It=async function(e,t,s){let i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const n=[];if(await(0,Ne.h)(e,s)&&(e=await pt(e,t,s)),0===e.length)return P.info("No files to process",{nodes:e}),void(0,N.cf)((0,A.Tl)("files","No files to process"));for(const s of e)o.Ay.set(s,"status",a.zI.LOADING),n.push(Nt(s,t,i?yt.COPY:yt.MOVE,!0));const r=await Promise.allSettled(n);e.forEach((e=>o.Ay.set(e,"status",void 0)));const l=r.filter((e=>"rejected"===e.status));if(l.length>0)return P.error("Error while copying or moving files",{errors:l}),void(0,N.Qg)(i?(0,A.Tl)("files","Some files could not be copied"):(0,A.Tl)("files","Some files could not be moved"));P.debug("Files copy/move successful"),(0,N.Te)(i?(0,A.Tl)("files","Files copied successfully"):(0,A.Tl)("files","Files moved successfully"))},Pt=(0,r.nY)("dragging",{state:()=>({dragging:[]}),actions:{set(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];o.Ay.set(this,"dragging",e)},reset(){o.Ay.set(this,"dragging",[])}}}),Bt=(0,o.pM)({name:"BreadCrumbs",components:{NcBreadcrumbs:mt.N,NcBreadcrumb:dt.N,NcIconSvgWrapper:ue.A},props:{path:{type:String,default:"/"}},setup(){const e=Pt(),t=at(),s=nt(),i=rt(),n=lt(),a=Ze(),{currentView:r,views:o}=ge();return{draggingStore:e,filesStore:t,pathsStore:s,selectionStore:i,uploaderStore:n,currentView:r,fileListWidth:a,views:o}},computed:{dirs(){var e;return["/",...this.path.split("/").filter(Boolean).map((e="/",t=>e+=`${t}/`)).map((e=>e.replace(/^(.+)\/$/,"$1")))]},sections(){return this.dirs.map(((e,t)=>{const s=this.getFileSourceFromPath(e),i=s?this.getNodeFromSource(s):void 0;return{dir:e,exact:!0,name:this.getDirDisplayName(e),to:this.getTo(e,i),disableDrop:t===this.dirs.length-1}}))},isUploadInProgress(){return 0!==this.uploaderStore.queue.length},wrapUploadProgressBar(){return this.isUploadInProgress&&this.fileListWidth<512},viewIcon(){return this.currentView?.icon??'<svg xmlns="http://www.w3.org/2000/svg" id="mdi-home" viewBox="0 0 24 24"><path d="M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z" /></svg>'},selectedFiles(){return this.selectionStore.selected},draggingFiles(){return this.draggingStore.dragging}},methods:{getNodeFromSource(e){return this.filesStore.getNode(e)},getFileSourceFromPath(e){return(this.currentView&&this.pathsStore.getPath(this.currentView.id,e))??null},getDirDisplayName(e){if("/"===e)return this.$navigation?.active?.name||(0,A.Tl)("files","Home");const t=this.getFileSourceFromPath(e),s=t?this.getNodeFromSource(t):void 0;return s?.displayname||(0,Se.basename)(e)},getTo(e,t){if("/"===e)return{...this.$route,params:{view:this.currentView?.id},query:{}};if(void 0===t){const t=this.views.find((t=>t.params?.dir===e));return{...this.$route,params:{fileid:t?.params?.fileid??""},query:{dir:e}}}return{...this.$route,params:{fileid:String(t.fileid)},query:{dir:t.path}}},onClick(e){e?.query?.dir===this.$route.query.dir&&this.$emit("reload")},onDragOver(e,t){e.dataTransfer&&(t!==this.dirs[this.dirs.length-1]?e.ctrlKey?e.dataTransfer.dropEffect="copy":e.dataTransfer.dropEffect="move":e.dataTransfer.dropEffect="none")},async onDrop(e,t){if(!this.draggingFiles&&!e.dataTransfer?.items?.length)return;e.preventDefault();const s=this.draggingFiles,i=[...e.dataTransfer?.items||[]],n=await Et(i),r=await(this.currentView?.getContents(t)),o=r?.folder;if(!o)return void(0,N.Qg)(this.t("files","Target folder does not exist any more"));const l=!!(o.permissions&a.aX.CREATE),d=e.ctrlKey;if(!l||0!==e.button)return;if(P.debug("Dropped",{event:e,folder:o,selection:s,fileTree:n}),n.contents.length>0)return void await Ut(n,o,r.contents);const m=s.map((e=>this.filesStore.getNode(e)));await It(m,o,r.contents,d),s.some((e=>this.selectedFiles.includes(e)))&&(P.debug("Dropped selection, resetting select store..."),this.selectionStore.reset())},titleForSection(e,t){return t?.to?.query?.dir===this.$route.query.dir?(0,A.Tl)("files","Reload current directory"):0===e?(0,A.Tl)("files",'Go to the "{dir}" directory',t):null},ariaForSection(e){return e?.to?.query?.dir===this.$route.query.dir?(0,A.Tl)("files","Reload current directory"):null},t:A.Tl}});var zt=i(18407),Dt={};Dt.styleTagTransform=Y(),Dt.setAttributes=W(),Dt.insert=V().bind(null,"head"),Dt.domAPI=j(),Dt.insertStyleElement=q(),O()(zt.A,Dt),zt.A&&zt.A.locals&&zt.A.locals;const Ot=(0,b.A)(Bt,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("NcBreadcrumbs",{staticClass:"files-list__breadcrumbs",class:{"files-list__breadcrumbs--with-progress":e.wrapUploadProgressBar},attrs:{"data-cy-files-content-breadcrumbs":"","aria-label":e.t("files","Current directory path")},scopedSlots:e._u([{key:"actions",fn:function(){return[e._t("actions")]},proxy:!0}],null,!0)},e._l(e.sections,(function(s,i){return t("NcBreadcrumb",e._b({key:s.dir,attrs:{dir:"auto",to:s.to,"force-icon-text":0===i&&e.fileListWidth>=486,title:e.titleForSection(i,s),"aria-description":e.ariaForSection(s)},on:{drop:function(t){return e.onDrop(t,s.dir)}},nativeOn:{click:function(t){return e.onClick(s.to)},dragover:function(t){return e.onDragOver(t,s.dir)}},scopedSlots:e._u([0===i?{key:"icon",fn:function(){return[t("NcIconSvgWrapper",{attrs:{size:20,svg:e.viewIcon}})]},proxy:!0}:null],null,!0)},"NcBreadcrumb",s,!1))})),1)}),[],!1,null,"61601fd4",null).exports,Rt=e=>{const t=e.filter((e=>e.type===a.pt.File)).length,s=e.filter((e=>e.type===a.pt.Folder)).length;return 0===t?(0,A.zw)("files","{folderCount} folder","{folderCount} folders",s,{folderCount:s}):0===s?(0,A.zw)("files","{fileCount} file","{fileCount} files",t,{fileCount:t}):1===t?(0,A.zw)("files","1 file and {folderCount} folder","1 file and {folderCount} folders",s,{folderCount:s}):1===s?(0,A.zw)("files","{fileCount} file and 1 folder","{fileCount} files and 1 folder",t,{fileCount:t}):(0,A.Tl)("files","{fileCount} files and {folderCount} folders",{fileCount:t,folderCount:s})};var jt=i(19231);const Mt=(0,r.nY)("actionsmenu",{state:()=>({opened:null})});var Vt=i(65659);let $t=!1;const Wt=function(){const e=(0,r.nY)("renaming",{state:()=>({renamingNode:void 0,newName:""}),actions:{async rename(){if(void 0===this.renamingNode)throw new Error("No node is currently being renamed");const e=this.newName.trim?.()||"",t=this.renamingNode.basename,s=this.renamingNode.encodedSource,i=(0,Se.extname)(t),n=(0,Se.extname)(e);if(i!==n){const e=await((e,t)=>{if($t)return Promise.resolve(!1);let s;return $t=!0,s=!e&&t?(0,A.t)("files",'Adding the file extension "{new}" may render the file unreadable.',{new:t}):t?(0,A.t)("files",'Changing the file extension from "{old}" to "{new}" may render the file unreadable.',{old:e,new:t}):(0,A.t)("files",'Removing the file extension "{old}" may render the file unreadable.',{old:e}),new Promise((i=>{const n=(new N.ik).setName((0,A.t)("files","Change file extension")).setText(s).setButtons([{label:(0,A.t)("files","Keep {oldextension}",{oldextension:e}),icon:'<svg xmlns="http://www.w3.org/2000/svg" id="mdi-cancel" viewBox="0 0 24 24"><path d="M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M12 4C10.1 4 8.4 4.6 7.1 5.7L18.3 16.9C19.3 15.5 20 13.8 20 12C20 7.6 16.4 4 12 4M16.9 18.3L5.7 7.1C4.6 8.4 4 10.1 4 12C4 16.4 7.6 20 12 20C13.9 20 15.6 19.4 16.9 18.3Z" /></svg>',type:"secondary",callback:()=>{$t=!1,i(!1)}},{label:t.length?(0,A.t)("files","Use {newextension}",{newextension:t}):(0,A.t)("files","Remove extension"),icon:Vt,type:"primary",callback:()=>{$t=!1,i(!0)}}]).build();n.show().then((()=>{n.hide()}))}))})(i,n);if(!e)return!1}if(t===e)return!1;const r=this.renamingNode;o.Ay.set(r,"status",a.zI.LOADING);try{return this.renamingNode.rename(e),P.debug("Moving file to",{destination:this.renamingNode.encodedSource,oldEncodedSource:s}),await(0,F.Ay)({method:"MOVE",url:s,headers:{Destination:this.renamingNode.encodedSource,Overwrite:"F"}}),(0,v.Ic)("files:node:updated",this.renamingNode),(0,v.Ic)("files:node:renamed",this.renamingNode),(0,v.Ic)("files:node:moved",{node:this.renamingNode,oldSource:`${(0,Se.dirname)(this.renamingNode.source)}/${t}`}),this.$reset(),!0}catch(s){if(P.error("Error while renaming file",{error:s}),this.renamingNode.rename(t),(0,F.F0)(s)){if(404===s?.response?.status)throw new Error((0,A.t)("files",'Could not rename "{oldName}", it does not exist any more',{oldName:t}));if(412===s?.response?.status)throw new Error((0,A.t)("files",'The name "{newName}" is already used in the folder "{dir}". Please choose a different name.',{newName:e,dir:(0,Se.basename)(this.renamingNode.dirname)}))}throw new Error((0,A.t)("files",'Could not rename "{oldName}"',{oldName:t}))}finally{o.Ay.set(r,"status",void 0)}}}})(...arguments);return e._initialized||((0,v.B1)("files:node:rename",(function(t){e.renamingNode=t,e.newName=t.basename})),e._initialized=!0),e};var Ht=i(55042);const qt={name:"FileMultipleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Gt=(0,b.A)(qt,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon file-multiple-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M15,7H20.5L15,1.5V7M8,0H16L22,6V18A2,2 0 0,1 20,20H8C6.89,20 6,19.1 6,18V2A2,2 0 0,1 8,0M4,4V22H20V24H4A2,2 0 0,1 2,22V4H4Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var Yt=i(25866);const Kt=o.Ay.extend({name:"DragAndDropPreview",components:{FileMultipleIcon:Gt,FolderIcon:Yt.A},data:()=>({nodes:[]}),computed:{isSingleNode(){return 1===this.nodes.length},isSingleFolder(){return this.isSingleNode&&this.nodes[0].type===a.pt.Folder},name(){return this.size?`${this.summary} – ${this.size}`:this.summary},size(){const e=this.nodes.reduce(((e,t)=>e+t.size||0),0),t=parseInt(e,10)||0;return"number"!=typeof t||t<0?null:(0,a.v7)(t,!0)},summary(){if(this.isSingleNode){const e=this.nodes[0];return e.attributes?.displayname||e.basename}return Rt(this.nodes)}},methods:{update(e){this.nodes=e,this.$refs.previewImg.replaceChildren(),e.slice(0,3).forEach((e=>{const t=document.querySelector(`[data-cy-files-list-row-fileid="${e.fileid}"] .files-list__row-icon img`);t&&this.$refs.previewImg.appendChild(t.parentNode.cloneNode(!0))})),this.$nextTick((()=>{this.$emit("loaded",this.$el)}))}}}),Qt=Kt;var Jt=i(20768),Xt={};Xt.styleTagTransform=Y(),Xt.setAttributes=W(),Xt.insert=V().bind(null,"head"),Xt.domAPI=j(),Xt.insertStyleElement=q(),O()(Jt.A,Xt),Jt.A&&Jt.A.locals&&Jt.A.locals;const Zt=(0,b.A)(Qt,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("div",{staticClass:"files-list-drag-image"},[t("span",{staticClass:"files-list-drag-image__icon"},[t("span",{ref:"previewImg"}),e._v(" "),e.isSingleFolder?t("FolderIcon"):t("FileMultipleIcon")],1),e._v(" "),t("span",{staticClass:"files-list-drag-image__name"},[e._v(e._s(e.name))])])}),[],!1,null,null,null).exports,es=o.Ay.extend(Zt);let ts;o.Ay.directive("onClickOutside",Ht.z0);const ss=(0,a.qK)(),is=(0,o.pM)({props:{source:{type:[a.vd,a.ZH,a.bP],required:!0},nodes:{type:Array,required:!0},filesListWidth:{type:Number,default:0},isMtimeAvailable:{type:Boolean,default:!1},compact:{type:Boolean,default:!1}},provide(){return{defaultFileAction:(0,o.EW)((()=>this.defaultFileAction)),enabledFileActions:(0,o.EW)((()=>this.enabledFileActions))}},data:()=>({loading:"",dragover:!1,gridMode:!1}),computed:{fileid(){return this.source.fileid??0},uniqueId(){return function(e){let t=0;for(let s=0;s<e.length;s++)t=(t<<5)-t+e.charCodeAt(s)|0;return t>>>0}(this.source.source)},isLoading(){return this.source.status===a.zI.LOADING||""!==this.loading},displayName(){return this.source.displayname||this.source.basename},basename(){return""===this.extension?this.displayName:this.displayName.slice(0,0-this.extension.length)},extension(){return this.source.type===a.pt.Folder?"":(0,Se.extname)(this.displayName)},draggingFiles(){return this.draggingStore.dragging},selectedFiles(){return this.selectionStore.selected},isSelected(){return this.selectedFiles.includes(this.source.source)},isRenaming(){return this.renamingStore.renamingNode===this.source},isRenamingSmallScreen(){return this.isRenaming&&this.filesListWidth<512},isActive(){return String(this.fileid)===String(this.currentFileId)},isFailedSource(){return this.source.status===a.zI.FAILED},canDrag(){if(this.isRenaming)return!1;const e=e=>!!(e?.permissions&a.aX.UPDATE);return this.selectedFiles.length>0?this.selectedFiles.map((e=>this.filesStore.getNode(e))).every(e):e(this.source)},canDrop(){return this.source.type===a.pt.Folder&&!this.draggingFiles.includes(this.source.source)&&!!(this.source.permissions&a.aX.CREATE)},openedMenu:{get(){return this.actionsMenuStore.opened===this.uniqueId.toString()},set(e){this.actionsMenuStore.opened=e?this.uniqueId.toString():null}},mtimeOpacity(){const e=26784e5,t=this.source.mtime?.getTime?.();if(!t)return{};const s=Math.round(Math.min(100,100*(e-(Date.now()-t))/e));return s<0?{}:{color:`color-mix(in srgb, var(--color-main-text) ${s}%, var(--color-text-maxcontrast))`}},enabledFileActions(){return this.source.status===a.zI.FAILED?[]:ss.filter((e=>!e.enabled||e.enabled([this.source],this.currentView))).sort(((e,t)=>(e.order||0)-(t.order||0)))},defaultFileAction(){return this.enabledFileActions.find((e=>void 0!==e.default))}},watch:{source(e,t){e.source!==t.source&&this.resetState()},openedMenu(){!1===this.openedMenu&&window.setTimeout((()=>{if(this.openedMenu)return;const e=document.getElementById("app-content-vue");null!==e&&(e.style.removeProperty("--mouse-pos-x"),e.style.removeProperty("--mouse-pos-y"))}),300)}},beforeDestroy(){this.resetState()},methods:{resetState(){this.loading="",this.$refs?.preview?.reset?.(),this.openedMenu=!1},onRightClick(e){if(this.openedMenu)return;if(this.gridMode){const e=this.$el?.closest("main.app-content");e.style.removeProperty("--mouse-pos-x"),e.style.removeProperty("--mouse-pos-y")}else{const t=this.$el?.closest("main.app-content"),s=t.getBoundingClientRect();t.style.setProperty("--mouse-pos-x",Math.max(0,e.clientX-s.left-200)+"px"),t.style.setProperty("--mouse-pos-y",Math.max(0,e.clientY-s.top)+"px")}const t=this.selectedFiles.length>1;this.actionsMenuStore.opened=this.isSelected&&t?"global":this.uniqueId.toString(),e.preventDefault(),e.stopPropagation()},execDefaultAction(e){if(this.isRenaming)return;if(Boolean(2&e.button)||e.button>4)return;const t=e.ctrlKey||e.metaKey||Boolean(4&e.button);if(t||!this.defaultFileAction){if((0,h.f)()&&!function(e){if(!(e.permissions&a.aX.READ))return!1;if(e.attributes["share-attributes"]){const t=JSON.parse(e.attributes["share-attributes"]||"[]").find((e=>{let{scope:t,key:s}=e;return"permissions"===t&&"download"===s}));if(void 0!==t)return!0===t.value}return!0}(this.source))return;const s=(0,h.f)()?this.source.encodedSource:(0,d.Jv)("/f/{fileId}",{fileId:this.fileid});return e.preventDefault(),e.stopPropagation(),void window.open(s,t?"_self":void 0)}e.preventDefault(),e.stopPropagation(),this.defaultFileAction.exec(this.source,this.currentView,this.currentDir)},openDetailsIfAvailable(e){e.preventDefault(),e.stopPropagation(),Ye?.enabled?.([this.source],this.currentView)&&Ye.exec(this.source,this.currentView,this.currentDir)},onDragOver(e){this.dragover=this.canDrop,this.canDrop?e.ctrlKey?e.dataTransfer.dropEffect="copy":e.dataTransfer.dropEffect="move":e.dataTransfer.dropEffect="none"},onDragLeave(e){const t=e.currentTarget;t?.contains(e.relatedTarget)||(this.dragover=!1)},async onDragStart(e){if(e.stopPropagation(),!this.canDrag||!this.fileid)return e.preventDefault(),void e.stopPropagation();P.debug("Drag started",{event:e}),e.dataTransfer?.clearData?.(),this.renamingStore.$reset(),this.selectedFiles.includes(this.source.source)?this.draggingStore.set(this.selectedFiles):this.draggingStore.set([this.source.source]);const t=this.draggingStore.dragging.map((e=>this.filesStore.getNode(e))),s=await(async e=>new Promise((t=>{ts||(ts=(new es).$mount(),document.body.appendChild(ts.$el)),ts.update(e),ts.$on("loaded",(()=>{t(ts.$el),ts.$off("loaded")}))})))(t);e.dataTransfer?.setDragImage(s,-10,-10)},onDragEnd(){this.draggingStore.reset(),this.dragover=!1,P.debug("Drag ended")},async onDrop(e){if(!this.draggingFiles&&!e.dataTransfer?.items?.length)return;e.preventDefault(),e.stopPropagation();const t=this.draggingFiles,s=[...e.dataTransfer?.items||[]],i=await Et(s),n=await(this.currentView?.getContents(this.source.path)),a=n?.folder;if(!a)return void(0,N.Qg)(this.t("files","Target folder does not exist any more"));if(!this.canDrop||e.button)return;const r=e.ctrlKey;if(this.dragover=!1,P.debug("Dropped",{event:e,folder:a,selection:t,fileTree:i}),i.contents.length>0)return void await Ut(i,a,n.contents);const o=t.map((e=>this.filesStore.getNode(e)));await It(o,a,n.contents,r),t.some((e=>this.selectedFiles.includes(e)))&&(P.debug("Dropped selection, resetting select store..."),this.selectionStore.reset())},t:A.Tl}});var ns=i(4604);const as={name:"CustomElementRender",props:{source:{type:Object,required:!0},currentView:{type:Object,required:!0},render:{type:Function,required:!0}},watch:{source(){this.updateRootElement()},currentView(){this.updateRootElement()}},mounted(){this.updateRootElement()},methods:{async updateRootElement(){const e=await this.render(this.source,this.currentView);e?this.$el.replaceChildren(e):this.$el.replaceChildren()}}},rs=(0,b.A)(as,(function(){return(0,this._self._c)("span")}),[],!1,null,null,null).exports;var os=i(15502);const ls={name:"ArrowLeftIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ds=(0,b.A)(ls,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon arrow-left-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,ms=(0,o.pM)({name:"FileEntryActions",components:{ArrowLeftIcon:ds,CustomElementRender:rs,NcActionButton:Oe.A,NcActions:De.A,NcActionSeparator:os.A,NcIconSvgWrapper:ue.A,NcLoadingIcon:Me.A},props:{loading:{type:String,required:!0},opened:{type:Boolean,default:!1},source:{type:Object,required:!0},gridMode:{type:Boolean,default:!1}},setup(){const{currentView:e}=ge(),t=Ze();return{currentView:e,enabledFileActions:(0,o.WQ)("enabledFileActions",[]),filesListWidth:t}},data:()=>({openedSubmenu:null}),computed:{currentDir(){return(this.$route?.query?.dir?.toString()||"/").replace(/^(.+)\/$/,"$1")},isLoading(){return this.source.status===a.zI.LOADING},enabledInlineActions(){return this.filesListWidth<768||this.gridMode?[]:this.enabledFileActions.filter((e=>e?.inline?.(this.source,this.currentView)))},enabledRenderActions(){return this.gridMode?[]:this.enabledFileActions.filter((e=>"function"==typeof e.renderInline))},enabledMenuActions(){if(this.openedSubmenu)return this.enabledInlineActions;const e=[...this.enabledInlineActions,...this.enabledFileActions.filter((e=>e.default!==a.m9.HIDDEN&&"function"!=typeof e.renderInline))].filter(((e,t,s)=>t===s.findIndex((t=>t.id===e.id)))),t=e.filter((e=>!e.parent)).map((e=>e.id));return e.filter((e=>!(e.parent&&t.includes(e.parent))))},enabledSubmenuActions(){return this.enabledFileActions.filter((e=>e.parent)).reduce(((e,t)=>(e[t.parent]||(e[t.parent]=[]),e[t.parent].push(t),e)),{})},openedMenu:{get(){return this.opened},set(e){this.$emit("update:opened",e)}},getBoundariesElement:()=>document.querySelector(".app-content > .files-list"),mountType(){return this.source.attributes["mount-type"]}},methods:{actionDisplayName(e){if((this.gridMode||this.filesListWidth<768&&e.inline)&&"function"==typeof e.title){const t=e.title([this.source],this.currentView);if(t)return t}return e.displayName([this.source],this.currentView)},async onActionClick(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.isLoading||""!==this.loading)return;if(this.enabledSubmenuActions[e.id])return void(this.openedSubmenu=e);const s=e.displayName([this.source],this.currentView);try{this.$emit("update:loading",e.id),this.$set(this.source,"status",a.zI.LOADING);const t=await e.exec(this.source,this.currentView,this.currentDir);if(null==t)return;if(t)return void(0,N.Te)((0,A.Tl)("files",'"{displayName}" action executed successfully',{displayName:s}));(0,N.Qg)((0,A.Tl)("files",'"{displayName}" action failed',{displayName:s}))}catch(t){P.error("Error while executing action",{action:e,e:t}),(0,N.Qg)((0,A.Tl)("files",'"{displayName}" action failed',{displayName:s}))}finally{this.$emit("update:loading",""),this.$set(this.source,"status",void 0),t&&(this.openedSubmenu=null)}},isMenu(e){return this.enabledSubmenuActions[e]?.length>0},async onBackToMenuClick(e){this.openedSubmenu=null,await this.$nextTick(),this.$nextTick((()=>{const t=this.$refs[`action-${e.id}`]?.[0];t&&t.$el.querySelector("button")?.focus()}))},t:A.Tl}}),cs=ms;var us=i(25851),gs={};gs.styleTagTransform=Y(),gs.setAttributes=W(),gs.insert=V().bind(null,"head"),gs.domAPI=j(),gs.insertStyleElement=q(),O()(us.A,gs),us.A&&us.A.locals&&us.A.locals;var fs=i(93655),ps={};ps.styleTagTransform=Y(),ps.setAttributes=W(),ps.insert=V().bind(null,"head"),ps.domAPI=j(),ps.insertStyleElement=q(),O()(fs.A,ps),fs.A&&fs.A.locals&&fs.A.locals;var hs=(0,b.A)(cs,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("td",{staticClass:"files-list__row-actions",attrs:{"data-cy-files-list-row-actions":""}},[e._l(e.enabledRenderActions,(function(s){return t("CustomElementRender",{key:s.id,staticClass:"files-list__row-action--inline",class:"files-list__row-action-"+s.id,attrs:{"current-view":e.currentView,render:s.renderInline,source:e.source}})})),e._v(" "),t("NcActions",{ref:"actionsMenu",attrs:{"boundaries-element":e.getBoundariesElement,container:e.getBoundariesElement,"force-name":!0,type:"tertiary","force-menu":0===e.enabledInlineActions.length,inline:e.enabledInlineActions.length,open:e.openedMenu},on:{"update:open":function(t){e.openedMenu=t},close:function(t){e.openedSubmenu=null}}},[e._l(e.enabledMenuActions,(function(s){return t("NcActionButton",{key:s.id,ref:`action-${s.id}`,refInFor:!0,class:{[`files-list__row-action-${s.id}`]:!0,"files-list__row-action--menu":e.isMenu(s.id)},attrs:{"close-after-click":!e.isMenu(s.id),"data-cy-files-list-row-action":s.id,"is-menu":e.isMenu(s.id),"aria-label":s.title?.([e.source],e.currentView),title:s.title?.([e.source],e.currentView)},on:{click:function(t){return e.onActionClick(s)}},scopedSlots:e._u([{key:"icon",fn:function(){return[e.loading===s.id?t("NcLoadingIcon",{attrs:{size:18}}):t("NcIconSvgWrapper",{attrs:{svg:s.iconSvgInline([e.source],e.currentView)}})]},proxy:!0}],null,!0)},[e._v("\n\t\t\t"+e._s("shared"===e.mountType&&"sharing-status"===s.id?"":e.actionDisplayName(s))+"\n\t\t")])})),e._v(" "),e.openedSubmenu&&e.enabledSubmenuActions[e.openedSubmenu?.id]?[t("NcActionButton",{staticClass:"files-list__row-action-back",on:{click:function(t){return e.onBackToMenuClick(e.openedSubmenu)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("ArrowLeftIcon")]},proxy:!0}],null,!1,3001860362)},[e._v("\n\t\t\t\t"+e._s(e.actionDisplayName(e.openedSubmenu))+"\n\t\t\t")]),e._v(" "),t("NcActionSeparator"),e._v(" "),e._l(e.enabledSubmenuActions[e.openedSubmenu?.id],(function(s){return t("NcActionButton",{key:s.id,staticClass:"files-list__row-action--submenu",class:`files-list__row-action-${s.id}`,attrs:{"close-after-click":"","data-cy-files-list-row-action":s.id,title:s.title?.([e.source],e.currentView)},on:{click:function(t){return e.onActionClick(s)}},scopedSlots:e._u([{key:"icon",fn:function(){return[e.loading===s.id?t("NcLoadingIcon",{attrs:{size:18}}):t("NcIconSvgWrapper",{attrs:{svg:s.iconSvgInline([e.source],e.currentView)}})]},proxy:!0}],null,!0)},[e._v("\n\t\t\t\t"+e._s(e.actionDisplayName(s))+"\n\t\t\t")])}))]:e._e()],2)],2)}),[],!1,null,"1d682792",null);const ws=hs.exports,vs=(0,o.pM)({name:"FileEntryCheckbox",components:{NcCheckboxRadioSwitch:ee.A,NcLoadingIcon:Me.A},props:{fileid:{type:Number,required:!0},isLoading:{type:Boolean,default:!1},nodes:{type:Array,required:!0},source:{type:Object,required:!0}},setup(){const e=rt(),t=function(){const e=(0,r.nY)("keyboard",{state:()=>({altKey:!1,ctrlKey:!1,metaKey:!1,shiftKey:!1}),actions:{onEvent(e){e||(e=window.event),o.Ay.set(this,"altKey",!!e.altKey),o.Ay.set(this,"ctrlKey",!!e.ctrlKey),o.Ay.set(this,"metaKey",!!e.metaKey),o.Ay.set(this,"shiftKey",!!e.shiftKey)}}})(...arguments);return e._initialized||(window.addEventListener("keydown",e.onEvent),window.addEventListener("keyup",e.onEvent),window.addEventListener("mousemove",e.onEvent),e._initialized=!0),e}();return{keyboardStore:t,selectionStore:e}},computed:{selectedFiles(){return this.selectionStore.selected},isSelected(){return this.selectedFiles.includes(this.source.source)},index(){return this.nodes.findIndex((e=>e.source===this.source.source))},isFile(){return this.source.type===a.pt.File},ariaLabel(){return this.isFile?(0,A.Tl)("files",'Toggle selection for file "{displayName}"',{displayName:this.source.basename}):(0,A.Tl)("files",'Toggle selection for folder "{displayName}"',{displayName:this.source.basename})},loadingLabel(){return this.isFile?(0,A.Tl)("files","File is loading"):(0,A.Tl)("files","Folder is loading")}},methods:{onSelectionChange(e){const t=this.index,s=this.selectionStore.lastSelectedIndex;if(this.keyboardStore?.shiftKey&&null!==s){const e=this.selectedFiles.includes(this.source.source),i=Math.min(t,s),n=Math.max(s,t),a=this.selectionStore.lastSelection,r=this.nodes.map((e=>e.source)).slice(i,n+1).filter(Boolean),o=[...a,...r].filter((t=>!e||t!==this.source.source));return P.debug("Shift key pressed, selecting all files in between",{start:i,end:n,filesToSelect:r,isAlreadySelected:e}),void this.selectionStore.set(o)}const i=e?[...this.selectedFiles,this.source.source]:this.selectedFiles.filter((e=>e!==this.source.source));P.debug("Updating selection",{selection:i}),this.selectionStore.set(i),this.selectionStore.setLastIndex(t)},resetSelection(){this.selectionStore.reset()},t:A.Tl}}),As=(0,b.A)(vs,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("td",{staticClass:"files-list__row-checkbox",on:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:e.resetSelection.apply(null,arguments)}}},[e.isLoading?t("NcLoadingIcon",{attrs:{name:e.loadingLabel}}):t("NcCheckboxRadioSwitch",{attrs:{"aria-label":e.ariaLabel,checked:e.isSelected,"data-cy-files-list-row-checkbox":""},on:{"update:checked":e.onSelectionChange}})],1)}),[],!1,null,null,null).exports;var Cs=i(82182);function bs(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(""===e.trim())return(0,A.t)("files","Filename must not be empty.");try{return(0,a.KT)(e),""}catch(e){if(!(e instanceof a.di))throw e;switch(e.reason){case a.nF.Character:return(0,A.t)("files",'"{char}" is not allowed inside a filename.',{char:e.segment},void 0,{escape:t});case a.nF.ReservedName:return(0,A.t)("files",'"{segment}" is a reserved name and not allowed for filenames.',{segment:e.segment},void 0,{escape:!1});case a.nF.Extension:return e.segment.match(/\.[a-z]/i)?(0,A.t)("files",'"{extension}" is not an allowed filetype.',{extension:e.segment},void 0,{escape:!1}):(0,A.t)("files",'Filenames must not end with "{extension}".',{extension:e.segment},void 0,{escape:!1});default:return(0,A.t)("files","Invalid filename.")}}}const ys=(0,o.pM)({name:"FileEntryName",components:{NcTextField:Cs.A},props:{basename:{type:String,required:!0},extension:{type:String,required:!0},nodes:{type:Array,required:!0},source:{type:Object,required:!0},gridMode:{type:Boolean,default:!1}},setup(){const{currentView:e}=ge(),{directory:t}=et(),s=Ze(),i=Wt();return{currentView:e,defaultFileAction:(0,o.WQ)("defaultFileAction"),directory:t,filesListWidth:s,renamingStore:i}},computed:{isRenaming(){return this.renamingStore.renamingNode===this.source},isRenamingSmallScreen(){return this.isRenaming&&this.filesListWidth<512},newName:{get(){return this.renamingStore.newName},set(e){this.renamingStore.newName=e}},renameLabel(){return{[a.pt.File]:(0,A.Tl)("files","Filename"),[a.pt.Folder]:(0,A.Tl)("files","Folder name")}[this.source.type]},linkTo(){if(this.source.status===a.zI.FAILED)return{is:"span",params:{title:(0,A.Tl)("files","This node is unavailable")}};if(this.defaultFileAction){const e=this.defaultFileAction.displayName([this.source],this.currentView);return{is:"button",params:{"aria-label":e,title:e,tabindex:"0"}}}return{is:"span"}}},watch:{isRenaming:{immediate:!0,handler(e){e&&this.startRenaming()}},newName(){const e=this.newName.trim?.()||"",t=this.$refs.renameInput?.$el.querySelector("input");if(!t)return;let s=bs(e);""===s&&this.checkIfNodeExists(e)&&(s=(0,A.Tl)("files","Another entry with the same name already exists.")),this.$nextTick((()=>{this.isRenaming&&(t.setCustomValidity(s),t.reportValidity())}))}},methods:{checkIfNodeExists(e){return this.nodes.find((t=>t.basename===e&&t!==this.source))},startRenaming(){this.$nextTick((()=>{const e=this.$refs.renameInput?.$el.querySelector("input");if(!e)return void P.error("Could not find the rename input");e.focus();const t=this.source.basename.length-(this.source.extension??"").length;e.setSelectionRange(0,t),e.dispatchEvent(new Event("keyup"))}))},stopRenaming(){this.isRenaming&&this.renamingStore.$reset()},async onRename(){const e=this.newName.trim?.()||"";if(!this.$refs.renameForm.checkValidity())return void(0,N.Qg)((0,A.Tl)("files","Invalid filename.")+" "+bs(e));const t=this.source.basename;try{await this.renamingStore.rename()&&((0,N.Te)((0,A.Tl)("files",'Renamed "{oldName}" to "{newName}"',{oldName:t,newName:e})),this.$nextTick((()=>{const e=this.$refs.basename;e?.focus()})))}catch(e){P.error(e),(0,N.Qg)(e.message),this.startRenaming()}},t:A.Tl}});var xs=i(42342),_s={};_s.styleTagTransform=Y(),_s.setAttributes=W(),_s.insert=V().bind(null,"head"),_s.domAPI=j(),_s.insertStyleElement=q(),O()(xs.A,_s),xs.A&&xs.A.locals&&xs.A.locals;const ks=(0,b.A)(ys,(function(){var e=this,t=e._self._c;return e._self._setupProxy,e.isRenaming?t("form",{directives:[{name:"on-click-outside",rawName:"v-on-click-outside",value:e.onRename,expression:"onRename"}],ref:"renameForm",staticClass:"files-list__row-rename",attrs:{"aria-label":e.t("files","Rename file")},on:{submit:function(t){return t.preventDefault(),t.stopPropagation(),e.onRename.apply(null,arguments)}}},[t("NcTextField",{ref:"renameInput",attrs:{label:e.renameLabel,autofocus:!0,minlength:1,required:!0,value:e.newName,enterkeyhint:"done"},on:{"update:value":function(t){e.newName=t},keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.stopRenaming.apply(null,arguments)}}})],1):t(e.linkTo.is,e._b({ref:"basename",tag:"component",staticClass:"files-list__row-name-link",attrs:{"aria-hidden":e.isRenaming,"data-cy-files-list-row-name-link":""}},"component",e.linkTo.params,!1),[t("span",{staticClass:"files-list__row-name-text",attrs:{dir:"auto"}},[t("span",{staticClass:"files-list__row-name-",domProps:{textContent:e._s(e.basename)}}),e._v(" "),t("span",{staticClass:"files-list__row-name-ext",domProps:{textContent:e._s(e.extension)}})])])}),[],!1,null,"ce4c1580",null).exports;var Ts=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","#","$","%","*","+",",","-",".",":",";","=","?","@","[","]","^","_","{","|","}","~"],Ss=e=>{let t=0;for(let s=0;s<e.length;s++){let i=e[s];t=83*t+Ts.indexOf(i)}return t},Ls=e=>{let t=e/255;return t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)},Ns=e=>{let t=Math.max(0,Math.min(1,e));return t<=.0031308?Math.trunc(12.92*t*255+.5):Math.trunc(255*(1.055*Math.pow(t,.4166666666666667)-.055)+.5)},Fs=(e,t)=>(e=>e<0?-1:1)(e)*Math.pow(Math.abs(e),t),Es=class extends Error{constructor(e){super(e),this.name="ValidationError",this.message=e}},Us=e=>{let t=e>>8&255,s=255&e;return[Ls(e>>16),Ls(t),Ls(s)]},Is=(e,t)=>{let s=Math.floor(e/361),i=Math.floor(e/19)%19,n=e%19;return[Fs((s-9)/9,2)*t,Fs((i-9)/9,2)*t,Fs((n-9)/9,2)*t]},Ps=(e,t,s,i)=>{(e=>{if(!e||e.length<6)throw new Es("The blurhash string must be at least 6 characters");let t=Ss(e[0]),s=Math.floor(t/9)+1,i=t%9+1;if(e.length!==4+2*i*s)throw new Es(`blurhash length mismatch: length is ${e.length} but it should be ${4+2*i*s}`)})(e),i|=1;let n=Ss(e[0]),a=Math.floor(n/9)+1,r=n%9+1,o=(Ss(e[1])+1)/166,l=new Array(r*a);for(let t=0;t<l.length;t++)if(0===t){let s=Ss(e.substring(2,6));l[t]=Us(s)}else{let s=Ss(e.substring(4+2*t,6+2*t));l[t]=Is(s,o*i)}let d=4*t,m=new Uint8ClampedArray(d*s);for(let e=0;e<s;e++)for(let i=0;i<t;i++){let n=0,o=0,c=0;for(let d=0;d<a;d++)for(let a=0;a<r;a++){let m=Math.cos(Math.PI*i*a/t)*Math.cos(Math.PI*e*d/s),u=l[a+d*r];n+=u[0]*m,o+=u[1]*m,c+=u[2]*m}let u=Ns(n),g=Ns(o),f=Ns(c);m[4*i+0+e*d]=u,m[4*i+1+e*d]=g,m[4*i+2+e*d]=f,m[4*i+3+e*d]=255}return m},Bs=i(43261);const zs={name:"FileIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ds=(0,b.A)(zs,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon file-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,Os={name:"FolderOpenIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Rs=(0,b.A)(Os,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon folder-open-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,js={name:"KeyIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ms=(0,b.A)(js,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon key-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M7 14C5.9 14 5 13.1 5 12S5.9 10 7 10 9 10.9 9 12 8.1 14 7 14M12.6 10C11.8 7.7 9.6 6 7 6C3.7 6 1 8.7 1 12S3.7 18 7 18C9.6 18 11.8 16.3 12.6 14H16V18H20V14H23V10H12.6Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,Vs={name:"NetworkIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},$s=(0,b.A)(Vs,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon network-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,Ws={name:"TagIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Hs=(0,b.A)(Ws,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon tag-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,qs={name:"PlayCircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Gs=(0,b.A)(qs,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon play-circle-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,Ys={name:"CollectivesIcon",props:{title:{type:String,default:""},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ks=(0,b.A)(Ys,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon collectives-icon",attrs:{"aria-hidden":!e.title,"aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 16 16"}},[t("path",{attrs:{d:"M2.9,8.8c0-1.2,0.4-2.4,1.2-3.3L0.3,6c-0.2,0-0.3,0.3-0.1,0.4l2.7,2.6C2.9,9,2.9,8.9,2.9,8.8z"}}),e._v(" "),t("path",{attrs:{d:"M8,3.7c0.7,0,1.3,0.1,1.9,0.4L8.2,0.6c-0.1-0.2-0.3-0.2-0.4,0L6.1,4C6.7,3.8,7.3,3.7,8,3.7z"}}),e._v(" "),t("path",{attrs:{d:"M3.7,11.5L3,15.2c0,0.2,0.2,0.4,0.4,0.3l3.3-1.7C5.4,13.4,4.4,12.6,3.7,11.5z"}}),e._v(" "),t("path",{attrs:{d:"M15.7,6l-3.7-0.5c0.7,0.9,1.2,2,1.2,3.3c0,0.1,0,0.2,0,0.3l2.7-2.6C15.9,6.3,15.9,6.1,15.7,6z"}}),e._v(" "),t("path",{attrs:{d:"M12.3,11.5c-0.7,1.1-1.8,1.9-3,2.2l3.3,1.7c0.2,0.1,0.4-0.1,0.4-0.3L12.3,11.5z"}}),e._v(" "),t("path",{attrs:{d:"M9.6,10.1c-0.4,0.5-1,0.8-1.6,0.8c-1.1,0-2-0.9-2.1-2C5.9,7.7,6.8,6.7,8,6.7c0.6,0,1.1,0.3,1.5,0.7 c0.1,0.1,0.1,0.1,0.2,0.1h1.4c0.2,0,0.4-0.2,0.3-0.5c-0.7-1.3-2.1-2.2-3.8-2.1C5.8,5,4.3,6.6,4.1,8.5C4,10.8,5.8,12.7,8,12.7 c1.6,0,2.9-0.9,3.5-2.3c0.1-0.2-0.1-0.4-0.3-0.4H9.9C9.8,10,9.7,10,9.6,10.1z"}})])])}),[],!1,null,null,null).exports;var Qs=i(11459);const Js=(0,o.pM)({name:"FavoriteIcon",components:{NcIconSvgWrapper:ue.A},data:()=>({StarSvg:Qs}),async mounted(){await this.$nextTick();const e=this.$el.querySelector("svg");e?.setAttribute?.("viewBox","-4 -4 30 30")},methods:{t:A.Tl}});var Xs=i(4575),Zs={};Zs.styleTagTransform=Y(),Zs.setAttributes=W(),Zs.insert=V().bind(null,"head"),Zs.domAPI=j(),Zs.insertStyleElement=q(),O()(Xs.A,Zs),Xs.A&&Xs.A.locals&&Xs.A.locals;const ei=(0,b.A)(Js,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("NcIconSvgWrapper",{staticClass:"favorite-marker-icon",attrs:{name:e.t("files","Favorite"),svg:e.StarSvg}})}),[],!1,null,"f2d0cf6e",null).exports,ti=(0,o.pM)({name:"FileEntryPreview",components:{AccountGroupIcon:Bs.A,AccountPlusIcon:We,CollectivesIcon:Ks,FavoriteIcon:ei,FileIcon:Ds,FolderIcon:Yt.A,FolderOpenIcon:Rs,KeyIcon:Ms,LinkIcon:Ie.A,NetworkIcon:$s,TagIcon:Hs},props:{source:{type:Object,required:!0},dragover:{type:Boolean,default:!1},gridMode:{type:Boolean,default:!1}},setup:()=>({userConfigStore:re(),isPublic:(0,h.f)(),publicSharingToken:(0,h.G)()}),data:()=>({backgroundFailed:void 0,backgroundLoaded:!1}),computed:{isFavorite(){return 1===this.source.attributes.favorite},userConfig(){return this.userConfigStore.userConfig},cropPreviews(){return!0===this.userConfig.crop_image_previews},previewUrl(){if(this.source.type===a.pt.Folder)return null;if(!0===this.backgroundFailed)return null;try{const e=this.source.attributes.previewUrl||(this.isPublic?(0,d.Jv)("/apps/files_sharing/publicpreview/{token}?file={file}",{token:this.publicSharingToken,file:this.source.path}):(0,d.Jv)("/core/preview?fileId={fileid}",{fileid:String(this.source.fileid)})),t=new URL(window.location.origin+e);t.searchParams.set("x",this.gridMode?"128":"32"),t.searchParams.set("y",this.gridMode?"128":"32"),t.searchParams.set("mimeFallback","true");const s=this.source?.attributes?.etag||"";return t.searchParams.set("v",s.slice(0,6)),t.searchParams.set("a",!0===this.cropPreviews?"0":"1"),t.href}catch(e){return null}},fileOverlay(){return void 0!==this.source.attributes["metadata-files-live-photo"]?Gs:null},folderOverlay(){if(this.source.type!==a.pt.Folder)return null;if(1===this.source?.attributes?.["is-encrypted"])return Ms;if(this.source?.attributes?.["is-tag"])return Hs;const e=Object.values(this.source?.attributes?.["share-types"]||{}).flat();if(e.some((e=>e===Le.I.Link||e===Le.I.Email)))return Ie.A;if(e.length>0)return We;switch(this.source?.attributes?.["mount-type"]){case"external":case"external-session":return $s;case"group":return Bs.A;case"collective":return Ks;case"shared":return We}return null},hasBlurhash(){return void 0!==this.source.attributes["metadata-blurhash"]}},mounted(){this.hasBlurhash&&this.$refs.canvas&&this.drawBlurhash()},methods:{reset(){this.backgroundFailed=void 0,this.backgroundLoaded=!1;const e=this.$refs.previewImg;e&&(e.src="")},onBackgroundLoad(){this.backgroundFailed=!1,this.backgroundLoaded=!0},onBackgroundError(e){""!==e.target?.src&&(this.backgroundFailed=!0,this.backgroundLoaded=!1)},drawBlurhash(){const e=this.$refs.canvas,t=e.width,s=e.height,i=Ps(this.source.attributes["metadata-blurhash"],t,s),n=e.getContext("2d");if(null===n)return void P.error("Cannot create context for blurhash canvas");const a=n.createImageData(t,s);a.data.set(i),n.putImageData(a,0,0)},t:A.Tl}}),si=ti,ii=(0,b.A)(si,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("span",{staticClass:"files-list__row-icon"},["folder"===e.source.type?[e.dragover?e._m(0):[e._m(1),e._v(" "),e.folderOverlay?t(e.folderOverlay,{tag:"OverlayIcon",staticClass:"files-list__row-icon-overlay"}):e._e()]]:e.previewUrl?t("span",{staticClass:"files-list__row-icon-preview-container"},[!e.hasBlurhash||!0!==e.backgroundFailed&&e.backgroundLoaded?e._e():t("canvas",{ref:"canvas",staticClass:"files-list__row-icon-blurhash",attrs:{"aria-hidden":"true"}}),e._v(" "),!0!==e.backgroundFailed?t("img",{ref:"previewImg",staticClass:"files-list__row-icon-preview",class:{"files-list__row-icon-preview--loaded":!1===e.backgroundFailed},attrs:{alt:"",loading:"lazy",src:e.previewUrl},on:{error:e.onBackgroundError,load:e.onBackgroundLoad}}):e._e()]):e._m(2),e._v(" "),e.isFavorite?t("span",{staticClass:"files-list__row-icon-favorite"},[e._m(3)],1):e._e(),e._v(" "),e.fileOverlay?t(e.fileOverlay,{tag:"OverlayIcon",staticClass:"files-list__row-icon-overlay files-list__row-icon-overlay--file"}):e._e()],2)}),[function(){var e=this._self._c;return this._self._setupProxy,e("FolderOpenIcon")},function(){var e=this._self._c;return this._self._setupProxy,e("FolderIcon")},function(){var e=this._self._c;return this._self._setupProxy,e("FileIcon")},function(){var e=this._self._c;return this._self._setupProxy,e("FavoriteIcon")}],!1,null,null,null).exports,ni=(0,o.pM)({name:"FileEntry",components:{CustomElementRender:rs,FileEntryActions:ws,FileEntryCheckbox:As,FileEntryName:ks,FileEntryPreview:ii,NcDateTime:ns.A},mixins:[is],props:{isSizeAvailable:{type:Boolean,default:!1}},setup(){const e=Mt(),t=Pt(),s=at(),i=Wt(),n=rt(),a=Ze(),{currentView:r}=ge(),{directory:o,fileId:l}=et();return{actionsMenuStore:e,draggingStore:t,filesStore:s,renamingStore:i,selectionStore:n,currentDir:o,currentFileId:l,currentView:r,filesListWidth:a}},computed:{rowListeners(){return{...this.isRenaming?{}:{dragstart:this.onDragStart,dragover:this.onDragOver},contextmenu:this.onRightClick,dragleave:this.onDragLeave,dragend:this.onDragEnd,drop:this.onDrop}},columns(){return this.filesListWidth<512||this.compact?[]:this.currentView.columns||[]},size(){const e=this.source.size;return void 0===e||isNaN(e)||e<0?this.t("files","Pending"):(0,a.v7)(e,!0)},sizeOpacity(){const e=this.source.size;return void 0===e||isNaN(e)||e<0?{}:{color:`color-mix(in srgb, var(--color-main-text) ${Math.round(Math.min(100,100*Math.pow(e/10485760,2)))}%, var(--color-text-maxcontrast))`}},mtime(){return this.source.mtime&&!isNaN(this.source.mtime.getDate())?this.source.mtime:this.source.crtime&&!isNaN(this.source.crtime.getDate())?this.source.crtime:null},mtimeTitle(){return this.source.mtime?(0,jt.A)(this.source.mtime).format("LLL"):""}},methods:{formatFileSize:a.v7}}),ai=(0,b.A)(ni,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("tr",e._g({staticClass:"files-list__row",class:{"files-list__row--dragover":e.dragover,"files-list__row--loading":e.isLoading,"files-list__row--active":e.isActive},attrs:{"data-cy-files-list-row":"","data-cy-files-list-row-fileid":e.fileid,"data-cy-files-list-row-name":e.source.basename,draggable:e.canDrag}},e.rowListeners),[e.isFailedSource?t("span",{staticClass:"files-list__row--failed"}):e._e(),e._v(" "),t("FileEntryCheckbox",{attrs:{fileid:e.fileid,"is-loading":e.isLoading,nodes:e.nodes,source:e.source}}),e._v(" "),t("td",{staticClass:"files-list__row-name",attrs:{"data-cy-files-list-row-name":""}},[t("FileEntryPreview",{ref:"preview",attrs:{source:e.source,dragover:e.dragover},nativeOn:{auxclick:function(t){return e.execDefaultAction.apply(null,arguments)},click:function(t){return e.execDefaultAction.apply(null,arguments)}}}),e._v(" "),t("FileEntryName",{ref:"name",attrs:{basename:e.basename,extension:e.extension,nodes:e.nodes,source:e.source},nativeOn:{auxclick:function(t){return e.execDefaultAction.apply(null,arguments)},click:function(t){return e.execDefaultAction.apply(null,arguments)}}})],1),e._v(" "),t("FileEntryActions",{directives:[{name:"show",rawName:"v-show",value:!e.isRenamingSmallScreen,expression:"!isRenamingSmallScreen"}],ref:"actions",class:`files-list__row-actions-${e.uniqueId}`,attrs:{loading:e.loading,opened:e.openedMenu,source:e.source},on:{"update:loading":function(t){e.loading=t},"update:opened":function(t){e.openedMenu=t}}}),e._v(" "),!e.compact&&e.isSizeAvailable?t("td",{staticClass:"files-list__row-size",style:e.sizeOpacity,attrs:{"data-cy-files-list-row-size":""},on:{click:e.openDetailsIfAvailable}},[t("span",[e._v(e._s(e.size))])]):e._e(),e._v(" "),!e.compact&&e.isMtimeAvailable?t("td",{staticClass:"files-list__row-mtime",style:e.mtimeOpacity,attrs:{"data-cy-files-list-row-mtime":""},on:{click:e.openDetailsIfAvailable}},[e.mtime?t("NcDateTime",{attrs:{timestamp:e.mtime,"ignore-seconds":!0}}):t("span",[e._v(e._s(e.t("files","Unknown date")))])],1):e._e(),e._v(" "),e._l(e.columns,(function(s){return t("td",{key:s.id,staticClass:"files-list__row-column-custom",class:`files-list__row-${e.currentView.id}-${s.id}`,attrs:{"data-cy-files-list-row-column-custom":s.id},on:{click:e.openDetailsIfAvailable}},[t("CustomElementRender",{attrs:{"current-view":e.currentView,render:s.render,source:e.source}})],1)}))],2)}),[],!1,null,null,null).exports,ri=(0,o.pM)({name:"FileEntryGrid",components:{FileEntryActions:ws,FileEntryCheckbox:As,FileEntryName:ks,FileEntryPreview:ii,NcDateTime:ns.A},mixins:[is],inheritAttrs:!1,setup(){const e=Mt(),t=Pt(),s=at(),i=Wt(),n=rt(),{currentView:a}=ge(),{directory:r,fileId:o}=et();return{actionsMenuStore:e,draggingStore:t,filesStore:s,renamingStore:i,selectionStore:n,currentDir:r,currentFileId:o,currentView:a}},data:()=>({gridMode:!0})}),oi=(0,b.A)(ri,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("tr",{staticClass:"files-list__row",class:{"files-list__row--active":e.isActive,"files-list__row--dragover":e.dragover,"files-list__row--loading":e.isLoading},attrs:{"data-cy-files-list-row":"","data-cy-files-list-row-fileid":e.fileid,"data-cy-files-list-row-name":e.source.basename,draggable:e.canDrag},on:{contextmenu:e.onRightClick,dragover:e.onDragOver,dragleave:e.onDragLeave,dragstart:e.onDragStart,dragend:e.onDragEnd,drop:e.onDrop}},[e.isFailedSource?t("span",{staticClass:"files-list__row--failed"}):e._e(),e._v(" "),t("FileEntryCheckbox",{attrs:{fileid:e.fileid,"is-loading":e.isLoading,nodes:e.nodes,source:e.source}}),e._v(" "),t("td",{staticClass:"files-list__row-name",attrs:{"data-cy-files-list-row-name":""}},[t("FileEntryPreview",{ref:"preview",attrs:{dragover:e.dragover,"grid-mode":!0,source:e.source},nativeOn:{auxclick:function(t){return e.execDefaultAction.apply(null,arguments)},click:function(t){return e.execDefaultAction.apply(null,arguments)}}}),e._v(" "),t("FileEntryName",{ref:"name",attrs:{basename:e.basename,extension:e.extension,"grid-mode":!0,nodes:e.nodes,source:e.source},nativeOn:{auxclick:function(t){return e.execDefaultAction.apply(null,arguments)},click:function(t){return e.execDefaultAction.apply(null,arguments)}}})],1),e._v(" "),!e.compact&&e.isMtimeAvailable?t("td",{staticClass:"files-list__row-mtime",style:e.mtimeOpacity,attrs:{"data-cy-files-list-row-mtime":""},on:{click:e.openDetailsIfAvailable}},[e.source.mtime?t("NcDateTime",{attrs:{timestamp:e.source.mtime,"ignore-seconds":!0}}):e._e()],1):e._e(),e._v(" "),t("FileEntryActions",{ref:"actions",class:`files-list__row-actions-${e.uniqueId}`,attrs:{"grid-mode":!0,loading:e.loading,opened:e.openedMenu,source:e.source},on:{"update:loading":function(t){e.loading=t},"update:opened":function(t){e.openedMenu=t}}})],1)}),[],!1,null,null,null).exports,li={name:"FilesListHeader",props:{header:{type:Object,required:!0},currentFolder:{type:Object,required:!0},currentView:{type:Object,required:!0}},computed:{enabled(){return this.header.enabled(this.currentFolder,this.currentView)}},watch:{enabled(e){e&&this.header.updated(this.currentFolder,this.currentView)},currentFolder(){this.header.updated(this.currentFolder,this.currentView)}},mounted(){console.debug("Mounted",this.header.id),this.header.render(this.$refs.mount,this.currentFolder,this.currentView)}},di=(0,b.A)(li,(function(){var e=this,t=e._self._c;return t("div",{directives:[{name:"show",rawName:"v-show",value:e.enabled,expression:"enabled"}],class:`files-list__header-${e.header.id}`},[t("span",{ref:"mount"})])}),[],!1,null,null,null).exports,mi=(0,o.pM)({name:"FilesListTableFooter",props:{currentView:{type:a.Ss,required:!0},isMtimeAvailable:{type:Boolean,default:!1},isSizeAvailable:{type:Boolean,default:!1},nodes:{type:Array,required:!0},summary:{type:String,default:""},filesListWidth:{type:Number,default:0}},setup(){const e=nt(),t=at(),{directory:s}=et();return{filesStore:t,pathsStore:e,directory:s}},computed:{currentFolder(){if(!this.currentView?.id)return;if("/"===this.directory)return this.filesStore.getRoot(this.currentView.id);const e=this.pathsStore.getPath(this.currentView.id,this.directory);return this.filesStore.getNode(e)},columns(){return this.filesListWidth<512?[]:this.currentView?.columns||[]},totalSize(){return this.currentFolder?.size?(0,a.v7)(this.currentFolder.size,!0):(0,a.v7)(this.nodes.reduce(((e,t)=>e+(t.size??0)),0),!0)}},methods:{classForColumn(e){return{"files-list__row-column-custom":!0,[`files-list__row-${this.currentView.id}-${e.id}`]:!0}},t:A.Tl}});var ci=i(55498),ui={};ui.styleTagTransform=Y(),ui.setAttributes=W(),ui.insert=V().bind(null,"head"),ui.domAPI=j(),ui.insertStyleElement=q(),O()(ci.A,ui),ci.A&&ci.A.locals&&ci.A.locals;const gi=(0,b.A)(mi,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("tr",[t("th",{staticClass:"files-list__row-checkbox"},[t("span",{staticClass:"hidden-visually"},[e._v(e._s(e.t("files","Total rows summary")))])]),e._v(" "),t("td",{staticClass:"files-list__row-name"},[t("span",{staticClass:"files-list__row-icon"}),e._v(" "),t("span",[e._v(e._s(e.summary))])]),e._v(" "),t("td",{staticClass:"files-list__row-actions"}),e._v(" "),e.isSizeAvailable?t("td",{staticClass:"files-list__column files-list__row-size"},[t("span",[e._v(e._s(e.totalSize))])]):e._e(),e._v(" "),e.isMtimeAvailable?t("td",{staticClass:"files-list__column files-list__row-mtime"}):e._e(),e._v(" "),e._l(e.columns,(function(s){return t("th",{key:s.id,class:e.classForColumn(s)},[t("span",[e._v(e._s(s.summary?.(e.nodes,e.currentView)))])])}))],2)}),[],!1,null,"4c69fc7c",null).exports;var fi=i(25384),pi=i(33388);const hi=o.Ay.extend({computed:{...(0,r.aH)(pe,["getConfig","setSortingBy","toggleSortingDirection"]),currentView(){return this.$navigation.active},sortingMode(){return this.getConfig(this.currentView.id)?.sorting_mode||this.currentView?.defaultSortKey||"basename"},isAscSorting(){const e=this.getConfig(this.currentView.id)?.sorting_direction;return"desc"!==e}},methods:{toggleSortBy(e){this.sortingMode!==e?this.setSortingBy(e,this.currentView.id):this.toggleSortingDirection(this.currentView.id)}}}),wi=(0,o.pM)({name:"FilesListTableHeaderButton",components:{MenuDown:fi.A,MenuUp:pi.A,NcButton:Re.A},mixins:[hi],props:{name:{type:String,required:!0},mode:{type:String,required:!0}},methods:{t:A.Tl}});var vi=i(64800),Ai={};Ai.styleTagTransform=Y(),Ai.setAttributes=W(),Ai.insert=V().bind(null,"head"),Ai.domAPI=j(),Ai.insertStyleElement=q(),O()(vi.A,Ai),vi.A&&vi.A.locals&&vi.A.locals;const Ci=(0,b.A)(wi,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("NcButton",{class:["files-list__column-sort-button",{"files-list__column-sort-button--active":e.sortingMode===e.mode,"files-list__column-sort-button--size":"size"===e.sortingMode}],attrs:{alignment:"size"===e.mode?"end":"start-reverse",type:"tertiary",title:e.name},on:{click:function(t){return e.toggleSortBy(e.mode)}},scopedSlots:e._u([{key:"icon",fn:function(){return[e.sortingMode!==e.mode||e.isAscSorting?t("MenuUp",{staticClass:"files-list__column-sort-button-icon"}):t("MenuDown",{staticClass:"files-list__column-sort-button-icon"})]},proxy:!0}])},[e._v(" "),t("span",{staticClass:"files-list__column-sort-button-text"},[e._v(e._s(e.name))])])}),[],!1,null,"6d7680f0",null).exports,bi=(0,o.pM)({name:"FilesListTableHeader",components:{FilesListTableHeaderButton:Ci,NcCheckboxRadioSwitch:ee.A},mixins:[hi],props:{isMtimeAvailable:{type:Boolean,default:!1},isSizeAvailable:{type:Boolean,default:!1},nodes:{type:Array,required:!0},filesListWidth:{type:Number,default:0}},setup(){const e=at(),t=rt(),{currentView:s}=ge();return{filesStore:e,selectionStore:t,currentView:s}},computed:{columns(){return this.filesListWidth<512?[]:this.currentView?.columns||[]},dir(){return(this.$route?.query?.dir||"/").replace(/^(.+)\/$/,"$1")},selectAllBind(){const e=(0,A.Tl)("files","Toggle selection for all files and folders");return{"aria-label":e,checked:this.isAllSelected,indeterminate:this.isSomeSelected,title:e}},selectedNodes(){return this.selectionStore.selected},isAllSelected(){return this.selectedNodes.length===this.nodes.length},isNoneSelected(){return 0===this.selectedNodes.length},isSomeSelected(){return!this.isAllSelected&&!this.isNoneSelected}},methods:{ariaSortForMode(e){return this.sortingMode===e?this.isAscSorting?"ascending":"descending":null},classForColumn(e){return{"files-list__column":!0,"files-list__column--sortable":!!e.sort,"files-list__row-column-custom":!0,[`files-list__row-${this.currentView?.id}-${e.id}`]:!0}},onToggleAll(e){if(e){const e=this.nodes.map((e=>e.source)).filter(Boolean);P.debug("Added all nodes to selection",{selection:e}),this.selectionStore.setLastIndex(null),this.selectionStore.set(e)}else P.debug("Cleared selection"),this.selectionStore.reset()},resetSelection(){this.selectionStore.reset()},t:A.Tl}});var yi=i(37617),xi={};xi.styleTagTransform=Y(),xi.setAttributes=W(),xi.insert=V().bind(null,"head"),xi.domAPI=j(),xi.insertStyleElement=q(),O()(yi.A,xi),yi.A&&yi.A.locals&&yi.A.locals;const _i=(0,b.A)(bi,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("tr",{staticClass:"files-list__row-head"},[t("th",{staticClass:"files-list__column files-list__row-checkbox",on:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:e.resetSelection.apply(null,arguments)}}},[t("NcCheckboxRadioSwitch",e._b({attrs:{"data-cy-files-list-selection-checkbox":""},on:{"update:checked":e.onToggleAll}},"NcCheckboxRadioSwitch",e.selectAllBind,!1))],1),e._v(" "),t("th",{staticClass:"files-list__column files-list__row-name files-list__column--sortable",attrs:{"aria-sort":e.ariaSortForMode("basename")}},[t("span",{staticClass:"files-list__row-icon"}),e._v(" "),t("FilesListTableHeaderButton",{attrs:{name:e.t("files","Name"),mode:"basename"}})],1),e._v(" "),t("th",{staticClass:"files-list__row-actions"}),e._v(" "),e.isSizeAvailable?t("th",{staticClass:"files-list__column files-list__row-size",class:{"files-list__column--sortable":e.isSizeAvailable},attrs:{"aria-sort":e.ariaSortForMode("size")}},[t("FilesListTableHeaderButton",{attrs:{name:e.t("files","Size"),mode:"size"}})],1):e._e(),e._v(" "),e.isMtimeAvailable?t("th",{staticClass:"files-list__column files-list__row-mtime",class:{"files-list__column--sortable":e.isMtimeAvailable},attrs:{"aria-sort":e.ariaSortForMode("mtime")}},[t("FilesListTableHeaderButton",{attrs:{name:e.t("files","Modified"),mode:"mtime"}})],1):e._e(),e._v(" "),e._l(e.columns,(function(s){return t("th",{key:s.id,class:e.classForColumn(s),attrs:{"aria-sort":e.ariaSortForMode(s.id)}},[s.sort?t("FilesListTableHeaderButton",{attrs:{name:s.title,mode:s.id}}):t("span",[e._v("\n\t\t\t"+e._s(s.title)+"\n\t\t")])],1)}))],2)}),[],!1,null,"4daa9603",null).exports;var ki=i(17334),Ti=i.n(ki);const Si=(0,o.pM)({name:"VirtualList",props:{dataComponent:{type:[Object,Function],required:!0},dataKey:{type:String,required:!0},dataSources:{type:Array,required:!0},extraProps:{type:Object,default:()=>({})},scrollToIndex:{type:Number,default:0},gridMode:{type:Boolean,default:!1},caption:{type:String,default:""}},setup:()=>({fileListWidth:Ze()}),data(){return{index:this.scrollToIndex,beforeHeight:0,headerHeight:0,tableHeight:0,resizeObserver:null}},computed:{isReady(){return this.tableHeight>0},bufferItems(){return this.gridMode?this.columnCount:3},itemHeight(){return this.gridMode?230:55},itemWidth:()=>182,rowCount(){return Math.ceil((this.tableHeight-this.headerHeight)/this.itemHeight)+this.bufferItems/this.columnCount*2+1},columnCount(){return this.gridMode?Math.floor(this.fileListWidth/this.itemWidth):1},startIndex(){return Math.max(0,this.index-this.bufferItems)},shownItems(){return this.gridMode?this.rowCount*this.columnCount:this.rowCount},renderedItems(){if(!this.isReady)return[];const e=this.dataSources.slice(this.startIndex,this.startIndex+this.shownItems),t=e.filter((e=>Object.values(this.$_recycledPool).includes(e[this.dataKey]))).map((e=>e[this.dataKey])),s=Object.keys(this.$_recycledPool).filter((e=>!t.includes(this.$_recycledPool[e])));return e.map((e=>{const t=Object.values(this.$_recycledPool).indexOf(e[this.dataKey]);if(-1!==t)return{key:Object.keys(this.$_recycledPool)[t],item:e};const i=s.pop()||Math.random().toString(36).substr(2);return this.$_recycledPool[i]=e[this.dataKey],{key:i,item:e}}))},totalRowCount(){return Math.floor(this.dataSources.length/this.columnCount)},tbodyStyle(){const e=this.startIndex+this.rowCount>this.dataSources.length,t=this.dataSources.length-this.startIndex-this.shownItems,s=Math.floor(Math.min(this.dataSources.length-this.startIndex,t)/this.columnCount);return{paddingTop:Math.floor(this.startIndex/this.columnCount)*this.itemHeight+"px",paddingBottom:e?0:s*this.itemHeight+"px",minHeight:this.totalRowCount*this.itemHeight+"px"}}},watch:{scrollToIndex(e){this.scrollTo(e)},totalRowCount(){this.scrollToIndex&&this.$nextTick((()=>this.scrollTo(this.scrollToIndex)))},columnCount(e,t){0!==t?this.scrollTo(this.index):console.debug("VirtualList: columnCount is 0, skipping scroll")}},mounted(){const e=this.$refs?.before,t=this.$el,s=this.$refs?.thead;this.resizeObserver=new ResizeObserver(Ti()((()=>{this.beforeHeight=e?.clientHeight??0,this.headerHeight=s?.clientHeight??0,this.tableHeight=t?.clientHeight??0,P.debug("VirtualList: resizeObserver updated"),this.onScroll()}),100,!1)),this.resizeObserver.observe(e),this.resizeObserver.observe(t),this.resizeObserver.observe(s),this.scrollToIndex&&this.scrollTo(this.scrollToIndex),this.$el.addEventListener("scroll",this.onScroll,{passive:!0}),this.$_recycledPool={}},beforeDestroy(){this.resizeObserver&&this.resizeObserver.disconnect()},methods:{scrollTo(e){const t=Math.ceil(this.dataSources.length/this.columnCount);if(t<this.rowCount)return void P.debug("VirtualList: Skip scrolling. nothing to scroll",{index:e,targetRow:t,rowCount:this.rowCount});this.index=e;const s=(Math.floor(e/this.columnCount)-.5)*this.itemHeight+this.beforeHeight;P.debug("VirtualList: scrolling to index "+e,{scrollTop:s,columnCount:this.columnCount}),this.$el.scrollTop=s},onScroll(){this._onScrollHandle??=requestAnimationFrame((()=>{this._onScrollHandle=null;const e=this.$el.scrollTop-this.beforeHeight,t=Math.floor(e/this.itemHeight)*this.columnCount;this.index=Math.max(0,t),this.$emit("scroll")}))}}}),Li=(0,b.A)(Si,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("div",{staticClass:"files-list",attrs:{"data-cy-files-list":""}},[t("div",{ref:"before",staticClass:"files-list__before"},[e._t("before")],2),e._v(" "),t("div",{staticClass:"files-list__filters"},[e._t("filters")],2),e._v(" "),e.$scopedSlots["header-overlay"]?t("div",{staticClass:"files-list__thead-overlay"},[e._t("header-overlay")],2):e._e(),e._v(" "),t("table",{staticClass:"files-list__table",class:{"files-list__table--with-thead-overlay":!!e.$scopedSlots["header-overlay"]}},[e.caption?t("caption",{staticClass:"hidden-visually"},[e._v("\n\t\t\t"+e._s(e.caption)+"\n\t\t")]):e._e(),e._v(" "),t("thead",{ref:"thead",staticClass:"files-list__thead",attrs:{"data-cy-files-list-thead":""}},[e._t("header")],2),e._v(" "),t("tbody",{staticClass:"files-list__tbody",class:e.gridMode?"files-list__tbody--grid":"files-list__tbody--list",style:e.tbodyStyle,attrs:{"data-cy-files-list-tbody":""}},e._l(e.renderedItems,(function(s,i){let{key:n,item:a}=s;return t(e.dataComponent,e._b({key:n,tag:"component",attrs:{source:a,index:i}},"component",e.extraProps,!1))})),1),e._v(" "),t("tfoot",{directives:[{name:"show",rawName:"v-show",value:e.isReady,expression:"isReady"}],staticClass:"files-list__tfoot",attrs:{"data-cy-files-list-tfoot":""}},[e._t("footer")],2)])])}),[],!1,null,null,null).exports,Ni=(0,a.qK)(),Fi=(0,o.pM)({name:"FilesListTableHeaderActions",components:{NcActions:De.A,NcActionButton:Oe.A,NcIconSvgWrapper:ue.A,NcLoadingIcon:Me.A},props:{currentView:{type:Object,required:!0},selectedNodes:{type:Array,default:()=>[]}},setup(){const e=Mt(),t=at(),s=rt(),i=Ze(),{directory:n}=et();return{directory:n,fileListWidth:i,actionsMenuStore:e,filesStore:t,selectionStore:s}},data:()=>({loading:null}),computed:{enabledActions(){return Ni.filter((e=>e.execBatch)).filter((e=>!e.enabled||e.enabled(this.nodes,this.currentView))).sort(((e,t)=>(e.order||0)-(t.order||0)))},nodes(){return this.selectedNodes.map((e=>this.getNode(e))).filter(Boolean)},areSomeNodesLoading(){return this.nodes.some((e=>e.status===a.zI.LOADING))},openedMenu:{get(){return"global"===this.actionsMenuStore.opened},set(e){this.actionsMenuStore.opened=e?"global":null}},inlineActions(){return this.fileListWidth<512?0:this.fileListWidth<768?1:this.fileListWidth<1024?2:3}},methods:{getNode(e){return this.filesStore.getNode(e)},async onActionClick(e){const t=e.displayName(this.nodes,this.currentView),s=this.selectedNodes;try{this.loading=e.id,this.nodes.forEach((e=>{this.$set(e,"status",a.zI.LOADING)}));const i=await e.execBatch(this.nodes,this.currentView,this.directory);if(!i.some((e=>null!==e)))return void this.selectionStore.reset();if(i.some((e=>!1===e))){const e=s.filter(((e,t)=>!1===i[t]));if(this.selectionStore.set(e),i.some((e=>null===e)))return;return void(0,N.Qg)(this.t("files",'"{displayName}" failed on some elements ',{displayName:t}))}(0,N.Te)(this.t("files",'"{displayName}" batch action executed successfully',{displayName:t})),this.selectionStore.reset()}catch(s){P.error("Error while executing action",{action:e,e:s}),(0,N.Qg)(this.t("files",'"{displayName}" action failed',{displayName:t}))}finally{this.loading=null,this.nodes.forEach((e=>{this.$set(e,"status",void 0)}))}},t:A.Tl}}),Ei=Fi;var Ui=i(39513),Ii={};Ii.styleTagTransform=Y(),Ii.setAttributes=W(),Ii.insert=V().bind(null,"head"),Ii.domAPI=j(),Ii.insertStyleElement=q(),O()(Ui.A,Ii),Ui.A&&Ui.A.locals&&Ui.A.locals;var Pi=(0,b.A)(Ei,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("div",{staticClass:"files-list__column files-list__row-actions-batch",attrs:{"data-cy-files-list-selection-actions":""}},[t("NcActions",{ref:"actionsMenu",attrs:{container:"#app-content-vue",disabled:!!e.loading||e.areSomeNodesLoading,"force-name":!0,inline:e.inlineActions,"menu-name":e.inlineActions<=1?e.t("files","Actions"):null,open:e.openedMenu},on:{"update:open":function(t){e.openedMenu=t}}},e._l(e.enabledActions,(function(s){return t("NcActionButton",{key:s.id,class:"files-list__row-actions-batch-"+s.id,attrs:{"aria-label":s.displayName(e.nodes,e.currentView)+" "+e.t("files","(selected)"),"data-cy-files-list-selection-action":s.id},on:{click:function(t){return e.onActionClick(s)}},scopedSlots:e._u([{key:"icon",fn:function(){return[e.loading===s.id?t("NcLoadingIcon",{attrs:{size:18}}):t("NcIconSvgWrapper",{attrs:{svg:s.iconSvgInline(e.nodes,e.currentView)}})]},proxy:!0}],null,!0)},[e._v("\n\t\t\t"+e._s(s.displayName(e.nodes,e.currentView))+"\n\t\t")])})),1)],1)}),[],!1,null,"6c741170",null);const Bi=Pi.exports;var zi=i(41944),Di=i(89918);const Oi=(0,o.pM)({__name:"FileListFilters",setup(e){const t=Ce(),s=(0,o.EW)((()=>t.filtersWithUI)),i=(0,o.EW)((()=>t.activeChips)),n=(0,o.KR)([]);return(0,o.nT)((()=>{n.value.forEach(((e,t)=>s.value[t].mount(e)))})),{__sfc:!0,filterStore:t,visualFilters:s,activeChips:i,filterElements:n,t:A.t,NcAvatar:zi.A,NcChip:Di.A}}});var Ri=i(3085),ji={};ji.styleTagTransform=Y(),ji.setAttributes=W(),ji.insert=V().bind(null,"head"),ji.domAPI=j(),ji.insertStyleElement=q(),O()(Ri.A,ji),Ri.A&&Ri.A.locals&&Ri.A.locals;const Mi=(0,b.A)(Oi,(function(){var e=this,t=e._self._c,s=e._self._setupProxy;return t("div",{staticClass:"file-list-filters"},[t("div",{staticClass:"file-list-filters__filter",attrs:{"data-cy-files-filters":""}},e._l(s.visualFilters,(function(e){return t("span",{key:e.id,ref:"filterElements",refInFor:!0})})),0),e._v(" "),s.activeChips.length>0?t("ul",{staticClass:"file-list-filters__active",attrs:{"aria-label":s.t("files","Active filters")}},e._l(s.activeChips,(function(i,n){return t("li",{key:n},[t(s.NcChip,{attrs:{"aria-label-close":s.t("files","Remove filter"),"icon-svg":i.icon,text:i.text},on:{close:i.onclick},scopedSlots:e._u([i.user?{key:"icon",fn:function(){return[t(s.NcAvatar,{attrs:{"disable-menu":"","show-user-status":!1,size:24,user:i.user}})]},proxy:!0}:null],null,!0)})],1)})),0):e._e()])}),[],!1,null,"bd0c8440",null).exports,Vi=(0,o.pM)({name:"FilesListVirtual",components:{FileListFilters:Mi,FilesListHeader:di,FilesListTableFooter:gi,FilesListTableHeader:_i,VirtualList:Li,FilesListTableHeaderActions:Bi},props:{currentView:{type:a.Ss,required:!0},currentFolder:{type:a.vd,required:!0},nodes:{type:Array,required:!0}},setup(){const e=re(),t=rt(),s=Ze(),{fileId:i,openFile:n}=et();return{fileId:i,fileListWidth:s,openFile:n,userConfigStore:e,selectionStore:t}},data:()=>({FileEntry:ai,FileEntryGrid:oi,headers:(0,a.By)(),scrollToIndex:0,openFileId:null}),computed:{userConfig(){return this.userConfigStore.userConfig},summary(){return Rt(this.nodes)},isMtimeAvailable(){return!(this.fileListWidth<768)&&this.nodes.some((e=>void 0!==e.mtime))},isSizeAvailable(){return!(this.fileListWidth<768)&&this.nodes.some((e=>void 0!==e.size))},sortedHeaders(){return this.currentFolder&&this.currentView?[...this.headers].sort(((e,t)=>e.order-t.order)):[]},caption(){const e=(0,A.Tl)("files","List of files and folders.");return`${this.currentView.caption||e}\n${(0,A.Tl)("files","Column headers with buttons are sortable.")}\n${(0,A.Tl)("files","This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list.")}`},selectedNodes(){return this.selectionStore.selected},isNoneSelected(){return 0===this.selectedNodes.length}},watch:{fileId:{handler(e){this.scrollToFile(e,!1)},immediate:!0},openFile:{handler(){this.$nextTick((()=>{this.fileId&&(this.openFile?this.handleOpenFile(this.fileId):this.unselectFile())}))},immediate:!0}},mounted(){window.document.querySelector("main.app-content").addEventListener("dragover",this.onDragOver),(0,v.B1)("files:sidebar:closed",this.unselectFile),this.fileId&&this.openSidebarForFile(this.fileId)},beforeDestroy(){window.document.querySelector("main.app-content").removeEventListener("dragover",this.onDragOver),(0,v.al)("files:sidebar:closed",this.unselectFile)},methods:{openSidebarForFile(e){if(document.documentElement.clientWidth>1024&&this.currentFolder.fileid!==e){const t=this.nodes.find((t=>t.fileid===e));t&&Ye?.enabled?.([t],this.currentView)&&(P.debug("Opening sidebar on file "+t.path,{node:t}),Ye.exec(t,this.currentView,this.currentFolder.path))}},scrollToFile(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(e){if(e===this.currentFolder.fileid)return;const s=this.nodes.findIndex((t=>t.fileid===e));t&&-1===s&&e!==this.currentFolder.fileid&&(0,N.Qg)(this.t("files","File not found")),this.scrollToIndex=Math.max(0,s)}},unselectFile(){this.openFile||""!==OCA.Files.Sidebar.file||window.OCP.Files.Router.goToRoute(null,{...this.$route.params,fileid:String(this.currentFolder.fileid??"")},this.$route.query)},handleOpenFile(e){if(null===e||this.openFileId===e)return;const t=this.nodes.find((t=>t.fileid===e));if(void 0===t||t.type===a.pt.Folder)return;P.debug("Opening file "+t.path,{node:t}),this.openFileId=e;const s=(0,a.qK)().filter((e=>!!e?.default)).filter((e=>!e.enabled||e.enabled([t],this.currentView))).sort(((e,t)=>(e.order||0)-(t.order||0))).at(0);s?.exec(t,this.currentView,this.currentFolder.path)},onDragOver(e){const t=e.dataTransfer?.types.includes("Files");if(t)return;e.preventDefault(),e.stopPropagation();const s=this.$refs.table.$el,i=s.getBoundingClientRect().top,n=i+s.getBoundingClientRect().height;e.clientY<i+100?s.scrollTop=s.scrollTop-25:e.clientY>n-50&&(s.scrollTop=s.scrollTop+25)},t:A.Tl}});var $i=i(1573),Wi={};Wi.styleTagTransform=Y(),Wi.setAttributes=W(),Wi.insert=V().bind(null,"head"),Wi.domAPI=j(),Wi.insertStyleElement=q(),O()($i.A,Wi),$i.A&&$i.A.locals&&$i.A.locals;var Hi=i(86745),qi={};qi.styleTagTransform=Y(),qi.setAttributes=W(),qi.insert=V().bind(null,"head"),qi.domAPI=j(),qi.insertStyleElement=q(),O()(Hi.A,qi),Hi.A&&Hi.A.locals&&Hi.A.locals;const Gi=(0,b.A)(Vi,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("VirtualList",{ref:"table",attrs:{"data-component":e.userConfig.grid_view?e.FileEntryGrid:e.FileEntry,"data-key":"source","data-sources":e.nodes,"grid-mode":e.userConfig.grid_view,"extra-props":{isMtimeAvailable:e.isMtimeAvailable,isSizeAvailable:e.isSizeAvailable,nodes:e.nodes,fileListWidth:e.fileListWidth},"scroll-to-index":e.scrollToIndex,caption:e.caption},scopedSlots:e._u([{key:"filters",fn:function(){return[t("FileListFilters")]},proxy:!0},e.isNoneSelected?null:{key:"header-overlay",fn:function(){return[t("span",{staticClass:"files-list__selected"},[e._v(e._s(e.t("files","{count} selected",{count:e.selectedNodes.length})))]),e._v(" "),t("FilesListTableHeaderActions",{attrs:{"current-view":e.currentView,"selected-nodes":e.selectedNodes}})]},proxy:!0},{key:"before",fn:function(){return e._l(e.sortedHeaders,(function(s){return t("FilesListHeader",{key:s.id,attrs:{"current-folder":e.currentFolder,"current-view":e.currentView,header:s}})}))},proxy:!0},{key:"header",fn:function(){return[t("FilesListTableHeader",{ref:"thead",attrs:{"files-list-width":e.fileListWidth,"is-mtime-available":e.isMtimeAvailable,"is-size-available":e.isSizeAvailable,nodes:e.nodes}})]},proxy:!0},{key:"footer",fn:function(){return[t("FilesListTableFooter",{attrs:{"current-view":e.currentView,"files-list-width":e.fileListWidth,"is-mtime-available":e.isMtimeAvailable,"is-size-available":e.isSizeAvailable,nodes:e.nodes,summary:e.summary}})]},proxy:!0}],null,!0)})}),[],!1,null,"2c0fe312",null).exports,Yi={name:"TrayArrowDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ki=(0,b.A)(Yi,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon tray-arrow-down-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 15L17.55 9.54L16.13 8.13L13 11.25V2H11V11.25L7.88 8.13L6.46 9.55L12 15Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,Qi=(0,o.pM)({name:"DragAndDropNotice",components:{TrayArrowDownIcon:Ki},props:{currentFolder:{type:Object,required:!0}},setup(){const{currentView:e}=ge();return{currentView:e}},data:()=>({dragover:!1}),computed:{canUpload(){return this.currentFolder&&!!(this.currentFolder.permissions&a.aX.CREATE)},isQuotaExceeded(){return 0===this.currentFolder?.attributes?.["quota-available-bytes"]},cantUploadLabel(){return this.isQuotaExceeded?this.t("files","Your have used your space quota and cannot upload files anymore"):this.canUpload?null:this.t("files","You don’t have permission to upload or create files here")},resetDragOver(){return Ti()((()=>{this.dragover=!1}),3e3)}},mounted(){const e=window.document.getElementById("app-content-vue");e.addEventListener("dragover",this.onDragOver),e.addEventListener("dragleave",this.onDragLeave),e.addEventListener("drop",this.onContentDrop)},beforeDestroy(){const e=window.document.getElementById("app-content-vue");e.removeEventListener("dragover",this.onDragOver),e.removeEventListener("dragleave",this.onDragLeave),e.removeEventListener("drop",this.onContentDrop)},methods:{onDragOver(e){e.preventDefault();const t=e.dataTransfer?.types.includes("Files");t&&(this.dragover=!0,this.resetDragOver())},onDragLeave(e){const t=e.currentTarget;t?.contains(e.relatedTarget??e.target)||this.dragover&&(this.dragover=!1,this.resetDragOver.clear())},onContentDrop(e){P.debug("Drag and drop cancelled, dropped on empty space",{event:e}),e.preventDefault(),this.dragover&&(this.dragover=!1,this.resetDragOver.clear())},async onDrop(e){if(this.cantUploadLabel)return void(0,N.Qg)(this.cantUploadLabel);if(this.$el.querySelector("tbody")?.contains(e.target))return;e.preventDefault(),e.stopPropagation();const t=[...e.dataTransfer?.items||[]],s=await Et(t),i=await(this.currentView?.getContents(this.currentFolder.path)),n=i?.folder;if(!n)return void(0,N.Qg)(this.t("files","Target folder does not exist any more"));if(e.button)return;P.debug("Dropped",{event:e,folder:n,fileTree:s});const a=(await Ut(s,n,i.contents)).findLast((e=>e.status!==Ne.S.FAILED&&!e.file.webkitRelativePath.includes("/")&&e.response?.headers?.["oc-fileid"]&&2===e.source.replace(n.source,"").split("/").length));if(void 0!==a){P.debug("Scrolling to last upload in current folder",{lastUpload:a});const e={path:this.$route.path,params:{...this.$route.params,fileid:String(a.response.headers["oc-fileid"])},query:{...this.$route.query}};delete e.query.openfile,this.$router.push(e)}this.dragover=!1,this.resetDragOver.clear()},t:A.Tl}});var Ji=i(81602),Xi={};Xi.styleTagTransform=Y(),Xi.setAttributes=W(),Xi.insert=V().bind(null,"head"),Xi.domAPI=j(),Xi.insertStyleElement=q(),O()(Ji.A,Xi),Ji.A&&Ji.A.locals&&Ji.A.locals;const Zi=(0,b.A)(Qi,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("div",{directives:[{name:"show",rawName:"v-show",value:e.dragover,expression:"dragover"}],staticClass:"files-list__drag-drop-notice",attrs:{"data-cy-files-drag-drop-area":""},on:{drop:e.onDrop}},[t("div",{staticClass:"files-list__drag-drop-notice-wrapper"},[e.canUpload&&!e.isQuotaExceeded?[t("TrayArrowDownIcon",{attrs:{size:48}}),e._v(" "),t("h3",{staticClass:"files-list-drag-drop-notice__title"},[e._v("\n\t\t\t\t"+e._s(e.t("files","Drag and drop files here to upload"))+"\n\t\t\t")])]:[t("h3",{staticClass:"files-list-drag-drop-notice__title"},[e._v("\n\t\t\t\t"+e._s(e.cantUploadLabel)+"\n\t\t\t")])]],2)])}),[],!1,null,"48abd828",null).exports;const en=void 0!==(0,Te.F)()?.files_sharing,tn=(0,o.pM)({name:"FilesList",components:{BreadCrumbs:Ot,DragAndDropNotice:Zi,FilesListVirtual:Gi,LinkIcon:Ie.A,ListViewIcon:Be,NcAppContent:ze.A,NcActions:De.A,NcActionButton:Oe.A,NcButton:Re.A,NcEmptyContent:je.A,NcIconSvgWrapper:ue.A,NcLoadingIcon:Me.A,PlusIcon:Ve.A,AccountPlusIcon:We,UploadPicker:Ne.U,ViewGridIcon:qe,IconAlertCircleOutline:Fe.A,IconReload:Ue},mixins:[hi],props:{isPublic:{type:Boolean,default:!1}},setup(){const e=at(),t=Ce(),s=nt(),i=rt(),n=lt(),a=re(),r=pe(),{currentView:o}=ge(),l=Ze(),{directory:d,fileId:m}=et(),c=(0,L.C)("core","config",[])["enable_non-accessible_features"]??!0,u=(0,L.C)("files","forbiddenCharacters",[]);return{currentView:o,directory:d,fileId:m,fileListWidth:l,t:A.Tl,filesStore:e,filtersStore:t,pathsStore:s,selectionStore:i,uploaderStore:n,userConfigStore:a,viewConfigStore:r,enableGridView:c,forbiddenCharacters:u,ShareType:Le.I}},data:()=>({loading:!0,error:null,promise:null,dirContentsFiltered:[]}),computed:{getContent(){const e=this.currentView;return async t=>{const s=(0,Se.normalize)(`${this.currentFolder?.path??""}/${t??""}`),i=this.filesStore.getNodesByPath(e.id,s);return i.length>0?i:(await e.getContents(s)).contents}},userConfig(){return this.userConfigStore.userConfig},pageHeading(){const e=this.currentView?.name??(0,A.Tl)("files","Files");return void 0===this.currentFolder||"/"===this.directory?e:`${this.currentFolder.displayname} - ${e}`},currentFolder(){if(!this.currentView?.id)return;if("/"===this.directory)return this.filesStore.getRoot(this.currentView.id);const e=this.pathsStore.getPath(this.currentView.id,this.directory);return void 0!==e?this.filesStore.getNode(e):void 0},dirContents(){return(this.currentFolder?._children||[]).map(this.filesStore.getNode).filter((e=>!!e))},dirContentsSorted(){if(!this.currentView)return[];const e=(this.currentView?.columns||[]).find((e=>e.id===this.sortingMode));if(e?.sort&&"function"==typeof e.sort){const t=[...this.dirContentsFiltered].sort(e.sort);return this.isAscSorting?t:t.reverse()}return(0,a.ur)(this.dirContentsFiltered,{sortFavoritesFirst:this.userConfig.sort_favorites_first,sortFoldersFirst:this.userConfig.sort_folders_first,sortingMode:this.sortingMode,sortingOrder:this.isAscSorting?"asc":"desc"})},isEmptyDir(){return 0===this.dirContents.length},isRefreshing(){return void 0!==this.currentFolder&&!this.isEmptyDir&&this.loading},toPreviousDir(){const e=this.directory.split("/").slice(0,-1).join("/")||"/";return{...this.$route,query:{dir:e}}},shareTypesAttributes(){if(this.currentFolder?.attributes?.["share-types"])return Object.values(this.currentFolder?.attributes?.["share-types"]||{}).flat()},shareButtonLabel(){return this.shareTypesAttributes?this.shareButtonType===Le.I.Link?(0,A.Tl)("files","Shared by link"):(0,A.Tl)("files","Shared"):(0,A.Tl)("files","Share")},shareButtonType(){return this.shareTypesAttributes?this.shareTypesAttributes.some((e=>e===Le.I.Link))?Le.I.Link:Le.I.User:null},gridViewButtonLabel(){return this.userConfig.grid_view?(0,A.Tl)("files","Switch to list view"):(0,A.Tl)("files","Switch to grid view")},canUpload(){return this.currentFolder&&!!(this.currentFolder.permissions&a.aX.CREATE)},isQuotaExceeded(){return 0===this.currentFolder?.attributes?.["quota-available-bytes"]},cantUploadLabel(){return this.isQuotaExceeded?(0,A.Tl)("files","Your have used your space quota and cannot upload files anymore"):(0,A.Tl)("files","You don’t have permission to upload or create files here")},canShare(){return en&&!this.isPublic&&this.currentFolder&&!!(this.currentFolder.permissions&a.aX.SHARE)},filtersChanged(){return this.filtersStore.filtersChanged},showCustomEmptyView(){return!this.loading&&this.isEmptyDir&&void 0!==this.currentView?.emptyView},enabledFileListActions(){const e=(0,a.g5)().filter((e=>void 0===e.enabled||e.enabled(this.currentView,this.dirContents,{folder:this.currentFolder}))).toSorted(((e,t)=>e.order-t.order));return e}},watch:{pageHeading(){document.title=`${this.pageHeading} - ${(0,Te.F)().theming?.productName??"Nextcloud"}`},showCustomEmptyView(e){e&&this.$nextTick((()=>{const e=this.$refs.customEmptyView;this.currentView.emptyView(e)}))},currentView(e,t){e?.id!==t?.id&&(P.debug("View changed",{newView:e,oldView:t}),this.selectionStore.reset(),this.fetchContent())},directory(e,t){P.debug("Directory changed",{newDir:e,oldDir:t}),this.selectionStore.reset(),window.OCA.Files.Sidebar?.close&&window.OCA.Files.Sidebar.close(),this.fetchContent();const s=this.$refs?.filesListVirtual;s?.$el&&(s.$el.scrollTop=0)},dirContents(e){P.debug("Directory contents changed",{view:this.currentView,folder:this.currentFolder,contents:e}),(0,v.Ic)("files:list:updated",{view:this.currentView,folder:this.currentFolder,contents:e}),this.filterDirContent()},filtersChanged(){this.filtersChanged&&(this.filterDirContent(),this.filtersStore.filtersChanged=!1)}},mounted(){this.filtersStore.init(),this.fetchContent(),(0,v.B1)("files:node:deleted",this.onNodeDeleted),(0,v.B1)("files:node:updated",this.onUpdatedNode),(0,v.B1)("files:config:updated",this.fetchContent)},unmounted(){(0,v.al)("files:node:deleted",this.onNodeDeleted),(0,v.al)("files:node:updated",this.onUpdatedNode),(0,v.al)("files:config:updated",this.fetchContent)},methods:{async fetchContent(){this.loading=!0,this.error=null;const e=this.directory,t=this.currentView;if(t){this.promise&&"cancel"in this.promise&&(this.promise.cancel(),P.debug("Cancelled previous ongoing fetch")),this.promise=t.getContents(e);try{const{folder:s,contents:i}=await this.promise;P.debug("Fetched contents",{dir:e,folder:s,contents:i}),this.filesStore.updateNodes(i),this.$set(s,"_children",i.map((e=>e.source))),"/"===e?this.filesStore.setRoot({service:t.id,root:s}):s.fileid?(this.filesStore.updateNodes([s]),this.pathsStore.addPath({service:t.id,source:s.source,path:e})):P.fatal("Invalid root folder returned",{dir:e,folder:s,currentView:t}),i.filter((e=>"folder"===e.type)).forEach((s=>{this.pathsStore.addPath({service:t.id,source:s.source,path:(0,Se.join)(e,s.basename)})}))}catch(e){P.error("Error while fetching content",{error:e}),this.error=function(e){if(e instanceof Error){if(function(e){return e instanceof Error&&"status"in e&&"response"in e}(e)){const t=e.status||e.response?.status||0;if([400,404,405].includes(t))return(0,A.t)("files","Folder not found");if(403===t)return(0,A.t)("files","This operation is forbidden");if(500===t)return(0,A.t)("files","This directory is unavailable, please check the logs or contact the administrator");if(503===t)return(0,A.t)("files","Storage is temporarily not available")}return(0,A.t)("files","Unexpected error: {error}",{error:e.message})}return(0,A.t)("files","Unknown error")}(e)}finally{this.loading=!1}}else P.debug("The current view doesn't exists or is not ready.",{currentView:t})},onNodeDeleted(e){e.fileid&&e.fileid===this.fileId&&(e.fileid===this.currentFolder?.fileid?window.OCP.Files.Router.goToRoute(null,{view:this.currentView.id},{dir:this.currentFolder?.dirname??"/"}):window.OCP.Files.Router.goToRoute(null,{...this.$route.params,fileid:void 0},{...this.$route.query,openfile:void 0}))},onUpload(e){(0,Se.dirname)(e.source)===this.currentFolder.source&&this.fetchContent()},async onUploadFail(e){const t=e.response?.status||0;if(e.status!==Ne.S.CANCELLED)if(507!==t)if(404!==t&&409!==t)if(403!==t){if("string"==typeof e.response?.data)try{const t=(new DOMParser).parseFromString(e.response.data,"text/xml"),s=t.getElementsByTagName("s:message")[0]?.textContent??"";if(""!==s.trim())return void(0,N.Qg)((0,A.Tl)("files","Error during upload: {message}",{message:s}))}catch(e){P.error("Could not parse message",{error:e})}0===t?(0,N.Qg)((0,A.Tl)("files","Unknown error during upload")):(0,N.Qg)((0,A.Tl)("files","Error during upload, status code {status}",{status:t}))}else(0,N.Qg)((0,A.Tl)("files","Operation is blocked by access control"));else(0,N.Qg)((0,A.Tl)("files","Target folder does not exist any more"));else(0,N.Qg)((0,A.Tl)("files","Not enough free space"));else(0,N.I9)((0,A.Tl)("files","Upload was cancelled by user"))},onUpdatedNode(e){e?.fileid===this.currentFolder?.fileid&&this.fetchContent()},openSharingSidebar(){this.currentFolder?(window?.OCA?.Files?.Sidebar?.setActiveTab&&window.OCA.Files.Sidebar.setActiveTab("sharing"),Ye.exec(this.currentFolder,this.currentView,this.currentFolder.path)):P.debug("No current folder found for opening sharing sidebar")},toggleGridView(){this.userConfigStore.update("grid_view",!this.userConfig.grid_view)},filterDirContent(){let e=this.dirContents;for(const t of this.filtersStore.sortedFilters)e=t.filter(e);this.dirContentsFiltered=e}}}),sn=tn;var nn=i(34704),an={};an.styleTagTransform=Y(),an.setAttributes=W(),an.insert=V().bind(null,"head"),an.domAPI=j(),an.insertStyleElement=q(),O()(nn.A,an),nn.A&&nn.A.locals&&nn.A.locals;var rn=(0,b.A)(sn,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("NcAppContent",{attrs:{"page-heading":e.pageHeading,"data-cy-files-content":""}},[t("div",{staticClass:"files-list__header",class:{"files-list__header--public":e.isPublic}},[t("BreadCrumbs",{attrs:{path:e.directory},on:{reload:e.fetchContent},scopedSlots:e._u([{key:"actions",fn:function(){return[e.canShare&&e.fileListWidth>=512?t("NcButton",{staticClass:"files-list__header-share-button",class:{"files-list__header-share-button--shared":e.shareButtonType},attrs:{"aria-label":e.shareButtonLabel,title:e.shareButtonLabel,type:"tertiary"},on:{click:e.openSharingSidebar},scopedSlots:e._u([{key:"icon",fn:function(){return[e.shareButtonType===e.ShareType.Link?t("LinkIcon"):t("AccountPlusIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,4106306959)}):e._e(),e._v(" "),!e.canUpload||e.isQuotaExceeded?t("NcButton",{staticClass:"files-list__header-upload-button--disabled",attrs:{"aria-label":e.cantUploadLabel,title:e.cantUploadLabel,disabled:!0,type:"secondary"},scopedSlots:e._u([{key:"icon",fn:function(){return[t("PlusIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2953566425)},[e._v("\n\t\t\t\t\t"+e._s(e.t("files","New"))+"\n\t\t\t\t")]):e.currentFolder?t("UploadPicker",{staticClass:"files-list__header-upload-button",attrs:{"allow-folders":"",content:e.getContent,destination:e.currentFolder,"forbidden-characters":e.forbiddenCharacters,multiple:""},on:{failed:e.onUploadFail,uploaded:e.onUpload}}):e._e(),e._v(" "),t("NcActions",{attrs:{inline:1,"force-name":""}},e._l(e.enabledFileListActions,(function(s){return t("NcActionButton",{key:s.id,attrs:{"close-after-click":""},on:{click:()=>s.exec(e.currentView,e.dirContents,{folder:e.currentFolder})},scopedSlots:e._u([{key:"icon",fn:function(){return[t("NcIconSvgWrapper",{attrs:{svg:s.iconSvgInline(e.currentView)}})]},proxy:!0}],null,!0)},[e._v("\n\t\t\t\t\t\t"+e._s(s.displayName(e.currentView))+"\n\t\t\t\t\t")])})),1)]},proxy:!0}])}),e._v(" "),e.isRefreshing?t("NcLoadingIcon",{staticClass:"files-list__refresh-icon"}):e._e(),e._v(" "),e.fileListWidth>=512&&e.enableGridView?t("NcButton",{staticClass:"files-list__header-grid-button",attrs:{"aria-label":e.gridViewButtonLabel,title:e.gridViewButtonLabel,type:"tertiary"},on:{click:e.toggleGridView},scopedSlots:e._u([{key:"icon",fn:function(){return[e.userConfig.grid_view?t("ListViewIcon"):t("ViewGridIcon")]},proxy:!0}],null,!1,1682960703)}):e._e()],1),e._v(" "),!e.loading&&e.canUpload?t("DragAndDropNotice",{attrs:{"current-folder":e.currentFolder}}):e._e(),e._v(" "),e.loading&&!e.isRefreshing?t("NcLoadingIcon",{staticClass:"files-list__loading-icon",attrs:{size:38,name:e.t("files","Loading current folder")}}):!e.loading&&e.isEmptyDir?[e.error?t("NcEmptyContent",{attrs:{name:e.error,"data-cy-files-content-error":""},scopedSlots:e._u([{key:"action",fn:function(){return[t("NcButton",{attrs:{type:"secondary"},on:{click:e.fetchContent},scopedSlots:e._u([{key:"icon",fn:function(){return[t("IconReload",{attrs:{size:20}})]},proxy:!0}],null,!1,3448385010)},[e._v("\n\t\t\t\t\t"+e._s(e.t("files","Retry"))+"\n\t\t\t\t")])]},proxy:!0},{key:"icon",fn:function(){return[t("IconAlertCircleOutline")]},proxy:!0}],null,!1,2673163798)}):e.currentView?.emptyView?t("div",{staticClass:"files-list__empty-view-wrapper"},[t("div",{ref:"customEmptyView"})]):t("NcEmptyContent",{attrs:{name:e.currentView?.emptyTitle||e.t("files","No files in here"),description:e.currentView?.emptyCaption||e.t("files","Upload some content or sync with your devices!"),"data-cy-files-content-empty":""},scopedSlots:e._u(["/"!==e.directory?{key:"action",fn:function(){return[e.canUpload&&!e.isQuotaExceeded?t("UploadPicker",{staticClass:"files-list__header-upload-button",attrs:{"allow-folders":"",content:e.getContent,destination:e.currentFolder,"forbidden-characters":e.forbiddenCharacters,multiple:""},on:{failed:e.onUploadFail,uploaded:e.onUpload}}):t("NcButton",{attrs:{to:e.toPreviousDir,type:"primary"}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files","Go back"))+"\n\t\t\t\t")])]},proxy:!0}:null,{key:"icon",fn:function(){return[t("NcIconSvgWrapper",{attrs:{svg:e.currentView.icon}})]},proxy:!0}],null,!0)})]:t("FilesListVirtual",{ref:"filesListVirtual",attrs:{"current-folder":e.currentFolder,"current-view":e.currentView,nodes:e.dirContentsSorted}})],2)}),[],!1,null,"53e05d31",null);const on=rn.exports,ln=(0,o.pM)({name:"FilesApp",components:{NcContent:w.A,FilesList:on,Navigation:ke},setup:()=>({isPublic:(0,h.f)()})}),dn=(0,b.A)(ln,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("NcContent",{attrs:{"app-name":"files"}},[e.isPublic?e._e():t("Navigation"),e._v(" "),t("FilesList",{attrs:{"is-public":e.isPublic}})],1)}),[],!1,null,null,null).exports;if(i.nc=(0,n.aV)(),window.OCA.Files=window.OCA.Files??{},window.OCP.Files=window.OCP.Files??{},!window.OCP.Files.Router){const e=new f(g);Object.assign(window.OCP.Files,{Router:e})}o.Ay.use(r.R2);const mn=o.Ay.observable((0,a.bh)());o.Ay.prototype.$navigation=mn;const cn=new class{constructor(){(function(e,t,s){(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var s=t.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s})(this,"_settings",void 0),this._settings=[],console.debug("OCA.Files.Settings initialized")}register(e){return this._settings.filter((t=>t.name===e.name)).length>0?(console.error("A setting with the same name is already registered"),!1):(this._settings.push(e),!0)}get settings(){return this._settings}};Object.assign(window.OCA.Files,{Settings:cn}),Object.assign(window.OCA.Files.Settings,{Setting:class{constructor(e,t){let{el:s,open:i,close:n}=t;p(this,"_close",void 0),p(this,"_el",void 0),p(this,"_name",void 0),p(this,"_open",void 0),this._name=e,this._el=s,this._open=i,this._close=n,"function"!=typeof this._open&&(this._open=()=>{}),"function"!=typeof this._close&&(this._close=()=>{})}get name(){return this._name}get el(){return this._el}get open(){return this._open}get close(){return this._close}}}),new(o.Ay.extend(dn))({router:window.OCP.Files.Router._router,pinia:l}).$mount("#content")},18407:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".files-list__breadcrumbs[data-v-61601fd4]{flex:1 1 100% !important;width:100%;height:100%;margin-block:0;margin-inline:10px;min-width:0}.files-list__breadcrumbs[data-v-61601fd4] a{cursor:pointer !important}.files-list__breadcrumbs--with-progress[data-v-61601fd4]{flex-direction:column !important;align-items:flex-start !important}","",{version:3,sources:["webpack://./apps/files/src/components/BreadCrumbs.vue"],names:[],mappings:"AACA,0CAEC,wBAAA,CACA,UAAA,CACA,WAAA,CACA,cAAA,CACA,kBAAA,CACA,WAAA,CAGC,6CACC,yBAAA,CAIF,yDACC,gCAAA,CACA,iCAAA",sourceRoot:""}]);const o=r},81602:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".files-list__drag-drop-notice[data-v-48abd828]{display:flex;align-items:center;justify-content:center;width:100%;min-height:113px;margin:0;user-select:none;color:var(--color-text-maxcontrast);background-color:var(--color-main-background);border-color:#000}.files-list__drag-drop-notice h3[data-v-48abd828]{margin-inline-start:16px;color:inherit}.files-list__drag-drop-notice-wrapper[data-v-48abd828]{display:flex;align-items:center;justify-content:center;height:15vh;max-height:70%;padding:0 5vw;border:2px var(--color-border-dark) dashed;border-radius:var(--border-radius-large)}","",{version:3,sources:["webpack://./apps/files/src/components/DragAndDropNotice.vue"],names:[],mappings:"AACA,+CACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CAEA,gBAAA,CACA,QAAA,CACA,gBAAA,CACA,mCAAA,CACA,6CAAA,CACA,iBAAA,CAEA,kDACC,wBAAA,CACA,aAAA,CAGD,uDACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,WAAA,CACA,cAAA,CACA,aAAA,CACA,0CAAA,CACA,wCAAA",sourceRoot:""}]);const o=r},20768:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".files-list-drag-image{position:absolute;top:-9999px;inset-inline-start:-9999px;display:flex;overflow:hidden;align-items:center;height:44px;padding:6px 12px;background:var(--color-main-background)}.files-list-drag-image__icon,.files-list-drag-image .files-list__row-icon{display:flex;overflow:hidden;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--border-radius)}.files-list-drag-image__icon{overflow:visible;margin-inline-end:12px}.files-list-drag-image__icon img{max-width:100%;max-height:100%}.files-list-drag-image__icon .material-design-icon{color:var(--color-text-maxcontrast)}.files-list-drag-image__icon .material-design-icon.folder-icon{color:var(--color-primary-element)}.files-list-drag-image__icon>span{display:flex}.files-list-drag-image__icon>span .files-list__row-icon+.files-list__row-icon{margin-top:6px;margin-inline-start:-26px}.files-list-drag-image__icon>span .files-list__row-icon+.files-list__row-icon+.files-list__row-icon{margin-top:12px}.files-list-drag-image__icon>span:not(:empty)+*{display:none}.files-list-drag-image__name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}","",{version:3,sources:["webpack://./apps/files/src/components/DragAndDropPreview.vue"],names:[],mappings:"AAIA,uBACC,iBAAA,CACA,WAAA,CACA,0BAAA,CACA,YAAA,CACA,eAAA,CACA,kBAAA,CACA,WAAA,CACA,gBAAA,CACA,uCAAA,CAEA,0EAEC,YAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,kCAAA,CAGD,6BACC,gBAAA,CACA,sBAAA,CAEA,iCACC,cAAA,CACA,eAAA,CAGD,mDACC,mCAAA,CACA,+DACC,kCAAA,CAKF,kCACC,YAAA,CAGA,8EACC,cA9CU,CA+CV,yBAAA,CACA,oGACC,eAAA,CAKF,gDACC,YAAA,CAKH,6BACC,eAAA,CACA,kBAAA,CACA,sBAAA",sourceRoot:""}]);const o=r},4575:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".favorite-marker-icon[data-v-f2d0cf6e]{color:var(--color-favorite);min-width:unset !important;min-height:unset !important}.favorite-marker-icon[data-v-f2d0cf6e] svg{width:26px !important;height:26px !important;max-width:unset !important;max-height:unset !important}.favorite-marker-icon[data-v-f2d0cf6e] svg path{stroke:var(--color-main-background);stroke-width:8px;stroke-linejoin:round;paint-order:stroke}","",{version:3,sources:["webpack://./apps/files/src/components/FileEntry/FavoriteIcon.vue"],names:[],mappings:"AACA,uCACC,2BAAA,CAEA,0BAAA,CACG,2BAAA,CAGF,4CAEC,qBAAA,CACA,sBAAA,CAGA,0BAAA,CACA,2BAAA,CAGA,iDACC,mCAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA",sourceRoot:""}]);const o=r},25851:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,"main.app-content[style*=mouse-pos-x] .v-popper__popper{transform:translate3d(var(--mouse-pos-x), var(--mouse-pos-y), 0px) !important}main.app-content[style*=mouse-pos-x] .v-popper__popper[data-popper-placement=top]{transform:translate3d(var(--mouse-pos-x), calc(var(--mouse-pos-y) - 50vh + 34px), 0px) !important}main.app-content[style*=mouse-pos-x] .v-popper__popper .v-popper__arrow-container{display:none}","",{version:3,sources:["webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue"],names:[],mappings:"AAGA,uDACC,6EAAA,CAGA,kFAEC,iGAAA,CAGD,kFACC,YAAA",sourceRoot:""}]);const o=r},93655:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,"[data-v-1d682792] .button-vue--icon-and-text .button-vue__text{color:var(--color-primary-element)}[data-v-1d682792] .button-vue--icon-and-text .button-vue__icon{color:var(--color-primary-element)}","",{version:3,sources:["webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue"],names:[],mappings:"AAEC,+DACC,kCAAA,CAED,+DACC,kCAAA",sourceRoot:""}]);const o=r},42342:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,"button.files-list__row-name-link[data-v-ce4c1580]{background-color:unset;border:none;font-weight:normal}button.files-list__row-name-link[data-v-ce4c1580]:active{background-color:unset !important}","",{version:3,sources:["webpack://./apps/files/src/components/FileEntry/FileEntryName.vue"],names:[],mappings:"AACA,kDACC,sBAAA,CACA,WAAA,CACA,kBAAA,CAEA,yDAEC,iCAAA",sourceRoot:""}]);const o=r},3085:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".file-list-filters[data-v-bd0c8440]{display:flex;flex-direction:column;gap:var(--default-grid-baseline);height:100%;width:100%}.file-list-filters__filter[data-v-bd0c8440]{display:flex;align-items:start;justify-content:start;gap:calc(var(--default-grid-baseline, 4px)*2)}.file-list-filters__filter>*[data-v-bd0c8440]{flex:0 1 fit-content}.file-list-filters__active[data-v-bd0c8440]{display:flex;flex-direction:row;gap:calc(var(--default-grid-baseline, 4px)*2)}","",{version:3,sources:["webpack://./apps/files/src/components/FileListFilters.vue"],names:[],mappings:"AACA,oCACC,YAAA,CACA,qBAAA,CACA,gCAAA,CACA,WAAA,CACA,UAAA,CAEA,4CACC,YAAA,CACA,iBAAA,CACA,qBAAA,CACA,6CAAA,CAEA,8CACC,oBAAA,CAIF,4CACC,YAAA,CACA,kBAAA,CACA,6CAAA",sourceRoot:""}]);const o=r},55498:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,"tr[data-v-4c69fc7c]{margin-bottom:max(25vh,var(--body-container-margin));border-top:1px solid var(--color-border);background-color:rgba(0,0,0,0) !important;border-bottom:none !important}tr td[data-v-4c69fc7c]{user-select:none;color:var(--color-text-maxcontrast) !important}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListTableFooter.vue"],names:[],mappings:"AAEA,oBACC,oDAAA,CACA,wCAAA,CAEA,yCAAA,CACA,6BAAA,CAEA,uBACC,gBAAA,CAEA,8CAAA",sourceRoot:""}]);const o=r},37617:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".files-list__column[data-v-4daa9603]{user-select:none;color:var(--color-text-maxcontrast) !important}.files-list__column--sortable[data-v-4daa9603]{cursor:pointer}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListTableHeader.vue"],names:[],mappings:"AACA,qCACC,gBAAA,CAEA,8CAAA,CAEA,+CACC,cAAA",sourceRoot:""}]);const o=r},39513:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".files-list__row-actions-batch[data-v-6c741170]{flex:1 1 100% !important;max-width:100%}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListTableHeaderActions.vue"],names:[],mappings:"AACA,gDACC,wBAAA,CACA,cAAA",sourceRoot:""}]);const o=r},64800:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".files-list__column-sort-button[data-v-6d7680f0]{margin:0 calc(var(--button-padding, var(--cell-margin))*-1);min-width:calc(100% - 3*var(--cell-margin)) !important}.files-list__column-sort-button-text[data-v-6d7680f0]{color:var(--color-text-maxcontrast);font-weight:normal}.files-list__column-sort-button-icon[data-v-6d7680f0]{color:var(--color-text-maxcontrast);opacity:0;transition:opacity var(--animation-quick);inset-inline-start:-10px}.files-list__column-sort-button--size .files-list__column-sort-button-icon[data-v-6d7680f0]{inset-inline-start:10px}.files-list__column-sort-button--active .files-list__column-sort-button-icon[data-v-6d7680f0],.files-list__column-sort-button:hover .files-list__column-sort-button-icon[data-v-6d7680f0],.files-list__column-sort-button:focus .files-list__column-sort-button-icon[data-v-6d7680f0],.files-list__column-sort-button:active .files-list__column-sort-button-icon[data-v-6d7680f0]{opacity:1}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListTableHeaderButton.vue"],names:[],mappings:"AACA,iDAEC,2DAAA,CACA,sDAAA,CAEA,sDACC,mCAAA,CACA,kBAAA,CAGD,sDACC,mCAAA,CACA,SAAA,CACA,yCAAA,CACA,wBAAA,CAGD,4FACC,uBAAA,CAGD,mXAIC,SAAA",sourceRoot:""}]);const o=r},1573:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".files-list[data-v-2c0fe312]{--row-height: 55px;--cell-margin: 14px;--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);--checkbox-size: 24px;--clickable-area: var(--default-clickable-area);--icon-preview-size: 32px;--fixed-block-start-position: var(--default-clickable-area);overflow:auto;height:100%;will-change:scroll-position}.files-list[data-v-2c0fe312]:has(.file-list-filters__active){--fixed-block-start-position: calc(var(--default-clickable-area) + var(--default-grid-baseline) + var(--clickable-area-small))}.files-list[data-v-2c0fe312] tbody{will-change:padding;contain:layout paint style;display:flex;flex-direction:column;width:100%;position:relative}.files-list[data-v-2c0fe312] tbody tr{contain:strict}.files-list[data-v-2c0fe312] tbody tr:hover,.files-list[data-v-2c0fe312] tbody tr:focus{background-color:var(--color-background-dark)}.files-list[data-v-2c0fe312] .files-list__before{display:flex;flex-direction:column}.files-list[data-v-2c0fe312] .files-list__selected{padding-inline-end:12px;white-space:nowrap}.files-list[data-v-2c0fe312] .files-list__table{display:block}.files-list[data-v-2c0fe312] .files-list__table.files-list__table--with-thead-overlay{margin-block-start:calc(-1*var(--row-height))}.files-list[data-v-2c0fe312] .files-list__filters{position:sticky;top:0;background-color:var(--color-main-background);z-index:10;padding-inline:var(--row-height) var(--default-grid-baseline, 4px);height:var(--fixed-block-start-position);width:100%}.files-list[data-v-2c0fe312] .files-list__thead-overlay{position:sticky;top:var(--fixed-block-start-position);margin-inline-start:var(--row-height);z-index:20;display:flex;align-items:center;background-color:var(--color-main-background);border-block-end:1px solid var(--color-border);height:var(--row-height)}.files-list[data-v-2c0fe312] .files-list__thead,.files-list[data-v-2c0fe312] .files-list__tfoot{display:flex;flex-direction:column;width:100%;background-color:var(--color-main-background)}.files-list[data-v-2c0fe312] .files-list__thead{position:sticky;z-index:10;top:var(--fixed-block-start-position)}.files-list[data-v-2c0fe312] tr{position:relative;display:flex;align-items:center;width:100%;border-block-end:1px solid var(--color-border);box-sizing:border-box;user-select:none;height:var(--row-height)}.files-list[data-v-2c0fe312] td,.files-list[data-v-2c0fe312] th{display:flex;align-items:center;flex:0 0 auto;justify-content:start;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}.files-list[data-v-2c0fe312] td span,.files-list[data-v-2c0fe312] th span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list[data-v-2c0fe312] .files-list__row--failed{position:absolute;display:block;top:0;inset-inline:0;bottom:0;opacity:.1;z-index:-1;background:var(--color-error)}.files-list[data-v-2c0fe312] .files-list__row-checkbox{justify-content:center}.files-list[data-v-2c0fe312] .files-list__row-checkbox .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list[data-v-2c0fe312] .files-list__row-checkbox .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list[data-v-2c0fe312] .files-list__row-checkbox .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list[data-v-2c0fe312] .files-list__row:hover,.files-list[data-v-2c0fe312] .files-list__row:focus,.files-list[data-v-2c0fe312] .files-list__row:active,.files-list[data-v-2c0fe312] .files-list__row--active,.files-list[data-v-2c0fe312] .files-list__row--dragover{background-color:var(--color-background-hover);--color-text-maxcontrast: var(--color-main-text)}.files-list[data-v-2c0fe312] .files-list__row:hover>*,.files-list[data-v-2c0fe312] .files-list__row:focus>*,.files-list[data-v-2c0fe312] .files-list__row:active>*,.files-list[data-v-2c0fe312] .files-list__row--active>*,.files-list[data-v-2c0fe312] .files-list__row--dragover>*{--color-border: var(--color-border-dark)}.files-list[data-v-2c0fe312] .files-list__row:hover .favorite-marker-icon svg path,.files-list[data-v-2c0fe312] .files-list__row:focus .favorite-marker-icon svg path,.files-list[data-v-2c0fe312] .files-list__row:active .favorite-marker-icon svg path,.files-list[data-v-2c0fe312] .files-list__row--active .favorite-marker-icon svg path,.files-list[data-v-2c0fe312] .files-list__row--dragover .favorite-marker-icon svg path{stroke:var(--color-background-hover)}.files-list[data-v-2c0fe312] .files-list__row--dragover *{pointer-events:none}.files-list[data-v-2c0fe312] .files-list__row-icon{position:relative;display:flex;overflow:visible;align-items:center;flex:0 0 var(--icon-preview-size);justify-content:center;width:var(--icon-preview-size);height:100%;margin-inline-end:var(--checkbox-padding);color:var(--color-primary-element)}.files-list[data-v-2c0fe312] .files-list__row-icon *{cursor:pointer}.files-list[data-v-2c0fe312] .files-list__row-icon>span{justify-content:flex-start}.files-list[data-v-2c0fe312] .files-list__row-icon>span:not(.files-list__row-icon-favorite) svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list[data-v-2c0fe312] .files-list__row-icon>span.folder-icon,.files-list[data-v-2c0fe312] .files-list__row-icon>span.folder-open-icon{margin:-3px}.files-list[data-v-2c0fe312] .files-list__row-icon>span.folder-icon svg,.files-list[data-v-2c0fe312] .files-list__row-icon>span.folder-open-icon svg{width:calc(var(--icon-preview-size) + 6px);height:calc(var(--icon-preview-size) + 6px)}.files-list[data-v-2c0fe312] .files-list__row-icon-preview-container{position:relative;overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius)}.files-list[data-v-2c0fe312] .files-list__row-icon-blurhash{position:absolute;inset-block-start:0;inset-inline-start:0;height:100%;width:100%;object-fit:cover}.files-list[data-v-2c0fe312] .files-list__row-icon-preview{object-fit:contain;object-position:center;height:100%;width:100%}.files-list[data-v-2c0fe312] .files-list__row-icon-preview:not(.files-list__row-icon-preview--loaded){background:var(--color-loading-dark)}.files-list[data-v-2c0fe312] .files-list__row-icon-favorite{position:absolute;top:0px;inset-inline-end:-10px}.files-list[data-v-2c0fe312] .files-list__row-icon-overlay{position:absolute;max-height:calc(var(--icon-preview-size)*.5);max-width:calc(var(--icon-preview-size)*.5);color:var(--color-primary-element-text);margin-block-start:2px}.files-list[data-v-2c0fe312] .files-list__row-icon-overlay--file{color:var(--color-main-text);background:var(--color-main-background);border-radius:100%}.files-list[data-v-2c0fe312] .files-list__row-name{overflow:hidden;flex:1 1 auto}.files-list[data-v-2c0fe312] .files-list__row-name button.files-list__row-name-link{display:flex;align-items:center;text-align:start;width:100%;height:100%;min-width:0;margin:0;padding:0}.files-list[data-v-2c0fe312] .files-list__row-name button.files-list__row-name-link:focus-visible{outline:none !important}.files-list[data-v-2c0fe312] .files-list__row-name button.files-list__row-name-link:focus .files-list__row-name-text{outline:var(--border-width-input-focused) solid var(--color-main-text) !important;border-radius:var(--border-radius-element)}.files-list[data-v-2c0fe312] .files-list__row-name button.files-list__row-name-link:focus:not(:focus-visible) .files-list__row-name-text{outline:none !important}.files-list[data-v-2c0fe312] .files-list__row-name .files-list__row-name-text{color:var(--color-main-text);padding:var(--default-grid-baseline) calc(2*var(--default-grid-baseline));padding-inline-start:-10px;display:inline-flex}.files-list[data-v-2c0fe312] .files-list__row-name .files-list__row-name-ext{color:var(--color-text-maxcontrast);overflow:visible}.files-list[data-v-2c0fe312] .files-list__row-rename{width:100%;max-width:600px}.files-list[data-v-2c0fe312] .files-list__row-rename input{width:100%;margin-inline-start:-8px;padding:2px 6px;border-width:2px}.files-list[data-v-2c0fe312] .files-list__row-rename input:invalid{border-color:var(--color-error);color:red}.files-list[data-v-2c0fe312] .files-list__row-actions{width:auto}.files-list[data-v-2c0fe312] .files-list__row-actions~td,.files-list[data-v-2c0fe312] .files-list__row-actions~th{margin:0 var(--cell-margin)}.files-list[data-v-2c0fe312] .files-list__row-actions button .button-vue__text{font-weight:normal}.files-list[data-v-2c0fe312] .files-list__row-action--inline{margin-inline-end:7px}.files-list[data-v-2c0fe312] .files-list__row-mtime,.files-list[data-v-2c0fe312] .files-list__row-size{color:var(--color-text-maxcontrast)}.files-list[data-v-2c0fe312] .files-list__row-size{width:calc(var(--row-height)*1.5);justify-content:flex-end}.files-list[data-v-2c0fe312] .files-list__row-mtime{width:calc(var(--row-height)*2)}.files-list[data-v-2c0fe312] .files-list__row-column-custom{width:calc(var(--row-height)*2)}@media screen and (max-width: 512px){.files-list[data-v-2c0fe312] .files-list__filters{padding-inline:var(--default-grid-baseline, 4px)}}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListVirtual.vue"],names:[],mappings:"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",sourceRoot:""}]);const o=r},86745:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,'tbody.files-list__tbody.files-list__tbody--grid{--half-clickable-area: calc(var(--clickable-area) / 2);--item-padding: 16px;--icon-preview-size: 166px;--name-height: 32px;--mtime-height: 16px;--row-width: calc(var(--icon-preview-size) + var(--item-padding) * 2);--row-height: calc(var(--icon-preview-size) + var(--name-height) + var(--mtime-height) + var(--item-padding) * 2);--checkbox-padding: 0px;display:grid;grid-template-columns:repeat(auto-fill, var(--row-width));align-content:center;align-items:center;justify-content:space-around;justify-items:center}tbody.files-list__tbody.files-list__tbody--grid tr{display:flex;flex-direction:column;width:var(--row-width);height:var(--row-height);border:none;border-radius:var(--border-radius-large);padding:var(--item-padding)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-checkbox{position:absolute;z-index:9;top:calc(var(--item-padding)/2);inset-inline-start:calc(var(--item-padding)/2);overflow:hidden;--checkbox-container-size: 44px;width:var(--checkbox-container-size);height:var(--checkbox-container-size)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-checkbox .checkbox-radio-switch__content::after{content:"";width:16px;height:16px;position:absolute;inset-inline-start:50%;margin-inline-start:-8px;z-index:-1;background:var(--color-main-background)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-icon-favorite{position:absolute;top:0;inset-inline-end:0;display:flex;align-items:center;justify-content:center;width:var(--clickable-area);height:var(--clickable-area)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-name{display:flex;flex-direction:column;width:var(--icon-preview-size);height:calc(var(--icon-preview-size) + var(--name-height));overflow:visible}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-name span.files-list__row-icon{width:var(--icon-preview-size);height:var(--icon-preview-size)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-name .files-list__row-name-text{margin:0;margin-inline-start:-4px;padding:0px 4px}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-mtime{width:var(--icon-preview-size);height:var(--mtime-height);font-size:calc(var(--default-font-size) - 4px)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-actions{position:absolute;inset-inline-end:calc(var(--half-clickable-area)/2);inset-block-end:calc(var(--mtime-height)/2);width:var(--clickable-area);height:var(--clickable-area)}',"",{version:3,sources:["webpack://./apps/files/src/components/FilesListVirtual.vue"],names:[],mappings:"AAEA,gDACC,sDAAA,CACA,oBAAA,CACA,0BAAA,CACA,mBAAA,CACA,oBAAA,CACA,qEAAA,CACA,iHAAA,CACA,uBAAA,CACA,YAAA,CACA,yDAAA,CAEA,oBAAA,CACA,kBAAA,CACA,4BAAA,CACA,oBAAA,CAEA,mDACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,wBAAA,CACA,WAAA,CACA,wCAAA,CACA,2BAAA,CAID,0EACC,iBAAA,CACA,SAAA,CACA,+BAAA,CACA,8CAAA,CACA,eAAA,CACA,+BAAA,CACA,oCAAA,CACA,qCAAA,CAGA,iHACC,UAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,sBAAA,CACA,wBAAA,CACA,UAAA,CACA,uCAAA,CAKF,+EACC,iBAAA,CACA,KAAA,CACA,kBAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,2BAAA,CACA,4BAAA,CAGD,sEACC,YAAA,CACA,qBAAA,CACA,8BAAA,CACA,0DAAA,CAEA,gBAAA,CAEA,gGACC,8BAAA,CACA,+BAAA,CAGD,iGACC,QAAA,CAEA,wBAAA,CACA,eAAA,CAIF,uEACC,8BAAA,CACA,0BAAA,CACA,8CAAA,CAGD,yEACC,iBAAA,CACA,mDAAA,CACA,2CAAA,CACA,2BAAA,CACA,4BAAA",sourceRoot:""}]);const o=r},84877:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".app-navigation-entry__settings-quota[data-v-6ed9379e]{--app-navigation-quota-margin: calc((var(--default-clickable-area) - 24px) / 2)}.app-navigation-entry__settings-quota--not-unlimited[data-v-6ed9379e] .app-navigation-entry__name{line-height:1;margin-top:var(--app-navigation-quota-margin)}.app-navigation-entry__settings-quota progress[data-v-6ed9379e]{position:absolute;bottom:var(--app-navigation-quota-margin);margin-inline-start:var(--default-clickable-area);width:calc(100% - 1.5*var(--default-clickable-area))}","",{version:3,sources:["webpack://./apps/files/src/components/NavigationQuota.vue"],names:[],mappings:"AAEA,uDAEC,+EAAA,CAEA,kGACC,aAAA,CACA,6CAAA,CAGD,gEACC,iBAAA,CACA,yCAAA,CACA,iDAAA,CACA,oDAAA",sourceRoot:""}]);const o=r},34704:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".toast-loading-icon{margin-inline-start:-4px;min-width:26px}.app-content[data-v-53e05d31]{display:flex;overflow:hidden;flex-direction:column;max-height:100%;position:relative !important}.files-list__header[data-v-53e05d31]{display:flex;align-items:center;flex:0 0;max-width:100%;margin-block:var(--app-navigation-padding, 4px);margin-inline:calc(var(--default-clickable-area, 44px) + 2*var(--app-navigation-padding, 4px)) var(--app-navigation-padding, 4px)}.files-list__header--public[data-v-53e05d31]{margin-inline:0 var(--app-navigation-padding, 4px)}.files-list__header>*[data-v-53e05d31]{flex:0 0}.files-list__header-share-button[data-v-53e05d31]{color:var(--color-text-maxcontrast) !important}.files-list__header-share-button--shared[data-v-53e05d31]{color:var(--color-main-text) !important}.files-list__empty-view-wrapper[data-v-53e05d31]{display:flex;height:100%}.files-list__refresh-icon[data-v-53e05d31]{flex:0 0 var(--default-clickable-area);width:var(--default-clickable-area);height:var(--default-clickable-area)}.files-list__loading-icon[data-v-53e05d31]{margin:auto}","",{version:3,sources:["webpack://./apps/files/src/views/FilesList.vue"],names:[],mappings:"AACA,oBAEC,wBAAA,CAEA,cAAA,CAGD,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CACA,4BAAA,CAIA,qCACC,YAAA,CACA,kBAAA,CAEA,QAAA,CACA,cAAA,CAEA,+CAAA,CACA,iIAAA,CAEA,6CAEC,kDAAA,CAGD,uCAGC,QAAA,CAGD,kDACC,8CAAA,CAEA,0DACC,uCAAA,CAKH,iDACC,YAAA,CACA,WAAA,CAGD,2CACC,sCAAA,CACA,mCAAA,CACA,oCAAA,CAGD,2CACC,WAAA",sourceRoot:""}]);const o=r},16912:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".app-navigation[data-v-008142f0] .app-navigation-entry.active .button-vue.icon-collapse:not(:hover){color:var(--color-primary-element-text)}.app-navigation>ul.app-navigation__list[data-v-008142f0]{padding-bottom:var(--default-grid-baseline, 4px)}.app-navigation-entry__settings[data-v-008142f0]{height:auto !important;overflow:hidden !important;padding-top:0 !important;flex:0 0 auto}.files-navigation__list[data-v-008142f0]{height:100%}.files-navigation[data-v-008142f0] .app-navigation__content > ul.app-navigation__list{will-change:scroll-position}","",{version:3,sources:["webpack://./apps/files/src/views/Navigation.vue"],names:[],mappings:"AAEC,oGACC,uCAAA,CAGD,yDAEC,gDAAA,CAIF,iDACC,sBAAA,CACA,0BAAA,CACA,wBAAA,CAEA,aAAA,CAIA,yCACC,WAAA,CAGD,sFACC,2BAAA",sourceRoot:""}]);const o=r},66921:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".setting-link[data-v-23881b2c]:hover{text-decoration:underline}","",{version:3,sources:["webpack://./apps/files/src/views/Settings.vue"],names:[],mappings:"AACA,qCACC,yBAAA",sourceRoot:""}]);const o=r},35810:(e,t,s)=>{s.d(t,{Al:()=>i.r,By:()=>p,Dw:()=>xt,E6:()=>A,H4:()=>i.c,KT:()=>v,L3:()=>bt,PY:()=>i.b,Q$:()=>i.e,R3:()=>i.n,Ss:()=>Ye,VL:()=>i.l,ZH:()=>i.q,a7:()=>d,aX:()=>i.P,bP:()=>i.N,bh:()=>T,cZ:()=>yt,di:()=>w,g5:()=>f,hY:()=>u,lJ:()=>i.d,m1:()=>kt,m9:()=>c,nF:()=>h,pt:()=>i.F,qK:()=>g,sR:()=>_t,ur:()=>_,v7:()=>y,vd:()=>i.s,zI:()=>i.t});var i=s(29719),n=s(87485),a=s(43627),r=s(53334),o=s(380),l=s(65606),d=(e=>(e[e.UploadFromDevice=0]="UploadFromDevice",e[e.CreateNew=1]="CreateNew",e[e.Other=2]="Other",e))(d||{});class m{_entries=[];registerEntry(e){this.validateEntry(e),e.category=e.category??1,this._entries.push(e)}unregisterEntry(e){const t="string"==typeof e?this.getEntryIndex(e):this.getEntryIndex(e.id);-1!==t?this._entries.splice(t,1):i.o.warn("Entry not found, nothing removed",{entry:e,entries:this.getEntries()})}getEntries(e){return e?this._entries.filter((t=>"function"!=typeof t.enabled||t.enabled(e))):this._entries}getEntryIndex(e){return this._entries.findIndex((t=>t.id===e))}validateEntry(e){if(!e.id||!e.displayName||!e.iconSvgInline&&!e.iconClass||!e.handler)throw new Error("Invalid entry");if("string"!=typeof e.id||"string"!=typeof e.displayName)throw new Error("Invalid id or displayName property");if(e.iconClass&&"string"!=typeof e.iconClass||e.iconSvgInline&&"string"!=typeof e.iconSvgInline)throw new Error("Invalid icon provided");if(void 0!==e.enabled&&"function"!=typeof e.enabled)throw new Error("Invalid enabled property");if("function"!=typeof e.handler)throw new Error("Invalid handler property");if("order"in e&&"number"!=typeof e.order)throw new Error("Invalid order property");if(-1!==this.getEntryIndex(e.id))throw new Error("Duplicate entry")}}var c=(e=>(e.DEFAULT="default",e.HIDDEN="hidden",e))(c||{});class u{_action;constructor(e){this.validateAction(e),this._action=e}get id(){return this._action.id}get displayName(){return this._action.displayName}get title(){return this._action.title}get iconSvgInline(){return this._action.iconSvgInline}get enabled(){return this._action.enabled}get exec(){return this._action.exec}get execBatch(){return this._action.execBatch}get order(){return this._action.order}get parent(){return this._action.parent}get default(){return this._action.default}get destructive(){return this._action.destructive}get inline(){return this._action.inline}get renderInline(){return this._action.renderInline}validateAction(e){if(!e.id||"string"!=typeof e.id)throw new Error("Invalid id");if(!e.displayName||"function"!=typeof e.displayName)throw new Error("Invalid displayName function");if("title"in e&&"function"!=typeof e.title)throw new Error("Invalid title function");if(!e.iconSvgInline||"function"!=typeof e.iconSvgInline)throw new Error("Invalid iconSvgInline function");if(!e.exec||"function"!=typeof e.exec)throw new Error("Invalid exec function");if("enabled"in e&&"function"!=typeof e.enabled)throw new Error("Invalid enabled function");if("execBatch"in e&&"function"!=typeof e.execBatch)throw new Error("Invalid execBatch function");if("order"in e&&"number"!=typeof e.order)throw new Error("Invalid order");if(void 0!==e.destructive&&"boolean"!=typeof e.destructive)throw new Error("Invalid destructive flag");if("parent"in e&&"string"!=typeof e.parent)throw new Error("Invalid parent");if(e.default&&!Object.values(c).includes(e.default))throw new Error("Invalid default");if("inline"in e&&"function"!=typeof e.inline)throw new Error("Invalid inline function");if("renderInline"in e&&"function"!=typeof e.renderInline)throw new Error("Invalid renderInline function")}}const g=function(){return void 0===window._nc_fileactions&&(window._nc_fileactions=[],i.o.debug("FileActions initialized")),window._nc_fileactions},f=()=>(void 0===window._nc_filelistactions&&(window._nc_filelistactions=[]),window._nc_filelistactions),p=function(){return void 0===window._nc_filelistheader&&(window._nc_filelistheader=[],i.o.debug("FileListHeaders initialized")),window._nc_filelistheader};var h=(e=>(e.ReservedName="reserved name",e.Character="character",e.Extension="extension",e))(h||{});class w extends Error{constructor(e){super(`Invalid ${e.reason} '${e.segment}' in filename '${e.filename}'`,{cause:e})}get filename(){return this.cause.filename}get reason(){return this.cause.reason}get segment(){return this.cause.segment}}function v(e){const t=(0,n.F)().files,s=t.forbidden_filename_characters??window._oc_config?.forbidden_filenames_characters??["/","\\"];for(const t of s)if(e.includes(t))throw new w({segment:t,reason:"character",filename:e});if(e=e.toLocaleLowerCase(),(t.forbidden_filenames??[".htaccess"]).includes(e))throw new w({filename:e,segment:e,reason:"reserved name"});const i=e.indexOf(".",1),a=e.substring(0,-1===i?void 0:i);if((t.forbidden_filename_basenames??[]).includes(a))throw new w({filename:e,segment:a,reason:"reserved name"});const r=t.forbidden_filename_extensions??[".part",".filepart"];for(const t of r)if(e.length>t.length&&e.endsWith(t))throw new w({segment:t,reason:"extension",filename:e})}function A(e,t,s){const i={suffix:e=>`(${e})`,ignoreFileExtension:!1,...s};let n=e,r=1;for(;t.includes(n);){const t=i.ignoreFileExtension?"":(0,a.extname)(e);n=`${(0,a.basename)(e,t)} ${i.suffix(r++)}${t}`}return n}const C=["B","KB","MB","GB","TB","PB"],b=["B","KiB","MiB","GiB","TiB","PiB"];function y(e,t=!1,s=!1,i=!1){s=s&&!i,"string"==typeof e&&(e=Number(e));let n=e>0?Math.floor(Math.log(e)/Math.log(i?1e3:1024)):0;n=Math.min((s?b.length:C.length)-1,n);const a=s?b[n]:C[n];let o=(e/Math.pow(i?1e3:1024,n)).toFixed(1);return!0===t&&0===n?("0.0"!==o?"< 1 ":"0 ")+(s?b[1]:C[1]):(o=n<2?parseFloat(o).toFixed(0):parseFloat(o).toLocaleString((0,r.lO)()),o+" "+a)}function x(e){return e instanceof Date?e.toISOString():String(e)}function _(e,t={}){const s={sortingMode:"basename",sortingOrder:"asc",...t};return function(e,t,s){s=s??[];const i=(t=t??[e=>e]).map(((e,t)=>"asc"===(s[t]??"asc")?1:-1)),n=Intl.Collator([(0,r.Z0)(),(0,r.lO)()],{numeric:!0,usage:"sort"});return[...e].sort(((e,s)=>{for(const[a,r]of t.entries()){const t=n.compare(x(r(e)),x(r(s)));if(0!==t)return t*i[a]}return 0}))}(e,[...s.sortFavoritesFirst?[e=>1!==e.attributes?.favorite]:[],...s.sortFoldersFirst?[e=>"folder"!==e.type]:[],..."basename"!==s.sortingMode?[e=>e[s.sortingMode]]:[],e=>{return(t=e.displayname||e.attributes?.displayname||e.basename).lastIndexOf(".")>0?t.slice(0,t.lastIndexOf(".")):t;var t},e=>e.basename],[...s.sortFavoritesFirst?["asc"]:[],...s.sortFoldersFirst?["asc"]:[],..."mtime"===s.sortingMode?["asc"===s.sortingOrder?"desc":"asc"]:[],..."mtime"!==s.sortingMode&&"basename"!==s.sortingMode?[s.sortingOrder]:[],s.sortingOrder,s.sortingOrder])}class k extends o.m{_views=[];_currentView=null;register(e){if(this._views.find((t=>t.id===e.id)))throw new Error(`View id ${e.id} is already registered`);this._views.push(e),this.dispatchTypedEvent("update",new CustomEvent("update"))}remove(e){const t=this._views.findIndex((t=>t.id===e));-1!==t&&(this._views.splice(t,1),this.dispatchTypedEvent("update",new CustomEvent("update")))}setActive(e){this._currentView=e;const t=new CustomEvent("updateActive",{detail:e});this.dispatchTypedEvent("updateActive",t)}get active(){return this._currentView}get views(){return this._views}}const T=function(){return void 0===window._nc_navigation&&(window._nc_navigation=new k,i.o.debug("Navigation service initialized")),window._nc_navigation};class S{_column;constructor(e){L(e),this._column=e}get id(){return this._column.id}get title(){return this._column.title}get render(){return this._column.render}get sort(){return this._column.sort}get summary(){return this._column.summary}}const L=function(e){if(!e.id||"string"!=typeof e.id)throw new Error("A column id is required");if(!e.title||"string"!=typeof e.title)throw new Error("A column title is required");if(!e.render||"function"!=typeof e.render)throw new Error("A render function is required");if(e.sort&&"function"!=typeof e.sort)throw new Error("Column sortFunction must be a function");if(e.summary&&"function"!=typeof e.summary)throw new Error("Column summary must be a function");return!0};function N(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var F={},E={};!function(e){const t=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",s="["+t+"]["+t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",i=new RegExp("^"+s+"$");e.isExist=function(e){return void 0!==e},e.isEmptyObject=function(e){return 0===Object.keys(e).length},e.merge=function(e,t,s){if(t){const i=Object.keys(t),n=i.length;for(let a=0;a<n;a++)e[i[a]]="strict"===s?[t[i[a]]]:t[i[a]]}},e.getValue=function(t){return e.isExist(t)?t:""},e.isName=function(e){return!(null==i.exec(e))},e.getAllMatches=function(e,t){const s=[];let i=t.exec(e);for(;i;){const n=[];n.startIndex=t.lastIndex-i[0].length;const a=i.length;for(let e=0;e<a;e++)n.push(i[e]);s.push(n),i=t.exec(e)}return s},e.nameRegexp=s}(E);const U=E,I={allowBooleanAttributes:!1,unpairedTags:[]};function P(e){return" "===e||"\t"===e||"\n"===e||"\r"===e}function B(e,t){const s=t;for(;t<e.length;t++)if("?"!=e[t]&&" "!=e[t]);else{const i=e.substr(s,t-s);if(t>5&&"xml"===i)return $("InvalidXml","XML declaration allowed only at the start of the document.",H(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function z(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t<e.length;t++)if("-"===e[t]&&"-"===e[t+1]&&">"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let s=1;for(t+=8;t<e.length;t++)if("<"===e[t])s++;else if(">"===e[t]&&(s--,0===s))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t<e.length;t++)if("]"===e[t]&&"]"===e[t+1]&&">"===e[t+2]){t+=2;break}return t}F.validate=function(e,t){t=Object.assign({},I,t);const s=[];let i=!1,n=!1;"\ufeff"===e[0]&&(e=e.substr(1));for(let r=0;r<e.length;r++)if("<"===e[r]&&"?"===e[r+1]){if(r+=2,r=B(e,r),r.err)return r}else{if("<"!==e[r]){if(P(e[r]))continue;return $("InvalidChar","char '"+e[r]+"' is not expected.",H(e,r))}{let o=r;if(r++,"!"===e[r]){r=z(e,r);continue}{let l=!1;"/"===e[r]&&(l=!0,r++);let d="";for(;r<e.length&&">"!==e[r]&&" "!==e[r]&&"\t"!==e[r]&&"\n"!==e[r]&&"\r"!==e[r];r++)d+=e[r];if(d=d.trim(),"/"===d[d.length-1]&&(d=d.substring(0,d.length-1),r--),a=d,!U.isName(a)){let t;return t=0===d.trim().length?"Invalid space after '<'.":"Tag '"+d+"' is an invalid name.",$("InvalidTag",t,H(e,r))}const m=R(e,r);if(!1===m)return $("InvalidAttr","Attributes for '"+d+"' have open quote.",H(e,r));let c=m.value;if(r=m.index,"/"===c[c.length-1]){const s=r-c.length;c=c.substring(0,c.length-1);const n=M(c,t);if(!0!==n)return $(n.err.code,n.err.msg,H(e,s+n.err.line));i=!0}else if(l){if(!m.tagClosed)return $("InvalidTag","Closing tag '"+d+"' doesn't have proper closing.",H(e,r));if(c.trim().length>0)return $("InvalidTag","Closing tag '"+d+"' can't have attributes or invalid starting.",H(e,o));if(0===s.length)return $("InvalidTag","Closing tag '"+d+"' has not been opened.",H(e,o));{const t=s.pop();if(d!==t.tagName){let s=H(e,t.tagStartPos);return $("InvalidTag","Expected closing tag '"+t.tagName+"' (opened in line "+s.line+", col "+s.col+") instead of closing tag '"+d+"'.",H(e,o))}0==s.length&&(n=!0)}}else{const a=M(c,t);if(!0!==a)return $(a.err.code,a.err.msg,H(e,r-c.length+a.err.line));if(!0===n)return $("InvalidXml","Multiple possible root nodes found.",H(e,r));-1!==t.unpairedTags.indexOf(d)||s.push({tagName:d,tagStartPos:o}),i=!0}for(r++;r<e.length;r++)if("<"===e[r]){if("!"===e[r+1]){r++,r=z(e,r);continue}if("?"!==e[r+1])break;if(r=B(e,++r),r.err)return r}else if("&"===e[r]){const t=V(e,r);if(-1==t)return $("InvalidChar","char '&' is not expected.",H(e,r));r=t}else if(!0===n&&!P(e[r]))return $("InvalidXml","Extra text at the end",H(e,r));"<"===e[r]&&r--}}}var a;return i?1==s.length?$("InvalidTag","Unclosed tag '"+s[0].tagName+"'.",H(e,s[0].tagStartPos)):!(s.length>0)||$("InvalidXml","Invalid '"+JSON.stringify(s.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):$("InvalidXml","Start tag expected.",1)};const D='"',O="'";function R(e,t){let s="",i="",n=!1;for(;t<e.length;t++){if(e[t]===D||e[t]===O)""===i?i=e[t]:i!==e[t]||(i="");else if(">"===e[t]&&""===i){n=!0;break}s+=e[t]}return""===i&&{value:s,index:t,tagClosed:n}}const j=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function M(e,t){const s=U.getAllMatches(e,j),i={};for(let e=0;e<s.length;e++){if(0===s[e][1].length)return $("InvalidAttr","Attribute '"+s[e][2]+"' has no space in starting.",q(s[e]));if(void 0!==s[e][3]&&void 0===s[e][4])return $("InvalidAttr","Attribute '"+s[e][2]+"' is without value.",q(s[e]));if(void 0===s[e][3]&&!t.allowBooleanAttributes)return $("InvalidAttr","boolean attribute '"+s[e][2]+"' is not allowed.",q(s[e]));const n=s[e][2];if(!W(n))return $("InvalidAttr","Attribute '"+n+"' is an invalid name.",q(s[e]));if(i.hasOwnProperty(n))return $("InvalidAttr","Attribute '"+n+"' is repeated.",q(s[e]));i[n]=1}return!0}function V(e,t){if(";"===e[++t])return-1;if("#"===e[t])return function(e,t){let s=/\d/;for("x"===e[t]&&(t++,s=/[\da-fA-F]/);t<e.length;t++){if(";"===e[t])return t;if(!e[t].match(s))break}return-1}(e,++t);let s=0;for(;t<e.length;t++,s++)if(!(e[t].match(/\w/)&&s<20)){if(";"===e[t])break;return-1}return t}function $(e,t,s){return{err:{code:e,msg:t,line:s.line||s,col:s.col}}}function W(e){return U.isName(e)}function H(e,t){const s=e.substring(0,t).split(/\r?\n/);return{line:s.length,col:s[s.length-1].length+1}}function q(e){return e.startIndex+e[1].length}var G={};const Y={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,s){return e}};G.buildOptions=function(e){return Object.assign({},Y,e)},G.defaultOptions=Y;const K=E;function Q(e,t){let s="";for(;t<e.length&&"'"!==e[t]&&'"'!==e[t];t++)s+=e[t];if(s=s.trim(),-1!==s.indexOf(" "))throw new Error("External entites are not supported");const i=e[t++];let n="";for(;t<e.length&&e[t]!==i;t++)n+=e[t];return[s,n,t]}function J(e,t){return"!"===e[t+1]&&"-"===e[t+2]&&"-"===e[t+3]}function X(e,t){return"!"===e[t+1]&&"E"===e[t+2]&&"N"===e[t+3]&&"T"===e[t+4]&&"I"===e[t+5]&&"T"===e[t+6]&&"Y"===e[t+7]}function Z(e,t){return"!"===e[t+1]&&"E"===e[t+2]&&"L"===e[t+3]&&"E"===e[t+4]&&"M"===e[t+5]&&"E"===e[t+6]&&"N"===e[t+7]&&"T"===e[t+8]}function ee(e,t){return"!"===e[t+1]&&"A"===e[t+2]&&"T"===e[t+3]&&"T"===e[t+4]&&"L"===e[t+5]&&"I"===e[t+6]&&"S"===e[t+7]&&"T"===e[t+8]}function te(e,t){return"!"===e[t+1]&&"N"===e[t+2]&&"O"===e[t+3]&&"T"===e[t+4]&&"A"===e[t+5]&&"T"===e[t+6]&&"I"===e[t+7]&&"O"===e[t+8]&&"N"===e[t+9]}function se(e){if(K.isName(e))return e;throw new Error(`Invalid entity name ${e}`)}const ie=/^[-+]?0x[a-fA-F0-9]+$/,ne=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const ae={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};var re=function(e){return"function"==typeof e?e:Array.isArray(e)?t=>{for(const s of e){if("string"==typeof s&&t===s)return!0;if(s instanceof RegExp&&s.test(t))return!0}}:()=>!1};const oe=E,le=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}},de=function(e,t){const s={};if("O"!==e[t+3]||"C"!==e[t+4]||"T"!==e[t+5]||"Y"!==e[t+6]||"P"!==e[t+7]||"E"!==e[t+8])throw new Error("Invalid Tag instead of DOCTYPE");{t+=9;let i=1,n=!1,a=!1,r="";for(;t<e.length;t++)if("<"!==e[t]||a)if(">"===e[t]){if(a?"-"===e[t-1]&&"-"===e[t-2]&&(a=!1,i--):i--,0===i)break}else"["===e[t]?n=!0:r+=e[t];else{if(n&&X(e,t))t+=7,[entityName,val,t]=Q(e,t+1),-1===val.indexOf("&")&&(s[se(entityName)]={regx:RegExp(`&${entityName};`,"g"),val});else if(n&&Z(e,t))t+=8;else if(n&&ee(e,t))t+=8;else if(n&&te(e,t))t+=9;else{if(!J)throw new Error("Invalid DOCTYPE");a=!0}i++,r=""}if(0!==i)throw new Error("Unclosed DOCTYPE")}return{entities:s,i:t}},me=function(e,t={}){if(t=Object.assign({},ae,t),!e||"string"!=typeof e)return e;let s=e.trim();if(void 0!==t.skipLike&&t.skipLike.test(s))return e;if(t.hex&&ie.test(s))return Number.parseInt(s,16);{const n=ne.exec(s);if(n){const a=n[1],r=n[2];let o=(i=n[3])&&-1!==i.indexOf(".")?("."===(i=i.replace(/0+$/,""))?i="0":"."===i[0]?i="0"+i:"."===i[i.length-1]&&(i=i.substr(0,i.length-1)),i):i;const l=n[4]||n[6];if(!t.leadingZeros&&r.length>0&&a&&"."!==s[2])return e;if(!t.leadingZeros&&r.length>0&&!a&&"."!==s[1])return e;{const i=Number(s),n=""+i;return-1!==n.search(/[eE]/)||l?t.eNotation?i:e:-1!==s.indexOf(".")?"0"===n&&""===o||n===o||a&&n==="-"+o?i:e:r?o===n||a+o===n?i:e:s===n||s===a+n?i:e}}return e}var i},ce=re;function ue(e){const t=Object.keys(e);for(let s=0;s<t.length;s++){const i=t[s];this.lastEntities[i]={regex:new RegExp("&"+i+";","g"),val:e[i]}}}function ge(e,t,s,i,n,a,r){if(void 0!==e&&(this.options.trimValues&&!i&&(e=e.trim()),e.length>0)){r||(e=this.replaceEntitiesValue(e));const i=this.options.tagValueProcessor(t,e,s,n,a);return null==i?e:typeof i!=typeof e||i!==e?i:this.options.trimValues||e.trim()===e?ke(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function fe(e){if(this.options.removeNSPrefix){const t=e.split(":"),s="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=s+t[1])}return e}const pe=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function he(e,t,s){if(!0!==this.options.ignoreAttributes&&"string"==typeof e){const s=oe.getAllMatches(e,pe),i=s.length,n={};for(let e=0;e<i;e++){const i=this.resolveNameSpace(s[e][1]);if(this.ignoreAttributesFn(i,t))continue;let a=s[e][4],r=this.options.attributeNamePrefix+i;if(i.length)if(this.options.transformAttributeName&&(r=this.options.transformAttributeName(r)),"__proto__"===r&&(r="#__proto__"),void 0!==a){this.options.trimValues&&(a=a.trim()),a=this.replaceEntitiesValue(a);const e=this.options.attributeValueProcessor(i,a,t);n[r]=null==e?a:typeof e!=typeof a||e!==a?e:ke(a,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(n[r]=!0)}if(!Object.keys(n).length)return;if(this.options.attributesGroupName){const e={};return e[this.options.attributesGroupName]=n,e}return n}}const we=function(e){e=e.replace(/\r\n?/g,"\n");const t=new le("!xml");let s=t,i="",n="";for(let a=0;a<e.length;a++)if("<"===e[a])if("/"===e[a+1]){const t=ye(e,">",a,"Closing Tag is not closed.");let r=e.substring(a+2,t).trim();if(this.options.removeNSPrefix){const e=r.indexOf(":");-1!==e&&(r=r.substr(e+1))}this.options.transformTagName&&(r=this.options.transformTagName(r)),s&&(i=this.saveTextToParentTag(i,s,n));const o=n.substring(n.lastIndexOf(".")+1);if(r&&-1!==this.options.unpairedTags.indexOf(r))throw new Error(`Unpaired tag can not be used as closing tag: </${r}>`);let l=0;o&&-1!==this.options.unpairedTags.indexOf(o)?(l=n.lastIndexOf(".",n.lastIndexOf(".")-1),this.tagsNodeStack.pop()):l=n.lastIndexOf("."),n=n.substring(0,l),s=this.tagsNodeStack.pop(),i="",a=t}else if("?"===e[a+1]){let t=xe(e,a,!1,"?>");if(!t)throw new Error("Pi Tag is not closed.");if(i=this.saveTextToParentTag(i,s,n),this.options.ignoreDeclaration&&"?xml"===t.tagName||this.options.ignorePiTags);else{const e=new le(t.tagName);e.add(this.options.textNodeName,""),t.tagName!==t.tagExp&&t.attrExpPresent&&(e[":@"]=this.buildAttributesMap(t.tagExp,n,t.tagName)),this.addChild(s,e,n)}a=t.closeIndex+1}else if("!--"===e.substr(a+1,3)){const t=ye(e,"--\x3e",a+4,"Comment is not closed.");if(this.options.commentPropName){const r=e.substring(a+4,t-2);i=this.saveTextToParentTag(i,s,n),s.add(this.options.commentPropName,[{[this.options.textNodeName]:r}])}a=t}else if("!D"===e.substr(a+1,2)){const t=de(e,a);this.docTypeEntities=t.entities,a=t.i}else if("!["===e.substr(a+1,2)){const t=ye(e,"]]>",a,"CDATA is not closed.")-2,r=e.substring(a+9,t);i=this.saveTextToParentTag(i,s,n);let o=this.parseTextData(r,s.tagname,n,!0,!1,!0,!0);null==o&&(o=""),this.options.cdataPropName?s.add(this.options.cdataPropName,[{[this.options.textNodeName]:r}]):s.add(this.options.textNodeName,o),a=t+2}else{let r=xe(e,a,this.options.removeNSPrefix),o=r.tagName;const l=r.rawTagName;let d=r.tagExp,m=r.attrExpPresent,c=r.closeIndex;this.options.transformTagName&&(o=this.options.transformTagName(o)),s&&i&&"!xml"!==s.tagname&&(i=this.saveTextToParentTag(i,s,n,!1));const u=s;if(u&&-1!==this.options.unpairedTags.indexOf(u.tagname)&&(s=this.tagsNodeStack.pop(),n=n.substring(0,n.lastIndexOf("."))),o!==t.tagname&&(n+=n?"."+o:o),this.isItStopNode(this.options.stopNodes,n,o)){let t="";if(d.length>0&&d.lastIndexOf("/")===d.length-1)"/"===o[o.length-1]?(o=o.substr(0,o.length-1),n=n.substr(0,n.length-1),d=o):d=d.substr(0,d.length-1),a=r.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(o))a=r.closeIndex;else{const s=this.readStopNodeData(e,l,c+1);if(!s)throw new Error(`Unexpected end of ${l}`);a=s.i,t=s.tagContent}const i=new le(o);o!==d&&m&&(i[":@"]=this.buildAttributesMap(d,n,o)),t&&(t=this.parseTextData(t,o,n,!0,m,!0,!0)),n=n.substr(0,n.lastIndexOf(".")),i.add(this.options.textNodeName,t),this.addChild(s,i,n)}else{if(d.length>0&&d.lastIndexOf("/")===d.length-1){"/"===o[o.length-1]?(o=o.substr(0,o.length-1),n=n.substr(0,n.length-1),d=o):d=d.substr(0,d.length-1),this.options.transformTagName&&(o=this.options.transformTagName(o));const e=new le(o);o!==d&&m&&(e[":@"]=this.buildAttributesMap(d,n,o)),this.addChild(s,e,n),n=n.substr(0,n.lastIndexOf("."))}else{const e=new le(o);this.tagsNodeStack.push(s),o!==d&&m&&(e[":@"]=this.buildAttributesMap(d,n,o)),this.addChild(s,e,n),s=e}i="",a=c}}else i+=e[a];return t.child};function ve(e,t,s){const i=this.options.updateTag(t.tagname,s,t[":@"]);!1===i||("string"==typeof i?(t.tagname=i,e.addChild(t)):e.addChild(t))}const Ae=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const s=this.docTypeEntities[t];e=e.replace(s.regx,s.val)}for(let t in this.lastEntities){const s=this.lastEntities[t];e=e.replace(s.regex,s.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const s=this.htmlEntities[t];e=e.replace(s.regex,s.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function Ce(e,t,s,i){return e&&(void 0===i&&(i=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,s,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,i))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function be(e,t,s){const i="*."+s;for(const s in e){const n=e[s];if(i===n||t===n)return!0}return!1}function ye(e,t,s,i){const n=e.indexOf(t,s);if(-1===n)throw new Error(i);return n+t.length-1}function xe(e,t,s,i=">"){const n=function(e,t,s=">"){let i,n="";for(let a=t;a<e.length;a++){let t=e[a];if(i)t===i&&(i="");else if('"'===t||"'"===t)i=t;else if(t===s[0]){if(!s[1])return{data:n,index:a};if(e[a+1]===s[1])return{data:n,index:a}}else"\t"===t&&(t=" ");n+=t}}(e,t+1,i);if(!n)return;let a=n.data;const r=n.index,o=a.search(/\s/);let l=a,d=!0;-1!==o&&(l=a.substring(0,o),a=a.substring(o+1).trimStart());const m=l;if(s){const e=l.indexOf(":");-1!==e&&(l=l.substr(e+1),d=l!==n.data.substr(e+1))}return{tagName:l,tagExp:a,closeIndex:r,attrExpPresent:d,rawTagName:m}}function _e(e,t,s){const i=s;let n=1;for(;s<e.length;s++)if("<"===e[s])if("/"===e[s+1]){const a=ye(e,">",s,`${t} is not closed`);if(e.substring(s+2,a).trim()===t&&(n--,0===n))return{tagContent:e.substring(i,s),i:a};s=a}else if("?"===e[s+1])s=ye(e,"?>",s+1,"StopNode is not closed.");else if("!--"===e.substr(s+1,3))s=ye(e,"--\x3e",s+3,"StopNode is not closed.");else if("!["===e.substr(s+1,2))s=ye(e,"]]>",s,"StopNode is not closed.")-2;else{const i=xe(e,s,">");i&&((i&&i.tagName)===t&&"/"!==i.tagExp[i.tagExp.length-1]&&n++,s=i.closeIndex)}}function ke(e,t,s){if(t&&"string"==typeof e){const t=e.trim();return"true"===t||"false"!==t&&me(e,s)}return oe.isExist(e)?e:""}var Te={};function Se(e,t,s){let i;const n={};for(let a=0;a<e.length;a++){const r=e[a],o=Le(r);let l="";if(l=void 0===s?o:s+"."+o,o===t.textNodeName)void 0===i?i=r[o]:i+=""+r[o];else{if(void 0===o)continue;if(r[o]){let e=Se(r[o],t,l);const s=Fe(e,t);r[":@"]?Ne(e,r[":@"],l,t):1!==Object.keys(e).length||void 0===e[t.textNodeName]||t.alwaysCreateTextNode?0===Object.keys(e).length&&(t.alwaysCreateTextNode?e[t.textNodeName]="":e=""):e=e[t.textNodeName],void 0!==n[o]&&n.hasOwnProperty(o)?(Array.isArray(n[o])||(n[o]=[n[o]]),n[o].push(e)):t.isArray(o,l,s)?n[o]=[e]:n[o]=e}}}return"string"==typeof i?i.length>0&&(n[t.textNodeName]=i):void 0!==i&&(n[t.textNodeName]=i),n}function Le(e){const t=Object.keys(e);for(let e=0;e<t.length;e++){const s=t[e];if(":@"!==s)return s}}function Ne(e,t,s,i){if(t){const n=Object.keys(t),a=n.length;for(let r=0;r<a;r++){const a=n[r];i.isArray(a,s+"."+a,!0,!0)?e[a]=[t[a]]:e[a]=t[a]}}}function Fe(e,t){const{textNodeName:s}=t,i=Object.keys(e).length;return 0===i||!(1!==i||!e[s]&&"boolean"!=typeof e[s]&&0!==e[s])}Te.prettify=function(e,t){return Se(e,t)};const{buildOptions:Ee}=G,Ue=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=ue,this.parseXml=we,this.parseTextData=ge,this.resolveNameSpace=fe,this.buildAttributesMap=he,this.isItStopNode=be,this.replaceEntitiesValue=Ae,this.readStopNodeData=_e,this.saveTextToParentTag=Ce,this.addChild=ve,this.ignoreAttributesFn=ce(this.options.ignoreAttributes)}},{prettify:Ie}=Te,Pe=F;function Be(e,t,s,i){let n="",a=!1;for(let r=0;r<e.length;r++){const o=e[r],l=ze(o);if(void 0===l)continue;let d="";if(d=0===s.length?l:`${s}.${l}`,l===t.textNodeName){let e=o[l];Oe(d,t)||(e=t.tagValueProcessor(l,e),e=Re(e,t)),a&&(n+=i),n+=e,a=!1;continue}if(l===t.cdataPropName){a&&(n+=i),n+=`<![CDATA[${o[l][0][t.textNodeName]}]]>`,a=!1;continue}if(l===t.commentPropName){n+=i+`\x3c!--${o[l][0][t.textNodeName]}--\x3e`,a=!0;continue}if("?"===l[0]){const e=De(o[":@"],t),s="?xml"===l?"":i;let r=o[l][0][t.textNodeName];r=0!==r.length?" "+r:"",n+=s+`<${l}${r}${e}?>`,a=!0;continue}let m=i;""!==m&&(m+=t.indentBy);const c=i+`<${l}${De(o[":@"],t)}`,u=Be(o[l],t,d,m);-1!==t.unpairedTags.indexOf(l)?t.suppressUnpairedNode?n+=c+">":n+=c+"/>":u&&0!==u.length||!t.suppressEmptyNode?u&&u.endsWith(">")?n+=c+`>${u}${i}</${l}>`:(n+=c+">",u&&""!==i&&(u.includes("/>")||u.includes("</"))?n+=i+t.indentBy+u+i:n+=u,n+=`</${l}>`):n+=c+"/>",a=!0}return n}function ze(e){const t=Object.keys(e);for(let s=0;s<t.length;s++){const i=t[s];if(e.hasOwnProperty(i)&&":@"!==i)return i}}function De(e,t){let s="";if(e&&!t.ignoreAttributes)for(let i in e){if(!e.hasOwnProperty(i))continue;let n=t.attributeValueProcessor(i,e[i]);n=Re(n,t),!0===n&&t.suppressBooleanAttributes?s+=` ${i.substr(t.attributeNamePrefix.length)}`:s+=` ${i.substr(t.attributeNamePrefix.length)}="${n}"`}return s}function Oe(e,t){let s=(e=e.substr(0,e.length-t.textNodeName.length-1)).substr(e.lastIndexOf(".")+1);for(let i in t.stopNodes)if(t.stopNodes[i]===e||t.stopNodes[i]==="*."+s)return!0;return!1}function Re(e,t){if(e&&e.length>0&&t.processEntities)for(let s=0;s<t.entities.length;s++){const i=t.entities[s];e=e.replace(i.regex,i.val)}return e}const je=function(e,t){let s="";return t.format&&t.indentBy.length>0&&(s="\n"),Be(e,t,"",s)},Me=re,Ve={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&amp;"},{regex:new RegExp(">","g"),val:"&gt;"},{regex:new RegExp("<","g"),val:"&lt;"},{regex:new RegExp("'","g"),val:"&apos;"},{regex:new RegExp('"',"g"),val:"&quot;"}],processEntities:!0,stopNodes:[],oneListGroup:!1};function $e(e){this.options=Object.assign({},Ve,e),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=Me(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=qe),this.processTextOrObjNode=We,this.options.format?(this.indentate=He,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function We(e,t,s,i){const n=this.j2x(e,s+1,i.concat(t));return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,n.attrStr,s):this.buildObjectNode(n.val,t,n.attrStr,s)}function He(e){return this.options.indentBy.repeat(e)}function qe(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}$e.prototype.build=function(e){return this.options.preserveOrder?je(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0,[]).val)},$e.prototype.j2x=function(e,t,s){let i="",n="";const a=s.join(".");for(let r in e)if(Object.prototype.hasOwnProperty.call(e,r))if(void 0===e[r])this.isAttribute(r)&&(n+="");else if(null===e[r])this.isAttribute(r)?n+="":"?"===r[0]?n+=this.indentate(t)+"<"+r+"?"+this.tagEndChar:n+=this.indentate(t)+"<"+r+"/"+this.tagEndChar;else if(e[r]instanceof Date)n+=this.buildTextValNode(e[r],r,"",t);else if("object"!=typeof e[r]){const s=this.isAttribute(r);if(s&&!this.ignoreAttributesFn(s,a))i+=this.buildAttrPairStr(s,""+e[r]);else if(!s)if(r===this.options.textNodeName){let t=this.options.tagValueProcessor(r,""+e[r]);n+=this.replaceEntitiesValue(t)}else n+=this.buildTextValNode(e[r],r,"",t)}else if(Array.isArray(e[r])){const i=e[r].length;let a="",o="";for(let l=0;l<i;l++){const i=e[r][l];if(void 0===i);else if(null===i)"?"===r[0]?n+=this.indentate(t)+"<"+r+"?"+this.tagEndChar:n+=this.indentate(t)+"<"+r+"/"+this.tagEndChar;else if("object"==typeof i)if(this.options.oneListGroup){const e=this.j2x(i,t+1,s.concat(r));a+=e.val,this.options.attributesGroupName&&i.hasOwnProperty(this.options.attributesGroupName)&&(o+=e.attrStr)}else a+=this.processTextOrObjNode(i,r,t,s);else if(this.options.oneListGroup){let e=this.options.tagValueProcessor(r,i);e=this.replaceEntitiesValue(e),a+=e}else a+=this.buildTextValNode(i,r,"",t)}this.options.oneListGroup&&(a=this.buildObjectNode(a,r,o,t)),n+=a}else if(this.options.attributesGroupName&&r===this.options.attributesGroupName){const t=Object.keys(e[r]),s=t.length;for(let n=0;n<s;n++)i+=this.buildAttrPairStr(t[n],""+e[r][t[n]])}else n+=this.processTextOrObjNode(e[r],r,t,s);return{attrStr:i,val:n}},$e.prototype.buildAttrPairStr=function(e,t){return t=this.options.attributeValueProcessor(e,""+t),t=this.replaceEntitiesValue(t),this.options.suppressBooleanAttributes&&"true"===t?" "+e:" "+e+'="'+t+'"'},$e.prototype.buildObjectNode=function(e,t,s,i){if(""===e)return"?"===t[0]?this.indentate(i)+"<"+t+s+"?"+this.tagEndChar:this.indentate(i)+"<"+t+s+this.closeTag(t)+this.tagEndChar;{let n="</"+t+this.tagEndChar,a="";return"?"===t[0]&&(a="?",n=""),!s&&""!==s||-1!==e.indexOf("<")?!1!==this.options.commentPropName&&t===this.options.commentPropName&&0===a.length?this.indentate(i)+`\x3c!--${e}--\x3e`+this.newLine:this.indentate(i)+"<"+t+s+a+this.tagEndChar+e+this.indentate(i)+n:this.indentate(i)+"<"+t+s+a+">"+e+n}},$e.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":`></${e}`,t},$e.prototype.buildTextValNode=function(e,t,s,i){if(!1!==this.options.cdataPropName&&t===this.options.cdataPropName)return this.indentate(i)+`<![CDATA[${e}]]>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(i)+`\x3c!--${e}--\x3e`+this.newLine;if("?"===t[0])return this.indentate(i)+"<"+t+s+"?"+this.tagEndChar;{let n=this.options.tagValueProcessor(t,e);return n=this.replaceEntitiesValue(n),""===n?this.indentate(i)+"<"+t+s+this.closeTag(t)+this.tagEndChar:this.indentate(i)+"<"+t+s+">"+n+"</"+t+this.tagEndChar}},$e.prototype.replaceEntitiesValue=function(e){if(e&&e.length>0&&this.options.processEntities)for(let t=0;t<this.options.entities.length;t++){const s=this.options.entities[t];e=e.replace(s.regex,s.val)}return e};var Ge={XMLParser:class{constructor(e){this.externalEntities={},this.options=Ee(e)}parse(e,t){if("string"==typeof e);else{if(!e.toString)throw new Error("XML data is accepted in String or Bytes[] form.");e=e.toString()}if(t){!0===t&&(t={});const s=Pe.validate(e,t);if(!0!==s)throw Error(`${s.err.msg}:${s.err.line}:${s.err.col}`)}const s=new Ue(this.options);s.addExternalEntities(this.externalEntities);const i=s.parseXml(e);return this.options.preserveOrder||void 0===i?i:Ie(i,this.options)}addEntity(e,t){if(-1!==t.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==e.indexOf("&")||-1!==e.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '&#xD;'");if("&"===t)throw new Error("An entity with value '&' is not permitted");this.externalEntities[e]=t}},XMLValidator:F,XMLBuilder:$e};class Ye{_view;constructor(e){Ke(e),this._view=e}get id(){return this._view.id}get name(){return this._view.name}get caption(){return this._view.caption}get emptyTitle(){return this._view.emptyTitle}get emptyCaption(){return this._view.emptyCaption}get getContents(){return this._view.getContents}get icon(){return this._view.icon}set icon(e){this._view.icon=e}get order(){return this._view.order}set order(e){this._view.order=e}get params(){return this._view.params}set params(e){this._view.params=e}get columns(){return this._view.columns}get emptyView(){return this._view.emptyView}get parent(){return this._view.parent}get sticky(){return this._view.sticky}get expanded(){return this._view.expanded}set expanded(e){this._view.expanded=e}get defaultSortKey(){return this._view.defaultSortKey}get loadChildViews(){return this._view.loadChildViews}}const Ke=function(e){if(!e.id||"string"!=typeof e.id)throw new Error("View id is required and must be a string");if(!e.name||"string"!=typeof e.name)throw new Error("View name is required and must be a string");if("caption"in e&&"string"!=typeof e.caption)throw new Error("View caption must be a string");if(!e.getContents||"function"!=typeof e.getContents)throw new Error("View getContents is required and must be a function");if(!e.icon||"string"!=typeof e.icon||!function(e){if("string"!=typeof e)throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);if(0===(e=e.trim()).length)return!1;if(!0!==Ge.XMLValidator.validate(e))return!1;let t;const s=new Ge.XMLParser;try{t=s.parse(e)}catch{return!1}return!!t&&!!Object.keys(t).some((e=>"svg"===e.toLowerCase()))}(e.icon))throw new Error("View icon is required and must be a valid svg string");if("order"in e&&"number"!=typeof e.order)throw new Error("View order must be a number");if(e.columns&&e.columns.forEach((e=>{if(!(e instanceof S))throw new Error("View columns must be an array of Column. Invalid column found")})),e.emptyView&&"function"!=typeof e.emptyView)throw new Error("View emptyView must be a function");if(e.parent&&"string"!=typeof e.parent)throw new Error("View parent must be a string");if("sticky"in e&&"boolean"!=typeof e.sticky)throw new Error("View sticky must be a boolean");if("expanded"in e&&"boolean"!=typeof e.expanded)throw new Error("View expanded must be a boolean");if(e.defaultSortKey&&"string"!=typeof e.defaultSortKey)throw new Error("View defaultSortKey must be a string");if(e.loadChildViews&&"function"!=typeof e.loadChildViews)throw new Error("View loadChildViews must be a function");return!0};var Qe="object"==typeof l&&l.env&&l.env.NODE_DEBUG&&/\bsemver\b/i.test(l.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{},Je={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER||9007199254740991,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2},Xe={exports:{}};!function(e,t){const{MAX_SAFE_COMPONENT_LENGTH:s,MAX_SAFE_BUILD_LENGTH:i,MAX_LENGTH:n}=Je,a=Qe,r=(t=e.exports={}).re=[],o=t.safeRe=[],l=t.src=[],d=t.t={};let m=0;const c="[a-zA-Z0-9-]",u=[["\\s",1],["\\d",n],[c,i]],g=(e,t,s)=>{const i=(e=>{for(const[t,s]of u)e=e.split(`${t}*`).join(`${t}{0,${s}}`).split(`${t}+`).join(`${t}{1,${s}}`);return e})(t),n=m++;a(e,n,t),d[e]=n,l[n]=t,r[n]=new RegExp(t,s?"g":void 0),o[n]=new RegExp(i,s?"g":void 0)};g("NUMERICIDENTIFIER","0|[1-9]\\d*"),g("NUMERICIDENTIFIERLOOSE","\\d+"),g("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${c}*`),g("MAINVERSION",`(${l[d.NUMERICIDENTIFIER]})\\.(${l[d.NUMERICIDENTIFIER]})\\.(${l[d.NUMERICIDENTIFIER]})`),g("MAINVERSIONLOOSE",`(${l[d.NUMERICIDENTIFIERLOOSE]})\\.(${l[d.NUMERICIDENTIFIERLOOSE]})\\.(${l[d.NUMERICIDENTIFIERLOOSE]})`),g("PRERELEASEIDENTIFIER",`(?:${l[d.NUMERICIDENTIFIER]}|${l[d.NONNUMERICIDENTIFIER]})`),g("PRERELEASEIDENTIFIERLOOSE",`(?:${l[d.NUMERICIDENTIFIERLOOSE]}|${l[d.NONNUMERICIDENTIFIER]})`),g("PRERELEASE",`(?:-(${l[d.PRERELEASEIDENTIFIER]}(?:\\.${l[d.PRERELEASEIDENTIFIER]})*))`),g("PRERELEASELOOSE",`(?:-?(${l[d.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${l[d.PRERELEASEIDENTIFIERLOOSE]})*))`),g("BUILDIDENTIFIER",`${c}+`),g("BUILD",`(?:\\+(${l[d.BUILDIDENTIFIER]}(?:\\.${l[d.BUILDIDENTIFIER]})*))`),g("FULLPLAIN",`v?${l[d.MAINVERSION]}${l[d.PRERELEASE]}?${l[d.BUILD]}?`),g("FULL",`^${l[d.FULLPLAIN]}$`),g("LOOSEPLAIN",`[v=\\s]*${l[d.MAINVERSIONLOOSE]}${l[d.PRERELEASELOOSE]}?${l[d.BUILD]}?`),g("LOOSE",`^${l[d.LOOSEPLAIN]}$`),g("GTLT","((?:<|>)?=?)"),g("XRANGEIDENTIFIERLOOSE",`${l[d.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),g("XRANGEIDENTIFIER",`${l[d.NUMERICIDENTIFIER]}|x|X|\\*`),g("XRANGEPLAIN",`[v=\\s]*(${l[d.XRANGEIDENTIFIER]})(?:\\.(${l[d.XRANGEIDENTIFIER]})(?:\\.(${l[d.XRANGEIDENTIFIER]})(?:${l[d.PRERELEASE]})?${l[d.BUILD]}?)?)?`),g("XRANGEPLAINLOOSE",`[v=\\s]*(${l[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[d.XRANGEIDENTIFIERLOOSE]})(?:${l[d.PRERELEASELOOSE]})?${l[d.BUILD]}?)?)?`),g("XRANGE",`^${l[d.GTLT]}\\s*${l[d.XRANGEPLAIN]}$`),g("XRANGELOOSE",`^${l[d.GTLT]}\\s*${l[d.XRANGEPLAINLOOSE]}$`),g("COERCEPLAIN",`(^|[^\\d])(\\d{1,${s}})(?:\\.(\\d{1,${s}}))?(?:\\.(\\d{1,${s}}))?`),g("COERCE",`${l[d.COERCEPLAIN]}(?:$|[^\\d])`),g("COERCEFULL",l[d.COERCEPLAIN]+`(?:${l[d.PRERELEASE]})?(?:${l[d.BUILD]})?(?:$|[^\\d])`),g("COERCERTL",l[d.COERCE],!0),g("COERCERTLFULL",l[d.COERCEFULL],!0),g("LONETILDE","(?:~>?)"),g("TILDETRIM",`(\\s*)${l[d.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",g("TILDE",`^${l[d.LONETILDE]}${l[d.XRANGEPLAIN]}$`),g("TILDELOOSE",`^${l[d.LONETILDE]}${l[d.XRANGEPLAINLOOSE]}$`),g("LONECARET","(?:\\^)"),g("CARETTRIM",`(\\s*)${l[d.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",g("CARET",`^${l[d.LONECARET]}${l[d.XRANGEPLAIN]}$`),g("CARETLOOSE",`^${l[d.LONECARET]}${l[d.XRANGEPLAINLOOSE]}$`),g("COMPARATORLOOSE",`^${l[d.GTLT]}\\s*(${l[d.LOOSEPLAIN]})$|^$`),g("COMPARATOR",`^${l[d.GTLT]}\\s*(${l[d.FULLPLAIN]})$|^$`),g("COMPARATORTRIM",`(\\s*)${l[d.GTLT]}\\s*(${l[d.LOOSEPLAIN]}|${l[d.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",g("HYPHENRANGE",`^\\s*(${l[d.XRANGEPLAIN]})\\s+-\\s+(${l[d.XRANGEPLAIN]})\\s*$`),g("HYPHENRANGELOOSE",`^\\s*(${l[d.XRANGEPLAINLOOSE]})\\s+-\\s+(${l[d.XRANGEPLAINLOOSE]})\\s*$`),g("STAR","(<|>)?=?\\s*\\*"),g("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),g("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(Xe,Xe.exports);var Ze=Xe.exports;const et=Object.freeze({loose:!0}),tt=Object.freeze({});const st=/^[0-9]+$/,it=(e,t)=>{const s=st.test(e),i=st.test(t);return s&&i&&(e=+e,t=+t),e===t?0:s&&!i?-1:i&&!s?1:e<t?-1:1};var nt={compareIdentifiers:it,rcompareIdentifiers:(e,t)=>it(t,e)};const at=Qe,{MAX_LENGTH:rt,MAX_SAFE_INTEGER:ot}=Je,{safeRe:lt,t:dt}=Ze,mt=e=>e?"object"!=typeof e?et:e:tt,{compareIdentifiers:ct}=nt;var ut=class e{constructor(t,s){if(s=mt(s),t instanceof e){if(t.loose===!!s.loose&&t.includePrerelease===!!s.includePrerelease)return t;t=t.version}else if("string"!=typeof t)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof t}".`);if(t.length>rt)throw new TypeError(`version is longer than ${rt} characters`);at("SemVer",t,s),this.options=s,this.loose=!!s.loose,this.includePrerelease=!!s.includePrerelease;const i=t.trim().match(s.loose?lt[dt.LOOSE]:lt[dt.FULL]);if(!i)throw new TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>ot||this.major<0)throw new TypeError("Invalid major version");if(this.minor>ot||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>ot||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map((e=>{if(/^[0-9]+$/.test(e)){const t=+e;if(t>=0&&t<ot)return t}return e})):this.prerelease=[],this.build=i[5]?i[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(t){if(at("SemVer.compare",this.version,this.options,t),!(t instanceof e)){if("string"==typeof t&&t===this.version)return 0;t=new e(t,this.options)}return t.version===this.version?0:this.compareMain(t)||this.comparePre(t)}compareMain(t){return t instanceof e||(t=new e(t,this.options)),ct(this.major,t.major)||ct(this.minor,t.minor)||ct(this.patch,t.patch)}comparePre(t){if(t instanceof e||(t=new e(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let s=0;do{const e=this.prerelease[s],i=t.prerelease[s];if(at("prerelease compare",s,e,i),void 0===e&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===e)return-1;if(e!==i)return ct(e,i)}while(++s)}compareBuild(t){t instanceof e||(t=new e(t,this.options));let s=0;do{const e=this.build[s],i=t.build[s];if(at("build compare",s,e,i),void 0===e&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===e)return-1;if(e!==i)return ct(e,i)}while(++s)}inc(e,t,s){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,s);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,s);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,s),this.inc("pre",t,s);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",t,s),this.inc("pre",t,s);break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":{const e=Number(s)?1:0;if(!t&&!1===s)throw new Error("invalid increment argument: identifier is empty");if(0===this.prerelease.length)this.prerelease=[e];else{let i=this.prerelease.length;for(;--i>=0;)"number"==typeof this.prerelease[i]&&(this.prerelease[i]++,i=-2);if(-1===i){if(t===this.prerelease.join(".")&&!1===s)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(e)}}if(t){let i=[t,e];!1===s&&(i=[t]),0===ct(this.prerelease[0],t)?isNaN(this.prerelease[1])&&(this.prerelease=i):this.prerelease=i}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};const gt=ut,ft=N(((e,t)=>{const s=((e,t,s=!1)=>{if(e instanceof gt)return e;try{return new gt(e,t)}catch(e){if(!s)return null;throw e}})(e,t);return s?s.version:null})),pt=ut,ht=N(((e,t)=>new pt(e,t).major));class wt{bus;constructor(e){"function"==typeof e.getVersion&&ft(e.getVersion())?ht(e.getVersion())!==ht(this.getVersion())&&console.warn("Proxying an event bus of version "+e.getVersion()+" with "+this.getVersion()):console.warn("Proxying an event bus with an unknown or invalid version"),this.bus=e}getVersion(){return"3.3.1"}subscribe(e,t){this.bus.subscribe(e,t)}unsubscribe(e,t){this.bus.unsubscribe(e,t)}emit(e,t){this.bus.emit(e,t)}}class vt{handlers=new Map;getVersion(){return"3.3.1"}subscribe(e,t){this.handlers.set(e,(this.handlers.get(e)||[]).concat(t))}unsubscribe(e,t){this.handlers.set(e,(this.handlers.get(e)||[]).filter((e=>e!==t)))}emit(e,t){(this.handlers.get(e)||[]).forEach((e=>{try{e(t)}catch(e){console.error("could not invoke event listener",e)}}))}}let At=null;function Ct(e,t){(null!==At?At:"undefined"==typeof window?new Proxy({},{get:()=>()=>console.error("Window not available, EventBus can not be established!")}):(window.OC?._eventBus&&void 0===window._nc_event_bus&&(console.warn("found old event bus instance at OC._eventBus. Update your version!"),window._nc_event_bus=window.OC._eventBus),At=void 0!==window?._nc_event_bus?new wt(window._nc_event_bus):window._nc_event_bus=new vt,At)).emit(e,t)}class bt extends o.m{id;order;constructor(e,t=100){super(),this.id=e,this.order=t}filter(e){throw new Error("Not implemented")}updateChips(e){this.dispatchTypedEvent("update:chips",new CustomEvent("update:chips",{detail:e}))}filterUpdated(){this.dispatchTypedEvent("update:filter",new CustomEvent("update:filter"))}}function yt(e){if(window._nc_filelist_filters||(window._nc_filelist_filters=new Map),window._nc_filelist_filters.has(e.id))throw new Error(`File list filter "${e.id}" already registered`);window._nc_filelist_filters.set(e.id,e),Ct("files:filter:added",e)}function xt(e){window._nc_filelist_filters&&window._nc_filelist_filters.has(e)&&(window._nc_filelist_filters.delete(e),Ct("files:filter:removed",e))}function _t(){return window._nc_filelist_filters?[...window._nc_filelist_filters.values()]:[]}const kt=function(e){return(void 0===window._nc_newfilemenu&&(window._nc_newfilemenu=new m,i.o.debug("NewFileMenu initialized")),window._nc_newfilemenu).getEntries(e).sort(((e,t)=>void 0!==e.order&&void 0!==t.order&&e.order!==t.order?e.order-t.order:e.displayName.localeCompare(t.displayName,void 0,{numeric:!0,sensitivity:"base"})))}},24351:(e,t,s)=>{s.d(t,{S:()=>N,U:()=>K,a:()=>U,b:()=>z,g:()=>Q,h:()=>G,i:()=>E,l:()=>O,n:()=>M,o:()=>J,t:()=>D}),s(3632);var i=s(82680),n=s(85471),a=s(21777),r=s(35810),o=s(71225),l=s(43627),d=s(65043),m=s(53553),c=s(57994),u=s(63814),g=s(11950),f=s(11195),p=s(35947),h=s(87485),w=s(75270),v=s(18503),A=s(75625),C=s(15502),b=s(24764),y=s(70995),x=s(6695),_=s(95101),k=s(85168);(0,g.Ay)(d.Ay,{retries:0});const T=async function(e,t,s,i=()=>{},n=void 0,a={},r=5){let o;return o=t instanceof Blob?t:await t(),n&&(a.Destination=n),a["Content-Type"]||(a["Content-Type"]="application/octet-stream"),await d.Ay.request({method:"PUT",url:e,data:o,signal:s,onUploadProgress:i,headers:a,"axios-retry":{retries:r,retryDelay:(e,t)=>(0,g.Nv)(e,t,1e3)}})},S=function(e,t,s){return 0===t&&e.size<=s?Promise.resolve(new Blob([e],{type:e.type||"application/octet-stream"})):Promise.resolve(new Blob([e.slice(t,t+s)],{type:"application/octet-stream"}))},L=function(e=void 0){const t=window.OC?.appConfig?.files?.max_chunk_size;if(t<=0)return 0;if(!Number(t))return 10485760;const s=Math.max(Number(t),5242880);return void 0===e?s:Math.max(s,Math.ceil(e/1e4))};var N=(e=>(e[e.INITIALIZED=0]="INITIALIZED",e[e.UPLOADING=1]="UPLOADING",e[e.ASSEMBLING=2]="ASSEMBLING",e[e.FINISHED=3]="FINISHED",e[e.CANCELLED=4]="CANCELLED",e[e.FAILED=5]="FAILED",e))(N||{});class F{_source;_file;_isChunked;_chunks;_size;_uploaded=0;_startTime=0;_status=0;_controller;_response=null;constructor(e,t=!1,s,i){const n=Math.min(L()>0?Math.ceil(s/L()):1,1e4);this._source=e,this._isChunked=t&&L()>0&&n>1,this._chunks=this._isChunked?n:1,this._size=s,this._file=i,this._controller=new AbortController}get source(){return this._source}get file(){return this._file}get isChunked(){return this._isChunked}get chunks(){return this._chunks}get size(){return this._size}get startTime(){return this._startTime}set response(e){this._response=e}get response(){return this._response}get uploaded(){return this._uploaded}set uploaded(e){if(e>=this._size)return this._status=this._isChunked?2:3,void(this._uploaded=this._size);this._status=1,this._uploaded=e,0===this._startTime&&(this._startTime=(new Date).getTime())}get status(){return this._status}set status(e){this._status=e}get signal(){return this._controller.signal}cancel(){this._controller.abort(),this._status=4}}const E=e=>"FileSystemFileEntry"in window&&e instanceof FileSystemFileEntry,U=e=>"FileSystemEntry"in window&&e instanceof FileSystemEntry;class I extends File{_originalName;_path;_children;constructor(e){super([],(0,o.P8)(e),{type:"httpd/unix-directory",lastModified:0}),this._children=new Map,this._originalName=(0,o.P8)(e),this._path=e}get size(){return this.children.reduce(((e,t)=>e+t.size),0)}get lastModified(){return this.children.reduce(((e,t)=>Math.max(e,t.lastModified)),0)}get originalName(){return this._originalName}get children(){return Array.from(this._children.values())}get webkitRelativePath(){return this._path}getChild(e){return this._children.get(e)??null}async addChildren(e){for(const t of e)await this.addChild(t)}async addChild(e){const t=this._path&&`${this._path}/`;if(E(e))e=await new Promise(((t,s)=>e.file(t,s)));else if("FileSystemDirectoryEntry"in window&&e instanceof FileSystemDirectoryEntry){const s=e.createReader(),i=await new Promise(((e,t)=>s.readEntries(e,t))),n=new I(`${t}${e.name}`);return await n.addChildren(i),void this._children.set(e.name,n)}const s=e.webkitRelativePath??e.name;if(s.includes("/")){if(!s.startsWith(this._path))throw new Error(`File ${s} is not a child of ${this._path}`);const i=s.slice(t.length),n=(0,o.P8)(i);if(n===i)this._children.set(n,e);else{const s=i.slice(0,i.indexOf("/"));if(this._children.has(s))await this._children.get(s).addChild(e);else{const i=new I(`${t}${s}`);await i.addChild(e),this._children.set(s,i)}}}else this._children.set(e.name,e)}}const P=(0,f.$)().detectLocale();[{locale:"af",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Afrikaans (https://www.transifex.com/nextcloud/teams/64236/af/)","Content-Type":"text/plain; charset=UTF-8",Language:"af","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Afrikaans (https://www.transifex.com/nextcloud/teams/64236/af/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: af\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"ar",json:{charset:"utf-8",headers:{"Last-Translator":"abusaud, 2024","Language-Team":"Arabic (https://app.transifex.com/nextcloud/teams/64236/ar/)","Content-Type":"text/plain; charset=UTF-8",Language:"ar","Plural-Forms":"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nAli <alimahwer@yahoo.com>, 2024\nabusaud, 2024\n"},msgstr:["Last-Translator: abusaud, 2024\nLanguage-Team: Arabic (https://app.transifex.com/nextcloud/teams/64236/ar/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ar\nPlural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" هو اسم ممنوع لملف أو مجلد.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" هو نوع ممنوع أن يكون لملف.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" هو غير مسموح به في اسم ملف أو مجلد.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} ملف متعارض","{count} ملف متعارض","{count} ملفان متعارضان","{count} ملف متعارض","{count} ملفات متعارضة","{count} ملفات متعارضة"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} ملف متعارض في {dirname}","{count} ملف متعارض في {dirname}","{count} ملفان متعارضان في {dirname}","{count} ملف متعارض في {dirname}","{count} ملفات متعارضة في {dirname}","{count} ملفات متعارضة في {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} ثانية متبقية"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} متبقية"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["بضع ثوانٍ متبقية"]},Cancel:{msgid:"Cancel",msgstr:["إلغاء"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["إلغِ العملية بالكامل"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["إلغاء عمليات رفع الملفات"]},Continue:{msgid:"Continue",msgstr:["إستمر"]},"Create new":{msgid:"Create new",msgstr:["إنشاء جديد"]},"estimating time left":{msgid:"estimating time left",msgstr:["تقدير الوقت المتبقي"]},"Existing version":{msgid:"Existing version",msgstr:["الإصدار الحالي"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['غير مسموح ان ينتهي اسم الملف بـ "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["إذا اخترت الاحتفاظ بالنسختين فسيتم إلحاق رقم عداد آخر اسم الملف الوارد."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["اسم ملف غير صحيح"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["تاريخ آخر تعديل غير معروف"]},New:{msgid:"New",msgstr:["جديد"]},"New filename":{msgid:"New filename",msgstr:["اسم ملف جديد"]},"New version":{msgid:"New version",msgstr:["نسخة جديدة"]},paused:{msgid:"paused",msgstr:["مُجمَّد"]},"Preview image":{msgid:"Preview image",msgstr:["معاينة الصورة"]},Rename:{msgid:"Rename",msgstr:["تغيير التسمية"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["حدِّد كل صناديق الخيارات"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["حدِّد كل الملفات الموجودة"]},"Select all new files":{msgid:"Select all new files",msgstr:["حدِّد كل الملفات الجديدة"]},Skip:{msgid:"Skip",msgstr:["تخطِّي"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["تخطَّ {count} ملف","تخطَّ {count} ملف","تخطَّ {count} ملف","تخطَّ {count} ملف","تخطَّ {count} ملف","تخطَّ {count} ملف"]},"Unknown size":{msgid:"Unknown size",msgstr:["حجم غير معلوم"]},Upload:{msgid:"Upload",msgstr:["رفع الملفات"]},"Upload files":{msgid:"Upload files",msgstr:["رفع ملفات"]},"Upload folders":{msgid:"Upload folders",msgstr:["رفع مجلدات"]},"Upload from device":{msgid:"Upload from device",msgstr:["الرفع من جهاز "]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["تمّ إلغاء عملية رفع الملفات"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["تمّ تجاوز الرفع"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['رفع "{folder}" تمّ تجاوزه']},"Upload progress":{msgid:"Upload progress",msgstr:["تقدُّم الرفع "]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["عند تحديد مجلد وارد، أي ملفات متعارضة بداخله ستتم الكتابة فوقها."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["عند تحديد مجلد وارد، ستتم كتابة المحتوى في المجلد الموجود و سيتم تنفيذ حل التعارض بشكل تعاوُدي."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["أيُّ الملفات ترغب في الإبقاء عليها؟"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["يمكنك إمّا تغيير اسم الملف، أو تجاوزه، أو إلغاء العملية برُمَّتها."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["يجب أن تختار نسخة واحدة على الأقل من كل ملف للاستمرار."]}}}}},{locale:"ast",json:{charset:"utf-8",headers:{"Last-Translator":"enolp <enolp@softastur.org>, 2023","Language-Team":"Asturian (https://app.transifex.com/nextcloud/teams/64236/ast/)","Content-Type":"text/plain; charset=UTF-8",Language:"ast","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nenolp <enolp@softastur.org>, 2023\n"},msgstr:["Last-Translator: enolp <enolp@softastur.org>, 2023\nLanguage-Team: Asturian (https://app.transifex.com/nextcloud/teams/64236/ast/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ast\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} ficheru en coflictu","{count} ficheros en coflictu"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} ficheru en coflictu en {dirname}","{count} ficheros en coflictu en {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["Queden {seconds} segundos"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["Tiempu que queda: {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["queden unos segundos"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Encaboxar les xubes"]},Continue:{msgid:"Continue",msgstr:["Siguir"]},"estimating time left":{msgid:"estimating time left",msgstr:["estimando'l tiempu que falta"]},"Existing version":{msgid:"Existing version",msgstr:["Versión esistente"]},"If you select both versions, the copied file will have a number added to its name.":{msgid:"If you select both versions, the copied file will have a number added to its name.",msgstr:["Si seleiciones dambes versiones, el ficheru copiáu va tener un númberu amestáu al so nome."]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["La data de la última modificación ye desconocida"]},New:{msgid:"New",msgstr:["Nuevu"]},"New version":{msgid:"New version",msgstr:["Versión nueva"]},paused:{msgid:"paused",msgstr:["en posa"]},"Preview image":{msgid:"Preview image",msgstr:["Previsualizar la imaxe"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Marcar toles caxelles"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Seleicionar tolos ficheros esistentes"]},"Select all new files":{msgid:"Select all new files",msgstr:["Seleicionar tolos ficheros nuevos"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Saltar esti ficheru","Saltar {count} ficheros"]},"Unknown size":{msgid:"Unknown size",msgstr:["Tamañu desconocíu"]},"Upload cancelled":{msgid:"Upload cancelled",msgstr:["Encaboxóse la xuba"]},"Upload files":{msgid:"Upload files",msgstr:["Xubir ficheros"]},"Upload progress":{msgid:"Upload progress",msgstr:["Xuba en cursu"]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["¿Qué ficheros quies caltener?"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Tienes de seleicionar polo menos una versión de cada ficheru pa siguir."]}}}}},{locale:"az",json:{charset:"utf-8",headers:{"Last-Translator":"Rashad Aliyev <microphprashad@gmail.com>, 2023","Language-Team":"Azerbaijani (https://app.transifex.com/nextcloud/teams/64236/az/)","Content-Type":"text/plain; charset=UTF-8",Language:"az","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nRashad Aliyev <microphprashad@gmail.com>, 2023\n"},msgstr:["Last-Translator: Rashad Aliyev <microphprashad@gmail.com>, 2023\nLanguage-Team: Azerbaijani (https://app.transifex.com/nextcloud/teams/64236/az/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: az\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} saniyə qalıb"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["{time} qalıb"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["bir neçə saniyə qalıb"]},Add:{msgid:"Add",msgstr:["Əlavə et"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Yükləməni imtina et"]},"estimating time left":{msgid:"estimating time left",msgstr:["Təxmini qalan vaxt"]},paused:{msgid:"paused",msgstr:["pauzadadır"]},"Upload files":{msgid:"Upload files",msgstr:["Faylları yüklə"]}}}}},{locale:"be",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Belarusian (https://www.transifex.com/nextcloud/teams/64236/be/)","Content-Type":"text/plain; charset=UTF-8",Language:"be","Plural-Forms":"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Belarusian (https://www.transifex.com/nextcloud/teams/64236/be/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: be\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"bg",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Bulgarian (Bulgaria) (https://www.transifex.com/nextcloud/teams/64236/bg_BG/)","Content-Type":"text/plain; charset=UTF-8",Language:"bg_BG","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Bulgarian (Bulgaria) (https://www.transifex.com/nextcloud/teams/64236/bg_BG/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: bg_BG\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"bn_BD",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Bengali (Bangladesh) (https://www.transifex.com/nextcloud/teams/64236/bn_BD/)","Content-Type":"text/plain; charset=UTF-8",Language:"bn_BD","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Bengali (Bangladesh) (https://www.transifex.com/nextcloud/teams/64236/bn_BD/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: bn_BD\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"br",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Breton (https://www.transifex.com/nextcloud/teams/64236/br/)","Content-Type":"text/plain; charset=UTF-8",Language:"br","Plural-Forms":"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: br\nPlural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"bs",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Bosnian (https://www.transifex.com/nextcloud/teams/64236/bs/)","Content-Type":"text/plain; charset=UTF-8",Language:"bs","Plural-Forms":"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Bosnian (https://www.transifex.com/nextcloud/teams/64236/bs/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: bs\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"ca",json:{charset:"utf-8",headers:{"Last-Translator":"Toni Hermoso Pulido <toniher@softcatala.cat>, 2022","Language-Team":"Catalan (https://www.transifex.com/nextcloud/teams/64236/ca/)","Content-Type":"text/plain; charset=UTF-8",Language:"ca","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nMarc Riera <marcriera@softcatala.org>, 2022\nToni Hermoso Pulido <toniher@softcatala.cat>, 2022\n"},msgstr:["Last-Translator: Toni Hermoso Pulido <toniher@softcatala.cat>, 2022\nLanguage-Team: Catalan (https://www.transifex.com/nextcloud/teams/64236/ca/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ca\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["Queden {seconds} segons"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["Queden {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["Queden uns segons"]},Add:{msgid:"Add",msgstr:["Afegeix"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Cancel·la les pujades"]},"estimating time left":{msgid:"estimating time left",msgstr:["S'està estimant el temps restant"]},paused:{msgid:"paused",msgstr:["En pausa"]},"Upload files":{msgid:"Upload files",msgstr:["Puja els fitxers"]}}}}},{locale:"cs",json:{charset:"utf-8",headers:{"Last-Translator":"Pavel Borecki <pavel.borecki@gmail.com>, 2024","Language-Team":"Czech (Czech Republic) (https://app.transifex.com/nextcloud/teams/64236/cs_CZ/)","Content-Type":"text/plain; charset=UTF-8",Language:"cs_CZ","Plural-Forms":"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nMichal Šmahel <ceskyDJ@seznam.cz>, 2024\nMartin Hankovec, 2024\nAppukonrad <appukonrad@gmail.com>, 2024\nPavel Borecki <pavel.borecki@gmail.com>, 2024\n"},msgstr:["Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2024\nLanguage-Team: Czech (Czech Republic) (https://app.transifex.com/nextcloud/teams/64236/cs_CZ/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: cs_CZ\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:["„{segment}“ není povoleno použít jako název souboru či složky."]},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:["„{segment}“ není povoleného typu souboru."]},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:["„{segment}“ není povoleno použít v rámci názvu souboru či složky."]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} kolize souborů","{count} kolize souborů","{count} kolizí souborů","{count} kolize souborů"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} kolize souboru v {dirname}","{count} kolize souboru v {dirname}","{count} kolizí souborů v {dirname}","{count} kolize souboru v {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["zbývá {seconds}"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["zbývá {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["zbývá několik sekund"]},Cancel:{msgid:"Cancel",msgstr:["Zrušit"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Zrušit celou operaci"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Zrušit nahrávání"]},Continue:{msgid:"Continue",msgstr:["Pokračovat"]},"Create new":{msgid:"Create new",msgstr:["Vytvořit nový"]},"estimating time left":{msgid:"estimating time left",msgstr:["odhaduje se zbývající čas"]},"Existing version":{msgid:"Existing version",msgstr:["Existující verze"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:["Názvy souborů nemohou končit na „{segment}“."]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Pokud vyberete obě verze, příchozí soubor bude mít ke jménu přidánu číslici."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Neplatný název souboru"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Neznámé datum poslední úpravy"]},New:{msgid:"New",msgstr:["Nové"]},"New filename":{msgid:"New filename",msgstr:["Nový název souboru"]},"New version":{msgid:"New version",msgstr:["Nová verze"]},paused:{msgid:"paused",msgstr:["pozastaveno"]},"Preview image":{msgid:"Preview image",msgstr:["Náhled obrázku"]},Rename:{msgid:"Rename",msgstr:["Přejmenovat"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Označit všechny zaškrtávací kolonky"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Vybrat veškeré stávající soubory"]},"Select all new files":{msgid:"Select all new files",msgstr:["Vybrat veškeré nové soubory"]},Skip:{msgid:"Skip",msgstr:["Přeskočit"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Přeskočit tento soubor","Přeskočit {count} soubory","Přeskočit {count} souborů","Přeskočit {count} soubory"]},"Unknown size":{msgid:"Unknown size",msgstr:["Neznámá velikost"]},Upload:{msgid:"Upload",msgstr:["Nahrát"]},"Upload files":{msgid:"Upload files",msgstr:["Nahrát soubory"]},"Upload folders":{msgid:"Upload folders",msgstr:["Nahrát složky"]},"Upload from device":{msgid:"Upload from device",msgstr:["Nahrát ze zařízení"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Nahrávání bylo zrušeno"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Nahrání bylo přeskočeno"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:["Nahrání „{folder}“ bylo přeskočeno"]},"Upload progress":{msgid:"Upload progress",msgstr:["Postup v nahrávání"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Po výběru příchozí složky budou rovněž přepsány všechny v ní obsažené konfliktní soubory"]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Když je vybrána příchozí složka, obsah je zapsán do existující složky a je provedeno rekurzivní řešení kolizí."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Které soubory si přejete ponechat?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Soubor je možné buď přejmenovat, přeskočit nebo celou operaci zrušit."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Aby bylo možné pokračovat, je třeba vybrat alespoň jednu verzi od každého souboru."]}}}}},{locale:"cy_GB",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Welsh (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/cy_GB/)","Content-Type":"text/plain; charset=UTF-8",Language:"cy_GB","Plural-Forms":"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Welsh (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/cy_GB/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: cy_GB\nPlural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"da",json:{charset:"utf-8",headers:{"Last-Translator":"Martin Bonde <Martin@maboni.dk>, 2024","Language-Team":"Danish (https://app.transifex.com/nextcloud/teams/64236/da/)","Content-Type":"text/plain; charset=UTF-8",Language:"da","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nRasmus Rosendahl-Kaa, 2024\nMartin Bonde <Martin@maboni.dk>, 2024\n"},msgstr:["Last-Translator: Martin Bonde <Martin@maboni.dk>, 2024\nLanguage-Team: Danish (https://app.transifex.com/nextcloud/teams/64236/da/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: da\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" er et forbudt fil- eller mappenavn.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" er en forbudt filtype.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" er ikke tilladt i et fil- eller mappenavn.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} fil konflikt","{count} filer i konflikt"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} fil konflikt i {dirname}","{count} filer i konflikt i {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{sekunder} sekunder tilbage"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} tilbage"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["et par sekunder tilbage"]},Cancel:{msgid:"Cancel",msgstr:["Annuller"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Annuller hele handlingen"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Annuller uploads"]},Continue:{msgid:"Continue",msgstr:["Fortsæt"]},"Create new":{msgid:"Create new",msgstr:["Opret ny"]},"estimating time left":{msgid:"estimating time left",msgstr:["estimering af resterende tid"]},"Existing version":{msgid:"Existing version",msgstr:["Eksisterende version"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Filnavne må ikke slutte med "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Hvis du vælger begge versioner, vil den indkommende fil have et nummer tilføjet til sit navn."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Ugyldigt filnavn"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Sidste modifikationsdato ukendt"]},New:{msgid:"New",msgstr:["Ny"]},"New filename":{msgid:"New filename",msgstr:["Nyt filnavn"]},"New version":{msgid:"New version",msgstr:["Ny version"]},paused:{msgid:"paused",msgstr:["pauset"]},"Preview image":{msgid:"Preview image",msgstr:["Forhåndsvisning af billede"]},Rename:{msgid:"Rename",msgstr:["Omdøb"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Vælg alle felter"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Vælg alle eksisterende filer"]},"Select all new files":{msgid:"Select all new files",msgstr:["Vælg alle nye filer"]},Skip:{msgid:"Skip",msgstr:["Spring over"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Spring denne fil over","Spring {count} filer over"]},"Unknown size":{msgid:"Unknown size",msgstr:["Ukendt størrelse"]},Upload:{msgid:"Upload",msgstr:["Upload"]},"Upload files":{msgid:"Upload files",msgstr:["Upload filer"]},"Upload folders":{msgid:"Upload folders",msgstr:["Upload mapper"]},"Upload from device":{msgid:"Upload from device",msgstr:["Upload fra enhed"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Upload er blevet annulleret"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Upload er blevet sprunget over"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Upload af "{folder}" er blevet sprunget over']},"Upload progress":{msgid:"Upload progress",msgstr:["Upload fremskridt"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Når en indgående mappe er valgt, vil alle modstridende filer i den også blive overskrevet."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Når en indkommende mappe er valgt, vil dens indhold blive skrevet ind i den eksisterende mappe og en rekursiv konfliktløsning udføres."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Hvilke filer ønsker du at beholde?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Du kan enten omdøbe filen, springe denne fil over eller annullere hele handlingen."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Du skal vælge mindst én version af hver fil for at fortsætte."]}}}}},{locale:"de",json:{charset:"utf-8",headers:{"Last-Translator":"Andy Scherzinger <info@andy-scherzinger.de>, 2024","Language-Team":"German (https://app.transifex.com/nextcloud/teams/64236/de/)","Content-Type":"text/plain; charset=UTF-8",Language:"de","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nMario Siegmann <mario_siegmann@web.de>, 2024\nMartin Wilichowski, 2024\nAndy Scherzinger <info@andy-scherzinger.de>, 2024\n"},msgstr:["Last-Translator: Andy Scherzinger <info@andy-scherzinger.de>, 2024\nLanguage-Team: German (https://app.transifex.com/nextcloud/teams/64236/de/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: de\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" ist ein verbotener Datei- oder Ordnername.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" ist ein verbotener Dateityp.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" ist in einem Datei- oder Ordnernamen nicht zulässig.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} Datei-Konflikt","{count} Datei-Konflikte"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} Datei-Konflikt in {dirname}","{count} Datei-Konflikte in {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} Sekunden verbleiben"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} verbleibend"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["ein paar Sekunden verbleiben"]},Cancel:{msgid:"Cancel",msgstr:["Abbrechen"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Den gesamten Vorgang abbrechen"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Hochladen abbrechen"]},Continue:{msgid:"Continue",msgstr:["Fortsetzen"]},"Create new":{msgid:"Create new",msgstr:["Neu erstellen"]},"estimating time left":{msgid:"estimating time left",msgstr:["Geschätzte verbleibende Zeit"]},"Existing version":{msgid:"Existing version",msgstr:["Vorhandene Version"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Dateinamen dürfen nicht mit "{segment}" enden.']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Wenn du beide Versionen auswählst, wird der eingehenden Datei eine Nummer zum Namen hinzugefügt."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Ungültiger Dateiname"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Datum der letzten Änderung unbekannt"]},New:{msgid:"New",msgstr:["Neu"]},"New filename":{msgid:"New filename",msgstr:["Neuer Dateiname"]},"New version":{msgid:"New version",msgstr:["Neue Version"]},paused:{msgid:"paused",msgstr:["Pausiert"]},"Preview image":{msgid:"Preview image",msgstr:["Vorschaubild"]},Rename:{msgid:"Rename",msgstr:["Umbenennen"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Alle Kontrollkästchen aktivieren"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Alle vorhandenen Dateien auswählen"]},"Select all new files":{msgid:"Select all new files",msgstr:["Alle neuen Dateien auswählen"]},Skip:{msgid:"Skip",msgstr:["Überspringen"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Diese Datei überspringen","{count} Dateien überspringen"]},"Unknown size":{msgid:"Unknown size",msgstr:["Unbekannte Größe"]},Upload:{msgid:"Upload",msgstr:["Hochladen"]},"Upload files":{msgid:"Upload files",msgstr:["Dateien hochladen"]},"Upload folders":{msgid:"Upload folders",msgstr:["Ordner hochladen"]},"Upload from device":{msgid:"Upload from device",msgstr:["Vom Gerät hochladen"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Das Hochladen wurde abgebrochen"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Das Hochladen wurde übersprungen"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Das Hochladen von "{folder}" wurde übersprungen']},"Upload progress":{msgid:"Upload progress",msgstr:["Fortschritt beim Hochladen"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Wenn ein eingehender Ordner ausgewählt wird, werden alle darin enthaltenen Konfliktdateien ebenfalls überschrieben."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Welche Dateien möchtest du behalten?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Du kannst die Datei entweder umbenennen, diese Datei überspringen oder den gesamten Vorgang abbrechen."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Du musst mindestens eine Version jeder Datei auswählen, um fortzufahren."]}}}}},{locale:"de_DE",json:{charset:"utf-8",headers:{"Last-Translator":"Mark Ziegler <mark.ziegler@rakekniven.de>, 2024","Language-Team":"German (Germany) (https://app.transifex.com/nextcloud/teams/64236/de_DE/)","Content-Type":"text/plain; charset=UTF-8",Language:"de_DE","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nMario Siegmann <mario_siegmann@web.de>, 2024\nMark Ziegler <mark.ziegler@rakekniven.de>, 2024\n"},msgstr:["Last-Translator: Mark Ziegler <mark.ziegler@rakekniven.de>, 2024\nLanguage-Team: German (Germany) (https://app.transifex.com/nextcloud/teams/64236/de_DE/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: de_DE\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" ist ein verbotener Datei- oder Ordnername.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" ist ein verbotener Dateityp.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" ist in einem Datei- oder Ordnernamen nicht zulässig.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} Datei-Konflikt","{count} Datei-Konflikte"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} Datei-Konflikt in {dirname}","{count} Datei-Konflikte in {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} Sekunden verbleiben"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} verbleibend"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["ein paar Sekunden verbleiben"]},Cancel:{msgid:"Cancel",msgstr:["Abbrechen"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Den gesamten Vorgang abbrechen"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Hochladen abbrechen"]},Continue:{msgid:"Continue",msgstr:["Fortsetzen"]},"Create new":{msgid:"Create new",msgstr:["Neu erstellen"]},"estimating time left":{msgid:"estimating time left",msgstr:["Berechne verbleibende Zeit"]},"Existing version":{msgid:"Existing version",msgstr:["Vorhandene Version"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Dateinamen dürfen nicht mit "{segment}" enden.']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Wenn Sie beide Versionen auswählen, wird der eingehenden Datei eine Nummer zum Namen hinzugefügt."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Ungültiger Dateiname"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Datum der letzten Änderung unbekannt"]},New:{msgid:"New",msgstr:["Neu"]},"New filename":{msgid:"New filename",msgstr:["Neuer Dateiname"]},"New version":{msgid:"New version",msgstr:["Neue Version"]},paused:{msgid:"paused",msgstr:["Pausiert"]},"Preview image":{msgid:"Preview image",msgstr:["Vorschaubild"]},Rename:{msgid:"Rename",msgstr:["Umbenennen"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Alle Kontrollkästchen aktivieren"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Alle vorhandenen Dateien auswählen"]},"Select all new files":{msgid:"Select all new files",msgstr:["Alle neuen Dateien auswählen"]},Skip:{msgid:"Skip",msgstr:["Überspringen"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["{count} Datei überspringen","{count} Dateien überspringen"]},"Unknown size":{msgid:"Unknown size",msgstr:["Unbekannte Größe"]},Upload:{msgid:"Upload",msgstr:["Hochladen"]},"Upload files":{msgid:"Upload files",msgstr:["Dateien hochladen"]},"Upload folders":{msgid:"Upload folders",msgstr:["Ordner hochladen"]},"Upload from device":{msgid:"Upload from device",msgstr:["Vom Gerät hochladen"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Das Hochladen wurde abgebrochen"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Das Hochladen wurde übersprungen"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Das Hochladen von "{folder}" wurde übersprungen']},"Upload progress":{msgid:"Upload progress",msgstr:["Fortschritt beim Hochladen"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Wenn ein eingehender Ordner ausgewählt wird, werden alle darin enthaltenen Konfliktdateien ebenfalls überschrieben."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Welche Dateien möchten Sie behalten?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Sie können die Datei entweder umbenennen, diese Datei überspringen oder den gesamten Vorgang abbrechen."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Sie müssen mindestens eine Version jeder Datei auswählen, um fortzufahren."]}}}}},{locale:"el",json:{charset:"utf-8",headers:{"Last-Translator":"Nik Pap, 2022","Language-Team":"Greek (https://www.transifex.com/nextcloud/teams/64236/el/)","Content-Type":"text/plain; charset=UTF-8",Language:"el","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nNik Pap, 2022\n"},msgstr:["Last-Translator: Nik Pap, 2022\nLanguage-Team: Greek (https://www.transifex.com/nextcloud/teams/64236/el/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: el\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["απομένουν {seconds} δευτερόλεπτα"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["απομένουν {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["απομένουν λίγα δευτερόλεπτα"]},Add:{msgid:"Add",msgstr:["Προσθήκη"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Ακύρωση μεταφορτώσεων"]},"estimating time left":{msgid:"estimating time left",msgstr:["εκτίμηση του χρόνου που απομένει"]},paused:{msgid:"paused",msgstr:["σε παύση"]},"Upload files":{msgid:"Upload files",msgstr:["Μεταφόρτωση αρχείων"]}}}}},{locale:"en_GB",json:{charset:"utf-8",headers:{"Last-Translator":"Andi Chandler <andi@gowling.com>, 2024","Language-Team":"English (United Kingdom) (https://app.transifex.com/nextcloud/teams/64236/en_GB/)","Content-Type":"text/plain; charset=UTF-8",Language:"en_GB","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nAndi Chandler <andi@gowling.com>, 2024\n"},msgstr:["Last-Translator: Andi Chandler <andi@gowling.com>, 2024\nLanguage-Team: English (United Kingdom) (https://app.transifex.com/nextcloud/teams/64236/en_GB/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: en_GB\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" is a forbidden file or folder name.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" is a forbidden file type.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" is not allowed inside a file or folder name.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} file conflict","{count} files conflict"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} file conflict in {dirname}","{count} file conflicts in {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} seconds left"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} left"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["a few seconds left"]},Cancel:{msgid:"Cancel",msgstr:["Cancel"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Cancel the entire operation"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Cancel uploads"]},Continue:{msgid:"Continue",msgstr:["Continue"]},"Create new":{msgid:"Create new",msgstr:["Create new"]},"estimating time left":{msgid:"estimating time left",msgstr:["estimating time left"]},"Existing version":{msgid:"Existing version",msgstr:["Existing version"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Filenames must not end with "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["If you select both versions, the incoming file will have a number added to its name."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Invalid filename"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Last modified date unknown"]},New:{msgid:"New",msgstr:["New"]},"New filename":{msgid:"New filename",msgstr:["New filename"]},"New version":{msgid:"New version",msgstr:["New version"]},paused:{msgid:"paused",msgstr:["paused"]},"Preview image":{msgid:"Preview image",msgstr:["Preview image"]},Rename:{msgid:"Rename",msgstr:["Rename"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Select all checkboxes"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Select all existing files"]},"Select all new files":{msgid:"Select all new files",msgstr:["Select all new files"]},Skip:{msgid:"Skip",msgstr:["Skip"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Skip this file","Skip {count} files"]},"Unknown size":{msgid:"Unknown size",msgstr:["Unknown size"]},Upload:{msgid:"Upload",msgstr:["Upload"]},"Upload files":{msgid:"Upload files",msgstr:["Upload files"]},"Upload folders":{msgid:"Upload folders",msgstr:["Upload folders"]},"Upload from device":{msgid:"Upload from device",msgstr:["Upload from device"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Upload has been cancelled"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Upload has been skipped"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Upload of "{folder}" has been skipped']},"Upload progress":{msgid:"Upload progress",msgstr:["Upload progress"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["When an incoming folder is selected, any conflicting files within it will also be overwritten."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Which files do you want to keep?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["You can either rename the file, skip this file or cancel the whole operation."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["You need to select at least one version of each file to continue."]}}}}},{locale:"eo",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)","Content-Type":"text/plain; charset=UTF-8",Language:"eo","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: eo\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es",json:{charset:"utf-8",headers:{"Last-Translator":"Julio C. Ortega, 2024","Language-Team":"Spanish (https://app.transifex.com/nextcloud/teams/64236/es/)","Content-Type":"text/plain; charset=UTF-8",Language:"es","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nFranciscoFJ <dev-ooo@satel-sa.com>, 2024\nJulio C. Ortega, 2024\n"},msgstr:["Last-Translator: Julio C. Ortega, 2024\nLanguage-Team: Spanish (https://app.transifex.com/nextcloud/teams/64236/es/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},'"{filename}" contains invalid characters, how do you want to continue?':{msgid:'"{filename}" contains invalid characters, how do you want to continue?',msgstr:['"{filename}" contiene caracteres inválidos, ¿cómo desea continuar?']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} conflicto de archivo","{count} conflictos de archivo","{count} conflictos de archivo"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} conflicto de archivo en {dirname}","{count} conflictos de archivo en {dirname}","{count} conflictos de archivo en {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} segundos restantes"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} restante"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["quedan unos segundos"]},Cancel:{msgid:"Cancel",msgstr:["Cancelar"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Cancelar toda la operación"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Cancelar subidas"]},Continue:{msgid:"Continue",msgstr:["Continuar"]},"Create new":{msgid:"Create new",msgstr:["Crear nuevo"]},"estimating time left":{msgid:"estimating time left",msgstr:["estimando tiempo restante"]},"Existing version":{msgid:"Existing version",msgstr:["Versión existente"]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Si selecciona ambas versionas, el archivo entrante le será agregado un número a su nombre."]},"Invalid file name":{msgid:"Invalid file name",msgstr:["Nombre de archivo inválido"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Última fecha de modificación desconocida"]},New:{msgid:"New",msgstr:["Nuevo"]},"New version":{msgid:"New version",msgstr:["Nueva versión"]},paused:{msgid:"paused",msgstr:["pausado"]},"Preview image":{msgid:"Preview image",msgstr:["Previsualizar imagen"]},Rename:{msgid:"Rename",msgstr:["Renombrar"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Seleccionar todas las casillas de verificación"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Seleccionar todos los archivos existentes"]},"Select all new files":{msgid:"Select all new files",msgstr:["Seleccionar todos los archivos nuevos"]},Skip:{msgid:"Skip",msgstr:["Saltar"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Saltar este archivo","Saltar {count} archivos","Saltar {count} archivos"]},"Unknown size":{msgid:"Unknown size",msgstr:["Tamaño desconocido"]},"Upload files":{msgid:"Upload files",msgstr:["Subir archivos"]},"Upload folders":{msgid:"Upload folders",msgstr:["Subir carpetas"]},"Upload from device":{msgid:"Upload from device",msgstr:["Subir desde dispositivo"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["La subida ha sido cancelada"]},"Upload progress":{msgid:"Upload progress",msgstr:["Progreso de la subida"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Cuando una carpeta entrante es seleccionada, cualquier de los archivos en conflictos también serán sobre-escritos."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Cuando una carpeta entrante es seleccionada, el contenido es escrito en la carpeta existente y se realizará una resolución de conflictos recursiva."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["¿Qué archivos desea conservar?"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Debe seleccionar al menos una versión de cada archivo para continuar."]}}}}},{locale:"es_419",json:{charset:"utf-8",headers:{"Last-Translator":"ALEJANDRO CASTRO, 2022","Language-Team":"Spanish (Latin America) (https://www.transifex.com/nextcloud/teams/64236/es_419/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_419","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nALEJANDRO CASTRO, 2022\n"},msgstr:["Last-Translator: ALEJANDRO CASTRO, 2022\nLanguage-Team: Spanish (Latin America) (https://www.transifex.com/nextcloud/teams/64236/es_419/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_419\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} segundos restantes"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["{tiempo} restante"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["quedan pocos segundos"]},Add:{msgid:"Add",msgstr:["agregar"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Cancelar subidas"]},"estimating time left":{msgid:"estimating time left",msgstr:["estimando tiempo restante"]},paused:{msgid:"paused",msgstr:["pausado"]},"Upload files":{msgid:"Upload files",msgstr:["Subir archivos"]}}}}},{locale:"es_AR",json:{charset:"utf-8",headers:{"Last-Translator":"Matías Campo Hoet <matiascampo@gmail.com>, 2024","Language-Team":"Spanish (Argentina) (https://app.transifex.com/nextcloud/teams/64236/es_AR/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_AR","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nMatías Campo Hoet <matiascampo@gmail.com>, 2024\n"},msgstr:["Last-Translator: Matías Campo Hoet <matiascampo@gmail.com>, 2024\nLanguage-Team: Spanish (Argentina) (https://app.transifex.com/nextcloud/teams/64236/es_AR/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_AR\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},'"{filename}" contains invalid characters, how do you want to continue?':{msgid:'"{filename}" contains invalid characters, how do you want to continue?',msgstr:['"{filename}" contiene caracteres inválidos, ¿cómo desea continuar?']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} conflicto de archivo","{count} conflictos de archivo","{count} conflictos de archivo"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} conflicto de archivo en {dirname}","{count} conflictos de archivo en {dirname}","{count} conflictos de archivo en {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} segundos restantes"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} restante"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["quedan unos segundos"]},Cancel:{msgid:"Cancel",msgstr:["Cancelar"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Cancelar toda la operación"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Cancelar subidas"]},Continue:{msgid:"Continue",msgstr:["Continuar"]},"Create new":{msgid:"Create new",msgstr:["Crear nuevo"]},"estimating time left":{msgid:"estimating time left",msgstr:["estimando tiempo restante"]},"Existing version":{msgid:"Existing version",msgstr:["Versión existente"]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Si selecciona ambas versionas, se agregará un número al nombre del archivo entrante."]},"Invalid file name":{msgid:"Invalid file name",msgstr:["Nombre de archivo inválido"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Fecha de última modificación desconocida"]},New:{msgid:"New",msgstr:["Nuevo"]},"New version":{msgid:"New version",msgstr:["Nueva versión"]},paused:{msgid:"paused",msgstr:["pausado"]},"Preview image":{msgid:"Preview image",msgstr:["Vista previa de imagen"]},Rename:{msgid:"Rename",msgstr:["Renombrar"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Seleccionar todas las casillas de verificación"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Seleccionar todos los archivos existentes"]},"Select all new files":{msgid:"Select all new files",msgstr:["Seleccionar todos los archivos nuevos"]},Skip:{msgid:"Skip",msgstr:["Omitir"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Omitir este archivo","Omitir {count} archivos","Omitir {count} archivos"]},"Unknown size":{msgid:"Unknown size",msgstr:["Tamaño desconocido"]},"Upload files":{msgid:"Upload files",msgstr:["Cargar archivos"]},"Upload folders":{msgid:"Upload folders",msgstr:["Cargar carpetas"]},"Upload from device":{msgid:"Upload from device",msgstr:["Cargar desde dispositivo"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Carga cancelada"]},"Upload progress":{msgid:"Upload progress",msgstr:["Progreso de la carga"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Cuando una carpeta entrante es seleccionada, cualquier archivo en conflicto dentro de la misma también serán sobreescritos."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Cuando una carpeta entrante es seleccionada, el contenido se escribe en la carpeta existente y se realiza una resolución de conflictos recursiva."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["¿Qué archivos desea conservar?"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Debe seleccionar al menos una versión de cada archivo para continuar."]}}}}},{locale:"es_CL",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Chile) (https://www.transifex.com/nextcloud/teams/64236/es_CL/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_CL","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Chile) (https://www.transifex.com/nextcloud/teams/64236/es_CL/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_CL\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_CO",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Colombia) (https://www.transifex.com/nextcloud/teams/64236/es_CO/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_CO","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Colombia) (https://www.transifex.com/nextcloud/teams/64236/es_CO/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_CO\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_CR",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Costa Rica) (https://www.transifex.com/nextcloud/teams/64236/es_CR/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_CR","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Costa Rica) (https://www.transifex.com/nextcloud/teams/64236/es_CR/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_CR\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_DO",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Dominican Republic) (https://www.transifex.com/nextcloud/teams/64236/es_DO/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_DO","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Dominican Republic) (https://www.transifex.com/nextcloud/teams/64236/es_DO/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_DO\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_EC",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Ecuador) (https://www.transifex.com/nextcloud/teams/64236/es_EC/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_EC","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Ecuador) (https://www.transifex.com/nextcloud/teams/64236/es_EC/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_EC\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_GT",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Guatemala) (https://www.transifex.com/nextcloud/teams/64236/es_GT/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_GT","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Guatemala) (https://www.transifex.com/nextcloud/teams/64236/es_GT/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_GT\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_HN",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Honduras) (https://www.transifex.com/nextcloud/teams/64236/es_HN/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_HN","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Honduras) (https://www.transifex.com/nextcloud/teams/64236/es_HN/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_HN\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_MX",json:{charset:"utf-8",headers:{"Last-Translator":"Jehu Marcos Herrera Puentes, 2024","Language-Team":"Spanish (Mexico) (https://app.transifex.com/nextcloud/teams/64236/es_MX/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_MX","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nJehu Marcos Herrera Puentes, 2024\n"},msgstr:["Last-Translator: Jehu Marcos Herrera Puentes, 2024\nLanguage-Team: Spanish (Mexico) (https://app.transifex.com/nextcloud/teams/64236/es_MX/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_MX\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},'"{filename}" contains invalid characters, how do you want to continue?':{msgid:'"{filename}" contains invalid characters, how do you want to continue?',msgstr:['"{filename}" contiene caracteres inválidos, ¿Cómo desea continuar?']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} conflicto de archivo","{count} conflictos de archivo","{count} archivos en conflicto"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} archivo en conflicto en {dirname}","{count} archivos en conflicto en {dirname}","{count} archivo en conflicto en {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} segundos restantes"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{tiempo} restante"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["quedan pocos segundos"]},Cancel:{msgid:"Cancel",msgstr:["Cancelar"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Cancelar toda la operación"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Cancelar subidas"]},Continue:{msgid:"Continue",msgstr:["Continuar"]},"Create new":{msgid:"Create new",msgstr:["Crear nuevo"]},"estimating time left":{msgid:"estimating time left",msgstr:["estimando tiempo restante"]},"Existing version":{msgid:"Existing version",msgstr:["Versión existente"]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Si selecciona ambas versionas, se agregará un número al nombre del archivo entrante."]},"Invalid file name":{msgid:"Invalid file name",msgstr:["Nombre de archivo inválido"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Fecha de última modificación desconocida"]},New:{msgid:"New",msgstr:["Nuevo"]},"New version":{msgid:"New version",msgstr:["Nueva versión"]},paused:{msgid:"paused",msgstr:["en pausa"]},"Preview image":{msgid:"Preview image",msgstr:["Previsualizar imagen"]},Rename:{msgid:"Rename",msgstr:["Renombrar"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Seleccionar todas las casillas de verificación"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Seleccionar todos los archivos existentes"]},"Select all new files":{msgid:"Select all new files",msgstr:["Seleccionar todos los archivos nuevos"]},Skip:{msgid:"Skip",msgstr:["Omitir"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Omitir este archivo","Omitir {count} archivos","Omitir {count} archivos"]},"Unknown size":{msgid:"Unknown size",msgstr:["Tamaño desconocido"]},"Upload files":{msgid:"Upload files",msgstr:["Subir archivos"]},"Upload folders":{msgid:"Upload folders",msgstr:["Subir carpetas"]},"Upload from device":{msgid:"Upload from device",msgstr:["Subir desde dispositivo"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["La subida ha sido cancelada"]},"Upload progress":{msgid:"Upload progress",msgstr:["Progreso de la subida"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Cuando una carpeta entrante es seleccionada, cualquier archivo en conflicto dentro de la misma también será sobrescrito."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Cuando una carpeta entrante es seleccionada, el contenido se escribe en la carpeta existente y se realiza una resolución de conflictos recursiva."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["¿Cuáles archivos desea conservar?"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Debe seleccionar al menos una versión de cada archivo para continuar."]}}}}},{locale:"es_NI",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Nicaragua) (https://www.transifex.com/nextcloud/teams/64236/es_NI/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_NI","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Nicaragua) (https://www.transifex.com/nextcloud/teams/64236/es_NI/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_NI\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_PA",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Panama) (https://www.transifex.com/nextcloud/teams/64236/es_PA/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_PA","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Panama) (https://www.transifex.com/nextcloud/teams/64236/es_PA/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_PA\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_PE",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Peru) (https://www.transifex.com/nextcloud/teams/64236/es_PE/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_PE","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Peru) (https://www.transifex.com/nextcloud/teams/64236/es_PE/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_PE\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_PR",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Puerto Rico) (https://www.transifex.com/nextcloud/teams/64236/es_PR/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_PR","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Puerto Rico) (https://www.transifex.com/nextcloud/teams/64236/es_PR/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_PR\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_PY",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Paraguay) (https://www.transifex.com/nextcloud/teams/64236/es_PY/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_PY","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Paraguay) (https://www.transifex.com/nextcloud/teams/64236/es_PY/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_PY\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_SV",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (El Salvador) (https://www.transifex.com/nextcloud/teams/64236/es_SV/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_SV","Plural-Forms":"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (El Salvador) (https://www.transifex.com/nextcloud/teams/64236/es_SV/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_SV\nPlural-Forms: nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_UY",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Uruguay) (https://www.transifex.com/nextcloud/teams/64236/es_UY/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_UY","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Uruguay) (https://www.transifex.com/nextcloud/teams/64236/es_UY/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_UY\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"et_EE",json:{charset:"utf-8",headers:{"Last-Translator":"Taavo Roos, 2023","Language-Team":"Estonian (Estonia) (https://app.transifex.com/nextcloud/teams/64236/et_EE/)","Content-Type":"text/plain; charset=UTF-8",Language:"et_EE","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nMait R, 2022\nTaavo Roos, 2023\n"},msgstr:["Last-Translator: Taavo Roos, 2023\nLanguage-Team: Estonian (Estonia) (https://app.transifex.com/nextcloud/teams/64236/et_EE/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: et_EE\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} jäänud sekundid"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["{time} aega jäänud"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["jäänud mõni sekund"]},Add:{msgid:"Add",msgstr:["Lisa"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Tühista üleslaadimine"]},"estimating time left":{msgid:"estimating time left",msgstr:["hinnanguline järelejäänud aeg"]},paused:{msgid:"paused",msgstr:["pausil"]},"Upload files":{msgid:"Upload files",msgstr:["Lae failid üles"]}}}}},{locale:"eu",json:{charset:"utf-8",headers:{"Last-Translator":"Unai Tolosa Pontesta <utolosa002@gmail.com>, 2022","Language-Team":"Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)","Content-Type":"text/plain; charset=UTF-8",Language:"eu","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nUnai Tolosa Pontesta <utolosa002@gmail.com>, 2022\n"},msgstr:["Last-Translator: Unai Tolosa Pontesta <utolosa002@gmail.com>, 2022\nLanguage-Team: Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: eu\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} segundo geratzen dira"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["{time} geratzen da"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["segundo batzuk geratzen dira"]},Add:{msgid:"Add",msgstr:["Gehitu"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Ezeztatu igoerak"]},"estimating time left":{msgid:"estimating time left",msgstr:["kalkulatutako geratzen den denbora"]},paused:{msgid:"paused",msgstr:["geldituta"]},"Upload files":{msgid:"Upload files",msgstr:["Igo fitxategiak"]}}}}},{locale:"fa",json:{charset:"utf-8",headers:{"Last-Translator":"Fatemeh Komeily, 2023","Language-Team":"Persian (https://app.transifex.com/nextcloud/teams/64236/fa/)","Content-Type":"text/plain; charset=UTF-8",Language:"fa","Plural-Forms":"nplurals=2; plural=(n > 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nFatemeh Komeily, 2023\n"},msgstr:["Last-Translator: Fatemeh Komeily, 2023\nLanguage-Team: Persian (https://app.transifex.com/nextcloud/teams/64236/fa/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: fa\nPlural-Forms: nplurals=2; plural=(n > 1);\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["ثانیه های باقی مانده"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["باقی مانده"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["چند ثانیه مانده"]},Add:{msgid:"Add",msgstr:["اضافه کردن"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["کنسل کردن فایل های اپلود شده"]},"estimating time left":{msgid:"estimating time left",msgstr:["تخمین زمان باقی مانده"]},paused:{msgid:"paused",msgstr:["مکث کردن"]},"Upload files":{msgid:"Upload files",msgstr:["بارگذاری فایل ها"]}}}}},{locale:"fi",json:{charset:"utf-8",headers:{"Last-Translator":"teemue, 2024","Language-Team":"Finnish (Finland) (https://app.transifex.com/nextcloud/teams/64236/fi_FI/)","Content-Type":"text/plain; charset=UTF-8",Language:"fi_FI","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nJiri Grönroos <jiri.gronroos@iki.fi>, 2024\nthingumy, 2024\nteemue, 2024\n"},msgstr:["Last-Translator: teemue, 2024\nLanguage-Team: Finnish (Finland) (https://app.transifex.com/nextcloud/teams/64236/fi_FI/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: fi_FI\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" on kielletty tiedoston tai hakemiston nimi.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" on kielletty tiedostotyyppi.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" ei ole sallittu tiedoston tai hakemiston nimessä.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} tiedoston ristiriita","{count} tiedoston ristiriita"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} tiedoston ristiriita kansiossa {dirname}","{count} tiedoston ristiriita kansiossa {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} sekuntia jäljellä"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} jäljellä"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["muutama sekunti jäljellä"]},Cancel:{msgid:"Cancel",msgstr:["Peruuta"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Peruuta koko toimenpide"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Peruuta lähetykset"]},Continue:{msgid:"Continue",msgstr:["Jatka"]},"Create new":{msgid:"Create new",msgstr:["Luo uusi"]},"estimating time left":{msgid:"estimating time left",msgstr:["arvioidaan jäljellä olevaa aikaa"]},"Existing version":{msgid:"Existing version",msgstr:["Olemassa oleva versio"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Tiedoston nimi ei saa päättyä "{segment}"']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Jos valitset molemmat versiot, saapuvan tiedoston nimeen lisätään numero."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Kielletty/väärä tiedoston nimi"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Viimeisin muokkauspäivä on tuntematon"]},New:{msgid:"New",msgstr:["Uusi"]},"New filename":{msgid:"New filename",msgstr:["Uusi tiedostonimi"]},"New version":{msgid:"New version",msgstr:["Uusi versio"]},paused:{msgid:"paused",msgstr:["keskeytetty"]},"Preview image":{msgid:"Preview image",msgstr:["Esikatsele kuva"]},Rename:{msgid:"Rename",msgstr:["Nimeä uudelleen"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Valitse kaikki valintaruudut"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Valitse kaikki olemassa olevat tiedostot"]},"Select all new files":{msgid:"Select all new files",msgstr:["Valitse kaikki uudet tiedostot"]},Skip:{msgid:"Skip",msgstr:["Ohita"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Ohita tämä tiedosto","Ohita {count} tiedostoa"]},"Unknown size":{msgid:"Unknown size",msgstr:["Tuntematon koko"]},Upload:{msgid:"Upload",msgstr:["Lähetä"]},"Upload files":{msgid:"Upload files",msgstr:["Lähetä tiedostoja"]},"Upload folders":{msgid:"Upload folders",msgstr:["Lähetä kansioita"]},"Upload from device":{msgid:"Upload from device",msgstr:["Lähetä laitteelta"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Lähetys on peruttu"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Lähetys on ohitettu"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Hakemiston "{folder}" lähetys on ohitettu']},"Upload progress":{msgid:"Upload progress",msgstr:["Lähetyksen edistyminen"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Valittuasi saapuvien kansion, kaikki ristiriitaiset tiedostot kansiossa ylikirjoitetaan."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Valittuasi saapuvien kansion, sisältö kirjoitetaan olemassaolevaan kansioon ja suoritetaan rekursiivinen ristiriitojen poisto."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Mitkä tiedostot haluat säilyttää?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Voit joko nimetä tiedoston uudelleen, ohittaa tämän tiedoston tai peruuttaa koko toiminnon."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Sinun täytyy valita vähintään yksi versio jokaisesta tiedostosta jatkaaksesi."]}}}}},{locale:"fo",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Faroese (https://www.transifex.com/nextcloud/teams/64236/fo/)","Content-Type":"text/plain; charset=UTF-8",Language:"fo","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Faroese (https://www.transifex.com/nextcloud/teams/64236/fo/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: fo\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"fr",json:{charset:"utf-8",headers:{"Last-Translator":"Arnaud Cazenave, 2024","Language-Team":"French (https://app.transifex.com/nextcloud/teams/64236/fr/)","Content-Type":"text/plain; charset=UTF-8",Language:"fr","Plural-Forms":"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nBenoit Pruneau, 2024\njed boulahya, 2024\nJérôme HERBINET, 2024\nArnaud Cazenave, 2024\n"},msgstr:["Last-Translator: Arnaud Cazenave, 2024\nLanguage-Team: French (https://app.transifex.com/nextcloud/teams/64236/fr/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: fr\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" est un nom de fichier ou de dossier interdit.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" est un type de fichier interdit.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:["\"{segment}\" n'est pas autorisé dans le nom d'un fichier ou d'un dossier."]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} fichier en conflit","{count} fichiers en conflit","{count} fichiers en conflit"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} fichier en conflit dans {dirname}","{count} fichiers en conflit dans {dirname}","{count} fichiers en conflit dans {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} secondes restantes"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} restant"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["quelques secondes restantes"]},Cancel:{msgid:"Cancel",msgstr:["Annuler"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Annuler l'opération entière"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Annuler les téléversements"]},Continue:{msgid:"Continue",msgstr:["Continuer"]},"Create new":{msgid:"Create new",msgstr:["Créer un nouveau"]},"estimating time left":{msgid:"estimating time left",msgstr:["estimation du temps restant"]},"Existing version":{msgid:"Existing version",msgstr:["Version existante"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Le nom des fichiers ne doit pas finir par "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Si vous sélectionnez les deux versions, le nouveau fichier aura un nombre ajouté à son nom."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Nom de fichier invalide"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Date de la dernière modification est inconnue"]},New:{msgid:"New",msgstr:["Nouveau"]},"New filename":{msgid:"New filename",msgstr:["Nouveau nom de fichier"]},"New version":{msgid:"New version",msgstr:["Nouvelle version"]},paused:{msgid:"paused",msgstr:["en pause"]},"Preview image":{msgid:"Preview image",msgstr:["Aperçu de l'image"]},Rename:{msgid:"Rename",msgstr:["Renommer"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Sélectionner toutes les cases à cocher"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Sélectionner tous les fichiers existants"]},"Select all new files":{msgid:"Select all new files",msgstr:["Sélectionner tous les nouveaux fichiers"]},Skip:{msgid:"Skip",msgstr:["Ignorer"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Ignorer ce fichier","Ignorer {count} fichiers","Ignorer {count} fichiers"]},"Unknown size":{msgid:"Unknown size",msgstr:["Taille inconnue"]},Upload:{msgid:"Upload",msgstr:["Téléverser"]},"Upload files":{msgid:"Upload files",msgstr:["Téléverser des fichiers"]},"Upload folders":{msgid:"Upload folders",msgstr:["Téléverser des dossiers"]},"Upload from device":{msgid:"Upload from device",msgstr:["Téléverser depuis l'appareil"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Le téléversement a été annulé"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Le téléversement a été ignoré"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Le téléversement de "{folder}" a été ignoré']},"Upload progress":{msgid:"Upload progress",msgstr:["Progression du téléversement"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Lorsqu'un dossier entrant est sélectionné, tous les fichiers en conflit qu'il contient seront également écrasés."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Lorsqu'un dossier entrant est sélectionné, le contenu est ajouté dans le dossier existant et une résolution récursive des conflits est effectuée."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Quels fichiers souhaitez-vous conserver ?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Vous pouvez soit renommer le fichier, soit ignorer le fichier soit annuler toute l'opération."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Vous devez sélectionner au moins une version de chaque fichier pour continuer."]}}}}},{locale:"ga",json:{charset:"utf-8",headers:{"Last-Translator":"Aindriú Mac Giolla Eoin, 2024","Language-Team":"Irish (https://app.transifex.com/nextcloud/teams/64236/ga/)","Content-Type":"text/plain; charset=UTF-8",Language:"ga","Plural-Forms":"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nAindriú Mac Giolla Eoin, 2024\n"},msgstr:["Last-Translator: Aindriú Mac Giolla Eoin, 2024\nLanguage-Team: Irish (https://app.transifex.com/nextcloud/teams/64236/ga/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ga\nPlural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['Is ainm toirmiscthe comhaid nó fillteáin é "{segment}".']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['Is cineál comhaid toirmiscthe é "{segment}".']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['Ní cheadaítear "{segment}" taobh istigh d\'ainm comhaid nó fillteáin.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} coimhlint comhaid","{count} coimhlintí comhaid","{count} coimhlintí comhaid","{count} coimhlintí comhaid","{count} coimhlintí comhaid"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} coimhlint comhaid i {dirname}","{count} coimhlintí comhaid i {dirname}","{count} coimhlintí comhaid i {dirname}","{count} coimhlintí comhaid i {dirname}","{count} coimhlintí comhaid i {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} soicind fágtha"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} fágtha"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["cúpla soicind fágtha"]},Cancel:{msgid:"Cancel",msgstr:["Cealaigh"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Cealaigh an oibríocht iomlán"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Cealaigh uaslódálacha"]},Continue:{msgid:"Continue",msgstr:["Leanúint ar aghaidh"]},"Create new":{msgid:"Create new",msgstr:["Cruthaigh nua"]},"estimating time left":{msgid:"estimating time left",msgstr:["ag déanamh meastachán ar an am atá fágtha"]},"Existing version":{msgid:"Existing version",msgstr:["Leagan láithreach "]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Níor cheart go gcríochnaíonn comhaid chomhad le "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Má roghnaíonn tú an dá leagan, cuirfear uimhir leis an ainm a thagann isteach."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Ainm comhaid neamhbhailí"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Dáta modhnaithe is déanaí anaithnid"]},New:{msgid:"New",msgstr:["Nua"]},"New filename":{msgid:"New filename",msgstr:["Ainm comhaid nua"]},"New version":{msgid:"New version",msgstr:["Leagan nua"]},paused:{msgid:"paused",msgstr:["sos"]},"Preview image":{msgid:"Preview image",msgstr:["Íomhá réamhamharc"]},Rename:{msgid:"Rename",msgstr:["Athainmnigh"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Roghnaigh gach ticbhosca"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Roghnaigh gach comhad atá ann cheana féin"]},"Select all new files":{msgid:"Select all new files",msgstr:["Roghnaigh gach comhad nua"]},Skip:{msgid:"Skip",msgstr:["Scipeáil"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Léim an comhad seo","Léim ar {count} comhad","Léim ar {count} comhad","Léim ar {count} comhad","Léim ar {count} comhad"]},"Unknown size":{msgid:"Unknown size",msgstr:["Méid anaithnid"]},Upload:{msgid:"Upload",msgstr:["Uaslódáil"]},"Upload files":{msgid:"Upload files",msgstr:["Uaslódáil comhaid"]},"Upload folders":{msgid:"Upload folders",msgstr:["Uaslódáil fillteáin"]},"Upload from device":{msgid:"Upload from device",msgstr:["Íosluchtaigh ó ghléas"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Cuireadh an t-uaslódáil ar ceal"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Léiríodh an uaslódáil"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Léiríodh an uaslódáil "{folder}".']},"Upload progress":{msgid:"Upload progress",msgstr:["Uaslódáil dul chun cinn"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Nuair a roghnaítear fillteán isteach, déanfar aon chomhad contrártha laistigh de a fhorscríobh freisin."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Nuair a roghnaítear fillteán isteach, scríobhtar an t-ábhar isteach san fhillteán atá ann cheana agus déantar réiteach coinbhleachta athchúrsach."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Cé na comhaid ar mhaith leat a choinneáil?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Is féidir leat an comhad a athainmniú, scipeáil an comhad seo nó an oibríocht iomlán a chealú."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Ní mór duit leagan amháin ar a laghad de gach comhad a roghnú chun leanúint ar aghaidh."]}}}}},{locale:"gd",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Gaelic, Scottish (https://www.transifex.com/nextcloud/teams/64236/gd/)","Content-Type":"text/plain; charset=UTF-8",Language:"gd","Plural-Forms":"nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Gaelic, Scottish (https://www.transifex.com/nextcloud/teams/64236/gd/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: gd\nPlural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"gl",json:{charset:"utf-8",headers:{"Last-Translator":"Miguel Anxo Bouzada <mbouzada@gmail.com>, 2024","Language-Team":"Galician (https://app.transifex.com/nextcloud/teams/64236/gl/)","Content-Type":"text/plain; charset=UTF-8",Language:"gl","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nMiguel Anxo Bouzada <mbouzada@gmail.com>, 2024\n"},msgstr:["Last-Translator: Miguel Anxo Bouzada <mbouzada@gmail.com>, 2024\nLanguage-Team: Galician (https://app.transifex.com/nextcloud/teams/64236/gl/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: gl\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:["«{segment}» é un nome vedado para un ficheiro ou cartafol."]},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:["«{segment}» é un tipo de ficheiro vedado."]},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:["«{segment}» non está permitido dentro dun nome de ficheiro ou cartafol."]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} conflito de ficheiros","{count} conflitos de ficheiros"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} conflito de ficheiros en {dirname}","{count} conflitos de ficheiros en {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["faltan {seconds} segundos"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["falta {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["faltan uns segundos"]},Cancel:{msgid:"Cancel",msgstr:["Cancelar"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Cancela toda a operación"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Cancelar envíos"]},Continue:{msgid:"Continue",msgstr:["Continuar"]},"Create new":{msgid:"Create new",msgstr:["Crear un novo"]},"estimating time left":{msgid:"estimating time left",msgstr:["calculando canto tempo falta"]},"Existing version":{msgid:"Existing version",msgstr:["Versión existente"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:["Os nomes de ficheiros non deben rematar con «{segment}»."]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Se selecciona ambas as versións, o ficheiro entrante terá un número engadido ao seu nome."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["O nome de ficheiro non é válido"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Data da última modificación descoñecida"]},New:{msgid:"New",msgstr:["Nova"]},"New filename":{msgid:"New filename",msgstr:["Novo nome de ficheiro"]},"New version":{msgid:"New version",msgstr:["Nova versión"]},paused:{msgid:"paused",msgstr:["detido"]},"Preview image":{msgid:"Preview image",msgstr:["Vista previa da imaxe"]},Rename:{msgid:"Rename",msgstr:["Renomear"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Marcar todas as caixas de selección"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Seleccionar todos os ficheiros existentes"]},"Select all new files":{msgid:"Select all new files",msgstr:["Seleccionar todos os ficheiros novos"]},Skip:{msgid:"Skip",msgstr:["Omitir"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Omita este ficheiro","Omitir {count} ficheiros"]},"Unknown size":{msgid:"Unknown size",msgstr:["Tamaño descoñecido"]},Upload:{msgid:"Upload",msgstr:["Enviar"]},"Upload files":{msgid:"Upload files",msgstr:["Enviar ficheiros"]},"Upload folders":{msgid:"Upload folders",msgstr:["Enviar cartafoles"]},"Upload from device":{msgid:"Upload from device",msgstr:["Enviar dende o dispositivo"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["O envío foi cancelado"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["O envío foi omitido"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:["O envío de «{folder}» foi omitido"]},"Upload progress":{msgid:"Upload progress",msgstr:["Progreso do envío"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Cando se selecciona un cartafol entrante, tamén se sobrescribirán os ficheiros en conflito dentro del."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Cando se selecciona un cartafol entrante, o contido escríbese no cartafol existente e lévase a cabo unha resolución recursiva de conflitos."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Que ficheiros quere conservar?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Pode cambiar o nome do ficheiro, omitir este ficheiro ou cancelar toda a operación."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Debe seleccionar polo menos unha versión de cada ficheiro para continuar."]}}}}},{locale:"he",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)","Content-Type":"text/plain; charset=UTF-8",Language:"he","Plural-Forms":"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: he\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"hi_IN",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Hindi (India) (https://www.transifex.com/nextcloud/teams/64236/hi_IN/)","Content-Type":"text/plain; charset=UTF-8",Language:"hi_IN","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Hindi (India) (https://www.transifex.com/nextcloud/teams/64236/hi_IN/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: hi_IN\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"hr",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Croatian (https://www.transifex.com/nextcloud/teams/64236/hr/)","Content-Type":"text/plain; charset=UTF-8",Language:"hr","Plural-Forms":"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Croatian (https://www.transifex.com/nextcloud/teams/64236/hr/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: hr\nPlural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"hsb",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Upper Sorbian (https://www.transifex.com/nextcloud/teams/64236/hsb/)","Content-Type":"text/plain; charset=UTF-8",Language:"hsb","Plural-Forms":"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Upper Sorbian (https://www.transifex.com/nextcloud/teams/64236/hsb/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: hsb\nPlural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"hu",json:{charset:"utf-8",headers:{"Last-Translator":"Gyuris Gellért <jobel@ujevangelizacio.hu>, 2024","Language-Team":"Hungarian (Hungary) (https://app.transifex.com/nextcloud/teams/64236/hu_HU/)","Content-Type":"text/plain; charset=UTF-8",Language:"hu_HU","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nGyuris Gellért <jobel@ujevangelizacio.hu>, 2024\n"},msgstr:["Last-Translator: Gyuris Gellért <jobel@ujevangelizacio.hu>, 2024\nLanguage-Team: Hungarian (Hungary) (https://app.transifex.com/nextcloud/teams/64236/hu_HU/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: hu_HU\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['Tiltott fájl- vagy mappanév: „{segment}".']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['Tiltott fájltípus: „{segment}".']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['Nem megengedett egy fájl- vagy mappanévben: „{segment}".']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count}fájlt érintő konfliktus","{count} fájlt érintő konfliktus"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} fájlt érintő konfliktus a mappában: {dirname}","{count}fájlt érintő konfliktus a mappában: {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{} másodperc van hátra"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} van hátra"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["pár másodperc van hátra"]},Cancel:{msgid:"Cancel",msgstr:["Mégse"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Teljes művelet megszakítása"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Feltöltések megszakítása"]},Continue:{msgid:"Continue",msgstr:["Tovább"]},"Create new":{msgid:"Create new",msgstr:["Új létrehozása"]},"estimating time left":{msgid:"estimating time left",msgstr:["hátralévő idő becslése"]},"Existing version":{msgid:"Existing version",msgstr:["Jelenlegi változat"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:["Fájlnevek nem végződhetnek erre: „{segment}”."]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Ha mindkét verziót kiválasztja, a bejövő fájl neve egy számmal egészül ki."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Érvénytelen fájlnév"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Utolsó módosítás dátuma ismeretlen"]},New:{msgid:"New",msgstr:["Új"]},"New filename":{msgid:"New filename",msgstr:["Új fájlnév"]},"New version":{msgid:"New version",msgstr:["Új verzió"]},paused:{msgid:"paused",msgstr:["szüneteltetve"]},"Preview image":{msgid:"Preview image",msgstr:["Kép előnézete"]},Rename:{msgid:"Rename",msgstr:["Átnevezés"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Minden jelölőnégyzet kijelölése"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Minden jelenlegi fájl kijelölése"]},"Select all new files":{msgid:"Select all new files",msgstr:["Minden új fájl kijelölése"]},Skip:{msgid:"Skip",msgstr:["Kihagyás"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Ezen fájl kihagyása","{count}fájl kihagyása"]},"Unknown size":{msgid:"Unknown size",msgstr:["Ismeretlen méret"]},Upload:{msgid:"Upload",msgstr:["Feltöltés"]},"Upload files":{msgid:"Upload files",msgstr:["Fájlok feltöltése"]},"Upload folders":{msgid:"Upload folders",msgstr:["Mappák feltöltése"]},"Upload from device":{msgid:"Upload from device",msgstr:["Feltöltés eszközről"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Feltöltés meg lett szakítva"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Feltöltés át lett ugorva"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:["„{folder}” feltöltése át lett ugorva"]},"Upload progress":{msgid:"Upload progress",msgstr:["Feltöltési folyamat"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Ha egy bejövő mappa van kiválasztva, a mappában lévő ütköző fájlok is felülírásra kerülnek."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Ha egy bejövő mappa van kiválasztva, a tartalom a meglévő mappába íródik és rekurzív konfliktusfeloldás történik."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Mely fájlokat kívánja megtartani?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Átnevezheti a fájlt, kihagyhatja ezt a fájlt, vagy törölheti az egész műveletet."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["A folytatáshoz minden fájlból legalább egy verziót ki kell választani."]}}}}},{locale:"hy",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Armenian (https://www.transifex.com/nextcloud/teams/64236/hy/)","Content-Type":"text/plain; charset=UTF-8",Language:"hy","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Armenian (https://www.transifex.com/nextcloud/teams/64236/hy/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: hy\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"ia",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Interlingua (https://www.transifex.com/nextcloud/teams/64236/ia/)","Content-Type":"text/plain; charset=UTF-8",Language:"ia","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Interlingua (https://www.transifex.com/nextcloud/teams/64236/ia/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ia\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"id",json:{charset:"utf-8",headers:{"Last-Translator":"Linerly <linerly@proton.me>, 2023","Language-Team":"Indonesian (https://app.transifex.com/nextcloud/teams/64236/id/)","Content-Type":"text/plain; charset=UTF-8",Language:"id","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJohn Molakvoæ <skjnldsv@protonmail.com>, 2023\nEmpty Slot Filler, 2023\nLinerly <linerly@proton.me>, 2023\n"},msgstr:["Last-Translator: Linerly <linerly@proton.me>, 2023\nLanguage-Team: Indonesian (https://app.transifex.com/nextcloud/teams/64236/id/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: id\nPlural-Forms: nplurals=1; plural=0;\n"]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} berkas berkonflik"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} berkas berkonflik dalam {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} detik tersisa"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} tersisa"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["tinggal sebentar lagi"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Batalkan unggahan"]},Continue:{msgid:"Continue",msgstr:["Lanjutkan"]},"estimating time left":{msgid:"estimating time left",msgstr:["memperkirakan waktu yang tersisa"]},"Existing version":{msgid:"Existing version",msgstr:["Versi yang ada"]},"If you select both versions, the copied file will have a number added to its name.":{msgid:"If you select both versions, the copied file will have a number added to its name.",msgstr:["Jika Anda memilih kedua versi, nama berkas yang disalin akan ditambahi angka."]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Tanggal perubahan terakhir tidak diketahui"]},New:{msgid:"New",msgstr:["Baru"]},"New version":{msgid:"New version",msgstr:["Versi baru"]},paused:{msgid:"paused",msgstr:["dijeda"]},"Preview image":{msgid:"Preview image",msgstr:["Gambar pratinjau"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Pilih semua kotak centang"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Pilih semua berkas yang ada"]},"Select all new files":{msgid:"Select all new files",msgstr:["Pilih semua berkas baru"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Lewati {count} berkas"]},"Unknown size":{msgid:"Unknown size",msgstr:["Ukuran tidak diketahui"]},"Upload cancelled":{msgid:"Upload cancelled",msgstr:["Unggahan dibatalkan"]},"Upload files":{msgid:"Upload files",msgstr:["Unggah berkas"]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Berkas mana yang Anda ingin tetap simpan?"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Anda harus memilih setidaknya satu versi dari masing-masing berkas untuk melanjutkan."]}}}}},{locale:"ig",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Igbo (https://www.transifex.com/nextcloud/teams/64236/ig/)","Content-Type":"text/plain; charset=UTF-8",Language:"ig","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Igbo (https://www.transifex.com/nextcloud/teams/64236/ig/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ig\nPlural-Forms: nplurals=1; plural=0;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"is",json:{charset:"utf-8",headers:{"Last-Translator":"Sveinn í Felli <sv1@fellsnet.is>, 2023","Language-Team":"Icelandic (https://app.transifex.com/nextcloud/teams/64236/is/)","Content-Type":"text/plain; charset=UTF-8",Language:"is","Plural-Forms":"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nSveinn í Felli <sv1@fellsnet.is>, 2023\n"},msgstr:["Last-Translator: Sveinn í Felli <sv1@fellsnet.is>, 2023\nLanguage-Team: Icelandic (https://app.transifex.com/nextcloud/teams/64236/is/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: is\nPlural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n"]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} árekstur skráa","{count} árekstrar skráa"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} árekstur skráa í {dirname}","{count} árekstrar skráa í {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} sekúndur eftir"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} eftir"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["nokkrar sekúndur eftir"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Hætta við innsendingar"]},Continue:{msgid:"Continue",msgstr:["Halda áfram"]},"estimating time left":{msgid:"estimating time left",msgstr:["áætla tíma sem eftir er"]},"Existing version":{msgid:"Existing version",msgstr:["Fyrirliggjandi útgáfa"]},"If you select both versions, the copied file will have a number added to its name.":{msgid:"If you select both versions, the copied file will have a number added to its name.",msgstr:["Ef þú velur báðar útgáfur, þá mun verða bætt tölustaf aftan við heiti afrituðu skrárinnar."]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Síðasta breytingadagsetning er óþekkt"]},New:{msgid:"New",msgstr:["Nýtt"]},"New version":{msgid:"New version",msgstr:["Ný útgáfa"]},paused:{msgid:"paused",msgstr:["í bið"]},"Preview image":{msgid:"Preview image",msgstr:["Forskoðun myndar"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Velja gátreiti"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Velja allar fyrirliggjandi skrár"]},"Select all new files":{msgid:"Select all new files",msgstr:["Velja allar nýjar skrár"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Sleppa þessari skrá","Sleppa {count} skrám"]},"Unknown size":{msgid:"Unknown size",msgstr:["Óþekkt stærð"]},"Upload cancelled":{msgid:"Upload cancelled",msgstr:["Hætt við innsendingu"]},"Upload files":{msgid:"Upload files",msgstr:["Senda inn skrár"]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Hvaða skrám vilt þú vilt halda eftir?"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Þú verður að velja að minnsta kosti eina útgáfu af hverri skrá til að halda áfram."]}}}}},{locale:"it",json:{charset:"utf-8",headers:{"Last-Translator":"albanobattistella <albanobattistella@gmail.com>, 2024","Language-Team":"Italian (https://app.transifex.com/nextcloud/teams/64236/it/)","Content-Type":"text/plain; charset=UTF-8",Language:"it","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nFrancesco Sercia, 2024\nalbanobattistella <albanobattistella@gmail.com>, 2024\n"},msgstr:["Last-Translator: albanobattistella <albanobattistella@gmail.com>, 2024\nLanguage-Team: Italian (https://app.transifex.com/nextcloud/teams/64236/it/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: it\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" è un nome di file o cartella proibito.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}"è un tipo di file proibito.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" non è consentito all\'interno di un nome di file o cartella.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} file in conflitto","{count} file in conflitto","{count} file in conflitto"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} file in conflitto in {dirname}","{count} file in conflitto in {dirname}","{count} file in conflitto in {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} secondi rimanenti "]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} rimanente"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["alcuni secondi rimanenti"]},Cancel:{msgid:"Cancel",msgstr:["Annulla"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Annulla l'intera operazione"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Annulla i caricamenti"]},Continue:{msgid:"Continue",msgstr:["Continua"]},"Create new":{msgid:"Create new",msgstr:["Crea nuovo"]},"estimating time left":{msgid:"estimating time left",msgstr:["calcolo il tempo rimanente"]},"Existing version":{msgid:"Existing version",msgstr:["Versione esistente"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['I nomi dei file non devono terminare con "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Se selezioni entrambe le versioni, nel nome del file copiato verrà aggiunto un numero "]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Nome file non valido"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Ultima modifica sconosciuta"]},New:{msgid:"New",msgstr:["Nuovo"]},"New filename":{msgid:"New filename",msgstr:["Nuovo nome file"]},"New version":{msgid:"New version",msgstr:["Nuova versione"]},paused:{msgid:"paused",msgstr:["pausa"]},"Preview image":{msgid:"Preview image",msgstr:["Anteprima immagine"]},Rename:{msgid:"Rename",msgstr:["Rinomina"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Seleziona tutte le caselle"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Seleziona tutti i file esistenti"]},"Select all new files":{msgid:"Select all new files",msgstr:["Seleziona tutti i nuovi file"]},Skip:{msgid:"Skip",msgstr:["Salta"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Salta questo file","Salta {count} file","Salta {count} file"]},"Unknown size":{msgid:"Unknown size",msgstr:["Dimensione sconosciuta"]},Upload:{msgid:"Upload",msgstr:["Caricamento"]},"Upload files":{msgid:"Upload files",msgstr:["Carica i file"]},"Upload folders":{msgid:"Upload folders",msgstr:["Carica cartelle"]},"Upload from device":{msgid:"Upload from device",msgstr:["Carica dal dispositivo"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Caricamento annullato"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Il caricamento è stato saltato"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Il caricamento di "{folder}" è stato saltato']},"Upload progress":{msgid:"Upload progress",msgstr:["Progresso del caricamento"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Quando si seleziona una cartella in arrivo, anche tutti i file in conflitto al suo interno verranno sovrascritti."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Quando si seleziona una cartella in arrivo, il contenuto viene scritto nella cartella esistente e viene eseguita una risoluzione ricorsiva dei conflitti."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Quali file vuoi mantenere?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["È possibile rinominare il file, ignorarlo o annullare l'intera operazione."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Devi selezionare almeno una versione di ogni file per continuare"]}}}}},{locale:"ja",json:{charset:"utf-8",headers:{"Last-Translator":"kshimohata, 2024","Language-Team":"Japanese (Japan) (https://app.transifex.com/nextcloud/teams/64236/ja_JP/)","Content-Type":"text/plain; charset=UTF-8",Language:"ja_JP","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nkojima.imamura, 2024\nTakafumi AKAMATSU, 2024\ndevi, 2024\nkshimohata, 2024\n"},msgstr:["Last-Translator: kshimohata, 2024\nLanguage-Team: Japanese (Japan) (https://app.transifex.com/nextcloud/teams/64236/ja_JP/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ja_JP\nPlural-Forms: nplurals=1; plural=0;\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" は禁止されているファイルまたはフォルダ名です。']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" は禁止されているファイルタイプです。']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['ファイルまたはフォルダ名に "{segment}" を含めることはできません。']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} ファイル数の競合"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{dirname} で {count} 個のファイルが競合しています"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["残り {seconds} 秒"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["残り {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["残り数秒"]},Cancel:{msgid:"Cancel",msgstr:["キャンセル"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["すべての操作をキャンセルする"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["アップロードをキャンセル"]},Continue:{msgid:"Continue",msgstr:["続ける"]},"Create new":{msgid:"Create new",msgstr:["新規作成"]},"estimating time left":{msgid:"estimating time left",msgstr:["概算残り時間"]},"Existing version":{msgid:"Existing version",msgstr:["既存バージョン"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['ファイル名の末尾に "{segment}" を付けることはできません。']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["両方のバージョンを選択した場合、受信ファイルの名前に数字が追加されます。"]},"Invalid filename":{msgid:"Invalid filename",msgstr:["無効なファイル名"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["最終更新日不明"]},New:{msgid:"New",msgstr:["新規作成"]},"New filename":{msgid:"New filename",msgstr:["新しいファイル名"]},"New version":{msgid:"New version",msgstr:["新しいバージョン"]},paused:{msgid:"paused",msgstr:["一時停止中"]},"Preview image":{msgid:"Preview image",msgstr:["プレビュー画像"]},Rename:{msgid:"Rename",msgstr:["名前を変更"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["すべて選択"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["すべての既存ファイルを選択"]},"Select all new files":{msgid:"Select all new files",msgstr:["すべての新規ファイルを選択"]},Skip:{msgid:"Skip",msgstr:["スキップ"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["{count} 個のファイルをスキップする"]},"Unknown size":{msgid:"Unknown size",msgstr:["サイズ不明"]},Upload:{msgid:"Upload",msgstr:["アップロード"]},"Upload files":{msgid:"Upload files",msgstr:["ファイルをアップロード"]},"Upload folders":{msgid:"Upload folders",msgstr:["フォルダのアップロード"]},"Upload from device":{msgid:"Upload from device",msgstr:["デバイスからのアップロード"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["アップロードはキャンセルされました"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["アップロードがスキップされました"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['"{folder}" のアップロードがスキップされました']},"Upload progress":{msgid:"Upload progress",msgstr:["アップロード進行状況"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["受信フォルダが選択されると、その中の競合するファイルもすべて上書きされます。"]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["受信フォルダが選択されると、その内容は既存のフォルダに書き込まれ、再帰的な競合解決が行われます。"]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["どのファイルを保持しますか?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["ファイル名を変更するか、このファイルをスキップするか、操作全体をキャンセルすることができます。"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["続行するには、各ファイルの少なくとも1つのバージョンを選択する必要があります。"]}}}}},{locale:"ka",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Georgian (https://www.transifex.com/nextcloud/teams/64236/ka/)","Content-Type":"text/plain; charset=UTF-8",Language:"ka","Plural-Forms":"nplurals=2; plural=(n!=1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Georgian (https://www.transifex.com/nextcloud/teams/64236/ka/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ka\nPlural-Forms: nplurals=2; plural=(n!=1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"ka_GE",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Georgian (Georgia) (https://www.transifex.com/nextcloud/teams/64236/ka_GE/)","Content-Type":"text/plain; charset=UTF-8",Language:"ka_GE","Plural-Forms":"nplurals=2; plural=(n!=1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Georgian (Georgia) (https://www.transifex.com/nextcloud/teams/64236/ka_GE/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ka_GE\nPlural-Forms: nplurals=2; plural=(n!=1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"kab",json:{charset:"utf-8",headers:{"Last-Translator":"ZiriSut, 2023","Language-Team":"Kabyle (https://app.transifex.com/nextcloud/teams/64236/kab/)","Content-Type":"text/plain; charset=UTF-8",Language:"kab","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nZiriSut, 2023\n"},msgstr:["Last-Translator: ZiriSut, 2023\nLanguage-Team: Kabyle (https://app.transifex.com/nextcloud/teams/64236/kab/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: kab\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} tesdatin i d-yeqqimen"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["{time} i d-yeqqimen"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["qqiment-d kra n tesdatin kan"]},Add:{msgid:"Add",msgstr:["Rnu"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Sefsex asali"]},"estimating time left":{msgid:"estimating time left",msgstr:["asizel n wakud i d-yeqqimen"]},paused:{msgid:"paused",msgstr:["yeḥbes"]},"Upload files":{msgid:"Upload files",msgstr:["Sali-d ifuyla"]}}}}},{locale:"kk",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Kazakh (https://www.transifex.com/nextcloud/teams/64236/kk/)","Content-Type":"text/plain; charset=UTF-8",Language:"kk","Plural-Forms":"nplurals=2; plural=(n!=1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Kazakh (https://www.transifex.com/nextcloud/teams/64236/kk/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: kk\nPlural-Forms: nplurals=2; plural=(n!=1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"km",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Khmer (https://www.transifex.com/nextcloud/teams/64236/km/)","Content-Type":"text/plain; charset=UTF-8",Language:"km","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Khmer (https://www.transifex.com/nextcloud/teams/64236/km/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: km\nPlural-Forms: nplurals=1; plural=0;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"kn",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Kannada (https://www.transifex.com/nextcloud/teams/64236/kn/)","Content-Type":"text/plain; charset=UTF-8",Language:"kn","Plural-Forms":"nplurals=2; plural=(n > 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Kannada (https://www.transifex.com/nextcloud/teams/64236/kn/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: kn\nPlural-Forms: nplurals=2; plural=(n > 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"ko",json:{charset:"utf-8",headers:{"Last-Translator":"이상오, 2024","Language-Team":"Korean (https://app.transifex.com/nextcloud/teams/64236/ko/)","Content-Type":"text/plain; charset=UTF-8",Language:"ko","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\n이상오, 2024\n"},msgstr:["Last-Translator: 이상오, 2024\nLanguage-Team: Korean (https://app.transifex.com/nextcloud/teams/64236/ko/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ko\nPlural-Forms: nplurals=1; plural=0;\n"]},'"{filename}" contains invalid characters, how do you want to continue?':{msgid:'"{filename}" contains invalid characters, how do you want to continue?',msgstr:['"{filename}"에 유효하지 않은 문자가 있습니다, 계속하시겠습니까?']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count}개의 파일이 충돌함"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{dirname}에서 {count}개의 파일이 충돌함"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds}초 남음"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} 남음"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["곧 완료"]},Cancel:{msgid:"Cancel",msgstr:["취소"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["전체 작업을 취소"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["업로드 취소"]},Continue:{msgid:"Continue",msgstr:["확인"]},"Create new":{msgid:"Create new",msgstr:["새로 만들기"]},"estimating time left":{msgid:"estimating time left",msgstr:["남은 시간 계산"]},"Existing version":{msgid:"Existing version",msgstr:["현재 버전"]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["두 파일을 모두 선택하면, 들어오는 파일의 이름에 번호가 추가됩니다."]},"Invalid file name":{msgid:"Invalid file name",msgstr:["잘못된 파일 이름"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["최근 수정일 알 수 없음"]},New:{msgid:"New",msgstr:["새로 만들기"]},"New version":{msgid:"New version",msgstr:["새 버전"]},paused:{msgid:"paused",msgstr:["일시정지됨"]},"Preview image":{msgid:"Preview image",msgstr:["미리보기 이미지"]},Rename:{msgid:"Rename",msgstr:["이름 바꾸기"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["모든 체크박스 선택"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["기존 파일을 모두 선택"]},"Select all new files":{msgid:"Select all new files",msgstr:["새로운 파일을 모두 선택"]},Skip:{msgid:"Skip",msgstr:["건너뛰기"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["{count}개의 파일 넘기기"]},"Unknown size":{msgid:"Unknown size",msgstr:["크기를 알 수 없음"]},"Upload files":{msgid:"Upload files",msgstr:["파일 업로드"]},"Upload folders":{msgid:"Upload folders",msgstr:["폴더 업로드"]},"Upload from device":{msgid:"Upload from device",msgstr:["장치에서 업로드"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["업로드가 취소되었습니다."]},"Upload progress":{msgid:"Upload progress",msgstr:["업로드 진행도"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["들어오는 폴더를 선택했다면, 충돌하는 내부 파일들은 덮어쓰기 됩니다."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["들어오는 폴더를 선택했다면 내용물이 그 기존 폴더 안에 작성되고, 전체적으로 충돌 해결을 수행합니다."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["어떤 파일을 보존하시겠습니까?"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["계속하기 위해서는 한 파일에 최소 하나의 버전을 선택해야 합니다."]}}}}},{locale:"la",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Latin (https://www.transifex.com/nextcloud/teams/64236/la/)","Content-Type":"text/plain; charset=UTF-8",Language:"la","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Latin (https://www.transifex.com/nextcloud/teams/64236/la/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: la\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"lb",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Luxembourgish (https://www.transifex.com/nextcloud/teams/64236/lb/)","Content-Type":"text/plain; charset=UTF-8",Language:"lb","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Luxembourgish (https://www.transifex.com/nextcloud/teams/64236/lb/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: lb\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"lo",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Lao (https://www.transifex.com/nextcloud/teams/64236/lo/)","Content-Type":"text/plain; charset=UTF-8",Language:"lo","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Lao (https://www.transifex.com/nextcloud/teams/64236/lo/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: lo\nPlural-Forms: nplurals=1; plural=0;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"lt_LT",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)","Content-Type":"text/plain; charset=UTF-8",Language:"lt_LT","Plural-Forms":"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: lt_LT\nPlural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"lv",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Latvian (https://www.transifex.com/nextcloud/teams/64236/lv/)","Content-Type":"text/plain; charset=UTF-8",Language:"lv","Plural-Forms":"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Latvian (https://www.transifex.com/nextcloud/teams/64236/lv/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: lv\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"mk",json:{charset:"utf-8",headers:{"Last-Translator":"Сашко Тодоров <sasetodorov@gmail.com>, 2022","Language-Team":"Macedonian (https://www.transifex.com/nextcloud/teams/64236/mk/)","Content-Type":"text/plain; charset=UTF-8",Language:"mk","Plural-Forms":"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nСашко Тодоров <sasetodorov@gmail.com>, 2022\n"},msgstr:["Last-Translator: Сашко Тодоров <sasetodorov@gmail.com>, 2022\nLanguage-Team: Macedonian (https://www.transifex.com/nextcloud/teams/64236/mk/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: mk\nPlural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["преостануваат {seconds} секунди"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["преостанува {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["уште неколку секунди"]},Add:{msgid:"Add",msgstr:["Додади"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Прекини прикачување"]},"estimating time left":{msgid:"estimating time left",msgstr:["приближно преостанато време"]},paused:{msgid:"paused",msgstr:["паузирано"]},"Upload files":{msgid:"Upload files",msgstr:["Прикачување датотеки"]}}}}},{locale:"mn",json:{charset:"utf-8",headers:{"Last-Translator":"BATKHUYAG Ganbold, 2023","Language-Team":"Mongolian (https://app.transifex.com/nextcloud/teams/64236/mn/)","Content-Type":"text/plain; charset=UTF-8",Language:"mn","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nBATKHUYAG Ganbold, 2023\n"},msgstr:["Last-Translator: BATKHUYAG Ganbold, 2023\nLanguage-Team: Mongolian (https://app.transifex.com/nextcloud/teams/64236/mn/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: mn\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} секунд үлдсэн"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["{time} үлдсэн"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["хэдхэн секунд үлдсэн"]},Add:{msgid:"Add",msgstr:["Нэмэх"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Илгээлтийг цуцлах"]},"estimating time left":{msgid:"estimating time left",msgstr:["Үлдсэн хугацааг тооцоолж байна"]},paused:{msgid:"paused",msgstr:["түр зогсоосон"]},"Upload files":{msgid:"Upload files",msgstr:["Файл илгээх"]}}}}},{locale:"mr",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Marathi (https://www.transifex.com/nextcloud/teams/64236/mr/)","Content-Type":"text/plain; charset=UTF-8",Language:"mr","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Marathi (https://www.transifex.com/nextcloud/teams/64236/mr/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: mr\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"ms_MY",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Malay (Malaysia) (https://www.transifex.com/nextcloud/teams/64236/ms_MY/)","Content-Type":"text/plain; charset=UTF-8",Language:"ms_MY","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Malay (Malaysia) (https://www.transifex.com/nextcloud/teams/64236/ms_MY/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ms_MY\nPlural-Forms: nplurals=1; plural=0;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"my",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)","Content-Type":"text/plain; charset=UTF-8",Language:"my","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: my\nPlural-Forms: nplurals=1; plural=0;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"nb",json:{charset:"utf-8",headers:{"Last-Translator":"Roger Knutsen, 2024","Language-Team":"Norwegian Bokmål (Norway) (https://app.transifex.com/nextcloud/teams/64236/nb_NO/)","Content-Type":"text/plain; charset=UTF-8",Language:"nb_NO","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nRoger Knutsen, 2024\n"},msgstr:["Last-Translator: Roger Knutsen, 2024\nLanguage-Team: Norwegian Bokmål (Norway) (https://app.transifex.com/nextcloud/teams/64236/nb_NO/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: nb_NO\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" er et forbudt fil- eller mappenavn.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" er en forbudt filtype.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" er ikke tillatt i et fil- eller mappenavn.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} file conflict","{count} filkonflikter"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} file conflict in {dirname}","{count} filkonflikter i {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} sekunder igjen"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} igjen"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["noen få sekunder igjen"]},Cancel:{msgid:"Cancel",msgstr:["Avbryt"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Avbryt hele operasjonen"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Avbryt opplastninger"]},Continue:{msgid:"Continue",msgstr:["Fortsett"]},"Create new":{msgid:"Create new",msgstr:["Opprett ny"]},"estimating time left":{msgid:"estimating time left",msgstr:["Estimerer tid igjen"]},"Existing version":{msgid:"Existing version",msgstr:["Gjeldende versjon"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Filnavn må ikke slutte med "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Hvis du velger begge versjonene, vil den innkommende filen ha et nummer lagt til navnet."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Ugyldig filnavn"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Siste gang redigert ukjent"]},New:{msgid:"New",msgstr:["Ny"]},"New filename":{msgid:"New filename",msgstr:["Nytt filnavn"]},"New version":{msgid:"New version",msgstr:["Ny versjon"]},paused:{msgid:"paused",msgstr:["pauset"]},"Preview image":{msgid:"Preview image",msgstr:["Forhåndsvis bilde"]},Rename:{msgid:"Rename",msgstr:["Omdøp"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Velg alle"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Velg alle eksisterende filer"]},"Select all new files":{msgid:"Select all new files",msgstr:["Velg alle nye filer"]},Skip:{msgid:"Skip",msgstr:["Hopp over"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Skip this file","Hopp over {count} filer"]},"Unknown size":{msgid:"Unknown size",msgstr:["Ukjent størrelse"]},"Upload files":{msgid:"Upload files",msgstr:["Last opp filer"]},"Upload folders":{msgid:"Upload folders",msgstr:["Last opp mapper"]},"Upload from device":{msgid:"Upload from device",msgstr:["Last opp fra enhet"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Opplastingen er kansellert"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Opplastingen er hoppet over"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Opplasting av "{folder}" er hoppet over']},"Upload progress":{msgid:"Upload progress",msgstr:["Fremdrift, opplasting"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Når en innkommende mappe velges, blir eventuelle motstridende filer i den også overskrevet."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Når en innkommende mappe velges, skrives innholdet inn i den eksisterende mappen, og en rekursiv konfliktløsning utføres."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Hvilke filer vil du beholde?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Du kan enten gi nytt navn til filen, hoppe over denne filen eller avbryte hele operasjonen."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Du må velge minst en versjon av hver fil for å fortsette."]}}}}},{locale:"ne",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Nepali (https://www.transifex.com/nextcloud/teams/64236/ne/)","Content-Type":"text/plain; charset=UTF-8",Language:"ne","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Nepali (https://www.transifex.com/nextcloud/teams/64236/ne/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ne\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"nl",json:{charset:"utf-8",headers:{"Last-Translator":"Rico <rico-schwab@hotmail.com>, 2023","Language-Team":"Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)","Content-Type":"text/plain; charset=UTF-8",Language:"nl","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nRico <rico-schwab@hotmail.com>, 2023\n"},msgstr:["Last-Translator: Rico <rico-schwab@hotmail.com>, 2023\nLanguage-Team: Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: nl\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["Nog {seconds} seconden"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["{seconds} over"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["Nog een paar seconden"]},Add:{msgid:"Add",msgstr:["Voeg toe"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Uploads annuleren"]},"estimating time left":{msgid:"estimating time left",msgstr:["Schatting van de resterende tijd"]},paused:{msgid:"paused",msgstr:["Gepauzeerd"]},"Upload files":{msgid:"Upload files",msgstr:["Upload bestanden"]}}}}},{locale:"nn_NO",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Norwegian Nynorsk (Norway) (https://www.transifex.com/nextcloud/teams/64236/nn_NO/)","Content-Type":"text/plain; charset=UTF-8",Language:"nn_NO","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Norwegian Nynorsk (Norway) (https://www.transifex.com/nextcloud/teams/64236/nn_NO/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: nn_NO\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"oc",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)","Content-Type":"text/plain; charset=UTF-8",Language:"oc","Plural-Forms":"nplurals=2; plural=(n > 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: oc\nPlural-Forms: nplurals=2; plural=(n > 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"pl",json:{charset:"utf-8",headers:{"Last-Translator":"Piotr Strębski <strebski@gmail.com>, 2024","Language-Team":"Polish (https://app.transifex.com/nextcloud/teams/64236/pl/)","Content-Type":"text/plain; charset=UTF-8",Language:"pl","Plural-Forms":"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nPiotr Strębski <strebski@gmail.com>, 2024\n"},msgstr:["Last-Translator: Piotr Strębski <strebski@gmail.com>, 2024\nLanguage-Team: Polish (https://app.transifex.com/nextcloud/teams/64236/pl/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: pl\nPlural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:["„{segment}” to zabroniona nazwa pliku lub folderu."]},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:["„{segment}” jest zabronionym typem pliku."]},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:["Znak „{segment}” nie jest dozwolony w nazwie pliku lub folderu."]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["konflikt 1 pliku","{count} konfliktów plików","{count} konfliktów plików","{count} konfliktów plików"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} konfliktowy plik w {dirname}","{count} konfliktowych plików w {dirname}","{count} konfliktowych plików w {dirname}","{count} konfliktowych plików w {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["Pozostało {seconds} sekund"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["Pozostało {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["Pozostało kilka sekund"]},Cancel:{msgid:"Cancel",msgstr:["Anuluj"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Anuluj całą operację"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Anuluj wysyłanie"]},Continue:{msgid:"Continue",msgstr:["Kontynuuj"]},"Create new":{msgid:"Create new",msgstr:["Utwórz nowe"]},"estimating time left":{msgid:"estimating time left",msgstr:["Szacowanie pozostałego czasu"]},"Existing version":{msgid:"Existing version",msgstr:["Istniejąca wersja"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:["Nazwy plików nie mogą kończyć się na „{segment}”."]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Jeśli wybierzesz obie wersje, do nazwy pliku przychodzącego zostanie dodany numer."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Nieprawidłowa nazwa pliku"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Nieznana data ostatniej modyfikacji"]},New:{msgid:"New",msgstr:["Nowy"]},"New filename":{msgid:"New filename",msgstr:["Nowa nazwa pliku"]},"New version":{msgid:"New version",msgstr:["Nowa wersja"]},paused:{msgid:"paused",msgstr:["Wstrzymane"]},"Preview image":{msgid:"Preview image",msgstr:["Podgląd obrazu"]},Rename:{msgid:"Rename",msgstr:["Zmiana nazwy"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Zaznacz wszystkie pola wyboru"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Zaznacz wszystkie istniejące pliki"]},"Select all new files":{msgid:"Select all new files",msgstr:["Zaznacz wszystkie nowe pliki"]},Skip:{msgid:"Skip",msgstr:["Pomiń"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Pomiń 1 plik","Pomiń {count} plików","Pomiń {count} plików","Pomiń {count} plików"]},"Unknown size":{msgid:"Unknown size",msgstr:["Nieznany rozmiar"]},Upload:{msgid:"Upload",msgstr:["Prześlij"]},"Upload files":{msgid:"Upload files",msgstr:["Wyślij pliki"]},"Upload folders":{msgid:"Upload folders",msgstr:["Prześlij foldery"]},"Upload from device":{msgid:"Upload from device",msgstr:["Prześlij z urządzenia"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Przesyłanie zostało anulowane"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Przesyłanie zostało pominięte"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:["Przesyłanie „{folder}” zostało pominięte"]},"Upload progress":{msgid:"Upload progress",msgstr:["Postęp wysyłania"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Po wybraniu folderu przychodzącego wszelkie znajdujące się w nim pliki powodujące konflikt również zostaną nadpisane."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Po wybraniu folderu przychodzącego zawartość jest zapisywana w istniejącym folderze i przeprowadzane jest rekursywne rozwiązywanie konfliktów."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Które pliki chcesz zachować?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Możesz zmienić nazwę pliku, pominąć ten plik lub anulować całą operację."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Aby kontynuować, musisz wybrać co najmniej jedną wersję każdego pliku."]}}}}},{locale:"ps",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Pashto (https://www.transifex.com/nextcloud/teams/64236/ps/)","Content-Type":"text/plain; charset=UTF-8",Language:"ps","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Pashto (https://www.transifex.com/nextcloud/teams/64236/ps/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ps\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"pt_BR",json:{charset:"utf-8",headers:{"Last-Translator":"Paulo Schopf, 2024","Language-Team":"Portuguese (Brazil) (https://app.transifex.com/nextcloud/teams/64236/pt_BR/)","Content-Type":"text/plain; charset=UTF-8",Language:"pt_BR","Plural-Forms":"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nLeonardo Colman Lopes <leonardo.dev@colman.com.br>, 2024\nRodrigo Sottomaior Macedo <sottomaiormacedotec@sottomaiormacedo.tech>, 2024\nPaulo Schopf, 2024\n"},msgstr:["Last-Translator: Paulo Schopf, 2024\nLanguage-Team: Portuguese (Brazil) (https://app.transifex.com/nextcloud/teams/64236/pt_BR/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: pt_BR\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" é um nome de arquivo ou pasta proibido.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" é um tipo de arquivo proibido.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" não é permitido dentro de um nome de arquivo ou pasta.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} arquivos em conflito","{count} arquivos em conflito","{count} arquivos em conflito"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} conflitos de arquivo em {dirname}","{count} conflitos de arquivo em {dirname}","{count} conflitos de arquivo em {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} segundos restantes"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} restante"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["alguns segundos restantes"]},Cancel:{msgid:"Cancel",msgstr:["Cancelar"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Cancelar a operação inteira"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Cancelar uploads"]},Continue:{msgid:"Continue",msgstr:["Continuar"]},"Create new":{msgid:"Create new",msgstr:["Criar novo"]},"estimating time left":{msgid:"estimating time left",msgstr:["estimando tempo restante"]},"Existing version":{msgid:"Existing version",msgstr:["Versão existente"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Os nomes dos arquivos não devem terminar com "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Se você selecionar ambas as versões, o arquivo recebido terá um número adicionado ao seu nome."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Nome de arquivo inválido"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Data da última modificação desconhecida"]},New:{msgid:"New",msgstr:["Novo"]},"New filename":{msgid:"New filename",msgstr:["Novo nome de arquivo"]},"New version":{msgid:"New version",msgstr:["Nova versão"]},paused:{msgid:"paused",msgstr:["pausado"]},"Preview image":{msgid:"Preview image",msgstr:["Visualizar imagem"]},Rename:{msgid:"Rename",msgstr:["Renomear"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Marque todas as caixas de seleção"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Selecione todos os arquivos existentes"]},"Select all new files":{msgid:"Select all new files",msgstr:["Selecione todos os novos arquivos"]},Skip:{msgid:"Skip",msgstr:["Pular"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Ignorar {count} arquivos","Ignorar {count} arquivos","Ignorar {count} arquivos"]},"Unknown size":{msgid:"Unknown size",msgstr:["Tamanho desconhecido"]},Upload:{msgid:"Upload",msgstr:["Enviar"]},"Upload files":{msgid:"Upload files",msgstr:["Enviar arquivos"]},"Upload folders":{msgid:"Upload folders",msgstr:["Enviar pastas"]},"Upload from device":{msgid:"Upload from device",msgstr:["Carregar do dispositivo"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["O upload foi cancelado"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["O upload foi pulado"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['O upload de "{folder}" foi ignorado']},"Upload progress":{msgid:"Upload progress",msgstr:["Envio em progresso"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Quando uma pasta é selecionada, quaisquer arquivos dentro dela também serão sobrescritos."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Quando uma pasta de entrada é selecionada, o conteúdo é gravado na pasta existente e uma resolução de conflito recursiva é executada."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Quais arquivos você deseja manter?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Você pode renomear o arquivo, pular este arquivo ou cancelar toda a operação."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Você precisa selecionar pelo menos uma versão de cada arquivo para continuar."]}}}}},{locale:"pt_PT",json:{charset:"utf-8",headers:{"Last-Translator":"Manuela Silva <mmsrs@sky.com>, 2022","Language-Team":"Portuguese (Portugal) (https://www.transifex.com/nextcloud/teams/64236/pt_PT/)","Content-Type":"text/plain; charset=UTF-8",Language:"pt_PT","Plural-Forms":"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nManuela Silva <mmsrs@sky.com>, 2022\n"},msgstr:["Last-Translator: Manuela Silva <mmsrs@sky.com>, 2022\nLanguage-Team: Portuguese (Portugal) (https://www.transifex.com/nextcloud/teams/64236/pt_PT/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: pt_PT\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["faltam {seconds} segundo(s)"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["faltam {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["faltam uns segundos"]},Add:{msgid:"Add",msgstr:["Adicionar"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Cancelar envios"]},"estimating time left":{msgid:"estimating time left",msgstr:["tempo em falta estimado"]},paused:{msgid:"paused",msgstr:["pausado"]},"Upload files":{msgid:"Upload files",msgstr:["Enviar ficheiros"]}}}}},{locale:"ro",json:{charset:"utf-8",headers:{"Last-Translator":"Mădălin Vasiliu <contact@madalinvasiliu.com>, 2022","Language-Team":"Romanian (https://www.transifex.com/nextcloud/teams/64236/ro/)","Content-Type":"text/plain; charset=UTF-8",Language:"ro","Plural-Forms":"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nMădălin Vasiliu <contact@madalinvasiliu.com>, 2022\n"},msgstr:["Last-Translator: Mădălin Vasiliu <contact@madalinvasiliu.com>, 2022\nLanguage-Team: Romanian (https://www.transifex.com/nextcloud/teams/64236/ro/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ro\nPlural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} secunde rămase"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["{time} rămas"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["câteva secunde rămase"]},Add:{msgid:"Add",msgstr:["Adaugă"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Anulați încărcările"]},"estimating time left":{msgid:"estimating time left",msgstr:["estimarea timpului rămas"]},paused:{msgid:"paused",msgstr:["pus pe pauză"]},"Upload files":{msgid:"Upload files",msgstr:["Încarcă fișiere"]}}}}},{locale:"ru",json:{charset:"utf-8",headers:{"Last-Translator":"Roman Stepanov, 2024","Language-Team":"Russian (https://app.transifex.com/nextcloud/teams/64236/ru/)","Content-Type":"text/plain; charset=UTF-8",Language:"ru","Plural-Forms":"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nAlex <kekcuha@gmail.com>, 2024\nВлад, 2024\nAlex <fedotov22091982@gmail.com>, 2024\nRoman Stepanov, 2024\n"},msgstr:["Last-Translator: Roman Stepanov, 2024\nLanguage-Team: Russian (https://app.transifex.com/nextcloud/teams/64236/ru/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ru\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:["{segment} — это запрещенное имя файла или папки."]},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:["{segment}— это запрещенный тип файла."]},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:["{segment}не допускается в имени файла или папки."]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["конфликт {count} файла","конфликт {count} файлов","конфликт {count} файлов","конфликт {count} файлов"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["конфликт {count} файла в {dirname}","конфликт {count} файлов в {dirname}","конфликт {count} файлов в {dirname}","конфликт {count} файлов в {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["осталось {seconds} секунд"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["осталось {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["осталось несколько секунд"]},Cancel:{msgid:"Cancel",msgstr:["Отмена"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Отменить всю операцию целиком"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Отменить загрузки"]},Continue:{msgid:"Continue",msgstr:["Продолжить"]},"Create new":{msgid:"Create new",msgstr:["Создать новое"]},"estimating time left":{msgid:"estimating time left",msgstr:["оценка оставшегося времени"]},"Existing version":{msgid:"Existing version",msgstr:["Текущая версия"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:["Имена файлов не должны заканчиваться на {segment}"]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Если вы выберете обе версии, к имени входящего файла будет добавлен номер."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Неверное имя файла"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Дата последнего изменения неизвестна"]},New:{msgid:"New",msgstr:["Новый"]},"New filename":{msgid:"New filename",msgstr:["Новое имя файла"]},"New version":{msgid:"New version",msgstr:["Новая версия"]},paused:{msgid:"paused",msgstr:["приостановлено"]},"Preview image":{msgid:"Preview image",msgstr:["Предварительный просмотр"]},Rename:{msgid:"Rename",msgstr:["Переименовать"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Установить все флажки"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Выбрать все существующие файлы"]},"Select all new files":{msgid:"Select all new files",msgstr:["Выбрать все новые файлы"]},Skip:{msgid:"Skip",msgstr:["Пропуск"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Пропустить файл","Пропустить {count} файла","Пропустить {count} файлов","Пропустить {count} файлов"]},"Unknown size":{msgid:"Unknown size",msgstr:["Неизвестный размер"]},Upload:{msgid:"Upload",msgstr:["Загрузить"]},"Upload files":{msgid:"Upload files",msgstr:["Загрузка файлов"]},"Upload folders":{msgid:"Upload folders",msgstr:["Загрузка папок"]},"Upload from device":{msgid:"Upload from device",msgstr:["Загрузка с устройства"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Загрузка была отменена"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Загрузка была пропущена"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:["Загрузка {folder}была пропущена"]},"Upload progress":{msgid:"Upload progress",msgstr:["Состояние передачи на сервер"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Когда выбрана входящая папка, все конфликтующие файлы в ней также будут перезаписаны."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Когда выбрана входящая папка, содержимое записывается в существующую папку и выполняется рекурсивное разрешение конфликтов."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Какие файлы вы хотите сохранить?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Вы можете переименовать файл, пропустить этот файл или отменить всю операцию."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Для продолжения вам нужно выбрать по крайней мере одну версию каждого файла."]}}}}},{locale:"sc",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Sardinian (https://www.transifex.com/nextcloud/teams/64236/sc/)","Content-Type":"text/plain; charset=UTF-8",Language:"sc","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Sardinian (https://www.transifex.com/nextcloud/teams/64236/sc/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: sc\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"si",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)","Content-Type":"text/plain; charset=UTF-8",Language:"si","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: si\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"sk",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Slovak (Slovakia) (https://www.transifex.com/nextcloud/teams/64236/sk_SK/)","Content-Type":"text/plain; charset=UTF-8",Language:"sk_SK","Plural-Forms":"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Slovak (Slovakia) (https://www.transifex.com/nextcloud/teams/64236/sk_SK/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: sk_SK\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"sl",json:{charset:"utf-8",headers:{"Last-Translator":"Simon Bogina, 2024","Language-Team":"Slovenian (https://app.transifex.com/nextcloud/teams/64236/sl/)","Content-Type":"text/plain; charset=UTF-8",Language:"sl","Plural-Forms":"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nJan Kraljič <jan.kraljic@patware.eu>, 2024\nSimon Bogina, 2024\n"},msgstr:["Last-Translator: Simon Bogina, 2024\nLanguage-Team: Slovenian (https://app.transifex.com/nextcloud/teams/64236/sl/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: sl\nPlural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" je prepovedano ime datoteka ali mape.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" je prepovedan tip datoteke.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" ni dovoljeno v imenu datoteke ali mape.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["1{count} datoteka je v konfliktu","1{count} datoteki sta v konfiktu","1{count} datotek je v konfliktu","{count} datotek je v konfliktu"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} datoteka je v konfiktu v {dirname}","{count} datoteki sta v konfiktu v {dirname}","{count} datotek je v konfiktu v {dirname}","{count} konfliktov datotek v {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["še {seconds} sekund"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["še {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["še nekaj sekund"]},Cancel:{msgid:"Cancel",msgstr:["Prekliči"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Prekliči celotni postopek"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Prekliči pošiljanje"]},Continue:{msgid:"Continue",msgstr:["Nadaljuj"]},"Create new":{msgid:"Create new",msgstr:["Ustvari nov"]},"estimating time left":{msgid:"estimating time left",msgstr:["ocenjujem čas do konca"]},"Existing version":{msgid:"Existing version",msgstr:["Obstoječa različica"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Imena datotek se ne smejo končati s "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Če izberete obe različici, bo imenu dohodne datoteke na koncu dodana številka."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Nepravilno ime datoteke"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Datum zadnje spremembe neznan"]},New:{msgid:"New",msgstr:["Nov"]},"New filename":{msgid:"New filename",msgstr:["Novo ime datoteke"]},"New version":{msgid:"New version",msgstr:["Nova različica"]},paused:{msgid:"paused",msgstr:["v premoru"]},"Preview image":{msgid:"Preview image",msgstr:["Predogled slike"]},Rename:{msgid:"Rename",msgstr:["Preimenuj"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Izberi vsa potrditvena polja"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Označi vse obstoječe datoteke"]},"Select all new files":{msgid:"Select all new files",msgstr:["Označi vse nove datoteke"]},Skip:{msgid:"Skip",msgstr:["Preskoči"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Preskoči datoteko","Preskoči {count} datoteki","Preskoči {count} datotek","Preskoči {count} datotek"]},"Unknown size":{msgid:"Unknown size",msgstr:["Neznana velikost"]},Upload:{msgid:"Upload",msgstr:["Naloži"]},"Upload files":{msgid:"Upload files",msgstr:["Naloži datoteke"]},"Upload folders":{msgid:"Upload folders",msgstr:["Naloži mape"]},"Upload from device":{msgid:"Upload from device",msgstr:["Naloži iz naprave"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Nalaganje je bilo preklicano"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Nalaganje je bilo preskočeno"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Nalaganje "{folder}" je bilo preskočeno']},"Upload progress":{msgid:"Upload progress",msgstr:["Napredek nalaganja"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Ko je izbrana dohodna mapa, bodo vse datototeke v konfliktu znotraj nje prepisane."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Ko je izbrana dohodna mapa, je vsebina vpisana v obstoječo mapo in je izvedeno rekurzivno reševanje konfliktov."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Katere datoteke želite obdržati?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Datoteko lahko preimenujete, preskočite ali prekličete celo operacijo."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Izbrati morate vsaj eno različico vsake datoteke da nadaljujete."]}}}}},{locale:"sq",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)","Content-Type":"text/plain; charset=UTF-8",Language:"sq","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: sq\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"sr",json:{charset:"utf-8",headers:{"Last-Translator":"Иван Пешић, 2024","Language-Team":"Serbian (https://app.transifex.com/nextcloud/teams/64236/sr/)","Content-Type":"text/plain; charset=UTF-8",Language:"sr","Plural-Forms":"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nИван Пешић, 2024\n"},msgstr:["Last-Translator: Иван Пешић, 2024\nLanguage-Team: Serbian (https://app.transifex.com/nextcloud/teams/64236/sr/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: sr\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:["„{segment}” је забрањено име фајла или фолдера."]},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:["„{segment}” је забрањен тип фајла."]},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:["„{segment}” није дозвољено унутар имена фајла или фолдера."]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} фајл конфликт","{count} фајл конфликта","{count} фајл конфликта"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} фајл конфликт у {dirname}","{count} фајл конфликта у {dirname}","{count} фајл конфликта у {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["преостало је {seconds} секунди"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} преостало"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["преостало је неколико секунди"]},Cancel:{msgid:"Cancel",msgstr:["Откажи"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Отказује комплетну операцију"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Обустави отпремања"]},Continue:{msgid:"Continue",msgstr:["Настави"]},"Create new":{msgid:"Create new",msgstr:["Креирај ново"]},"estimating time left":{msgid:"estimating time left",msgstr:["процена преосталог времена"]},"Existing version":{msgid:"Existing version",msgstr:["Постојећа верзија"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:["Имена фајлова не смеју да се завршавају на „{segment}”."]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Ако изаберете обе верзије, на име долазног фајла ће се додати број."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Неисправно име фајла"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Није познат датум последње измене"]},New:{msgid:"New",msgstr:["Ново"]},"New filename":{msgid:"New filename",msgstr:["Ново име фајла"]},"New version":{msgid:"New version",msgstr:["Нова верзија"]},paused:{msgid:"paused",msgstr:["паузирано"]},"Preview image":{msgid:"Preview image",msgstr:["Слика прегледа"]},Rename:{msgid:"Rename",msgstr:["Промени име"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Штиклирај сва поља за штиклирање"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Изабери све постојеће фајлове"]},"Select all new files":{msgid:"Select all new files",msgstr:["Изабери све нове фајлове"]},Skip:{msgid:"Skip",msgstr:["Прескочи"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Прескочи овај фајл","Прескочи {count} фајла","Прескочи {count} фајлова"]},"Unknown size":{msgid:"Unknown size",msgstr:["Непозната величина"]},Upload:{msgid:"Upload",msgstr:["Отпреми"]},"Upload files":{msgid:"Upload files",msgstr:["Отпреми фајлове"]},"Upload folders":{msgid:"Upload folders",msgstr:["Отпреми фолдере"]},"Upload from device":{msgid:"Upload from device",msgstr:["Отпреми са уређаја"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Отпремање је отказано"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Отпремање је прескочено"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:["Отпремање „{folder}”је прескочено"]},"Upload progress":{msgid:"Upload progress",msgstr:["Напредак отпремања"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Када се изабере долазни фолдер, сва имена фајлова са конфликтом унутар њега ће се такође преписати."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Када се изабере долазни фолдер, садржај се уписује у постојећи фолдер и извршава се рекурзивно разрешавање конфликата."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Које фајлове желите да задржите?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Можете или да промените име фајлу, прескочите овај фајл или откажете комплетну операцију."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Морате да изаберете барем једну верзију сваког фајла да наставите."]}}}}},{locale:"sr@latin",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Serbian (Latin) (https://www.transifex.com/nextcloud/teams/64236/sr@latin/)","Content-Type":"text/plain; charset=UTF-8",Language:"sr@latin","Plural-Forms":"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Serbian (Latin) (https://www.transifex.com/nextcloud/teams/64236/sr@latin/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: sr@latin\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"sv",json:{charset:"utf-8",headers:{"Last-Translator":"Magnus Höglund, 2024","Language-Team":"Swedish (https://app.transifex.com/nextcloud/teams/64236/sv/)","Content-Type":"text/plain; charset=UTF-8",Language:"sv","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nMagnus Höglund, 2024\n"},msgstr:["Last-Translator: Magnus Höglund, 2024\nLanguage-Team: Swedish (https://app.transifex.com/nextcloud/teams/64236/sv/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: sv\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" är ett förbjudet fil- eller mappnamn.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" är en förbjuden filtyp.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" är inte tillåtet i ett fil- eller mappnamn.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} filkonflikt","{count} filkonflikter"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} filkonflikt i {dirname}","{count} filkonflikter i {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} sekunder kvarstår"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} kvarstår"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["några sekunder kvar"]},Cancel:{msgid:"Cancel",msgstr:["Avbryt"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Avbryt hela operationen"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Avbryt uppladdningar"]},Continue:{msgid:"Continue",msgstr:["Fortsätt"]},"Create new":{msgid:"Create new",msgstr:["Skapa ny"]},"estimating time left":{msgid:"estimating time left",msgstr:["uppskattar kvarstående tid"]},"Existing version":{msgid:"Existing version",msgstr:["Nuvarande version"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Filnamn får inte sluta med "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Om du väljer båda versionerna kommer den inkommande filen att läggas till ett nummer i namnet."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Ogiltigt filnamn"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Senaste ändringsdatum okänt"]},New:{msgid:"New",msgstr:["Ny"]},"New filename":{msgid:"New filename",msgstr:["Nytt filnamn"]},"New version":{msgid:"New version",msgstr:["Ny version"]},paused:{msgid:"paused",msgstr:["pausad"]},"Preview image":{msgid:"Preview image",msgstr:["Förhandsgranska bild"]},Rename:{msgid:"Rename",msgstr:["Byt namn"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Markera alla kryssrutor"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Välj alla befintliga filer"]},"Select all new files":{msgid:"Select all new files",msgstr:["Välj alla nya filer"]},Skip:{msgid:"Skip",msgstr:["Hoppa över"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Hoppa över denna fil","Hoppa över {count} filer"]},"Unknown size":{msgid:"Unknown size",msgstr:["Okänd storlek"]},Upload:{msgid:"Upload",msgstr:["Ladda upp"]},"Upload files":{msgid:"Upload files",msgstr:["Ladda upp filer"]},"Upload folders":{msgid:"Upload folders",msgstr:["Ladda upp mappar"]},"Upload from device":{msgid:"Upload from device",msgstr:["Ladda upp från enhet"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Uppladdningen har avbrutits"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Uppladdningen har hoppats över"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Uppladdningen av "{folder}" har hoppats över']},"Upload progress":{msgid:"Upload progress",msgstr:["Uppladdningsförlopp"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["När en inkommande mapp väljs skrivs även alla konfliktande filer i den över."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["När en inkommande mapp väljs skrivs innehållet in i den befintliga mappen och en rekursiv konfliktlösning utförs."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Vilka filer vill du behålla?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Du kan antingen byta namn på filen, hoppa över den här filen eller avbryta hela operationen."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Du måste välja minst en version av varje fil för att fortsätta."]}}}}},{locale:"sw",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Swahili (https://www.transifex.com/nextcloud/teams/64236/sw/)","Content-Type":"text/plain; charset=UTF-8",Language:"sw","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Swahili (https://www.transifex.com/nextcloud/teams/64236/sw/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: sw\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"ta",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Tamil (https://www.transifex.com/nextcloud/teams/64236/ta/)","Content-Type":"text/plain; charset=UTF-8",Language:"ta","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Tamil (https://www.transifex.com/nextcloud/teams/64236/ta/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ta\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"th",json:{charset:"utf-8",headers:{"Last-Translator":"Phongpanot Phairat <ppnplus@protonmail.com>, 2022","Language-Team":"Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)","Content-Type":"text/plain; charset=UTF-8",Language:"th_TH","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nPhongpanot Phairat <ppnplus@protonmail.com>, 2022\n"},msgstr:["Last-Translator: Phongpanot Phairat <ppnplus@protonmail.com>, 2022\nLanguage-Team: Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: th_TH\nPlural-Forms: nplurals=1; plural=0;\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["เหลืออีก {seconds} วินาที"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["เหลืออีก {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["เหลืออีกไม่กี่วินาที"]},Add:{msgid:"Add",msgstr:["เพิ่ม"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["ยกเลิกการอัปโหลด"]},"estimating time left":{msgid:"estimating time left",msgstr:["กำลังคำนวณเวลาที่เหลือ"]},paused:{msgid:"paused",msgstr:["หยุดชั่วคราว"]},"Upload files":{msgid:"Upload files",msgstr:["อัปโหลดไฟล์"]}}}}},{locale:"tk",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Turkmen (https://www.transifex.com/nextcloud/teams/64236/tk/)","Content-Type":"text/plain; charset=UTF-8",Language:"tk","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Turkmen (https://www.transifex.com/nextcloud/teams/64236/tk/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: tk\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"tr",json:{charset:"utf-8",headers:{"Last-Translator":"Kaya Zeren <kayazeren@gmail.com>, 2024","Language-Team":"Turkish (https://app.transifex.com/nextcloud/teams/64236/tr/)","Content-Type":"text/plain; charset=UTF-8",Language:"tr","Plural-Forms":"nplurals=2; plural=(n > 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nKaya Zeren <kayazeren@gmail.com>, 2024\n"},msgstr:["Last-Translator: Kaya Zeren <kayazeren@gmail.com>, 2024\nLanguage-Team: Turkish (https://app.transifex.com/nextcloud/teams/64236/tr/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: tr\nPlural-Forms: nplurals=2; plural=(n > 1);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" dosya ya da klasör adına izin verilmiyor.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" dosya türüne izin verilmiyor.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['Bir dosya ya da klasör adında "{segment}" ifadesine izin verilmiyor.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} dosya çakışması var","{count} dosya çakışması var"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{dirname} klasöründe {count} dosya çakışması var","{dirname} klasöründe {count} dosya çakışması var"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} saniye kaldı"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} kaldı"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["bir kaç saniye kaldı"]},Cancel:{msgid:"Cancel",msgstr:["İptal"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Tüm işlemi iptal et"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Yüklemeleri iptal et"]},Continue:{msgid:"Continue",msgstr:["İlerle"]},"Create new":{msgid:"Create new",msgstr:["Yeni ekle"]},"estimating time left":{msgid:"estimating time left",msgstr:["öngörülen kalan süre"]},"Existing version":{msgid:"Existing version",msgstr:["Var olan sürüm"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Dosya adları "{segment}" ile bitmemeli.']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["İki sürümü de seçerseniz, gelen dosyanın adına bir sayı eklenir."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Dosya adı geçersiz"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Son değiştirilme tarihi bilinmiyor"]},New:{msgid:"New",msgstr:["Yeni"]},"New filename":{msgid:"New filename",msgstr:["Yeni dosya adı"]},"New version":{msgid:"New version",msgstr:["Yeni sürüm"]},paused:{msgid:"paused",msgstr:["duraklatıldı"]},"Preview image":{msgid:"Preview image",msgstr:["Görsel ön izlemesi"]},Rename:{msgid:"Rename",msgstr:["Yeniden adlandır"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Tüm kutuları işaretle"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Tüm var olan dosyaları seç"]},"Select all new files":{msgid:"Select all new files",msgstr:["Tüm yeni dosyaları seç"]},Skip:{msgid:"Skip",msgstr:["Atla"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Bu dosyayı atla","{count} dosyayı atla"]},"Unknown size":{msgid:"Unknown size",msgstr:["Boyut bilinmiyor"]},Upload:{msgid:"Upload",msgstr:["Yükle"]},"Upload files":{msgid:"Upload files",msgstr:["Dosyaları yükle"]},"Upload folders":{msgid:"Upload folders",msgstr:["Klasörleri yükle"]},"Upload from device":{msgid:"Upload from device",msgstr:["Aygıttan yükle"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Yükleme iptal edildi"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Yükleme atlandı"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['"{folder}" klasörünün yüklenmesi atlandı']},"Upload progress":{msgid:"Upload progress",msgstr:["Yükleme ilerlemesi"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Bir gelen klasör seçildiğinde, içindeki çakışan dosyaların da üzerine yazılır."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Bir gelen klasörü seçildiğinde içerik var olan klasöre yazılır ve yinelemeli bir çakışma çözümü uygulanır."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Hangi dosyaları tutmak istiyorsunuz?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Dosya adını değiştirebilir, bu dosyayı atlayabilir ya da tüm işlemi iptal edebilirsiniz."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["İlerlemek için her dosyanın en az bir sürümünü seçmelisiniz."]}}}}},{locale:"ug",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Uyghur (https://www.transifex.com/nextcloud/teams/64236/ug/)","Content-Type":"text/plain; charset=UTF-8",Language:"ug","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Uyghur (https://www.transifex.com/nextcloud/teams/64236/ug/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ug\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"uk",json:{charset:"utf-8",headers:{"Last-Translator":"O St <oleksiy.stasevych@gmail.com>, 2024","Language-Team":"Ukrainian (https://app.transifex.com/nextcloud/teams/64236/uk/)","Content-Type":"text/plain; charset=UTF-8",Language:"uk","Plural-Forms":"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nO St <oleksiy.stasevych@gmail.com>, 2024\n"},msgstr:["Last-Translator: O St <oleksiy.stasevych@gmail.com>, 2024\nLanguage-Team: Ukrainian (https://app.transifex.com/nextcloud/teams/64236/uk/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: uk\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" не є дозволеним ім\'ям файлу або каталогу.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" не є дозволеним типом файлу.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" не дозволене сполучення символів в назві файлу або каталогу.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} конфліктний файл","{count} конфліктних файли","{count} конфліктних файлів","{count} конфліктних файлів"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} конфліктний файл у каталозі {dirname}","{count} конфліктних файли у каталозі {dirname}","{count} конфліктних файлів у каталозі {dirname}","{count} конфліктних файлів у каталозі {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["Залишилося {seconds} секунд"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["Залишилося {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["залишилося кілька секунд"]},Cancel:{msgid:"Cancel",msgstr:["Скасувати"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Скасувати операцію повністю"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Скасувати завантаження"]},Continue:{msgid:"Continue",msgstr:["Продовжити"]},"Create new":{msgid:"Create new",msgstr:["Створити новий"]},"estimating time left":{msgid:"estimating time left",msgstr:["оцінка часу, що залишився"]},"Existing version":{msgid:"Existing version",msgstr:["Присутня версія"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Ім\'я файлів не можуть закінчуватися на "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Якщо буде вибрано обидві версії, до імени вхідного файлу було додано цифру."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Недійсне ім'я файлу"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Дата останньої зміни невідома"]},New:{msgid:"New",msgstr:["Нове"]},"New filename":{msgid:"New filename",msgstr:["Нове ім'я файлу"]},"New version":{msgid:"New version",msgstr:["Нова версія"]},paused:{msgid:"paused",msgstr:["призупинено"]},"Preview image":{msgid:"Preview image",msgstr:["Попередній перегляд"]},Rename:{msgid:"Rename",msgstr:["Перейменувати"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Вибрати все"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Вибрати усі присутні файли"]},"Select all new files":{msgid:"Select all new files",msgstr:["Вибрати усі нові файли"]},Skip:{msgid:"Skip",msgstr:["Пропустити"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Пропустити файл","Пропустити {count} файли","Пропустити {count} файлів","Пропустити {count} файлів"]},"Unknown size":{msgid:"Unknown size",msgstr:["Невідомий розмір"]},Upload:{msgid:"Upload",msgstr:["Завантажити"]},"Upload files":{msgid:"Upload files",msgstr:["Завантажити файли"]},"Upload folders":{msgid:"Upload folders",msgstr:["Завантажити каталоги"]},"Upload from device":{msgid:"Upload from device",msgstr:["Завантажити з пристрою"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Завантаження скасовано"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Завантаження пропущено"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Завантаження "{folder}" пропущено']},"Upload progress":{msgid:"Upload progress",msgstr:["Поступ завантаження"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Усі конфліктні файли у вибраному каталозі призначення буде перезаписано поверх."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Якщо буде вибрано вхідний каталог, вміст буде записано до наявного каталогу та вирішено конфлікти у відповідних файлах каталогу та підкаталогів."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Які файли залишити?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Ви можете або перейменувати цей файл, пропустити або скасувати дію з файлом."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Для продовження потрібно вибрати принаймні одну версію для кожного файлу."]}}}}},{locale:"ur_PK",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Urdu (Pakistan) (https://www.transifex.com/nextcloud/teams/64236/ur_PK/)","Content-Type":"text/plain; charset=UTF-8",Language:"ur_PK","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Urdu (Pakistan) (https://www.transifex.com/nextcloud/teams/64236/ur_PK/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ur_PK\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"uz",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Uzbek (https://www.transifex.com/nextcloud/teams/64236/uz/)","Content-Type":"text/plain; charset=UTF-8",Language:"uz","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Uzbek (https://www.transifex.com/nextcloud/teams/64236/uz/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: uz\nPlural-Forms: nplurals=1; plural=0;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"vi",json:{charset:"utf-8",headers:{"Last-Translator":"Tung DangQuang, 2023","Language-Team":"Vietnamese (https://app.transifex.com/nextcloud/teams/64236/vi/)","Content-Type":"text/plain; charset=UTF-8",Language:"vi","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJohn Molakvoæ <skjnldsv@protonmail.com>, 2023\nTung DangQuang, 2023\n"},msgstr:["Last-Translator: Tung DangQuang, 2023\nLanguage-Team: Vietnamese (https://app.transifex.com/nextcloud/teams/64236/vi/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: vi\nPlural-Forms: nplurals=1; plural=0;\n"]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} Tập tin xung đột"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} tập tin lỗi trong {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["Còn {second} giây"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["Còn lại {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["Còn lại một vài giây"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Huỷ tải lên"]},Continue:{msgid:"Continue",msgstr:["Tiếp Tục"]},"estimating time left":{msgid:"estimating time left",msgstr:["Thời gian còn lại dự kiến"]},"Existing version":{msgid:"Existing version",msgstr:["Phiên Bản Hiện Tại"]},"If you select both versions, the copied file will have a number added to its name.":{msgid:"If you select both versions, the copied file will have a number added to its name.",msgstr:["Nếu bạn chọn cả hai phiên bản, tệp được sao chép sẽ có thêm một số vào tên của nó."]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Ngày sửa dổi lần cuối không xác định"]},New:{msgid:"New",msgstr:["Tạo Mới"]},"New version":{msgid:"New version",msgstr:["Phiên Bản Mới"]},paused:{msgid:"paused",msgstr:["đã tạm dừng"]},"Preview image":{msgid:"Preview image",msgstr:["Xem Trước Ảnh"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Chọn tất cả hộp checkbox"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Chọn tất cả các tập tin có sẵn"]},"Select all new files":{msgid:"Select all new files",msgstr:["Chọn tất cả các tập tin mới"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Bỏ Qua {count} tập tin"]},"Unknown size":{msgid:"Unknown size",msgstr:["Không rõ dung lượng"]},"Upload cancelled":{msgid:"Upload cancelled",msgstr:["Dừng Tải Lên"]},"Upload files":{msgid:"Upload files",msgstr:["Tập tin tải lên"]},"Upload progress":{msgid:"Upload progress",msgstr:["Đang Tải Lên"]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Bạn muốn giữ tập tin nào?"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Bạn cần chọn ít nhất một phiên bản tập tin mới có thể tiếp tục"]}}}}},{locale:"zh_CN",json:{charset:"utf-8",headers:{"Last-Translator":"Gloryandel, 2024","Language-Team":"Chinese (China) (https://app.transifex.com/nextcloud/teams/64236/zh_CN/)","Content-Type":"text/plain; charset=UTF-8",Language:"zh_CN","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nGloryandel, 2024\n"},msgstr:["Last-Translator: Gloryandel, 2024\nLanguage-Team: Chinese (China) (https://app.transifex.com/nextcloud/teams/64236/zh_CN/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: zh_CN\nPlural-Forms: nplurals=1; plural=0;\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" 是被禁止的文件名或文件夹名。']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" 是被禁止的文件类型。']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" 不允许包含在文件名或文件夹名中。']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count}文件冲突"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["在{dirname}目录下有{count}个文件冲突"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["剩余 {seconds} 秒"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["剩余 {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["还剩几秒"]},Cancel:{msgid:"Cancel",msgstr:["取消"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["取消整个操作"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["取消上传"]},Continue:{msgid:"Continue",msgstr:["继续"]},"Create new":{msgid:"Create new",msgstr:["新建"]},"estimating time left":{msgid:"estimating time left",msgstr:["估计剩余时间"]},"Existing version":{msgid:"Existing version",msgstr:["服务端版本"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['文件名不得以 "{segment}" 结尾。']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["如果同时选择两个版本,则上传文件的名称中将添加一个数字。"]},"Invalid filename":{msgid:"Invalid filename",msgstr:["无效文件名"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["文件最后修改日期未知"]},New:{msgid:"New",msgstr:["新建"]},"New filename":{msgid:"New filename",msgstr:["新文件名"]},"New version":{msgid:"New version",msgstr:["上传版本"]},paused:{msgid:"paused",msgstr:["已暂停"]},"Preview image":{msgid:"Preview image",msgstr:["图片预览"]},Rename:{msgid:"Rename",msgstr:["重命名"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["选择所有的选择框"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["保留所有服务端版本"]},"Select all new files":{msgid:"Select all new files",msgstr:["保留所有上传版本"]},Skip:{msgid:"Skip",msgstr:["跳过"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["跳过{count}个文件"]},"Unknown size":{msgid:"Unknown size",msgstr:["文件大小未知"]},Upload:{msgid:"Upload",msgstr:["上传"]},"Upload files":{msgid:"Upload files",msgstr:["上传文件"]},"Upload folders":{msgid:"Upload folders",msgstr:["上传文件夹"]},"Upload from device":{msgid:"Upload from device",msgstr:["从设备上传"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["上传已取消"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["上传已跳过"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['已跳过上传"{folder}"']},"Upload progress":{msgid:"Upload progress",msgstr:["上传进度"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["当选择上传文件夹时,其中任何冲突的文件也都会被覆盖。"]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["选择上传文件夹后,内容将写入现有文件夹,并递归执行冲突解决。"]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["你要保留哪些文件?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["您可以重命名文件、跳过此文件或取消整个操作。"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["每个文件至少选择保留一个版本"]}}}}},{locale:"zh_HK",json:{charset:"utf-8",headers:{"Last-Translator":"Café Tango, 2024","Language-Team":"Chinese (Hong Kong) (https://app.transifex.com/nextcloud/teams/64236/zh_HK/)","Content-Type":"text/plain; charset=UTF-8",Language:"zh_HK","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nCafé Tango, 2024\n"},msgstr:["Last-Translator: Café Tango, 2024\nLanguage-Team: Chinese (Hong Kong) (https://app.transifex.com/nextcloud/teams/64236/zh_HK/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: zh_HK\nPlural-Forms: nplurals=1; plural=0;\n"]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} 個檔案衝突"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{dirname} 中有 {count} 個檔案衝突"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["剩餘 {seconds} 秒"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["剩餘 {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["還剩幾秒"]},Cancel:{msgid:"Cancel",msgstr:["取消"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["取消整個操作"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["取消上傳"]},Continue:{msgid:"Continue",msgstr:["繼續"]},"estimating time left":{msgid:"estimating time left",msgstr:["估計剩餘時間"]},"Existing version":{msgid:"Existing version",msgstr:["既有版本"]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["若您選取兩個版本,傳入檔案的名稱將會新增編號。"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["最後修改日期不詳"]},New:{msgid:"New",msgstr:["新增"]},"New version":{msgid:"New version",msgstr:["新版本 "]},paused:{msgid:"paused",msgstr:["已暫停"]},"Preview image":{msgid:"Preview image",msgstr:["預覽圖片"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["選取所有核取方塊"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["選取所有既有檔案"]},"Select all new files":{msgid:"Select all new files",msgstr:["選取所有新檔案"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["略過 {count} 個檔案"]},"Unknown size":{msgid:"Unknown size",msgstr:["大小不詳"]},"Upload cancelled":{msgid:"Upload cancelled",msgstr:["已取消上傳"]},"Upload files":{msgid:"Upload files",msgstr:["上傳檔案"]},"Upload progress":{msgid:"Upload progress",msgstr:["上傳進度"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["選取傳入資料夾後,其中任何的衝突檔案都會被覆寫。"]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["選擇傳入資料夾後,內容將寫入現有資料夾並執行遞歸衝突解決。"]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["您想保留哪些檔案?"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["您必須為每個檔案都至少選取一個版本以繼續。"]}}}}},{locale:"zh_TW",json:{charset:"utf-8",headers:{"Last-Translator":"黃柏諺 <s8321414@gmail.com>, 2024","Language-Team":"Chinese (Taiwan) (https://app.transifex.com/nextcloud/teams/64236/zh_TW/)","Content-Type":"text/plain; charset=UTF-8",Language:"zh_TW","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\n黃柏諺 <s8321414@gmail.com>, 2024\n"},msgstr:["Last-Translator: 黃柏諺 <s8321414@gmail.com>, 2024\nLanguage-Team: Chinese (Taiwan) (https://app.transifex.com/nextcloud/teams/64236/zh_TW/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: zh_TW\nPlural-Forms: nplurals=1; plural=0;\n"]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} 個檔案衝突"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{dirname} 中有 {count} 個檔案衝突"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["剩餘 {seconds} 秒"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["剩餘 {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["還剩幾秒"]},Cancel:{msgid:"Cancel",msgstr:["取消"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["取消整個操作"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["取消上傳"]},Continue:{msgid:"Continue",msgstr:["繼續"]},"estimating time left":{msgid:"estimating time left",msgstr:["估計剩餘時間"]},"Existing version":{msgid:"Existing version",msgstr:["既有版本"]},"If you select both versions, the copied file will have a number added to its name.":{msgid:"If you select both versions, the copied file will have a number added to its name.",msgstr:["若您選取兩個版本,複製的檔案的名稱將會新增編號。"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["最後修改日期未知"]},New:{msgid:"New",msgstr:["新增"]},"New version":{msgid:"New version",msgstr:["新版本"]},paused:{msgid:"paused",msgstr:["已暫停"]},"Preview image":{msgid:"Preview image",msgstr:["預覽圖片"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["選取所有核取方塊"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["選取所有既有檔案"]},"Select all new files":{msgid:"Select all new files",msgstr:["選取所有新檔案"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["略過 {count} 檔案"]},"Unknown size":{msgid:"Unknown size",msgstr:["未知大小"]},"Upload cancelled":{msgid:"Upload cancelled",msgstr:["已取消上傳"]},"Upload files":{msgid:"Upload files",msgstr:["上傳檔案"]},"Upload progress":{msgid:"Upload progress",msgstr:["上傳進度"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["選取傳入資料夾後,其中任何的衝突檔案都會被覆寫。"]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["您想保留哪些檔案?"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["您必須為每個檔案都至少選取一個版本以繼續。"]}}}}}].map((e=>P.addTranslation(e.locale,e.json)));const B=P.build(),z=B.ngettext.bind(B),D=B.gettext.bind(B),O=(0,p.YK)().setApp("@nextcloud/upload").detectUser().build();var R=(e=>(e[e.IDLE=0]="IDLE",e[e.UPLOADING=1]="UPLOADING",e[e.PAUSED=2]="PAUSED",e))(R||{});class j{_destinationFolder;_isPublic;_customHeaders;_uploadQueue=[];_jobQueue=new c.A({concurrency:(0,h.F)().files?.chunked_upload?.max_parallel_count??5});_queueSize=0;_queueProgress=0;_queueStatus=0;_notifiers=[];constructor(e=!1,t){if(this._isPublic=e,this._customHeaders={},!t){const s=`${r.PY}${r.lJ}`;let i;if(e)i="anonymous";else{const e=(0,a.HW)()?.uid;if(!e)throw new Error("User is not logged in");i=e}t=new r.vd({id:0,owner:i,permissions:r.aX.ALL,root:r.lJ,source:s})}this.destination=t,this._jobQueue.addListener("idle",(()=>this.reset())),O.debug("Upload workspace initialized",{destination:this.destination,root:this.root,isPublic:e,maxChunksSize:L()})}get destination(){return this._destinationFolder}set destination(e){if(!e||e.type!==r.pt.Folder||!e.source)throw new Error("Invalid destination folder");O.debug("Destination set",{folder:e}),this._destinationFolder=e}get root(){return this._destinationFolder.source}get customHeaders(){return structuredClone(this._customHeaders)}setCustomHeader(e,t=""){this._customHeaders[e]=t}deleteCustomerHeader(e){delete this._customHeaders[e]}get queue(){return this._uploadQueue}reset(){this._uploadQueue.splice(0,this._uploadQueue.length),this._jobQueue.clear(),this._queueSize=0,this._queueProgress=0,this._queueStatus=0}pause(){this._jobQueue.pause(),this._queueStatus=2}start(){this._jobQueue.start(),this._queueStatus=1,this.updateStats()}get info(){return{size:this._queueSize,progress:this._queueProgress,status:this._queueStatus}}updateStats(){const e=this._uploadQueue.map((e=>e.size)).reduce(((e,t)=>e+t),0),t=this._uploadQueue.map((e=>e.uploaded)).reduce(((e,t)=>e+t),0);this._queueSize=e,this._queueProgress=t,2!==this._queueStatus&&(this._queueStatus=this._jobQueue.size>0?1:0)}addNotifier(e){this._notifiers.push(e)}_notifyAll(e){for(const t of this._notifiers)try{t(e)}catch(t){O.warn("Error in upload notifier",{error:t,source:e.source})}}batchUpload(e,t,s){return s||(s=async e=>e),new m.A((async(i,n,a)=>{const o=new I("");await o.addChildren(t);const l=`${this.root.replace(/\/$/,"")}/${e.replace(/^\//,"")}`,d=new F(l,!1,0,o);d.status=N.UPLOADING,this._uploadQueue.push(d),O.debug("Starting new batch upload",{target:l});try{const t=(0,r.H4)(this.root,this._customHeaders),n=this.uploadDirectory(e,o,s,t);a((()=>n.cancel()));const l=await n;d.status=N.FINISHED,i(l)}catch(e){O.error("Error in batch upload",{error:e}),d.status=N.FAILED,n(D("Upload has been cancelled"))}finally{this._notifyAll(d),this.updateStats()}}))}createDirectory(e,t,s){const i=(0,l.normalize)(`${e}/${t.name}`).replace(/\/$/,""),n=`${this.root.replace(/\/$/,"")}/${i.replace(/^\//,"")}`;if(!t.name)throw new Error("Can not create empty directory");const a=new F(n,!1,0,t);return this._uploadQueue.push(a),new m.A((async(e,n,r)=>{const o=new AbortController;r((()=>o.abort())),a.signal.addEventListener("abort",(()=>n(D("Upload has been cancelled")))),await this._jobQueue.add((async()=>{a.status=N.UPLOADING;try{await s.createDirectory(i,{signal:o.signal}),e(a)}catch(e){e&&"object"==typeof e&&"status"in e&&405===e.status?(a.status=N.FINISHED,O.debug("Directory already exists, writing into it",{directory:t.name})):(a.status=N.FAILED,n(e))}finally{this._notifyAll(a),this.updateStats()}}))}))}uploadDirectory(e,t,s,i){const n=(0,l.normalize)(`${e}/${t.name}`).replace(/\/$/,"");return new m.A((async(a,r,o)=>{const l=new AbortController;o((()=>l.abort()));const d=await s(t.children,n);if(!1===d)return O.debug("Upload canceled by user",{directory:t}),void r(D("Upload has been cancelled"));if(0===d.length&&t.children.length>0)return O.debug("Skipping directory, as all files were skipped by user",{directory:t}),void a([]);const m=[],c=[];l.signal.addEventListener("abort",(()=>{m.forEach((e=>e.cancel())),c.forEach((e=>e.cancel()))})),O.debug("Start directory upload",{directory:t});try{t.name&&(c.push(this.createDirectory(e,t,i)),await c.at(-1));for(const e of d)e instanceof I?m.push(this.uploadDirectory(n,e,s,i)):c.push(this.upload(`${n}/${e.name}`,e));a([await Promise.all(c),...await Promise.all(m)].flat())}catch(e){l.abort(e),r(e)}}))}upload(e,t,s,i=5){const n=`${(s=s||this.root).replace(/\/$/,"")}/${e.replace(/^\//,"")}`,{origin:r}=new URL(n),l=r+(0,o.O0)(n.slice(r.length));return O.debug(`Uploading ${t.name} to ${l}`),new m.A((async(e,s,r)=>{E(t)&&(t=await new Promise((e=>t.file(e,s))));const o=t,m=L("size"in o?o.size:void 0),c=this._isPublic||0===m||"size"in o&&o.size<m,f=new F(n,!c,o.size,o);if(this._uploadQueue.push(f),this.updateStats(),r(f.cancel),c){O.debug("Initializing regular upload",{file:o,upload:f});const t=await S(o,0,f.size),i=async()=>{try{f.response=await T(l,t,f.signal,(e=>{f.uploaded=f.uploaded+e.bytes,this.updateStats()}),void 0,{...this._customHeaders,"X-OC-Mtime":Math.floor(o.lastModified/1e3),"Content-Type":o.type}),f.uploaded=f.size,this.updateStats(),O.debug(`Successfully uploaded ${o.name}`,{file:o,upload:f}),e(f)}catch(e){if((0,d.FZ)(e))return f.status=N.FAILED,void s(D("Upload has been cancelled"));e?.response&&(f.response=e.response),f.status=N.FAILED,O.error(`Failed uploading ${o.name}`,{error:e,file:o,upload:f}),s("Failed uploading the file")}this._notifyAll(f)};this._jobQueue.add(i),this.updateStats()}else{O.debug("Initializing chunked upload",{file:o,upload:f});const t=await async function(e,t=5){const s=`${(0,u.dC)(`dav/uploads/${(0,a.HW)()?.uid}`)}/web-file-upload-${[...Array(16)].map((()=>Math.floor(16*Math.random()).toString(16))).join("")}`,i=e?{Destination:e}:void 0;return await d.Ay.request({method:"MKCOL",url:s,headers:i,"axios-retry":{retries:t,retryDelay:(e,t)=>(0,g.Nv)(e,t,1e3)}}),s}(l,i),n=[];for(let e=0;e<f.chunks;e++){const s=e*m,a=Math.min(s+m,f.size),r=()=>S(o,s,m),c=()=>T(`${t}/${e+1}`,r,f.signal,(()=>this.updateStats()),l,{...this._customHeaders,"X-OC-Mtime":Math.floor(o.lastModified/1e3),"OC-Total-Length":o.size,"Content-Type":"application/octet-stream"},i).then((()=>{f.uploaded=f.uploaded+m})).catch((t=>{if(507===t?.response?.status)throw O.error("Upload failed, not enough space on the server or quota exceeded. Cancelling the remaining chunks",{error:t,upload:f}),f.cancel(),f.status=N.FAILED,t;throw(0,d.FZ)(t)||(O.error(`Chunk ${e+1} ${s} - ${a} uploading failed`,{error:t,upload:f}),f.cancel(),f.status=N.FAILED),t}));n.push(this._jobQueue.add(c))}try{await Promise.all(n),this.updateStats(),f.response=await d.Ay.request({method:"MOVE",url:`${t}/.file`,headers:{...this._customHeaders,"X-OC-Mtime":Math.floor(o.lastModified/1e3),"OC-Total-Length":o.size,Destination:l}}),this.updateStats(),f.status=N.FINISHED,O.debug(`Successfully uploaded ${o.name}`,{file:o,upload:f}),e(f)}catch(e){(0,d.FZ)(e)?(f.status=N.FAILED,s(D("Upload has been cancelled"))):(f.status=N.FAILED,s("Failed assembling the chunks together")),d.Ay.request({method:"DELETE",url:`${t}`})}this._notifyAll(f)}return f}))}}function M(e,t,s,i,n,a,r,o){var l="function"==typeof e?e.options:e;return t&&(l.render=t,l.staticRenderFns=s,l._compiled=!0),a&&(l._scopeId="data-v-"+a),{exports:e,options:l}}const V=M({name:"CancelIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon cancel-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M12 4C10.1 4 8.4 4.6 7.1 5.7L18.3 16.9C19.3 15.5 20 13.8 20 12C20 7.6 16.4 4 12 4M16.9 18.3L5.7 7.1C4.6 8.4 4 10.1 4 12C4 16.4 7.6 20 12 20C13.9 20 15.6 19.4 16.9 18.3Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],0,0,null).exports,$=M({name:"FolderUploadIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon folder-upload-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],0,0,null).exports,W=M({name:"PlusIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon plus-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],0,0,null).exports,H=M({name:"UploadIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon upload-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],0,0,null).exports;function q(e){const t=(0,n.$V)((()=>Promise.all([s.e(4208),s.e(5828)]).then(s.bind(s,35828)))),{promise:i,reject:a,resolve:o}=Promise.withResolvers();return(0,k.Ss)(t,{error:e,validateFilename:r.KT},((...e)=>{const[{skip:t,rename:s}]=e;t?o(!1):s?o(s):a()})),i}function G(e,t){return Y(e,t).length>0}function Y(e,t){const s=t.map((e=>e.basename));return e.filter((e=>{const t="basename"in e?e.basename:e.name;return-1!==s.indexOf(t)}))}const K=M(n.Ay.extend({name:"UploadPicker",components:{IconCancel:V,IconFolderUpload:$,IconPlus:W,IconUpload:H,NcActionButton:v.A,NcActionCaption:A.A,NcActionSeparator:C.A,NcActions:b.A,NcButton:y.A,NcIconSvgWrapper:x.A,NcProgressBar:_.A},props:{accept:{type:Array,default:null},disabled:{type:Boolean,default:!1},multiple:{type:Boolean,default:!1},noMenu:{type:Boolean,default:!1},destination:{type:r.vd,default:void 0},allowFolders:{type:Boolean,default:!1},content:{type:[Array,Function],default:()=>[]},forbiddenCharacters:{type:Array,default:()=>[]}},setup:()=>({t:D,progressTimeId:`nc-uploader-progress-${Math.random().toString(36).slice(7)}`}),data:()=>({eta:null,timeLeft:"",newFileMenuEntries:[],uploadManager:Q()}),computed:{menuEntriesUpload(){return this.newFileMenuEntries.filter((e=>e.category===r.a7.UploadFromDevice))},menuEntriesNew(){return this.newFileMenuEntries.filter((e=>e.category===r.a7.CreateNew))},menuEntriesOther(){return this.newFileMenuEntries.filter((e=>e.category===r.a7.Other))},canUploadFolders(){return this.allowFolders&&"webkitdirectory"in document.createElement("input")},totalQueueSize(){return this.uploadManager.info?.size||0},uploadedQueueSize(){return this.uploadManager.info?.progress||0},progress(){return Math.round(this.uploadedQueueSize/this.totalQueueSize*100)||0},queue(){return this.uploadManager.queue},hasFailure(){return 0!==this.queue?.filter((e=>e.status===N.FAILED)).length},isUploading(){return this.queue?.length>0},isAssembling(){return 0!==this.queue?.filter((e=>e.status===N.ASSEMBLING)).length},isPaused(){return this.uploadManager.info?.status===R.PAUSED},buttonLabel(){return this.noMenu?D("Upload"):D("New")},buttonName(){if(!this.isUploading)return this.buttonLabel}},watch:{allowFolders:{immediate:!0,handler(){"function"!=typeof this.content&&this.allowFolders&&O.error("[UploadPicker] Setting `allowFolders` is only allowed if `content` is a function")}},destination(e){this.setDestination(e)},totalQueueSize(e){this.eta=w({min:0,max:e}),this.updateStatus()},uploadedQueueSize(e){this.eta?.report?.(e),this.updateStatus()},isPaused(e){e?this.$emit("paused",this.queue):this.$emit("resumed",this.queue)}},beforeMount(){this.destination&&this.setDestination(this.destination),this.uploadManager.addNotifier(this.onUploadCompletion),O.debug("UploadPicker initialised")},methods:{async onClick(e){e.handler(this.destination,await this.getContent().catch((()=>[])))},onTriggerPick(e=!1){const t=this.$refs.input;this.canUploadFolders&&(t.webkitdirectory=e),this.$nextTick((()=>t.click()))},async getContent(e){return Array.isArray(this.content)?this.content:await this.content(e)},onPick(){const e=this.$refs.input,t=e.files?Array.from(e.files):[];var s;this.uploadManager.batchUpload("",t,(s=this.getContent,async(e,t)=>{try{const i=await s(t).catch((()=>[])),n=Y(e,i);if(n.length>0){const{selected:s,renamed:a}=await J(t,n,i,{recursive:!0});e=[...s,...a]}const a=[];for(const t of e)try{(0,r.KT)(t.name),a.push(t)}catch(s){if(!(s instanceof r.di))throw O.error(`Unexpected error while validating ${t.name}`,{error:s}),s;let i=await q(s);!1!==i&&(i=(0,r.E6)(i,e.map((e=>e.name))),Object.defineProperty(t,"name",{value:i}),a.push(t))}if(0===a.length&&e.length>0){const e=(0,o.P8)(t);(0,k.cf)(e?D('Upload of "{folder}" has been skipped',{folder:e}):D("Upload has been skipped"))}return a}catch(e){return O.debug("Upload has been cancelled",{error:e}),(0,k.I9)(D("Upload has been cancelled")),!1}})).catch((e=>O.debug("Error while uploading",{error:e}))).finally((()=>this.resetForm()))},resetForm(){const e=this.$refs.form;e?.reset()},onCancel(){this.uploadManager.queue.forEach((e=>{e.cancel()})),this.resetForm()},updateStatus(){if(this.isPaused)return void(this.timeLeft=D("paused"));const e=Math.round(this.eta.estimate());if(e!==1/0)if(e<10)this.timeLeft=D("a few seconds left");else if(e>60){const t=new Date(0);t.setSeconds(e);const s=t.toISOString().slice(11,19);this.timeLeft=D("{time} left",{time:s})}else this.timeLeft=D("{seconds} seconds left",{seconds:e});else this.timeLeft=D("estimating time left")},setDestination(e){this.destination?(this.uploadManager.destination=e,this.newFileMenuEntries=(0,r.m1)(e)):O.debug("Invalid destination")},onUploadCompletion(e){e.status===N.FAILED?this.$emit("failed",e):this.$emit("uploaded",e)}}}),(function(){var e=this,t=e._self._c;return e._self._setupProxy,e.destination?t("form",{ref:"form",staticClass:"upload-picker",class:{"upload-picker--uploading":e.isUploading,"upload-picker--paused":e.isPaused},attrs:{"data-cy-upload-picker":""}},[!e.noMenu&&0!==e.newFileMenuEntries.length||e.canUploadFolders?t("NcActions",{attrs:{"aria-label":e.buttonLabel,"menu-name":e.buttonName,type:"secondary"},scopedSlots:e._u([{key:"icon",fn:function(){return[t("IconPlus",{attrs:{size:20}})]},proxy:!0}],null,!1,1991456921)},[t("NcActionCaption",{attrs:{name:e.t("Upload from device")}}),t("NcActionButton",{attrs:{"data-cy-upload-picker-add":"","data-cy-upload-picker-menu-entry":"upload-file","close-after-click":!0},on:{click:function(t){return e.onTriggerPick()}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("IconUpload",{attrs:{size:20}})]},proxy:!0}],null,!1,337456192)},[e._v(" "+e._s(e.t("Upload files"))+" ")]),e.canUploadFolders?t("NcActionButton",{attrs:{"close-after-click":"","data-cy-upload-picker-add-folders":"","data-cy-upload-picker-menu-entry":"upload-folder"},on:{click:function(t){return e.onTriggerPick(!0)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("IconFolderUpload",{staticStyle:{color:"var(--color-primary-element)"},attrs:{size:20}})]},proxy:!0}],null,!1,1037549157)},[e._v(" "+e._s(e.t("Upload folders"))+" ")]):e._e(),e.noMenu?e._e():e._l(e.menuEntriesUpload,(function(s){return t("NcActionButton",{key:s.id,staticClass:"upload-picker__menu-entry",attrs:{icon:s.iconClass,"close-after-click":!0,"data-cy-upload-picker-menu-entry":s.id},on:{click:function(t){return e.onClick(s)}},scopedSlots:e._u([s.iconSvgInline?{key:"icon",fn:function(){return[t("NcIconSvgWrapper",{attrs:{svg:s.iconSvgInline}})]},proxy:!0}:null],null,!0)},[e._v(" "+e._s(s.displayName)+" ")])})),!e.noMenu&&e.menuEntriesNew.length>0?[t("NcActionSeparator"),t("NcActionCaption",{attrs:{name:e.t("Create new")}}),e._l(e.menuEntriesNew,(function(s){return t("NcActionButton",{key:s.id,staticClass:"upload-picker__menu-entry",attrs:{icon:s.iconClass,"close-after-click":!0,"data-cy-upload-picker-menu-entry":s.id},on:{click:function(t){return e.onClick(s)}},scopedSlots:e._u([s.iconSvgInline?{key:"icon",fn:function(){return[t("NcIconSvgWrapper",{attrs:{svg:s.iconSvgInline}})]},proxy:!0}:null],null,!0)},[e._v(" "+e._s(s.displayName)+" ")])}))]:e._e(),!e.noMenu&&e.menuEntriesOther.length>0?[t("NcActionSeparator"),e._l(e.menuEntriesOther,(function(s){return t("NcActionButton",{key:s.id,staticClass:"upload-picker__menu-entry",attrs:{icon:s.iconClass,"close-after-click":!0,"data-cy-upload-picker-menu-entry":s.id},on:{click:function(t){return e.onClick(s)}},scopedSlots:e._u([s.iconSvgInline?{key:"icon",fn:function(){return[t("NcIconSvgWrapper",{attrs:{svg:s.iconSvgInline}})]},proxy:!0}:null],null,!0)},[e._v(" "+e._s(s.displayName)+" ")])}))]:e._e()],2):t("NcButton",{attrs:{disabled:e.disabled,"data-cy-upload-picker-add":"","data-cy-upload-picker-menu-entry":"upload-file",type:"secondary"},on:{click:function(t){return e.onTriggerPick()}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("IconPlus",{attrs:{size:20}})]},proxy:!0}],null,!1,1991456921)},[e._v(" "+e._s(e.buttonName)+" ")]),t("div",{directives:[{name:"show",rawName:"v-show",value:e.isUploading,expression:"isUploading"}],staticClass:"upload-picker__progress"},[t("NcProgressBar",{attrs:{"aria-label":e.t("Upload progress"),"aria-describedby":e.progressTimeId,error:e.hasFailure,value:e.progress,size:"medium"}}),t("p",{attrs:{id:e.progressTimeId}},[e._v(" "+e._s(e.timeLeft)+" ")])],1),e.isUploading?t("NcButton",{staticClass:"upload-picker__cancel",attrs:{type:"tertiary","aria-label":e.t("Cancel uploads"),"data-cy-upload-picker-cancel":""},on:{click:e.onCancel},scopedSlots:e._u([{key:"icon",fn:function(){return[t("IconCancel",{attrs:{size:20}})]},proxy:!0}],null,!1,3076329829)}):e._e(),t("input",{ref:"input",staticClass:"hidden-visually",attrs:{accept:e.accept?.join?.(", "),multiple:e.multiple,"data-cy-upload-picker-input":"",type:"file"},on:{change:e.onPick}})],1):e._e()}),[],0,0,"c5517ef8").exports;function Q(e=(0,i.f)(),t=!1){return(t||void 0===window._nc_uploader)&&(window._nc_uploader=new j(e)),window._nc_uploader}async function J(e,t,i,a){const r=(0,n.$V)((()=>Promise.all([s.e(4208),s.e(6473)]).then(s.bind(s,36473))));return new Promise(((s,o)=>{const l=new n.Ay({name:"ConflictPickerRoot",render:n=>n(r,{props:{dirname:e,conflicts:t,content:i,recursiveUpload:!0===a?.recursive},on:{submit(e){s(e),l.$destroy(),l.$el?.parentNode?.removeChild(l.$el)},cancel(e){o(e??new Error("Canceled")),l.$destroy(),l.$el?.parentNode?.removeChild(l.$el)}}})});l.$mount(),document.body.appendChild(l.$el)}))}}},a={};function r(e){var t=a[e];if(void 0!==t)return t.exports;var s=a[e]={id:e,loaded:!1,exports:{}};return n[e].call(s.exports,s,s.exports,r),s.loaded=!0,s.exports}r.m=n,e=[],r.O=(t,s,i,n)=>{if(!s){var a=1/0;for(m=0;m<e.length;m++){s=e[m][0],i=e[m][1],n=e[m][2];for(var o=!0,l=0;l<s.length;l++)(!1&n||a>=n)&&Object.keys(r.O).every((e=>r.O[e](s[l])))?s.splice(l--,1):(o=!1,n<a&&(a=n));if(o){e.splice(m--,1);var d=i();void 0!==d&&(t=d)}}return t}n=n||0;for(var m=e.length;m>0&&e[m-1][2]>n;m--)e[m]=e[m-1];e[m]=[s,i,n]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var s in t)r.o(t,s)&&!r.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((t,s)=>(r.f[s](e,t),t)),[])),r.u=e=>e+"-"+e+".js?v="+{5706:"3153330af47fc26a725a",5828:"251f4c2fee5cd4300ac4",6127:"da37b69cd9ee64a1836b",6473:"29a59b355eab986be8fd"}[e],r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s={},i="nextcloud:",r.l=(e,t,n,a)=>{if(s[e])s[e].push(t);else{var o,l;if(void 0!==n)for(var d=document.getElementsByTagName("script"),m=0;m<d.length;m++){var c=d[m];if(c.getAttribute("src")==e||c.getAttribute("data-webpack")==i+n){o=c;break}}o||(l=!0,(o=document.createElement("script")).charset="utf-8",o.timeout=120,r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",i+n),o.src=e),s[e]=[t];var u=(t,i)=>{o.onerror=o.onload=null,clearTimeout(g);var n=s[e];if(delete s[e],o.parentNode&&o.parentNode.removeChild(o),n&&n.forEach((e=>e(i))),t)return t(i)},g=setTimeout(u.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=u.bind(null,o.onerror),o.onload=u.bind(null,o.onload),l&&document.head.appendChild(o)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.j=2882,(()=>{var e;r.g.importScripts&&(e=r.g.location+"");var t=r.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var s=t.getElementsByTagName("script");if(s.length)for(var i=s.length-1;i>-1&&(!e||!/^http(s?):/.test(e));)e=s[i--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=e})(),(()=>{r.b=document.baseURI||self.location.href;var e={2882:0};r.f.j=(t,s)=>{var i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)s.push(i[2]);else{var n=new Promise(((s,n)=>i=e[t]=[s,n]));s.push(i[2]=n);var a=r.p+r.u(t),o=new Error;r.l(a,(s=>{if(r.o(e,t)&&(0!==(i=e[t])&&(e[t]=void 0),i)){var n=s&&("load"===s.type?"missing":s.type),a=s&&s.target&&s.target.src;o.message="Loading chunk "+t+" failed.\n("+n+": "+a+")",o.name="ChunkLoadError",o.type=n,o.request=a,i[1](o)}}),"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,s)=>{var i,n,a=s[0],o=s[1],l=s[2],d=0;if(a.some((t=>0!==e[t]))){for(i in o)r.o(o,i)&&(r.m[i]=o[i]);if(l)var m=l(r)}for(t&&t(s);d<a.length;d++)n=a[d],r.o(e,n)&&e[n]&&e[n][0](),e[n]=0;return r.O(m)},s=self.webpackChunknextcloud=self.webpackChunknextcloud||[];s.forEach(t.bind(null,0)),s.push=t.bind(null,s.push.bind(s))})(),r.nc=void 0;var o=r.O(void 0,[4208],(()=>r(45943)));o=r.O(o)})();
-//# sourceMappingURL=files-main.js.map?v=058646fab82a3df903d1 \ No newline at end of file
+(()=>{"use strict";var e,s,i,n={50458:(e,s,i)=>{var n=i(21777),a=i(35810),r=i(65899),o=i(85471);const l=(0,r.Ey)();var d=i(63814),m=i(82490),c=i(40173);o.Ay.use(c.Ay);const u=c.Ay.prototype.push;c.Ay.prototype.push=function(e,t,s){return t||s?u.call(this,e,t,s):u.call(this,e).catch((e=>e))};const g=new c.Ay({mode:"history",base:(0,d.Jv)("/apps/files"),linkActiveClass:"active",routes:[{path:"/",redirect:{name:"filelist",params:{view:"files"}}},{path:"/:view/:fileid(\\d+)?",name:"filelist",props:!0}],stringifyQuery(e){const t=m.A.stringify(e).replace(/%2F/gim,"/");return t?"?"+t:""}});class f{constructor(e){(function(e,t,s){(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var s=t.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s})(this,"router",void 0),this.router=e}get name(){return this.router.currentRoute.name}get query(){return this.router.currentRoute.query||{}}get params(){return this.router.currentRoute.params||{}}get _router(){return this.router}goTo(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.router.push({path:e,replace:t})}goToRoute(e,t,s,i){return this.router.push({name:e,query:s,params:t,replace:i})}}function p(e,t,s){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var s=t.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}var h=i(82680),w=i(22378),v=i(61338),A=i(53334);const C={name:"CogIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var b=i(14486);const y=(0,b.A)(C,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon cog-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var x=i(42530),_=i(52439),k=i(27345),T=i(42115);function S(e,t,s){var i,n=s||{},a=n.noTrailing,r=void 0!==a&&a,o=n.noLeading,l=void 0!==o&&o,d=n.debounceMode,m=void 0===d?void 0:d,c=!1,u=0;function g(){i&&clearTimeout(i)}function f(){for(var s=arguments.length,n=new Array(s),a=0;a<s;a++)n[a]=arguments[a];var o=this,d=Date.now()-u;function f(){u=Date.now(),t.apply(o,n)}function p(){i=void 0}c||(l||!m||i||f(),g(),void 0===m&&d>e?l?(u=Date.now(),r||(i=setTimeout(m?p:f,e))):f():!0!==r&&(i=setTimeout(m?p:f,void 0===m?e-d:e)))}return f.cancel=function(e){var t=(e||{}).upcomingOnly,s=void 0!==t&&t;g(),c=!s},f}var L=i(32981),N=i(85168),F=i(65043);const E={name:"ChartPieIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},U=(0,b.A)(E,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon chart-pie-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M11,2V22C5.9,21.5 2,17.2 2,12C2,6.8 5.9,2.5 11,2M13,2V11H22C21.5,6.2 17.8,2.5 13,2M13,13V22C17.7,21.5 21.5,17.8 22,13H13Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var I=i(95101);const P=(0,i(35947).YK)().setApp("files").detectUser().build(),B={name:"NavigationQuota",components:{ChartPie:U,NcAppNavigationItem:_.A,NcProgressBar:I.A},data:()=>({loadingStorageStats:!1,storageStats:(0,L.C)("files","storageStats",null)}),computed:{storageStatsTitle(){const e=(0,a.v7)(this.storageStats?.used,!1,!1),t=(0,a.v7)(this.storageStats?.quota,!1,!1);return this.storageStats?.quota<0?this.t("files","{usedQuotaByte} used",{usedQuotaByte:e}):this.t("files","{used} of {quota} used",{used:e,quota:t})},storageStatsTooltip(){return this.storageStats.relative?this.t("files","{relative}% used",this.storageStats):""}},beforeMount(){setInterval(this.throttleUpdateStorageStats,6e4),(0,v.B1)("files:node:created",this.throttleUpdateStorageStats),(0,v.B1)("files:node:deleted",this.throttleUpdateStorageStats),(0,v.B1)("files:node:moved",this.throttleUpdateStorageStats),(0,v.B1)("files:node:updated",this.throttleUpdateStorageStats)},mounted(){this.storageStats?.quota>0&&0===this.storageStats?.free&&this.showStorageFullWarning()},methods:{debounceUpdateStorageStats:(z={}.atBegin,S(200,(function(e){this.updateStorageStats(e)}),{debounceMode:!1!==(void 0!==z&&z)})),throttleUpdateStorageStats:S(1e3,(function(e){this.updateStorageStats(e)})),async updateStorageStats(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(!this.loadingStorageStats){this.loadingStorageStats=!0;try{const e=await F.Ay.get((0,d.Jv)("/apps/files/api/v1/stats"));if(!e?.data?.data)throw new Error("Invalid storage stats");this.storageStats?.free>0&&0===e.data.data?.free&&e.data.data?.quota>0&&this.showStorageFullWarning(),this.storageStats=e.data.data}catch(s){P.error("Could not refresh storage stats",{error:s}),e&&(0,N.Qg)(t("files","Could not refresh storage stats"))}finally{this.loadingStorageStats=!1}}},showStorageFullWarning(){(0,N.Qg)(this.t("files","Your storage is full, files can not be updated or synced anymore!"))},t:A.Tl}};var z,D=i(85072),O=i.n(D),R=i(97825),j=i.n(R),M=i(77659),V=i.n(M),$=i(55056),W=i.n($),H=i(10540),q=i.n(H),G=i(41113),Y=i.n(G),K=i(84877),Q={};Q.styleTagTransform=Y(),Q.setAttributes=W(),Q.insert=V().bind(null,"head"),Q.domAPI=j(),Q.insertStyleElement=q(),O()(K.A,Q),K.A&&K.A.locals&&K.A.locals;const J=(0,b.A)(B,(function(){var e=this,t=e._self._c;return e.storageStats?t("NcAppNavigationItem",{staticClass:"app-navigation-entry__settings-quota",class:{"app-navigation-entry__settings-quota--not-unlimited":e.storageStats.quota>=0},attrs:{"aria-description":e.t("files","Storage information"),loading:e.loadingStorageStats,name:e.storageStatsTitle,title:e.storageStatsTooltip,"data-cy-files-navigation-settings-quota":""},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),e.debounceUpdateStorageStats.apply(null,arguments)}}},[t("ChartPie",{attrs:{slot:"icon",size:20},slot:"icon"}),e._v(" "),e.storageStats.quota>=0?t("NcProgressBar",{attrs:{slot:"extra","aria-label":e.t("files","Storage quota"),error:e.storageStats.relative>80,value:Math.min(e.storageStats.relative,100)},slot:"extra"}):e._e()],1):e._e()}),[],!1,null,"6ed9379e",null).exports;var X=i(44346),Z=i(14727),ee=i(32073),te=i(31773),se=i(16879);const ie={name:"Setting",props:{el:{type:Function,required:!0}},mounted(){this.$el.appendChild(this.el())}},ne=(0,b.A)(ie,(function(){return(0,this._self._c)("div")}),[],!1,null,null,null).exports,ae=(0,L.C)("files","config",{show_hidden:!1,crop_image_previews:!0,sort_favorites_first:!0,sort_folders_first:!0,grid_view:!1}),re=function(){const e=(0,r.nY)("userconfig",{state:()=>({userConfig:ae}),actions:{onUpdate(e,t){o.Ay.set(this.userConfig,e,t)},async update(e,t){await F.Ay.put((0,d.Jv)("/apps/files/api/v1/config/"+e),{value:t}),(0,v.Ic)("files:config:updated",{key:e,value:t})}}})(...arguments);return e._initialized||((0,v.B1)("files:config:updated",(function(t){let{key:s,value:i}=t;e.onUpdate(s,i)})),e._initialized=!0),e},oe={name:"Settings",components:{Clipboard:te.A,NcAppSettingsDialog:X.N,NcAppSettingsSection:Z.A,NcCheckboxRadioSwitch:ee.A,NcInputField:se.A,Setting:ne},props:{open:{type:Boolean,default:!1}},setup:()=>({userConfigStore:re()}),data:()=>({settings:window.OCA?.Files?.Settings?.settings||[],webdavUrl:(0,d.dC)("dav/files/"+encodeURIComponent((0,n.HW)()?.uid)),webdavDocs:"https://docs.nextcloud.com/server/stable/go.php?to=user-webdav",appPasswordUrl:(0,d.Jv)("/settings/user/security#generate-app-token-section"),webdavUrlCopied:!1,enableGridView:(0,L.C)("core","config",[])["enable_non-accessible_features"]??!0}),computed:{userConfig(){return this.userConfigStore.userConfig}},beforeMount(){this.settings.forEach((e=>e.open()))},beforeDestroy(){this.settings.forEach((e=>e.close()))},methods:{onClose(){this.$emit("close")},setConfig(e,t){this.userConfigStore.update(e,t)},async copyCloudId(){document.querySelector("input#webdav-url-input").select(),navigator.clipboard?(await navigator.clipboard.writeText(this.webdavUrl),this.webdavUrlCopied=!0,(0,N.Te)(t("files","WebDAV URL copied to clipboard")),setTimeout((()=>{this.webdavUrlCopied=!1}),5e3)):(0,N.Qg)(t("files","Clipboard is not available"))},t:A.Tl}};var le=i(66921),de={};de.styleTagTransform=Y(),de.setAttributes=W(),de.insert=V().bind(null,"head"),de.domAPI=j(),de.insertStyleElement=q(),O()(le.A,de),le.A&&le.A.locals&&le.A.locals;const me=(0,b.A)(oe,(function(){var e=this,t=e._self._c;return t("NcAppSettingsDialog",{attrs:{open:e.open,"show-navigation":!0,name:e.t("files","Files settings")},on:{"update:open":e.onClose}},[t("NcAppSettingsSection",{attrs:{id:"settings",name:e.t("files","Files settings")}},[t("NcCheckboxRadioSwitch",{attrs:{"data-cy-files-settings-setting":"sort_favorites_first",checked:e.userConfig.sort_favorites_first},on:{"update:checked":function(t){return e.setConfig("sort_favorites_first",t)}}},[e._v("\n\t\t\t"+e._s(e.t("files","Sort favorites first"))+"\n\t\t")]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{"data-cy-files-settings-setting":"sort_folders_first",checked:e.userConfig.sort_folders_first},on:{"update:checked":function(t){return e.setConfig("sort_folders_first",t)}}},[e._v("\n\t\t\t"+e._s(e.t("files","Sort folders before files"))+"\n\t\t")]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{"data-cy-files-settings-setting":"show_hidden",checked:e.userConfig.show_hidden},on:{"update:checked":function(t){return e.setConfig("show_hidden",t)}}},[e._v("\n\t\t\t"+e._s(e.t("files","Show hidden files"))+"\n\t\t")]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{"data-cy-files-settings-setting":"crop_image_previews",checked:e.userConfig.crop_image_previews},on:{"update:checked":function(t){return e.setConfig("crop_image_previews",t)}}},[e._v("\n\t\t\t"+e._s(e.t("files","Crop image previews"))+"\n\t\t")]),e._v(" "),e.enableGridView?t("NcCheckboxRadioSwitch",{attrs:{"data-cy-files-settings-setting":"grid_view",checked:e.userConfig.grid_view},on:{"update:checked":function(t){return e.setConfig("grid_view",t)}}},[e._v("\n\t\t\t"+e._s(e.t("files","Enable the grid view"))+"\n\t\t")]):e._e(),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{"data-cy-files-settings-setting":"folder_tree",checked:e.userConfig.folder_tree},on:{"update:checked":function(t){return e.setConfig("folder_tree",t)}}},[e._v("\n\t\t\t"+e._s(e.t("files","Enable folder tree"))+"\n\t\t")])],1),e._v(" "),0!==e.settings.length?t("NcAppSettingsSection",{attrs:{id:"more-settings",name:e.t("files","Additional settings")}},[e._l(e.settings,(function(e){return[t("Setting",{key:e.name,attrs:{el:e.el}})]}))],2):e._e(),e._v(" "),t("NcAppSettingsSection",{attrs:{id:"webdav",name:e.t("files","WebDAV")}},[t("NcInputField",{attrs:{id:"webdav-url-input",label:e.t("files","WebDAV URL"),"show-trailing-button":!0,success:e.webdavUrlCopied,"trailing-button-label":e.t("files","Copy to clipboard"),value:e.webdavUrl,readonly:"readonly",type:"url"},on:{focus:function(e){return e.target.select()},"trailing-button-click":e.copyCloudId},scopedSlots:e._u([{key:"trailing-button-icon",fn:function(){return[t("Clipboard",{attrs:{size:20}})]},proxy:!0}])}),e._v(" "),t("em",[t("a",{staticClass:"setting-link",attrs:{href:e.webdavDocs,target:"_blank",rel:"noreferrer noopener"}},[e._v("\n\t\t\t\t"+e._s(e.t("files","Use this address to access your Files via WebDAV"))+" ↗\n\t\t\t")])]),e._v(" "),t("br"),e._v(" "),t("em",[t("a",{staticClass:"setting-link",attrs:{href:e.appPasswordUrl}},[e._v("\n\t\t\t\t"+e._s(e.t("files","If you have enabled 2FA, you must create and use a new app password by clicking here."))+" ↗\n\t\t\t")])])],1)],1)}),[],!1,null,"23881b2c",null).exports;var ce=i(54914),ue=i(6695);function ge(e){const t=(0,a.bh)(),s=(0,o.IJ)(t.views),i=(0,o.IJ)(t.active);function n(e){i.value=e.detail}function r(){s.value=t.views,(0,o.mu)(s)}return(0,o.sV)((()=>{t.addEventListener("update",r),t.addEventListener("updateActive",n),(0,v.B1)("files:navigation:updated",r)})),(0,o.hi)((()=>{t.removeEventListener("update",r),t.removeEventListener("updateActive",n)})),{currentView:i,views:s}}const fe=(0,L.C)("files","viewConfigs",{}),pe=function(){const e=(0,r.nY)("viewconfig",{state:()=>({viewConfig:fe}),getters:{getConfig:e=>t=>e.viewConfig[t]||{},getConfigs:e=>()=>e.viewConfig},actions:{onUpdate(e,t,s){this.viewConfig[e]||o.Ay.set(this.viewConfig,e,{}),o.Ay.set(this.viewConfig[e],t,s)},async update(e,t,s){F.Ay.put((0,d.Jv)("/apps/files/api/v1/views"),{value:s,view:e,key:t}),(0,v.Ic)("files:viewconfig:updated",{view:e,key:t,value:s})},setSortingBy(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"basename",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"files";this.update(t,"sorting_mode",e),this.update(t,"sorting_direction","asc")},toggleSortingDirection(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"files";const t="asc"===(this.getConfig(e)||{sorting_direction:"asc"}).sorting_direction?"desc":"asc";this.update(e,"sorting_direction",t)}}}),t=e(...arguments);return t._initialized||((0,v.B1)("files:viewconfig:updated",(function(e){let{view:s,key:i,value:n}=e;t.onUpdate(s,i,n)})),t._initialized=!0),t},he=(0,o.pM)({name:"FilesNavigationItem",components:{Fragment:ce.F,NcAppNavigationItem:_.A,NcIconSvgWrapper:ue.A},props:{parent:{type:Object,default:()=>({})},level:{type:Number,default:0},views:{type:Object,default:()=>({})}},setup(){const{currentView:e}=ge();return{currentView:e,viewConfigStore:pe()}},computed:{currentViews(){return this.level>=7?Object.values(this.views).reduce(((e,t)=>[...e,...t]),[]).filter((e=>e.params?.dir.startsWith(this.parent.params?.dir))):this.views[this.parent.id]??[]},style(){return 0===this.level||1===this.level||this.level>7?null:{"padding-left":"16px"}}},methods:{hasChildViews(e){return!(this.level>=7)&&this.views[e.id]?.length>0},useExactRouteMatching(e){return this.hasChildViews(e)},generateToNavigation(e){if(e.params){const{dir:t}=e.params;return{name:"filelist",params:{...e.params},query:{dir:t}}}return{name:"filelist",params:{view:e.id}}},isExpanded(e){return"boolean"==typeof this.viewConfigStore.getConfig(e.id)?.expanded?!0===this.viewConfigStore.getConfig(e.id).expanded:!0===e.expanded},async onOpen(e,t){const s=this.isExpanded(t);t.expanded=!s,this.viewConfigStore.update(t.id,"expanded",!s),e&&t.loadChildViews&&await t.loadChildViews(t)},filterView:(e,t)=>Object.fromEntries(Object.entries(e).filter((e=>{let[s,i]=e;return s!==t})))}}),we=(0,b.A)(he,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("Fragment",e._l(e.currentViews,(function(s){return t("NcAppNavigationItem",{key:s.id,staticClass:"files-navigation__item",style:e.style,attrs:{"allow-collapse":"",loading:s.loading,"data-cy-files-navigation-item":s.id,exact:e.useExactRouteMatching(s),icon:s.iconClass,name:s.name,open:e.isExpanded(s),pinned:s.sticky,to:e.generateToNavigation(s)},on:{"update:open":t=>e.onOpen(t,s)},scopedSlots:e._u([s.icon?{key:"icon",fn:function(){return[t("NcIconSvgWrapper",{attrs:{svg:s.icon}})]},proxy:!0}:null],null,!0)},[e._v(" "),s.loadChildViews&&!s.loaded?t("li",{staticStyle:{display:"none"}}):e._e(),e._v(" "),e.hasChildViews(s)?t("FilesNavigationItem",{attrs:{parent:s,level:e.level+1,views:e.filterView(e.views,e.parent.id)}}):e._e()],1)})),1)}),[],!1,null,null,null).exports;var ve=i(59271);class Ae extends a.L3{constructor(){super("files:filename",5),function(e,t,s){(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var s=t.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s}(this,"searchQuery",""),(0,v.B1)("files:navigation:changed",(()=>this.updateQuery("")))}filter(e){const t=this.searchQuery.toLocaleLowerCase().split(" ").filter(Boolean);return e.filter((e=>{const s=e.displayname.toLocaleLowerCase();return t.every((e=>s.includes(e)))}))}updateQuery(e){if((e=(e||"").trim())!==this.searchQuery){this.searchQuery=e,this.filterUpdated();const t=[];""!==e&&t.push({text:e,onclick:()=>{this.updateQuery("")}}),this.updateChips(t),this.dispatchTypedEvent("update:query",new CustomEvent("update:query",{detail:e}))}}}const Ce=(0,r.nY)("filters",{state:()=>({chips:{},filters:[],filtersChanged:!1}),getters:{activeChips:e=>Object.values(e.chips).flat(),sortedFilters:e=>e.filters.sort(((e,t)=>e.order-t.order)),filtersWithUI(){return this.sortedFilters.filter((e=>"mount"in e))}},actions:{addFilter(e){e.addEventListener("update:chips",this.onFilterUpdateChips),e.addEventListener("update:filter",this.onFilterUpdate),this.filters.push(e),P.debug("New file list filter registered",{id:e.id})},removeFilter(e){const t=this.filters.findIndex((t=>{let{id:s}=t;return s===e}));if(t>-1){const[s]=this.filters.splice(t,1);s.removeEventListener("update:chips",this.onFilterUpdateChips),s.removeEventListener("update:filter",this.onFilterUpdate),P.debug("Files list filter unregistered",{id:e})}},onFilterUpdate(){this.filtersChanged=!0},onFilterUpdateChips(e){const t=e.target.id;this.chips={...this.chips,[t]:[...e.detail]},P.debug("File list filter chips updated",{filter:t,chips:e.detail})},init(){(0,v.B1)("files:filter:added",this.addFilter),(0,v.B1)("files:filter:removed",this.removeFilter);for(const e of(0,a.sR)())this.addFilter(e)}}}),be=Intl.Collator([(0,A.Z0)(),(0,A.lO)()],{numeric:!0,usage:"sort"}),ye=(0,o.pM)({name:"Navigation",components:{IconCog:y,FilesNavigationItem:we,NavigationQuota:J,NcAppNavigation:x.A,NcAppNavigationItem:_.A,NcAppNavigationList:k.A,NcAppNavigationSearch:T.N,SettingsModal:me},setup(){const e=Ce(),t=pe(),{currentView:s,views:i}=ge(),{searchQuery:n}=function(){const e=(0,o.KR)(""),t=new Ae;function s(t){"update:query"===t.type&&(e.value=t.detail,t.stopPropagation())}return(0,o.sV)((()=>{t.addEventListener("update:query",s),(0,a.cZ)(t)})),(0,o.hi)((()=>{t.removeEventListener("update:query",s),(0,a.Dw)(t.id)})),(0,ve.o3)(e,(()=>{t.updateQuery(e.value)}),{throttle:800}),{searchQuery:e}}();return{currentView:s,searchQuery:n,t:A.Tl,views:i,filtersStore:e,viewConfigStore:t}},data:()=>({settingsOpened:!1}),computed:{currentViewId(){return this.$route?.params?.view||"files"},viewMap(){return this.views.reduce(((e,t)=>(e[t.parent]=[...e[t.parent]||[],t],e[t.parent].sort(((e,t)=>"number"==typeof e.order||"number"==typeof t.order?(e.order??0)-(t.order??0):be.compare(e.name,t.name))),e)),{})}},watch:{currentViewId(e,t){if(this.currentViewId!==this.currentView?.id){const s=this.views.find((e=>{let{id:t}=e;return t===this.currentViewId}));this.showView(s),P.debug(`Navigation changed from ${t} to ${e}`,{to:s})}}},created(){(0,v.B1)("files:folder-tree:initialized",this.loadExpandedViews),(0,v.B1)("files:folder-tree:expanded",this.loadExpandedViews)},beforeMount(){const e=this.views.find((e=>{let{id:t}=e;return t===this.currentViewId}));this.showView(e),P.debug("Navigation mounted. Showing requested view",{view:e})},methods:{async loadExpandedViews(){const e=this.viewConfigStore.getConfigs(),t=Object.entries(e).filter((e=>{let[t,s]=e;return!0===s.expanded})).map((e=>{let[t,s]=e;return this.$navigation.views.find((e=>e.id===t))})).filter(Boolean).filter((e=>e.loadChildViews&&!e.loaded));for(const e of t)await e.loadChildViews(e)},showView(e){window.OCA?.Files?.Sidebar?.close?.(),this.$navigation.setActive(e),(0,v.Ic)("files:navigation:changed",e)},openSettings(){this.settingsOpened=!0},onSettingsClose(){this.settingsOpened=!1}}});var xe=i(16912),_e={};_e.styleTagTransform=Y(),_e.setAttributes=W(),_e.insert=V().bind(null,"head"),_e.domAPI=j(),_e.insertStyleElement=q(),O()(xe.A,_e),xe.A&&xe.A.locals&&xe.A.locals;const ke=(0,b.A)(ye,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("NcAppNavigation",{staticClass:"files-navigation",attrs:{"data-cy-files-navigation":"","aria-label":e.t("files","Files")},scopedSlots:e._u([{key:"search",fn:function(){return[t("NcAppNavigationSearch",{attrs:{label:e.t("files","Filter filenames…")},model:{value:e.searchQuery,callback:function(t){e.searchQuery=t},expression:"searchQuery"}})]},proxy:!0},{key:"default",fn:function(){return[t("NcAppNavigationList",{staticClass:"files-navigation__list",attrs:{"aria-label":e.t("files","Views")}},[t("FilesNavigationItem",{attrs:{views:e.viewMap}})],1),e._v(" "),t("SettingsModal",{attrs:{open:e.settingsOpened,"data-cy-files-navigation-settings":""},on:{close:e.onSettingsClose}})]},proxy:!0},{key:"footer",fn:function(){return[t("ul",{staticClass:"app-navigation-entry__settings"},[t("NavigationQuota"),e._v(" "),t("NcAppNavigationItem",{attrs:{name:e.t("files","Files settings"),"data-cy-files-navigation-settings-button":""},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.openSettings.apply(null,arguments)}}},[t("IconCog",{attrs:{slot:"icon",size:20},slot:"icon"})],1)],1)]},proxy:!0}])})}),[],!1,null,"008142f0",null).exports;var Te=i(87485),Se=i(43627),Le=i(77905),Ne=i(24351),Fe=i(57578);const Ee={name:"ReloadIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ue=(0,b.A)(Ee,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon reload-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M2 12C2 16.97 6.03 21 11 21C13.39 21 15.68 20.06 17.4 18.4L15.9 16.9C14.63 18.25 12.86 19 11 19C4.76 19 1.64 11.46 6.05 7.05C10.46 2.64 18 5.77 18 12H15L19 16H19.1L23 12H20C20 7.03 15.97 3 11 3C6.03 3 2 7.03 2 12Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var Ie=i(36600);const Pe={name:"FormatListBulletedSquareIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Be=(0,b.A)(Pe,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon format-list-bulleted-square-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M3,4H7V8H3V4M9,5V7H21V5H9M3,10H7V14H3V10M9,11V13H21V11H9M3,16H7V20H3V16M9,17V19H21V17H9"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var ze=i(18195),De=i(24764),Oe=i(18503),Re=i(70995),je=i(28326),Me=i(59892);const Ve={name:"AccountPlusIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},$e=(0,b.A)(Ve,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon account-plus-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,We={name:"ViewGridIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},He=(0,b.A)(We,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon view-grid-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M3,11H11V3H3M3,21H11V13H3M13,21H21V13H13M13,3V11H21V3"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var qe=i(49981);const Ge=new a.hY({id:"details",displayName:()=>(0,A.Tl)("files","Open details"),iconSvgInline:()=>qe,enabled:e=>!(0,h.f)()&&1===e.length&&!!e[0]&&!!window?.OCA?.Files?.Sidebar&&((e[0].root?.startsWith("/files/")&&e[0].permissions!==a.aX.NONE)??!1),async exec(e,t,s){try{return window.OCA.Files.Sidebar.setActiveTab("sharing"),await window.OCA.Files.Sidebar.open(e.path),window.OCP.Files.Router.goToRoute(null,{view:t.id,fileid:String(e.fileid)},{...window.OCP.Files.Router.query,dir:s},!0),null}catch(e){return P.error("Error while opening sidebar",{error:e}),!1}},order:-50});let Ye;const Ke=(0,o.KR)(0),Qe=new ResizeObserver((e=>{e[0].contentBoxSize?Ke.value=e[0].contentBoxSize[0].inlineSize:Ke.value=e[0].contentRect.width}));function Je(){const e=document.querySelector("#app-content-vue")??document.body;e!==Ye&&(Ye&&Qe.unobserve(Ye),Qe.observe(e),Ye=e)}function Xe(){return(0,o.sV)(Je),Je(),(0,o.tB)(Ke)}function Ze(){const e=function(){var e=(0,o.nI)().proxy.$root;if(!e._$route){var t=(0,o.uY)(!0).run((function(){return(0,o.Gc)(Object.assign({},e.$router.currentRoute))}));e._$route=t,e.$router.afterEach((function(e){Object.assign(t,e)}))}return e._$route}();return{directory:(0,o.EW)((()=>String(e.query.dir||"/").replace(/^(.+)\/$/,"$1"))),fileId:(0,o.EW)((()=>{const t=Number.parseInt(e.params.fileid??"0")||null;return Number.isNaN(t)?null:t})),openFile:(0,o.EW)((()=>"openfile"in e.query&&("string"!=typeof e.query.openfile||"false"!==e.query.openfile.toLocaleLowerCase())))}}const et=(0,a.H4)(),tt=async e=>{const t=(0,a.VL)(),s=await et.stat(`${a.lJ}${e.path}`,{details:!0,data:t});return(0,a.Al)(s.data)};var st=i(71225);const it=function(){const e=nt(...arguments),t=(0,r.nY)("paths",{state:()=>({paths:{}}),getters:{getPath:e=>(t,s)=>{if(e.paths[t])return e.paths[t][s]}},actions:{addPath(e){this.paths[e.service]||o.Ay.set(this.paths,e.service,{}),o.Ay.set(this.paths[e.service],e.path,e.source)},deletePath(e,t){this.paths[e]&&o.Ay.delete(this.paths[e],t)},onCreatedNode(e){const t=(0,a.bh)()?.active?.id||"files";e.fileid?(e.type===a.pt.Folder&&this.addPath({service:t,path:e.path,source:e.source}),this.addNodeToParentChildren(e)):P.error("Node has no fileid",{node:e})},onDeletedNode(e){const t=(0,a.bh)()?.active?.id||"files";e.type===a.pt.Folder&&this.deletePath(t,e.path),this.deleteNodeFromParentChildren(e)},onMovedNode(e){let{node:t,oldSource:s}=e;const i=(0,a.bh)()?.active?.id||"files";if(t.type===a.pt.Folder){const e=Object.entries(this.paths[i]).find((e=>{let[,t]=e;return t===s}));e?.[0]&&this.deletePath(i,e[0]),this.addPath({service:i,path:t.path,source:t.source})}const n=new a.ZH({source:s,owner:t.owner,mime:t.mime});this.deleteNodeFromParentChildren(n),this.addNodeToParentChildren(t)},deleteNodeFromParentChildren(t){const s=(0,a.bh)()?.active?.id||"files",i=(0,st.pD)(t.source),n="/"===t.dirname?e.getRoot(s):e.getNode(i);if(n){const e=new Set(n._children??[]);return e.delete(t.source),o.Ay.set(n,"_children",[...e.values()]),void P.debug("Children updated",{parent:n,node:t,children:n._children})}P.debug("Parent path does not exists, skipping children update",{node:t})},addNodeToParentChildren(t){const s=(0,a.bh)()?.active?.id||"files",i=(0,st.pD)(t.source),n="/"===t.dirname?e.getRoot(s):e.getNode(i);if(n){const e=new Set(n._children??[]);return e.add(t.source),o.Ay.set(n,"_children",[...e.values()]),void P.debug("Children updated",{parent:n,node:t,children:n._children})}P.debug("Parent path does not exists, skipping children update",{node:t})}}})(...arguments);return t._initialized||((0,v.B1)("files:node:created",t.onCreatedNode),(0,v.B1)("files:node:deleted",t.onDeletedNode),(0,v.B1)("files:node:moved",t.onMovedNode),t._initialized=!0),t},nt=function(){const e=(0,r.nY)("files",{state:()=>({files:{},roots:{}}),getters:{getNode:e=>t=>e.files[t],getNodes:e=>t=>t.map((t=>e.files[t])).filter(Boolean),getNodesById:e=>t=>Object.values(e.files).filter((e=>e.fileid===t)),getRoot:e=>t=>e.roots[t]},actions:{getNodesByPath(e,t){const s=it();let i;if(t&&"/"!==t){const n=s.getPath(e,t);n&&(i=this.getNode(n))}else i=this.getRoot(e);return(i?._children??[]).map((e=>this.getNode(e))).filter(Boolean)},updateNodes(e){const t=e.reduce(((e,t)=>t.fileid?(e[t.source]=t,e):(P.error("Trying to update/set a node without fileid",{node:t}),e)),{});o.Ay.set(this,"files",{...this.files,...t})},deleteNodes(e){e.forEach((e=>{e.source&&o.Ay.delete(this.files,e.source)}))},setRoot(e){let{service:t,root:s}=e;o.Ay.set(this.roots,t,s)},onDeletedNode(e){this.deleteNodes([e])},onCreatedNode(e){this.updateNodes([e])},onMovedNode(e){let{node:t,oldSource:s}=e;t.fileid?(o.Ay.delete(this.files,s),this.updateNodes([t])):P.error("Trying to update/set a node without fileid",{node:t})},async onUpdatedNode(e){if(!e.fileid)return void P.error("Trying to update/set a node without fileid",{node:e});const t=this.getNodesById(e.fileid);if(t.length>1)return await Promise.all(t.map(tt)).then(this.updateNodes),void P.debug(t.length+" nodes updated in store",{fileid:e.fileid});e.source!==t[0].source?tt(e).then((e=>this.updateNodes([e]))):this.updateNodes([e])}}})(...arguments);return e._initialized||((0,v.B1)("files:node:created",e.onCreatedNode),(0,v.B1)("files:node:deleted",e.onDeletedNode),(0,v.B1)("files:node:updated",e.onUpdatedNode),(0,v.B1)("files:node:moved",e.onMovedNode),e._initialized=!0),e},at=(0,r.nY)("selection",{state:()=>({selected:[],lastSelection:[],lastSelectedIndex:null}),actions:{set(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];o.Ay.set(this,"selected",[...new Set(e)])},setLastIndex(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;o.Ay.set(this,"lastSelection",e?this.selected:[]),o.Ay.set(this,"lastSelectedIndex",e)},reset(){o.Ay.set(this,"selected",[]),o.Ay.set(this,"lastSelection",[]),o.Ay.set(this,"lastSelectedIndex",null)}}});let rt;const ot=function(){return rt=(0,Ne.g)(),(0,r.nY)("uploader",{state:()=>({queue:rt.queue})})(...arguments)};var lt=i(65714),dt=i(93191);class mt extends File{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];super([],e,{type:"httpd/unix-directory"}),function(e,t,s){(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var s=t.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s}(this,"_contents",void 0),this._contents=t}set contents(e){this._contents=e}get contents(){return this._contents}get size(){return this._computeDirectorySize(this)}get lastModified(){return 0===this._contents.length?Date.now():this._computeDirectoryMtime(this)}_computeDirectoryMtime(e){return e.contents.reduce(((e,t)=>t.lastModified>e?t.lastModified:e),0)}_computeDirectorySize(e){return e.contents.reduce(((e,t)=>e+t.size),0)}}const ct=async e=>{if(e.isFile)return new Promise(((t,s)=>{e.file(t,s)}));P.debug("Handling recursive file tree",{entry:e.name});const t=e,s=await ut(t),i=(await Promise.all(s.map(ct))).flat();return new mt(t.name,i)},ut=e=>{const t=e.createReader();return new Promise(((e,s)=>{const i=[],n=()=>{t.readEntries((t=>{t.length?(i.push(...t),n()):e(i)}),(e=>{s(e)}))};n()}))},gt=async e=>{const t=(0,a.H4)();if(!await t.exists(e)){P.debug("Directory does not exist, creating it",{absolutePath:e}),await t.createDirectory(e,{recursive:!0});const s=await t.stat(e,{details:!0,data:(0,a.VL)()});(0,v.Ic)("files:node:created",(0,a.Al)(s.data))}},ft=async(e,t,s)=>{try{const i=e.filter((e=>s.find((t=>t.basename===(e instanceof File?e.name:e.basename))))).filter(Boolean),n=e.filter((e=>!i.includes(e))),{selected:a,renamed:r}=await(0,Ne.o)(t.path,i,s);return P.debug("Conflict resolution",{uploads:n,selected:a,renamed:r}),0===a.length&&0===r.length?((0,N.cf)((0,A.Tl)("files","Conflicts resolution skipped")),P.info("User skipped the conflict resolution"),[]):[...n,...a,...r]}catch(e){console.error(e),(0,N.Qg)((0,A.Tl)("files","Upload cancelled")),P.error("User cancelled the upload")}return[]};var pt=i(36882),ht=i(39285),wt=i(49264);const vt=(0,L.C)("files_sharing","sharePermissions",a.aX.NONE);let At;const Ct=()=>(At||(At=new wt.A({concurrency:5})),At);var bt;!function(e){e.MOVE="Move",e.COPY="Copy",e.MOVE_OR_COPY="move-or-copy"}(bt||(bt={}));const yt=e=>{const t=e.reduce(((e,t)=>Math.min(e,t.permissions)),a.aX.ALL);return Boolean(t&a.aX.DELETE)},xt=e=>!!(e=>e.every((e=>!JSON.parse(e.attributes?.["share-attributes"]??"[]").some((e=>"permissions"===e.scope&&!1===e.value&&"download"===e.key)))))(e)&&!e.some((e=>e.permissions===a.aX.NONE))&&(!(0,h.f)()||Boolean(vt&a.aX.CREATE));var _t=i(36117);const kt=e=>(0,a.Al)(e),Tt=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/";e=(0,Se.join)(a.lJ,e);const t=new AbortController,s=(0,a.VL)();return new _t.CancelablePromise((async(i,n,a)=>{a((()=>t.abort()));try{const n=await et.getDirectoryContents(e,{details:!0,data:s,includeSelf:!0,signal:t.signal}),a=n.data[0],r=n.data.slice(1);if(a.filename!==e&&`${a.filename}/`!==e)throw P.debug(`Exepected "${e}" but got filename "${a.filename}" instead.`),new Error("Root node does not match requested path");i({folder:kt(a),contents:r.map((e=>{try{return kt(e)}catch(t){return P.error(`Invalid node detected '${e.basename}'`,{error:t}),null}})).filter(Boolean)})}catch(e){n(e)}}))},St=e=>yt(e)?xt(e)?bt.MOVE_OR_COPY:bt.MOVE:bt.COPY,Lt=async function(e,t,s){let i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!t)return;if(t.type!==a.pt.Folder)throw new Error((0,A.Tl)("files","Destination is not a folder"));if(s===bt.MOVE&&e.dirname===t.path)throw new Error((0,A.Tl)("files","This file/folder is already in that directory"));if(`${t.path}/`.startsWith(`${e.path}/`))throw new Error((0,A.Tl)("files","You cannot move a file/folder onto itself or into a subfolder of itself"));o.Ay.set(e,"status",a.zI.LOADING);const n=function(e,t,s){const i=e===bt.MOVE?(0,A.Tl)("files",'Moving "{source}" to "{destination}" …',{source:t,destination:s}):(0,A.Tl)("files",'Copying "{source}" to "{destination}" …',{source:t,destination:s});let n;return n=(0,N.cf)(`<span class="icon icon-loading-small toast-loading-icon"></span> ${i}`,{isHTML:!0,timeout:N.DH,onRemove:()=>{n?.hideToast(),n=void 0}}),()=>n&&n.hideToast()}(s,e.basename,t.path),r=Ct();return await r.add((async()=>{const r=e=>1===e?(0,A.Tl)("files","(copy)"):(0,A.Tl)("files","(copy %n)",void 0,e);try{const n=(0,a.H4)(),o=(0,Se.join)(a.lJ,e.path),l=(0,Se.join)(a.lJ,t.path);if(s===bt.COPY){let s=e.basename;if(!i){const t=await n.getDirectoryContents(l);s=(0,a.E6)(e.basename,t.map((e=>e.basename)),{suffix:r,ignoreFileExtension:e.type===a.pt.Folder})}if(await n.copyFile(o,(0,Se.join)(l,s)),e.dirname===t.path){const{data:e}=await n.stat((0,Se.join)(l,s),{details:!0,data:(0,a.VL)()});(0,v.Ic)("files:node:created",(0,a.Al)(e))}}else{if(!i){const s=await Tt(t.path);if((0,Ne.h)([e],s.contents))try{const{selected:i,renamed:n}=await(0,Ne.o)(t.path,[e],s.contents);if(!i.length&&!n.length)return}catch(e){return void(0,N.Qg)((0,A.Tl)("files","Move cancelled"))}}await n.moveFile(o,(0,Se.join)(l,e.basename)),(0,v.Ic)("files:node:deleted",e)}}catch(e){if((0,F.F0)(e)){if(412===e.response?.status)throw new Error((0,A.Tl)("files","A file or folder with that name already exists in this folder"));if(423===e.response?.status)throw new Error((0,A.Tl)("files","The files are locked"));if(404===e.response?.status)throw new Error((0,A.Tl)("files","The file does not exist anymore"));if(e.message)throw new Error(e.message)}throw P.debug(e),new Error}finally{o.Ay.set(e,"status",""),n()}}))};async function Nt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"/",s=arguments.length>2?arguments[2]:void 0;const{resolve:i,reject:n,promise:r}=Promise.withResolvers(),o=s.map((e=>e.fileid)).filter(Boolean);return(0,N.a1)((0,A.Tl)("files","Choose destination")).allowDirectories(!0).setFilter((e=>!o.includes(e.fileid))).setMimeTypeFilter([]).setMultiSelect(!1).startAt(t).setButtonFactory(((t,n)=>{const r=[],o=(0,Se.basename)(n),l=s.map((e=>e.dirname)),d=s.map((e=>e.path));return e!==bt.COPY&&e!==bt.MOVE_OR_COPY||r.push({label:o?(0,A.Tl)("files","Copy to {target}",{target:o},void 0,{escape:!1,sanitize:!1}):(0,A.Tl)("files","Copy"),type:"primary",icon:pt,disabled:t.some((e=>!(e.permissions&a.aX.CREATE))),async callback(e){i({destination:e[0],action:bt.COPY})}}),l.includes(n)||d.includes(n)||e!==bt.MOVE&&e!==bt.MOVE_OR_COPY||r.push({label:o?(0,A.Tl)("files","Move to {target}",{target:o},void 0,{escape:!1,sanitize:!1}):(0,A.Tl)("files","Move"),type:e===bt.MOVE?"primary":"secondary",icon:ht,async callback(e){i({destination:e[0],action:bt.MOVE})}}),r})).build().pick().catch((e=>{P.debug(e),e instanceof N.vT?i(!1):n(new Error((0,A.Tl)("files","Move or copy operation failed")))})),r}new a.hY({id:"move-copy",displayName(e){switch(St(e)){case bt.MOVE:return(0,A.Tl)("files","Move");case bt.COPY:return(0,A.Tl)("files","Copy");case bt.MOVE_OR_COPY:return(0,A.Tl)("files","Move or copy")}},iconSvgInline:()=>ht,enabled:(e,t)=>"public-file-share"!==t.id&&!!e.every((e=>e.root?.startsWith("/files/")))&&e.length>0&&(yt(e)||xt(e)),async exec(e,t,s){const i=St([e]);let n;try{n=await Nt(i,s,[e])}catch(e){return P.error(e),!1}if(!1===n)return(0,N.cf)((0,A.Tl)("files",'Cancelled move or copy of "{filename}".',{filename:e.displayname})),null;try{return await Lt(e,n.destination,n.action),!0}catch(e){return!!(e instanceof Error&&e.message)&&((0,N.Qg)(e.message),null)}},async execBatch(e,t,s){const i=St(e),n=await Nt(i,s,e);if(!1===n)return(0,N.cf)(1===e.length?(0,A.Tl)("files",'Cancelled move or copy of "{filename}".',{filename:e[0].displayname}):(0,A.Tl)("files","Cancelled move or copy operation")),e.map((()=>null));const a=e.map((async e=>{try{return await Lt(e,n.destination,n.action),!0}catch(t){return P.error(`Failed to ${n.action} node`,{node:e,error:t}),!1}}));return await Promise.all(a)},order:15});const Ft=async e=>{const t=e.filter((e=>"file"===e.kind||(P.debug("Skipping dropped item",{kind:e.kind,type:e.type}),!1))).map((e=>e?.getAsEntry?.()??e?.webkitGetAsEntry?.()??e));let s=!1;const i=new mt("root");for(const e of t)if(e instanceof DataTransferItem){P.warn("Could not get FilesystemEntry of item, falling back to file");const t=e.getAsFile();if(null===t){P.warn("Could not process DataTransferItem",{type:e.type,kind:e.kind}),(0,N.Qg)((0,A.Tl)("files","One of the dropped files could not be processed"));continue}if("httpd/unix-directory"===t.type||!t.type){s||(P.warn("Browser does not support Filesystem API. Directories will not be uploaded"),(0,N.I9)((0,A.Tl)("files","Your browser does not support the Filesystem API. Directories will not be uploaded")),s=!0);continue}i.contents.push(t)}else try{i.contents.push(await ct(e))}catch(e){P.error("Error while traversing file tree",{error:e})}return i},Et=async(e,t,s)=>{const i=(0,Ne.g)();if(await(0,Ne.h)(e.contents,s)&&(e.contents=await ft(e.contents,t,s)),0===e.contents.length)return P.info("No files to upload",{root:e}),(0,N.cf)((0,A.Tl)("files","No files to upload")),[];P.debug(`Uploading files to ${t.path}`,{root:e,contents:e.contents});const n=[],r=async(e,s)=>{for(const o of e.contents){const e=(0,Se.join)(s,o.name);if(o instanceof mt){const s=(0,st.HS)(a.lJ,t.path,e);try{console.debug("Processing directory",{relativePath:e}),await gt(s),await r(o,e)}catch(e){(0,N.Qg)((0,A.Tl)("files","Unable to create the directory {directory}",{directory:o.name})),P.error("",{error:e,absolutePath:s,directory:o})}}else P.debug("Uploading file to "+(0,Se.join)(t.path,e),{file:o}),n.push(i.upload(e,o,t.source))}};i.pause(),await r(e,"/"),i.start();const o=(await Promise.allSettled(n)).filter((e=>"rejected"===e.status));return o.length>0?(P.error("Error while uploading files",{errors:o}),(0,N.Qg)((0,A.Tl)("files","Some files could not be uploaded")),[]):(P.debug("Files uploaded successfully"),(0,N.Te)((0,A.Tl)("files","Files uploaded successfully")),Promise.all(n))},Ut=async function(e,t,s){let i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const n=[];if(await(0,Ne.h)(e,s)&&(e=await ft(e,t,s)),0===e.length)return P.info("No files to process",{nodes:e}),void(0,N.cf)((0,A.Tl)("files","No files to process"));for(const s of e)o.Ay.set(s,"status",a.zI.LOADING),n.push(Lt(s,t,i?bt.COPY:bt.MOVE,!0));const r=await Promise.allSettled(n);e.forEach((e=>o.Ay.set(e,"status",void 0)));const l=r.filter((e=>"rejected"===e.status));if(l.length>0)return P.error("Error while copying or moving files",{errors:l}),void(0,N.Qg)(i?(0,A.Tl)("files","Some files could not be copied"):(0,A.Tl)("files","Some files could not be moved"));P.debug("Files copy/move successful"),(0,N.Te)(i?(0,A.Tl)("files","Files copied successfully"):(0,A.Tl)("files","Files moved successfully"))},It=(0,r.nY)("dragging",{state:()=>({dragging:[]}),actions:{set(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];o.Ay.set(this,"dragging",e)},reset(){o.Ay.set(this,"dragging",[])}}}),Pt=(0,o.pM)({name:"BreadCrumbs",components:{NcBreadcrumbs:dt.N,NcBreadcrumb:lt.N,NcIconSvgWrapper:ue.A},props:{path:{type:String,default:"/"}},setup(){const e=It(),t=nt(),s=it(),i=at(),n=ot(),a=Xe(),{currentView:r,views:o}=ge();return{draggingStore:e,filesStore:t,pathsStore:s,selectionStore:i,uploaderStore:n,currentView:r,fileListWidth:a,views:o}},computed:{dirs(){var e;return["/",...this.path.split("/").filter(Boolean).map((e="/",t=>e+=`${t}/`)).map((e=>e.replace(/^(.+)\/$/,"$1")))]},sections(){return this.dirs.map(((e,t)=>{const s=this.getFileSourceFromPath(e),i=s?this.getNodeFromSource(s):void 0;return{dir:e,exact:!0,name:this.getDirDisplayName(e),to:this.getTo(e,i),disableDrop:t===this.dirs.length-1}}))},isUploadInProgress(){return 0!==this.uploaderStore.queue.length},wrapUploadProgressBar(){return this.isUploadInProgress&&this.fileListWidth<512},viewIcon(){return this.currentView?.icon??'<svg xmlns="http://www.w3.org/2000/svg" id="mdi-home" viewBox="0 0 24 24"><path d="M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z" /></svg>'},selectedFiles(){return this.selectionStore.selected},draggingFiles(){return this.draggingStore.dragging}},methods:{getNodeFromSource(e){return this.filesStore.getNode(e)},getFileSourceFromPath(e){return(this.currentView&&this.pathsStore.getPath(this.currentView.id,e))??null},getDirDisplayName(e){if("/"===e)return this.$navigation?.active?.name||(0,A.Tl)("files","Home");const t=this.getFileSourceFromPath(e),s=t?this.getNodeFromSource(t):void 0;return s?.displayname||(0,Se.basename)(e)},getTo(e,t){if("/"===e)return{...this.$route,params:{view:this.currentView?.id},query:{}};if(void 0===t){const t=this.views.find((t=>t.params?.dir===e));return{...this.$route,params:{fileid:t?.params?.fileid??""},query:{dir:e}}}return{...this.$route,params:{fileid:String(t.fileid)},query:{dir:t.path}}},onClick(e){e?.query?.dir===this.$route.query.dir&&this.$emit("reload")},onDragOver(e,t){e.dataTransfer&&(t!==this.dirs[this.dirs.length-1]?e.ctrlKey?e.dataTransfer.dropEffect="copy":e.dataTransfer.dropEffect="move":e.dataTransfer.dropEffect="none")},async onDrop(e,t){if(!this.draggingFiles&&!e.dataTransfer?.items?.length)return;e.preventDefault();const s=this.draggingFiles,i=[...e.dataTransfer?.items||[]],n=await Ft(i),r=await(this.currentView?.getContents(t)),o=r?.folder;if(!o)return void(0,N.Qg)(this.t("files","Target folder does not exist any more"));const l=!!(o.permissions&a.aX.CREATE),d=e.ctrlKey;if(!l||0!==e.button)return;if(P.debug("Dropped",{event:e,folder:o,selection:s,fileTree:n}),n.contents.length>0)return void await Et(n,o,r.contents);const m=s.map((e=>this.filesStore.getNode(e)));await Ut(m,o,r.contents,d),s.some((e=>this.selectedFiles.includes(e)))&&(P.debug("Dropped selection, resetting select store..."),this.selectionStore.reset())},titleForSection(e,t){return t?.to?.query?.dir===this.$route.query.dir?(0,A.Tl)("files","Reload current directory"):0===e?(0,A.Tl)("files",'Go to the "{dir}" directory',t):null},ariaForSection(e){return e?.to?.query?.dir===this.$route.query.dir?(0,A.Tl)("files","Reload current directory"):null},t:A.Tl}});var Bt=i(18407),zt={};zt.styleTagTransform=Y(),zt.setAttributes=W(),zt.insert=V().bind(null,"head"),zt.domAPI=j(),zt.insertStyleElement=q(),O()(Bt.A,zt),Bt.A&&Bt.A.locals&&Bt.A.locals;const Dt=(0,b.A)(Pt,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("NcBreadcrumbs",{staticClass:"files-list__breadcrumbs",class:{"files-list__breadcrumbs--with-progress":e.wrapUploadProgressBar},attrs:{"data-cy-files-content-breadcrumbs":"","aria-label":e.t("files","Current directory path")},scopedSlots:e._u([{key:"actions",fn:function(){return[e._t("actions")]},proxy:!0}],null,!0)},e._l(e.sections,(function(s,i){return t("NcBreadcrumb",e._b({key:s.dir,attrs:{dir:"auto",to:s.to,"force-icon-text":0===i&&e.fileListWidth>=486,title:e.titleForSection(i,s),"aria-description":e.ariaForSection(s)},on:{drop:function(t){return e.onDrop(t,s.dir)}},nativeOn:{click:function(t){return e.onClick(s.to)},dragover:function(t){return e.onDragOver(t,s.dir)}},scopedSlots:e._u([0===i?{key:"icon",fn:function(){return[t("NcIconSvgWrapper",{attrs:{size:20,svg:e.viewIcon}})]},proxy:!0}:null],null,!0)},"NcBreadcrumb",s,!1))})),1)}),[],!1,null,"61601fd4",null).exports,Ot=e=>{const t=e.filter((e=>e.type===a.pt.File)).length,s=e.filter((e=>e.type===a.pt.Folder)).length;return 0===t?(0,A.zw)("files","{folderCount} folder","{folderCount} folders",s,{folderCount:s}):0===s?(0,A.zw)("files","{fileCount} file","{fileCount} files",t,{fileCount:t}):1===t?(0,A.zw)("files","1 file and {folderCount} folder","1 file and {folderCount} folders",s,{folderCount:s}):1===s?(0,A.zw)("files","{fileCount} file and 1 folder","{fileCount} files and 1 folder",t,{fileCount:t}):(0,A.Tl)("files","{fileCount} files and {folderCount} folders",{fileCount:t,folderCount:s})};var Rt=i(19231);const jt=(0,r.nY)("actionsmenu",{state:()=>({opened:null})});var Mt=i(65659);let Vt=!1;const $t=function(){const e=(0,r.nY)("renaming",{state:()=>({renamingNode:void 0,newName:""}),actions:{async rename(){if(void 0===this.renamingNode)throw new Error("No node is currently being renamed");const e=this.newName.trim?.()||"",t=this.renamingNode.basename,s=this.renamingNode.encodedSource,i=(0,Se.extname)(t),n=(0,Se.extname)(e);if(i!==n){const e=await((e,t)=>{if(Vt)return Promise.resolve(!1);let s;return Vt=!0,s=!e&&t?(0,A.t)("files",'Adding the file extension "{new}" may render the file unreadable.',{new:t}):t?(0,A.t)("files",'Changing the file extension from "{old}" to "{new}" may render the file unreadable.',{old:e,new:t}):(0,A.t)("files",'Removing the file extension "{old}" may render the file unreadable.',{old:e}),new Promise((i=>{const n=(new N.ik).setName((0,A.t)("files","Change file extension")).setText(s).setButtons([{label:(0,A.t)("files","Keep {oldextension}",{oldextension:e}),icon:'<svg xmlns="http://www.w3.org/2000/svg" id="mdi-cancel" viewBox="0 0 24 24"><path d="M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M12 4C10.1 4 8.4 4.6 7.1 5.7L18.3 16.9C19.3 15.5 20 13.8 20 12C20 7.6 16.4 4 12 4M16.9 18.3L5.7 7.1C4.6 8.4 4 10.1 4 12C4 16.4 7.6 20 12 20C13.9 20 15.6 19.4 16.9 18.3Z" /></svg>',type:"secondary",callback:()=>{Vt=!1,i(!1)}},{label:t.length?(0,A.t)("files","Use {newextension}",{newextension:t}):(0,A.t)("files","Remove extension"),icon:Mt,type:"primary",callback:()=>{Vt=!1,i(!0)}}]).build();n.show().then((()=>{n.hide()}))}))})(i,n);if(!e)return!1}if(t===e)return!1;const r=this.renamingNode;o.Ay.set(r,"status",a.zI.LOADING);try{return this.renamingNode.rename(e),P.debug("Moving file to",{destination:this.renamingNode.encodedSource,oldEncodedSource:s}),await(0,F.Ay)({method:"MOVE",url:s,headers:{Destination:this.renamingNode.encodedSource,Overwrite:"F"}}),(0,v.Ic)("files:node:updated",this.renamingNode),(0,v.Ic)("files:node:renamed",this.renamingNode),(0,v.Ic)("files:node:moved",{node:this.renamingNode,oldSource:`${(0,Se.dirname)(this.renamingNode.source)}/${t}`}),this.$reset(),!0}catch(s){if(P.error("Error while renaming file",{error:s}),this.renamingNode.rename(t),(0,F.F0)(s)){if(404===s?.response?.status)throw new Error((0,A.t)("files",'Could not rename "{oldName}", it does not exist any more',{oldName:t}));if(412===s?.response?.status)throw new Error((0,A.t)("files",'The name "{newName}" is already used in the folder "{dir}". Please choose a different name.',{newName:e,dir:(0,Se.basename)(this.renamingNode.dirname)}))}throw new Error((0,A.t)("files",'Could not rename "{oldName}"',{oldName:t}))}finally{o.Ay.set(r,"status",void 0)}}}})(...arguments);return e._initialized||((0,v.B1)("files:node:rename",(function(t){e.renamingNode=t,e.newName=t.basename})),e._initialized=!0),e};var Wt=i(55042);const Ht={name:"FileMultipleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},qt=(0,b.A)(Ht,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon file-multiple-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M15,7H20.5L15,1.5V7M8,0H16L22,6V18A2,2 0 0,1 20,20H8C6.89,20 6,19.1 6,18V2A2,2 0 0,1 8,0M4,4V22H20V24H4A2,2 0 0,1 2,22V4H4Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var Gt=i(25866);const Yt=o.Ay.extend({name:"DragAndDropPreview",components:{FileMultipleIcon:qt,FolderIcon:Gt.A},data:()=>({nodes:[]}),computed:{isSingleNode(){return 1===this.nodes.length},isSingleFolder(){return this.isSingleNode&&this.nodes[0].type===a.pt.Folder},name(){return this.size?`${this.summary} – ${this.size}`:this.summary},size(){const e=this.nodes.reduce(((e,t)=>e+t.size||0),0),t=parseInt(e,10)||0;return"number"!=typeof t||t<0?null:(0,a.v7)(t,!0)},summary(){if(this.isSingleNode){const e=this.nodes[0];return e.attributes?.displayname||e.basename}return Ot(this.nodes)}},methods:{update(e){this.nodes=e,this.$refs.previewImg.replaceChildren(),e.slice(0,3).forEach((e=>{const t=document.querySelector(`[data-cy-files-list-row-fileid="${e.fileid}"] .files-list__row-icon img`);t&&this.$refs.previewImg.appendChild(t.parentNode.cloneNode(!0))})),this.$nextTick((()=>{this.$emit("loaded",this.$el)}))}}}),Kt=Yt;var Qt=i(20768),Jt={};Jt.styleTagTransform=Y(),Jt.setAttributes=W(),Jt.insert=V().bind(null,"head"),Jt.domAPI=j(),Jt.insertStyleElement=q(),O()(Qt.A,Jt),Qt.A&&Qt.A.locals&&Qt.A.locals;const Xt=(0,b.A)(Kt,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("div",{staticClass:"files-list-drag-image"},[t("span",{staticClass:"files-list-drag-image__icon"},[t("span",{ref:"previewImg"}),e._v(" "),e.isSingleFolder?t("FolderIcon"):t("FileMultipleIcon")],1),e._v(" "),t("span",{staticClass:"files-list-drag-image__name"},[e._v(e._s(e.name))])])}),[],!1,null,null,null).exports,Zt=o.Ay.extend(Xt);let es;o.Ay.directive("onClickOutside",Wt.z0);const ts=(0,a.qK)(),ss=(0,o.pM)({props:{source:{type:[a.vd,a.ZH,a.bP],required:!0},nodes:{type:Array,required:!0},filesListWidth:{type:Number,default:0},isMtimeAvailable:{type:Boolean,default:!1},compact:{type:Boolean,default:!1}},provide(){return{defaultFileAction:(0,o.EW)((()=>this.defaultFileAction)),enabledFileActions:(0,o.EW)((()=>this.enabledFileActions))}},data:()=>({loading:"",dragover:!1,gridMode:!1}),computed:{fileid(){return this.source.fileid??0},uniqueId(){return function(e){let t=0;for(let s=0;s<e.length;s++)t=(t<<5)-t+e.charCodeAt(s)|0;return t>>>0}(this.source.source)},isLoading(){return this.source.status===a.zI.LOADING||""!==this.loading},displayName(){return this.source.displayname||this.source.basename},basename(){return""===this.extension?this.displayName:this.displayName.slice(0,0-this.extension.length)},extension(){return this.source.type===a.pt.Folder?"":(0,Se.extname)(this.displayName)},draggingFiles(){return this.draggingStore.dragging},selectedFiles(){return this.selectionStore.selected},isSelected(){return this.selectedFiles.includes(this.source.source)},isRenaming(){return this.renamingStore.renamingNode===this.source},isRenamingSmallScreen(){return this.isRenaming&&this.filesListWidth<512},isActive(){return String(this.fileid)===String(this.currentFileId)},isFailedSource(){return this.source.status===a.zI.FAILED},canDrag(){if(this.isRenaming)return!1;const e=e=>!!(e?.permissions&a.aX.UPDATE);return this.selectedFiles.length>0?this.selectedFiles.map((e=>this.filesStore.getNode(e))).every(e):e(this.source)},canDrop(){return this.source.type===a.pt.Folder&&!this.draggingFiles.includes(this.source.source)&&!!(this.source.permissions&a.aX.CREATE)},openedMenu:{get(){return this.actionsMenuStore.opened===this.uniqueId.toString()},set(e){this.actionsMenuStore.opened=e?this.uniqueId.toString():null}},mtimeOpacity(){const e=26784e5,t=this.source.mtime?.getTime?.();if(!t)return{};const s=Math.round(Math.min(100,100*(e-(Date.now()-t))/e));return s<0?{}:{color:`color-mix(in srgb, var(--color-main-text) ${s}%, var(--color-text-maxcontrast))`}},enabledFileActions(){return this.source.status===a.zI.FAILED?[]:ts.filter((e=>!e.enabled||e.enabled([this.source],this.currentView))).sort(((e,t)=>(e.order||0)-(t.order||0)))},defaultFileAction(){return this.enabledFileActions.find((e=>void 0!==e.default))}},watch:{source(e,t){e.source!==t.source&&this.resetState()},openedMenu(){!1===this.openedMenu&&window.setTimeout((()=>{if(this.openedMenu)return;const e=document.getElementById("app-content-vue");null!==e&&(e.style.removeProperty("--mouse-pos-x"),e.style.removeProperty("--mouse-pos-y"))}),300)}},beforeDestroy(){this.resetState()},methods:{resetState(){this.loading="",this.$refs?.preview?.reset?.(),this.openedMenu=!1},onRightClick(e){if(this.openedMenu)return;if(this.gridMode){const e=this.$el?.closest("main.app-content");e.style.removeProperty("--mouse-pos-x"),e.style.removeProperty("--mouse-pos-y")}else{const t=this.$el?.closest("main.app-content"),s=t.getBoundingClientRect();t.style.setProperty("--mouse-pos-x",Math.max(0,e.clientX-s.left-200)+"px"),t.style.setProperty("--mouse-pos-y",Math.max(0,e.clientY-s.top)+"px")}const t=this.selectedFiles.length>1;this.actionsMenuStore.opened=this.isSelected&&t?"global":this.uniqueId.toString(),e.preventDefault(),e.stopPropagation()},execDefaultAction(e){if(this.isRenaming)return;if(Boolean(2&e.button)||e.button>4)return;const t=e.ctrlKey||e.metaKey||Boolean(4&e.button);if(t||!this.defaultFileAction){if((0,h.f)()&&!function(e){if(!(e.permissions&a.aX.READ))return!1;if(e.attributes["share-attributes"]){const t=JSON.parse(e.attributes["share-attributes"]||"[]").find((e=>{let{scope:t,key:s}=e;return"permissions"===t&&"download"===s}));if(void 0!==t)return!0===t.value}return!0}(this.source))return;const s=(0,h.f)()?this.source.encodedSource:(0,d.Jv)("/f/{fileId}",{fileId:this.fileid});return e.preventDefault(),e.stopPropagation(),void window.open(s,t?"_self":void 0)}e.preventDefault(),e.stopPropagation(),this.defaultFileAction.exec(this.source,this.currentView,this.currentDir)},openDetailsIfAvailable(e){e.preventDefault(),e.stopPropagation(),Ge?.enabled?.([this.source],this.currentView)&&Ge.exec(this.source,this.currentView,this.currentDir)},onDragOver(e){this.dragover=this.canDrop,this.canDrop?e.ctrlKey?e.dataTransfer.dropEffect="copy":e.dataTransfer.dropEffect="move":e.dataTransfer.dropEffect="none"},onDragLeave(e){const t=e.currentTarget;t?.contains(e.relatedTarget)||(this.dragover=!1)},async onDragStart(e){if(e.stopPropagation(),!this.canDrag||!this.fileid)return e.preventDefault(),void e.stopPropagation();P.debug("Drag started",{event:e}),e.dataTransfer?.clearData?.(),this.renamingStore.$reset(),this.selectedFiles.includes(this.source.source)?this.draggingStore.set(this.selectedFiles):this.draggingStore.set([this.source.source]);const t=this.draggingStore.dragging.map((e=>this.filesStore.getNode(e))),s=await(async e=>new Promise((t=>{es||(es=(new Zt).$mount(),document.body.appendChild(es.$el)),es.update(e),es.$on("loaded",(()=>{t(es.$el),es.$off("loaded")}))})))(t);e.dataTransfer?.setDragImage(s,-10,-10)},onDragEnd(){this.draggingStore.reset(),this.dragover=!1,P.debug("Drag ended")},async onDrop(e){if(!this.draggingFiles&&!e.dataTransfer?.items?.length)return;e.preventDefault(),e.stopPropagation();const t=this.draggingFiles,s=[...e.dataTransfer?.items||[]],i=await Ft(s),n=await(this.currentView?.getContents(this.source.path)),a=n?.folder;if(!a)return void(0,N.Qg)(this.t("files","Target folder does not exist any more"));if(!this.canDrop||e.button)return;const r=e.ctrlKey;if(this.dragover=!1,P.debug("Dropped",{event:e,folder:a,selection:t,fileTree:i}),i.contents.length>0)return void await Et(i,a,n.contents);const o=t.map((e=>this.filesStore.getNode(e)));await Ut(o,a,n.contents,r),t.some((e=>this.selectedFiles.includes(e)))&&(P.debug("Dropped selection, resetting select store..."),this.selectionStore.reset())},t:A.Tl}});var is=i(4604);const ns={name:"CustomElementRender",props:{source:{type:Object,required:!0},currentView:{type:Object,required:!0},render:{type:Function,required:!0}},watch:{source(){this.updateRootElement()},currentView(){this.updateRootElement()}},mounted(){this.updateRootElement()},methods:{async updateRootElement(){const e=await this.render(this.source,this.currentView);e?this.$el.replaceChildren(e):this.$el.replaceChildren()}}},as=(0,b.A)(ns,(function(){return(0,this._self._c)("span")}),[],!1,null,null,null).exports;var rs=i(15502);const os={name:"ArrowLeftIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ls=(0,b.A)(os,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon arrow-left-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,ds=(0,o.pM)({name:"FileEntryActions",components:{ArrowLeftIcon:ls,CustomElementRender:as,NcActionButton:Oe.A,NcActions:De.A,NcActionSeparator:rs.A,NcIconSvgWrapper:ue.A,NcLoadingIcon:Me.A},props:{loading:{type:String,required:!0},opened:{type:Boolean,default:!1},source:{type:Object,required:!0},gridMode:{type:Boolean,default:!1}},setup(){const{currentView:e}=ge(),t=Xe();return{currentView:e,enabledFileActions:(0,o.WQ)("enabledFileActions",[]),filesListWidth:t}},data:()=>({openedSubmenu:null}),computed:{currentDir(){return(this.$route?.query?.dir?.toString()||"/").replace(/^(.+)\/$/,"$1")},isLoading(){return this.source.status===a.zI.LOADING},enabledInlineActions(){return this.filesListWidth<768||this.gridMode?[]:this.enabledFileActions.filter((e=>e?.inline?.(this.source,this.currentView)))},enabledRenderActions(){return this.gridMode?[]:this.enabledFileActions.filter((e=>"function"==typeof e.renderInline))},enabledMenuActions(){if(this.openedSubmenu)return this.enabledInlineActions;const e=[...this.enabledInlineActions,...this.enabledFileActions.filter((e=>e.default!==a.m9.HIDDEN&&"function"!=typeof e.renderInline))].filter(((e,t,s)=>t===s.findIndex((t=>t.id===e.id)))),t=e.filter((e=>!e.parent)).map((e=>e.id));return e.filter((e=>!(e.parent&&t.includes(e.parent))))},enabledSubmenuActions(){return this.enabledFileActions.filter((e=>e.parent)).reduce(((e,t)=>(e[t.parent]||(e[t.parent]=[]),e[t.parent].push(t),e)),{})},openedMenu:{get(){return this.opened},set(e){this.$emit("update:opened",e)}},getBoundariesElement:()=>document.querySelector(".app-content > .files-list"),mountType(){return this.source.attributes["mount-type"]}},methods:{actionDisplayName(e){if((this.gridMode||this.filesListWidth<768&&e.inline)&&"function"==typeof e.title){const t=e.title([this.source],this.currentView);if(t)return t}return e.displayName([this.source],this.currentView)},async onActionClick(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.isLoading||""!==this.loading)return;if(this.enabledSubmenuActions[e.id])return void(this.openedSubmenu=e);const s=e.displayName([this.source],this.currentView);try{this.$emit("update:loading",e.id),this.$set(this.source,"status",a.zI.LOADING);const t=await e.exec(this.source,this.currentView,this.currentDir);if(null==t)return;if(t)return void(0,N.Te)((0,A.Tl)("files",'"{displayName}" action executed successfully',{displayName:s}));(0,N.Qg)((0,A.Tl)("files",'"{displayName}" action failed',{displayName:s}))}catch(t){P.error("Error while executing action",{action:e,e:t}),(0,N.Qg)((0,A.Tl)("files",'"{displayName}" action failed',{displayName:s}))}finally{this.$emit("update:loading",""),this.$set(this.source,"status",void 0),t&&(this.openedSubmenu=null)}},isMenu(e){return this.enabledSubmenuActions[e]?.length>0},async onBackToMenuClick(e){this.openedSubmenu=null,await this.$nextTick(),this.$nextTick((()=>{const t=this.$refs[`action-${e.id}`]?.[0];t&&t.$el.querySelector("button")?.focus()}))},t:A.Tl}}),ms=ds;var cs=i(25851),us={};us.styleTagTransform=Y(),us.setAttributes=W(),us.insert=V().bind(null,"head"),us.domAPI=j(),us.insertStyleElement=q(),O()(cs.A,us),cs.A&&cs.A.locals&&cs.A.locals;var gs=i(93655),fs={};fs.styleTagTransform=Y(),fs.setAttributes=W(),fs.insert=V().bind(null,"head"),fs.domAPI=j(),fs.insertStyleElement=q(),O()(gs.A,fs),gs.A&&gs.A.locals&&gs.A.locals;var ps=(0,b.A)(ms,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("td",{staticClass:"files-list__row-actions",attrs:{"data-cy-files-list-row-actions":""}},[e._l(e.enabledRenderActions,(function(s){return t("CustomElementRender",{key:s.id,staticClass:"files-list__row-action--inline",class:"files-list__row-action-"+s.id,attrs:{"current-view":e.currentView,render:s.renderInline,source:e.source}})})),e._v(" "),t("NcActions",{ref:"actionsMenu",attrs:{"boundaries-element":e.getBoundariesElement,container:e.getBoundariesElement,"force-name":!0,type:"tertiary","force-menu":0===e.enabledInlineActions.length,inline:e.enabledInlineActions.length,open:e.openedMenu},on:{"update:open":function(t){e.openedMenu=t},close:function(t){e.openedSubmenu=null}}},[e._l(e.enabledMenuActions,(function(s){return t("NcActionButton",{key:s.id,ref:`action-${s.id}`,refInFor:!0,class:{[`files-list__row-action-${s.id}`]:!0,"files-list__row-action--menu":e.isMenu(s.id)},attrs:{"close-after-click":!e.isMenu(s.id),"data-cy-files-list-row-action":s.id,"is-menu":e.isMenu(s.id),"aria-label":s.title?.([e.source],e.currentView),title:s.title?.([e.source],e.currentView)},on:{click:function(t){return e.onActionClick(s)}},scopedSlots:e._u([{key:"icon",fn:function(){return[e.loading===s.id?t("NcLoadingIcon",{attrs:{size:18}}):t("NcIconSvgWrapper",{attrs:{svg:s.iconSvgInline([e.source],e.currentView)}})]},proxy:!0}],null,!0)},[e._v("\n\t\t\t"+e._s("shared"===e.mountType&&"sharing-status"===s.id?"":e.actionDisplayName(s))+"\n\t\t")])})),e._v(" "),e.openedSubmenu&&e.enabledSubmenuActions[e.openedSubmenu?.id]?[t("NcActionButton",{staticClass:"files-list__row-action-back",on:{click:function(t){return e.onBackToMenuClick(e.openedSubmenu)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("ArrowLeftIcon")]},proxy:!0}],null,!1,3001860362)},[e._v("\n\t\t\t\t"+e._s(e.actionDisplayName(e.openedSubmenu))+"\n\t\t\t")]),e._v(" "),t("NcActionSeparator"),e._v(" "),e._l(e.enabledSubmenuActions[e.openedSubmenu?.id],(function(s){return t("NcActionButton",{key:s.id,staticClass:"files-list__row-action--submenu",class:`files-list__row-action-${s.id}`,attrs:{"close-after-click":"","data-cy-files-list-row-action":s.id,title:s.title?.([e.source],e.currentView)},on:{click:function(t){return e.onActionClick(s)}},scopedSlots:e._u([{key:"icon",fn:function(){return[e.loading===s.id?t("NcLoadingIcon",{attrs:{size:18}}):t("NcIconSvgWrapper",{attrs:{svg:s.iconSvgInline([e.source],e.currentView)}})]},proxy:!0}],null,!0)},[e._v("\n\t\t\t\t"+e._s(e.actionDisplayName(s))+"\n\t\t\t")])}))]:e._e()],2)],2)}),[],!1,null,"1d682792",null);const hs=ps.exports,ws=(0,o.pM)({name:"FileEntryCheckbox",components:{NcCheckboxRadioSwitch:ee.A,NcLoadingIcon:Me.A},props:{fileid:{type:Number,required:!0},isLoading:{type:Boolean,default:!1},nodes:{type:Array,required:!0},source:{type:Object,required:!0}},setup(){const e=at(),t=function(){const e=(0,r.nY)("keyboard",{state:()=>({altKey:!1,ctrlKey:!1,metaKey:!1,shiftKey:!1}),actions:{onEvent(e){e||(e=window.event),o.Ay.set(this,"altKey",!!e.altKey),o.Ay.set(this,"ctrlKey",!!e.ctrlKey),o.Ay.set(this,"metaKey",!!e.metaKey),o.Ay.set(this,"shiftKey",!!e.shiftKey)}}})(...arguments);return e._initialized||(window.addEventListener("keydown",e.onEvent),window.addEventListener("keyup",e.onEvent),window.addEventListener("mousemove",e.onEvent),e._initialized=!0),e}();return{keyboardStore:t,selectionStore:e}},computed:{selectedFiles(){return this.selectionStore.selected},isSelected(){return this.selectedFiles.includes(this.source.source)},index(){return this.nodes.findIndex((e=>e.source===this.source.source))},isFile(){return this.source.type===a.pt.File},ariaLabel(){return this.isFile?(0,A.Tl)("files",'Toggle selection for file "{displayName}"',{displayName:this.source.basename}):(0,A.Tl)("files",'Toggle selection for folder "{displayName}"',{displayName:this.source.basename})},loadingLabel(){return this.isFile?(0,A.Tl)("files","File is loading"):(0,A.Tl)("files","Folder is loading")}},methods:{onSelectionChange(e){const t=this.index,s=this.selectionStore.lastSelectedIndex;if(this.keyboardStore?.shiftKey&&null!==s){const e=this.selectedFiles.includes(this.source.source),i=Math.min(t,s),n=Math.max(s,t),a=this.selectionStore.lastSelection,r=this.nodes.map((e=>e.source)).slice(i,n+1).filter(Boolean),o=[...a,...r].filter((t=>!e||t!==this.source.source));return P.debug("Shift key pressed, selecting all files in between",{start:i,end:n,filesToSelect:r,isAlreadySelected:e}),void this.selectionStore.set(o)}const i=e?[...this.selectedFiles,this.source.source]:this.selectedFiles.filter((e=>e!==this.source.source));P.debug("Updating selection",{selection:i}),this.selectionStore.set(i),this.selectionStore.setLastIndex(t)},resetSelection(){this.selectionStore.reset()},t:A.Tl}}),vs=(0,b.A)(ws,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("td",{staticClass:"files-list__row-checkbox",on:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:e.resetSelection.apply(null,arguments)}}},[e.isLoading?t("NcLoadingIcon",{attrs:{name:e.loadingLabel}}):t("NcCheckboxRadioSwitch",{attrs:{"aria-label":e.ariaLabel,checked:e.isSelected,"data-cy-files-list-row-checkbox":""},on:{"update:checked":e.onSelectionChange}})],1)}),[],!1,null,null,null).exports;var As=i(82182);function Cs(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(""===e.trim())return(0,A.t)("files","Filename must not be empty.");try{return(0,a.KT)(e),""}catch(e){if(!(e instanceof a.di))throw e;switch(e.reason){case a.nF.Character:return(0,A.t)("files",'"{char}" is not allowed inside a filename.',{char:e.segment},void 0,{escape:t});case a.nF.ReservedName:return(0,A.t)("files",'"{segment}" is a reserved name and not allowed for filenames.',{segment:e.segment},void 0,{escape:!1});case a.nF.Extension:return e.segment.match(/\.[a-z]/i)?(0,A.t)("files",'"{extension}" is not an allowed filetype.',{extension:e.segment},void 0,{escape:!1}):(0,A.t)("files",'Filenames must not end with "{extension}".',{extension:e.segment},void 0,{escape:!1});default:return(0,A.t)("files","Invalid filename.")}}}const bs=(0,o.pM)({name:"FileEntryName",components:{NcTextField:As.A},props:{basename:{type:String,required:!0},extension:{type:String,required:!0},nodes:{type:Array,required:!0},source:{type:Object,required:!0},gridMode:{type:Boolean,default:!1}},setup(){const{currentView:e}=ge(),{directory:t}=Ze(),s=Xe(),i=$t();return{currentView:e,defaultFileAction:(0,o.WQ)("defaultFileAction"),directory:t,filesListWidth:s,renamingStore:i}},computed:{isRenaming(){return this.renamingStore.renamingNode===this.source},isRenamingSmallScreen(){return this.isRenaming&&this.filesListWidth<512},newName:{get(){return this.renamingStore.newName},set(e){this.renamingStore.newName=e}},renameLabel(){return{[a.pt.File]:(0,A.Tl)("files","Filename"),[a.pt.Folder]:(0,A.Tl)("files","Folder name")}[this.source.type]},linkTo(){if(this.source.status===a.zI.FAILED)return{is:"span",params:{title:(0,A.Tl)("files","This node is unavailable")}};if(this.defaultFileAction){const e=this.defaultFileAction.displayName([this.source],this.currentView);return{is:"button",params:{"aria-label":e,title:e,tabindex:"0"}}}return{is:"span"}}},watch:{isRenaming:{immediate:!0,handler(e){e&&this.startRenaming()}},newName(){const e=this.newName.trim?.()||"",t=this.$refs.renameInput?.$el.querySelector("input");if(!t)return;let s=Cs(e);""===s&&this.checkIfNodeExists(e)&&(s=(0,A.Tl)("files","Another entry with the same name already exists.")),this.$nextTick((()=>{this.isRenaming&&(t.setCustomValidity(s),t.reportValidity())}))}},methods:{checkIfNodeExists(e){return this.nodes.find((t=>t.basename===e&&t!==this.source))},startRenaming(){this.$nextTick((()=>{const e=this.$refs.renameInput?.$el.querySelector("input");if(!e)return void P.error("Could not find the rename input");e.focus();const t=this.source.basename.length-(this.source.extension??"").length;e.setSelectionRange(0,t),e.dispatchEvent(new Event("keyup"))}))},stopRenaming(){this.isRenaming&&this.renamingStore.$reset()},async onRename(){const e=this.newName.trim?.()||"";if(!this.$refs.renameForm.checkValidity())return void(0,N.Qg)((0,A.Tl)("files","Invalid filename.")+" "+Cs(e));const t=this.source.basename;try{await this.renamingStore.rename()&&((0,N.Te)((0,A.Tl)("files",'Renamed "{oldName}" to "{newName}"',{oldName:t,newName:e})),this.$nextTick((()=>{const e=this.$refs.basename;e?.focus()})))}catch(e){P.error(e),(0,N.Qg)(e.message),this.startRenaming()}},t:A.Tl}});var ys=i(42342),xs={};xs.styleTagTransform=Y(),xs.setAttributes=W(),xs.insert=V().bind(null,"head"),xs.domAPI=j(),xs.insertStyleElement=q(),O()(ys.A,xs),ys.A&&ys.A.locals&&ys.A.locals;const _s=(0,b.A)(bs,(function(){var e=this,t=e._self._c;return e._self._setupProxy,e.isRenaming?t("form",{directives:[{name:"on-click-outside",rawName:"v-on-click-outside",value:e.onRename,expression:"onRename"}],ref:"renameForm",staticClass:"files-list__row-rename",attrs:{"aria-label":e.t("files","Rename file")},on:{submit:function(t){return t.preventDefault(),t.stopPropagation(),e.onRename.apply(null,arguments)}}},[t("NcTextField",{ref:"renameInput",attrs:{label:e.renameLabel,autofocus:!0,minlength:1,required:!0,value:e.newName,enterkeyhint:"done"},on:{"update:value":function(t){e.newName=t},keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.stopRenaming.apply(null,arguments)}}})],1):t(e.linkTo.is,e._b({ref:"basename",tag:"component",staticClass:"files-list__row-name-link",attrs:{"aria-hidden":e.isRenaming,"data-cy-files-list-row-name-link":""}},"component",e.linkTo.params,!1),[t("span",{staticClass:"files-list__row-name-text",attrs:{dir:"auto"}},[t("span",{staticClass:"files-list__row-name-",domProps:{textContent:e._s(e.basename)}}),e._v(" "),t("span",{staticClass:"files-list__row-name-ext",domProps:{textContent:e._s(e.extension)}})])])}),[],!1,null,"ce4c1580",null).exports;var ks=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","#","$","%","*","+",",","-",".",":",";","=","?","@","[","]","^","_","{","|","}","~"],Ts=e=>{let t=0;for(let s=0;s<e.length;s++){let i=e[s];t=83*t+ks.indexOf(i)}return t},Ss=e=>{let t=e/255;return t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)},Ls=e=>{let t=Math.max(0,Math.min(1,e));return t<=.0031308?Math.trunc(12.92*t*255+.5):Math.trunc(255*(1.055*Math.pow(t,.4166666666666667)-.055)+.5)},Ns=(e,t)=>(e=>e<0?-1:1)(e)*Math.pow(Math.abs(e),t),Fs=class extends Error{constructor(e){super(e),this.name="ValidationError",this.message=e}},Es=e=>{let t=e>>8&255,s=255&e;return[Ss(e>>16),Ss(t),Ss(s)]},Us=(e,t)=>{let s=Math.floor(e/361),i=Math.floor(e/19)%19,n=e%19;return[Ns((s-9)/9,2)*t,Ns((i-9)/9,2)*t,Ns((n-9)/9,2)*t]},Is=(e,t,s,i)=>{(e=>{if(!e||e.length<6)throw new Fs("The blurhash string must be at least 6 characters");let t=Ts(e[0]),s=Math.floor(t/9)+1,i=t%9+1;if(e.length!==4+2*i*s)throw new Fs(`blurhash length mismatch: length is ${e.length} but it should be ${4+2*i*s}`)})(e),i|=1;let n=Ts(e[0]),a=Math.floor(n/9)+1,r=n%9+1,o=(Ts(e[1])+1)/166,l=new Array(r*a);for(let t=0;t<l.length;t++)if(0===t){let s=Ts(e.substring(2,6));l[t]=Es(s)}else{let s=Ts(e.substring(4+2*t,6+2*t));l[t]=Us(s,o*i)}let d=4*t,m=new Uint8ClampedArray(d*s);for(let e=0;e<s;e++)for(let i=0;i<t;i++){let n=0,o=0,c=0;for(let d=0;d<a;d++)for(let a=0;a<r;a++){let m=Math.cos(Math.PI*i*a/t)*Math.cos(Math.PI*e*d/s),u=l[a+d*r];n+=u[0]*m,o+=u[1]*m,c+=u[2]*m}let u=Ls(n),g=Ls(o),f=Ls(c);m[4*i+0+e*d]=u,m[4*i+1+e*d]=g,m[4*i+2+e*d]=f,m[4*i+3+e*d]=255}return m},Ps=i(43261);const Bs={name:"FileIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},zs=(0,b.A)(Bs,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon file-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,Ds={name:"FolderOpenIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Os=(0,b.A)(Ds,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon folder-open-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,Rs={name:"KeyIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},js=(0,b.A)(Rs,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon key-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M7 14C5.9 14 5 13.1 5 12S5.9 10 7 10 9 10.9 9 12 8.1 14 7 14M12.6 10C11.8 7.7 9.6 6 7 6C3.7 6 1 8.7 1 12S3.7 18 7 18C9.6 18 11.8 16.3 12.6 14H16V18H20V14H23V10H12.6Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,Ms={name:"NetworkIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Vs=(0,b.A)(Ms,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon network-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,$s={name:"TagIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ws=(0,b.A)($s,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon tag-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,Hs={name:"PlayCircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},qs=(0,b.A)(Hs,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon play-circle-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,Gs={name:"CollectivesIcon",props:{title:{type:String,default:""},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ys=(0,b.A)(Gs,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon collectives-icon",attrs:{"aria-hidden":!e.title,"aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 16 16"}},[t("path",{attrs:{d:"M2.9,8.8c0-1.2,0.4-2.4,1.2-3.3L0.3,6c-0.2,0-0.3,0.3-0.1,0.4l2.7,2.6C2.9,9,2.9,8.9,2.9,8.8z"}}),e._v(" "),t("path",{attrs:{d:"M8,3.7c0.7,0,1.3,0.1,1.9,0.4L8.2,0.6c-0.1-0.2-0.3-0.2-0.4,0L6.1,4C6.7,3.8,7.3,3.7,8,3.7z"}}),e._v(" "),t("path",{attrs:{d:"M3.7,11.5L3,15.2c0,0.2,0.2,0.4,0.4,0.3l3.3-1.7C5.4,13.4,4.4,12.6,3.7,11.5z"}}),e._v(" "),t("path",{attrs:{d:"M15.7,6l-3.7-0.5c0.7,0.9,1.2,2,1.2,3.3c0,0.1,0,0.2,0,0.3l2.7-2.6C15.9,6.3,15.9,6.1,15.7,6z"}}),e._v(" "),t("path",{attrs:{d:"M12.3,11.5c-0.7,1.1-1.8,1.9-3,2.2l3.3,1.7c0.2,0.1,0.4-0.1,0.4-0.3L12.3,11.5z"}}),e._v(" "),t("path",{attrs:{d:"M9.6,10.1c-0.4,0.5-1,0.8-1.6,0.8c-1.1,0-2-0.9-2.1-2C5.9,7.7,6.8,6.7,8,6.7c0.6,0,1.1,0.3,1.5,0.7 c0.1,0.1,0.1,0.1,0.2,0.1h1.4c0.2,0,0.4-0.2,0.3-0.5c-0.7-1.3-2.1-2.2-3.8-2.1C5.8,5,4.3,6.6,4.1,8.5C4,10.8,5.8,12.7,8,12.7 c1.6,0,2.9-0.9,3.5-2.3c0.1-0.2-0.1-0.4-0.3-0.4H9.9C9.8,10,9.7,10,9.6,10.1z"}})])])}),[],!1,null,null,null).exports;var Ks=i(11459);const Qs=(0,o.pM)({name:"FavoriteIcon",components:{NcIconSvgWrapper:ue.A},data:()=>({StarSvg:Ks}),async mounted(){await this.$nextTick();const e=this.$el.querySelector("svg");e?.setAttribute?.("viewBox","-4 -4 30 30")},methods:{t:A.Tl}});var Js=i(4575),Xs={};Xs.styleTagTransform=Y(),Xs.setAttributes=W(),Xs.insert=V().bind(null,"head"),Xs.domAPI=j(),Xs.insertStyleElement=q(),O()(Js.A,Xs),Js.A&&Js.A.locals&&Js.A.locals;const Zs=(0,b.A)(Qs,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("NcIconSvgWrapper",{staticClass:"favorite-marker-icon",attrs:{name:e.t("files","Favorite"),svg:e.StarSvg}})}),[],!1,null,"f2d0cf6e",null).exports,ei=(0,o.pM)({name:"FileEntryPreview",components:{AccountGroupIcon:Ps.A,AccountPlusIcon:$e,CollectivesIcon:Ys,FavoriteIcon:Zs,FileIcon:zs,FolderIcon:Gt.A,FolderOpenIcon:Os,KeyIcon:js,LinkIcon:Ie.A,NetworkIcon:Vs,TagIcon:Ws},props:{source:{type:Object,required:!0},dragover:{type:Boolean,default:!1},gridMode:{type:Boolean,default:!1}},setup:()=>({userConfigStore:re(),isPublic:(0,h.f)(),publicSharingToken:(0,h.G)()}),data:()=>({backgroundFailed:void 0,backgroundLoaded:!1}),computed:{isFavorite(){return 1===this.source.attributes.favorite},userConfig(){return this.userConfigStore.userConfig},cropPreviews(){return!0===this.userConfig.crop_image_previews},previewUrl(){if(this.source.type===a.pt.Folder)return null;if(!0===this.backgroundFailed)return null;try{const e=this.source.attributes.previewUrl||(this.isPublic?(0,d.Jv)("/apps/files_sharing/publicpreview/{token}?file={file}",{token:this.publicSharingToken,file:this.source.path}):(0,d.Jv)("/core/preview?fileId={fileid}",{fileid:String(this.source.fileid)})),t=new URL(window.location.origin+e);t.searchParams.set("x",this.gridMode?"128":"32"),t.searchParams.set("y",this.gridMode?"128":"32"),t.searchParams.set("mimeFallback","true");const s=this.source?.attributes?.etag||"";return t.searchParams.set("v",s.slice(0,6)),t.searchParams.set("a",!0===this.cropPreviews?"0":"1"),t.href}catch(e){return null}},fileOverlay(){return void 0!==this.source.attributes["metadata-files-live-photo"]?qs:null},folderOverlay(){if(this.source.type!==a.pt.Folder)return null;if(1===this.source?.attributes?.["is-encrypted"])return js;if(this.source?.attributes?.["is-tag"])return Ws;const e=Object.values(this.source?.attributes?.["share-types"]||{}).flat();if(e.some((e=>e===Le.I.Link||e===Le.I.Email)))return Ie.A;if(e.length>0)return $e;switch(this.source?.attributes?.["mount-type"]){case"external":case"external-session":return Vs;case"group":return Ps.A;case"collective":return Ys;case"shared":return $e}return null},hasBlurhash(){return void 0!==this.source.attributes["metadata-blurhash"]}},mounted(){this.hasBlurhash&&this.$refs.canvas&&this.drawBlurhash()},methods:{reset(){this.backgroundFailed=void 0,this.backgroundLoaded=!1;const e=this.$refs.previewImg;e&&(e.src="")},onBackgroundLoad(){this.backgroundFailed=!1,this.backgroundLoaded=!0},onBackgroundError(e){""!==e.target?.src&&(this.backgroundFailed=!0,this.backgroundLoaded=!1)},drawBlurhash(){const e=this.$refs.canvas,t=e.width,s=e.height,i=Is(this.source.attributes["metadata-blurhash"],t,s),n=e.getContext("2d");if(null===n)return void P.error("Cannot create context for blurhash canvas");const a=n.createImageData(t,s);a.data.set(i),n.putImageData(a,0,0)},t:A.Tl}}),ti=ei,si=(0,b.A)(ti,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("span",{staticClass:"files-list__row-icon"},["folder"===e.source.type?[e.dragover?e._m(0):[e._m(1),e._v(" "),e.folderOverlay?t(e.folderOverlay,{tag:"OverlayIcon",staticClass:"files-list__row-icon-overlay"}):e._e()]]:e.previewUrl?t("span",{staticClass:"files-list__row-icon-preview-container"},[!e.hasBlurhash||!0!==e.backgroundFailed&&e.backgroundLoaded?e._e():t("canvas",{ref:"canvas",staticClass:"files-list__row-icon-blurhash",attrs:{"aria-hidden":"true"}}),e._v(" "),!0!==e.backgroundFailed?t("img",{ref:"previewImg",staticClass:"files-list__row-icon-preview",class:{"files-list__row-icon-preview--loaded":!1===e.backgroundFailed},attrs:{alt:"",loading:"lazy",src:e.previewUrl},on:{error:e.onBackgroundError,load:e.onBackgroundLoad}}):e._e()]):e._m(2),e._v(" "),e.isFavorite?t("span",{staticClass:"files-list__row-icon-favorite"},[e._m(3)],1):e._e(),e._v(" "),e.fileOverlay?t(e.fileOverlay,{tag:"OverlayIcon",staticClass:"files-list__row-icon-overlay files-list__row-icon-overlay--file"}):e._e()],2)}),[function(){var e=this._self._c;return this._self._setupProxy,e("FolderOpenIcon")},function(){var e=this._self._c;return this._self._setupProxy,e("FolderIcon")},function(){var e=this._self._c;return this._self._setupProxy,e("FileIcon")},function(){var e=this._self._c;return this._self._setupProxy,e("FavoriteIcon")}],!1,null,null,null).exports,ii=(0,o.pM)({name:"FileEntry",components:{CustomElementRender:as,FileEntryActions:hs,FileEntryCheckbox:vs,FileEntryName:_s,FileEntryPreview:si,NcDateTime:is.A},mixins:[ss],props:{isSizeAvailable:{type:Boolean,default:!1}},setup(){const e=jt(),t=It(),s=nt(),i=$t(),n=at(),a=Xe(),{currentView:r}=ge(),{directory:o,fileId:l}=Ze();return{actionsMenuStore:e,draggingStore:t,filesStore:s,renamingStore:i,selectionStore:n,currentDir:o,currentFileId:l,currentView:r,filesListWidth:a}},computed:{rowListeners(){return{...this.isRenaming?{}:{dragstart:this.onDragStart,dragover:this.onDragOver},contextmenu:this.onRightClick,dragleave:this.onDragLeave,dragend:this.onDragEnd,drop:this.onDrop}},columns(){return this.filesListWidth<512||this.compact?[]:this.currentView.columns||[]},size(){const e=this.source.size;return void 0===e||isNaN(e)||e<0?this.t("files","Pending"):(0,a.v7)(e,!0)},sizeOpacity(){const e=this.source.size;return void 0===e||isNaN(e)||e<0?{}:{color:`color-mix(in srgb, var(--color-main-text) ${Math.round(Math.min(100,100*Math.pow(e/10485760,2)))}%, var(--color-text-maxcontrast))`}},mtime(){return this.source.mtime&&!isNaN(this.source.mtime.getDate())?this.source.mtime:this.source.crtime&&!isNaN(this.source.crtime.getDate())?this.source.crtime:null},mtimeTitle(){return this.source.mtime?(0,Rt.A)(this.source.mtime).format("LLL"):""}},methods:{formatFileSize:a.v7}}),ni=(0,b.A)(ii,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("tr",e._g({staticClass:"files-list__row",class:{"files-list__row--dragover":e.dragover,"files-list__row--loading":e.isLoading,"files-list__row--active":e.isActive},attrs:{"data-cy-files-list-row":"","data-cy-files-list-row-fileid":e.fileid,"data-cy-files-list-row-name":e.source.basename,draggable:e.canDrag}},e.rowListeners),[e.isFailedSource?t("span",{staticClass:"files-list__row--failed"}):e._e(),e._v(" "),t("FileEntryCheckbox",{attrs:{fileid:e.fileid,"is-loading":e.isLoading,nodes:e.nodes,source:e.source}}),e._v(" "),t("td",{staticClass:"files-list__row-name",attrs:{"data-cy-files-list-row-name":""}},[t("FileEntryPreview",{ref:"preview",attrs:{source:e.source,dragover:e.dragover},nativeOn:{auxclick:function(t){return e.execDefaultAction.apply(null,arguments)},click:function(t){return e.execDefaultAction.apply(null,arguments)}}}),e._v(" "),t("FileEntryName",{ref:"name",attrs:{basename:e.basename,extension:e.extension,nodes:e.nodes,source:e.source},nativeOn:{auxclick:function(t){return e.execDefaultAction.apply(null,arguments)},click:function(t){return e.execDefaultAction.apply(null,arguments)}}})],1),e._v(" "),t("FileEntryActions",{directives:[{name:"show",rawName:"v-show",value:!e.isRenamingSmallScreen,expression:"!isRenamingSmallScreen"}],ref:"actions",class:`files-list__row-actions-${e.uniqueId}`,attrs:{loading:e.loading,opened:e.openedMenu,source:e.source},on:{"update:loading":function(t){e.loading=t},"update:opened":function(t){e.openedMenu=t}}}),e._v(" "),!e.compact&&e.isSizeAvailable?t("td",{staticClass:"files-list__row-size",style:e.sizeOpacity,attrs:{"data-cy-files-list-row-size":""},on:{click:e.openDetailsIfAvailable}},[t("span",[e._v(e._s(e.size))])]):e._e(),e._v(" "),!e.compact&&e.isMtimeAvailable?t("td",{staticClass:"files-list__row-mtime",style:e.mtimeOpacity,attrs:{"data-cy-files-list-row-mtime":""},on:{click:e.openDetailsIfAvailable}},[e.mtime?t("NcDateTime",{attrs:{timestamp:e.mtime,"ignore-seconds":!0}}):t("span",[e._v(e._s(e.t("files","Unknown date")))])],1):e._e(),e._v(" "),e._l(e.columns,(function(s){return t("td",{key:s.id,staticClass:"files-list__row-column-custom",class:`files-list__row-${e.currentView.id}-${s.id}`,attrs:{"data-cy-files-list-row-column-custom":s.id},on:{click:e.openDetailsIfAvailable}},[t("CustomElementRender",{attrs:{"current-view":e.currentView,render:s.render,source:e.source}})],1)}))],2)}),[],!1,null,null,null).exports,ai=(0,o.pM)({name:"FileEntryGrid",components:{FileEntryActions:hs,FileEntryCheckbox:vs,FileEntryName:_s,FileEntryPreview:si,NcDateTime:is.A},mixins:[ss],inheritAttrs:!1,setup(){const e=jt(),t=It(),s=nt(),i=$t(),n=at(),{currentView:a}=ge(),{directory:r,fileId:o}=Ze();return{actionsMenuStore:e,draggingStore:t,filesStore:s,renamingStore:i,selectionStore:n,currentDir:r,currentFileId:o,currentView:a}},data:()=>({gridMode:!0})}),ri=(0,b.A)(ai,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("tr",{staticClass:"files-list__row",class:{"files-list__row--active":e.isActive,"files-list__row--dragover":e.dragover,"files-list__row--loading":e.isLoading},attrs:{"data-cy-files-list-row":"","data-cy-files-list-row-fileid":e.fileid,"data-cy-files-list-row-name":e.source.basename,draggable:e.canDrag},on:{contextmenu:e.onRightClick,dragover:e.onDragOver,dragleave:e.onDragLeave,dragstart:e.onDragStart,dragend:e.onDragEnd,drop:e.onDrop}},[e.isFailedSource?t("span",{staticClass:"files-list__row--failed"}):e._e(),e._v(" "),t("FileEntryCheckbox",{attrs:{fileid:e.fileid,"is-loading":e.isLoading,nodes:e.nodes,source:e.source}}),e._v(" "),t("td",{staticClass:"files-list__row-name",attrs:{"data-cy-files-list-row-name":""}},[t("FileEntryPreview",{ref:"preview",attrs:{dragover:e.dragover,"grid-mode":!0,source:e.source},nativeOn:{auxclick:function(t){return e.execDefaultAction.apply(null,arguments)},click:function(t){return e.execDefaultAction.apply(null,arguments)}}}),e._v(" "),t("FileEntryName",{ref:"name",attrs:{basename:e.basename,extension:e.extension,"grid-mode":!0,nodes:e.nodes,source:e.source},nativeOn:{auxclick:function(t){return e.execDefaultAction.apply(null,arguments)},click:function(t){return e.execDefaultAction.apply(null,arguments)}}})],1),e._v(" "),!e.compact&&e.isMtimeAvailable?t("td",{staticClass:"files-list__row-mtime",style:e.mtimeOpacity,attrs:{"data-cy-files-list-row-mtime":""},on:{click:e.openDetailsIfAvailable}},[e.source.mtime?t("NcDateTime",{attrs:{timestamp:e.source.mtime,"ignore-seconds":!0}}):e._e()],1):e._e(),e._v(" "),t("FileEntryActions",{ref:"actions",class:`files-list__row-actions-${e.uniqueId}`,attrs:{"grid-mode":!0,loading:e.loading,opened:e.openedMenu,source:e.source},on:{"update:loading":function(t){e.loading=t},"update:opened":function(t){e.openedMenu=t}}})],1)}),[],!1,null,null,null).exports,oi={name:"FilesListHeader",props:{header:{type:Object,required:!0},currentFolder:{type:Object,required:!0},currentView:{type:Object,required:!0}},computed:{enabled(){return this.header.enabled(this.currentFolder,this.currentView)}},watch:{enabled(e){e&&this.header.updated(this.currentFolder,this.currentView)},currentFolder(){this.header.updated(this.currentFolder,this.currentView)}},mounted(){console.debug("Mounted",this.header.id),this.header.render(this.$refs.mount,this.currentFolder,this.currentView)}},li=(0,b.A)(oi,(function(){var e=this,t=e._self._c;return t("div",{directives:[{name:"show",rawName:"v-show",value:e.enabled,expression:"enabled"}],class:`files-list__header-${e.header.id}`},[t("span",{ref:"mount"})])}),[],!1,null,null,null).exports,di=(0,o.pM)({name:"FilesListTableFooter",props:{currentView:{type:a.Ss,required:!0},isMtimeAvailable:{type:Boolean,default:!1},isSizeAvailable:{type:Boolean,default:!1},nodes:{type:Array,required:!0},summary:{type:String,default:""},filesListWidth:{type:Number,default:0}},setup(){const e=it(),t=nt(),{directory:s}=Ze();return{filesStore:t,pathsStore:e,directory:s}},computed:{currentFolder(){if(!this.currentView?.id)return;if("/"===this.directory)return this.filesStore.getRoot(this.currentView.id);const e=this.pathsStore.getPath(this.currentView.id,this.directory);return this.filesStore.getNode(e)},columns(){return this.filesListWidth<512?[]:this.currentView?.columns||[]},totalSize(){return this.currentFolder?.size?(0,a.v7)(this.currentFolder.size,!0):(0,a.v7)(this.nodes.reduce(((e,t)=>e+(t.size??0)),0),!0)}},methods:{classForColumn(e){return{"files-list__row-column-custom":!0,[`files-list__row-${this.currentView.id}-${e.id}`]:!0}},t:A.Tl}});var mi=i(55498),ci={};ci.styleTagTransform=Y(),ci.setAttributes=W(),ci.insert=V().bind(null,"head"),ci.domAPI=j(),ci.insertStyleElement=q(),O()(mi.A,ci),mi.A&&mi.A.locals&&mi.A.locals;const ui=(0,b.A)(di,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("tr",[t("th",{staticClass:"files-list__row-checkbox"},[t("span",{staticClass:"hidden-visually"},[e._v(e._s(e.t("files","Total rows summary")))])]),e._v(" "),t("td",{staticClass:"files-list__row-name"},[t("span",{staticClass:"files-list__row-icon"}),e._v(" "),t("span",[e._v(e._s(e.summary))])]),e._v(" "),t("td",{staticClass:"files-list__row-actions"}),e._v(" "),e.isSizeAvailable?t("td",{staticClass:"files-list__column files-list__row-size"},[t("span",[e._v(e._s(e.totalSize))])]):e._e(),e._v(" "),e.isMtimeAvailable?t("td",{staticClass:"files-list__column files-list__row-mtime"}):e._e(),e._v(" "),e._l(e.columns,(function(s){return t("th",{key:s.id,class:e.classForColumn(s)},[t("span",[e._v(e._s(s.summary?.(e.nodes,e.currentView)))])])}))],2)}),[],!1,null,"4c69fc7c",null).exports;var gi=i(25384),fi=i(33388);const pi=o.Ay.extend({computed:{...(0,r.aH)(pe,["getConfig","setSortingBy","toggleSortingDirection"]),currentView(){return this.$navigation.active},sortingMode(){return this.getConfig(this.currentView.id)?.sorting_mode||this.currentView?.defaultSortKey||"basename"},isAscSorting(){const e=this.getConfig(this.currentView.id)?.sorting_direction;return"desc"!==e}},methods:{toggleSortBy(e){this.sortingMode!==e?this.setSortingBy(e,this.currentView.id):this.toggleSortingDirection(this.currentView.id)}}}),hi=(0,o.pM)({name:"FilesListTableHeaderButton",components:{MenuDown:gi.A,MenuUp:fi.A,NcButton:Re.A},mixins:[pi],props:{name:{type:String,required:!0},mode:{type:String,required:!0}},methods:{t:A.Tl}});var wi=i(64800),vi={};vi.styleTagTransform=Y(),vi.setAttributes=W(),vi.insert=V().bind(null,"head"),vi.domAPI=j(),vi.insertStyleElement=q(),O()(wi.A,vi),wi.A&&wi.A.locals&&wi.A.locals;const Ai=(0,b.A)(hi,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("NcButton",{class:["files-list__column-sort-button",{"files-list__column-sort-button--active":e.sortingMode===e.mode,"files-list__column-sort-button--size":"size"===e.sortingMode}],attrs:{alignment:"size"===e.mode?"end":"start-reverse",type:"tertiary",title:e.name},on:{click:function(t){return e.toggleSortBy(e.mode)}},scopedSlots:e._u([{key:"icon",fn:function(){return[e.sortingMode!==e.mode||e.isAscSorting?t("MenuUp",{staticClass:"files-list__column-sort-button-icon"}):t("MenuDown",{staticClass:"files-list__column-sort-button-icon"})]},proxy:!0}])},[e._v(" "),t("span",{staticClass:"files-list__column-sort-button-text"},[e._v(e._s(e.name))])])}),[],!1,null,"6d7680f0",null).exports,Ci=(0,o.pM)({name:"FilesListTableHeader",components:{FilesListTableHeaderButton:Ai,NcCheckboxRadioSwitch:ee.A},mixins:[pi],props:{isMtimeAvailable:{type:Boolean,default:!1},isSizeAvailable:{type:Boolean,default:!1},nodes:{type:Array,required:!0},filesListWidth:{type:Number,default:0}},setup(){const e=nt(),t=at(),{currentView:s}=ge();return{filesStore:e,selectionStore:t,currentView:s}},computed:{columns(){return this.filesListWidth<512?[]:this.currentView?.columns||[]},dir(){return(this.$route?.query?.dir||"/").replace(/^(.+)\/$/,"$1")},selectAllBind(){const e=(0,A.Tl)("files","Toggle selection for all files and folders");return{"aria-label":e,checked:this.isAllSelected,indeterminate:this.isSomeSelected,title:e}},selectedNodes(){return this.selectionStore.selected},isAllSelected(){return this.selectedNodes.length===this.nodes.length},isNoneSelected(){return 0===this.selectedNodes.length},isSomeSelected(){return!this.isAllSelected&&!this.isNoneSelected}},methods:{ariaSortForMode(e){return this.sortingMode===e?this.isAscSorting?"ascending":"descending":null},classForColumn(e){return{"files-list__column":!0,"files-list__column--sortable":!!e.sort,"files-list__row-column-custom":!0,[`files-list__row-${this.currentView?.id}-${e.id}`]:!0}},onToggleAll(e){if(e){const e=this.nodes.map((e=>e.source)).filter(Boolean);P.debug("Added all nodes to selection",{selection:e}),this.selectionStore.setLastIndex(null),this.selectionStore.set(e)}else P.debug("Cleared selection"),this.selectionStore.reset()},resetSelection(){this.selectionStore.reset()},t:A.Tl}});var bi=i(37617),yi={};yi.styleTagTransform=Y(),yi.setAttributes=W(),yi.insert=V().bind(null,"head"),yi.domAPI=j(),yi.insertStyleElement=q(),O()(bi.A,yi),bi.A&&bi.A.locals&&bi.A.locals;const xi=(0,b.A)(Ci,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("tr",{staticClass:"files-list__row-head"},[t("th",{staticClass:"files-list__column files-list__row-checkbox",on:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:e.resetSelection.apply(null,arguments)}}},[t("NcCheckboxRadioSwitch",e._b({attrs:{"data-cy-files-list-selection-checkbox":""},on:{"update:checked":e.onToggleAll}},"NcCheckboxRadioSwitch",e.selectAllBind,!1))],1),e._v(" "),t("th",{staticClass:"files-list__column files-list__row-name files-list__column--sortable",attrs:{"aria-sort":e.ariaSortForMode("basename")}},[t("span",{staticClass:"files-list__row-icon"}),e._v(" "),t("FilesListTableHeaderButton",{attrs:{name:e.t("files","Name"),mode:"basename"}})],1),e._v(" "),t("th",{staticClass:"files-list__row-actions"}),e._v(" "),e.isSizeAvailable?t("th",{staticClass:"files-list__column files-list__row-size",class:{"files-list__column--sortable":e.isSizeAvailable},attrs:{"aria-sort":e.ariaSortForMode("size")}},[t("FilesListTableHeaderButton",{attrs:{name:e.t("files","Size"),mode:"size"}})],1):e._e(),e._v(" "),e.isMtimeAvailable?t("th",{staticClass:"files-list__column files-list__row-mtime",class:{"files-list__column--sortable":e.isMtimeAvailable},attrs:{"aria-sort":e.ariaSortForMode("mtime")}},[t("FilesListTableHeaderButton",{attrs:{name:e.t("files","Modified"),mode:"mtime"}})],1):e._e(),e._v(" "),e._l(e.columns,(function(s){return t("th",{key:s.id,class:e.classForColumn(s),attrs:{"aria-sort":e.ariaSortForMode(s.id)}},[s.sort?t("FilesListTableHeaderButton",{attrs:{name:s.title,mode:s.id}}):t("span",[e._v("\n\t\t\t"+e._s(s.title)+"\n\t\t")])],1)}))],2)}),[],!1,null,"4daa9603",null).exports;var _i=i(17334),ki=i.n(_i);const Ti=(0,o.pM)({name:"VirtualList",props:{dataComponent:{type:[Object,Function],required:!0},dataKey:{type:String,required:!0},dataSources:{type:Array,required:!0},extraProps:{type:Object,default:()=>({})},scrollToIndex:{type:Number,default:0},gridMode:{type:Boolean,default:!1},caption:{type:String,default:""}},setup:()=>({fileListWidth:Xe()}),data(){return{index:this.scrollToIndex,beforeHeight:0,headerHeight:0,tableHeight:0,resizeObserver:null}},computed:{isReady(){return this.tableHeight>0},bufferItems(){return this.gridMode?this.columnCount:3},itemHeight(){return this.gridMode?230:55},itemWidth:()=>182,rowCount(){return Math.ceil((this.tableHeight-this.headerHeight)/this.itemHeight)+this.bufferItems/this.columnCount*2+1},columnCount(){return this.gridMode?Math.floor(this.fileListWidth/this.itemWidth):1},startIndex(){return Math.max(0,this.index-this.bufferItems)},shownItems(){return this.gridMode?this.rowCount*this.columnCount:this.rowCount},renderedItems(){if(!this.isReady)return[];const e=this.dataSources.slice(this.startIndex,this.startIndex+this.shownItems),t=e.filter((e=>Object.values(this.$_recycledPool).includes(e[this.dataKey]))).map((e=>e[this.dataKey])),s=Object.keys(this.$_recycledPool).filter((e=>!t.includes(this.$_recycledPool[e])));return e.map((e=>{const t=Object.values(this.$_recycledPool).indexOf(e[this.dataKey]);if(-1!==t)return{key:Object.keys(this.$_recycledPool)[t],item:e};const i=s.pop()||Math.random().toString(36).substr(2);return this.$_recycledPool[i]=e[this.dataKey],{key:i,item:e}}))},totalRowCount(){return Math.floor(this.dataSources.length/this.columnCount)},tbodyStyle(){const e=this.startIndex+this.rowCount>this.dataSources.length,t=this.dataSources.length-this.startIndex-this.shownItems,s=Math.floor(Math.min(this.dataSources.length-this.startIndex,t)/this.columnCount);return{paddingTop:Math.floor(this.startIndex/this.columnCount)*this.itemHeight+"px",paddingBottom:e?0:s*this.itemHeight+"px",minHeight:this.totalRowCount*this.itemHeight+"px"}}},watch:{scrollToIndex(e){this.scrollTo(e)},totalRowCount(){this.scrollToIndex&&this.$nextTick((()=>this.scrollTo(this.scrollToIndex)))},columnCount(e,t){0!==t?this.scrollTo(this.index):console.debug("VirtualList: columnCount is 0, skipping scroll")}},mounted(){const e=this.$refs?.before,t=this.$el,s=this.$refs?.thead;this.resizeObserver=new ResizeObserver(ki()((()=>{this.beforeHeight=e?.clientHeight??0,this.headerHeight=s?.clientHeight??0,this.tableHeight=t?.clientHeight??0,P.debug("VirtualList: resizeObserver updated"),this.onScroll()}),100,!1)),this.resizeObserver.observe(e),this.resizeObserver.observe(t),this.resizeObserver.observe(s),this.scrollToIndex&&this.scrollTo(this.scrollToIndex),this.$el.addEventListener("scroll",this.onScroll,{passive:!0}),this.$_recycledPool={}},beforeDestroy(){this.resizeObserver&&this.resizeObserver.disconnect()},methods:{scrollTo(e){const t=Math.ceil(this.dataSources.length/this.columnCount);if(t<this.rowCount)return void P.debug("VirtualList: Skip scrolling. nothing to scroll",{index:e,targetRow:t,rowCount:this.rowCount});this.index=e;const s=(Math.floor(e/this.columnCount)-.5)*this.itemHeight+this.beforeHeight;P.debug("VirtualList: scrolling to index "+e,{scrollTop:s,columnCount:this.columnCount}),this.$el.scrollTop=s},onScroll(){this._onScrollHandle??=requestAnimationFrame((()=>{this._onScrollHandle=null;const e=this.$el.scrollTop-this.beforeHeight,t=Math.floor(e/this.itemHeight)*this.columnCount;this.index=Math.max(0,t),this.$emit("scroll")}))}}}),Si=(0,b.A)(Ti,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("div",{staticClass:"files-list",attrs:{"data-cy-files-list":""}},[t("div",{ref:"before",staticClass:"files-list__before"},[e._t("before")],2),e._v(" "),t("div",{staticClass:"files-list__filters"},[e._t("filters")],2),e._v(" "),e.$scopedSlots["header-overlay"]?t("div",{staticClass:"files-list__thead-overlay"},[e._t("header-overlay")],2):e._e(),e._v(" "),t("table",{staticClass:"files-list__table",class:{"files-list__table--with-thead-overlay":!!e.$scopedSlots["header-overlay"]}},[e.caption?t("caption",{staticClass:"hidden-visually"},[e._v("\n\t\t\t"+e._s(e.caption)+"\n\t\t")]):e._e(),e._v(" "),t("thead",{ref:"thead",staticClass:"files-list__thead",attrs:{"data-cy-files-list-thead":""}},[e._t("header")],2),e._v(" "),t("tbody",{staticClass:"files-list__tbody",class:e.gridMode?"files-list__tbody--grid":"files-list__tbody--list",style:e.tbodyStyle,attrs:{"data-cy-files-list-tbody":""}},e._l(e.renderedItems,(function(s,i){let{key:n,item:a}=s;return t(e.dataComponent,e._b({key:n,tag:"component",attrs:{source:a,index:i}},"component",e.extraProps,!1))})),1),e._v(" "),t("tfoot",{directives:[{name:"show",rawName:"v-show",value:e.isReady,expression:"isReady"}],staticClass:"files-list__tfoot",attrs:{"data-cy-files-list-tfoot":""}},[e._t("footer")],2)])])}),[],!1,null,null,null).exports,Li=(0,a.qK)(),Ni=(0,o.pM)({name:"FilesListTableHeaderActions",components:{NcActions:De.A,NcActionButton:Oe.A,NcIconSvgWrapper:ue.A,NcLoadingIcon:Me.A},props:{currentView:{type:Object,required:!0},selectedNodes:{type:Array,default:()=>[]}},setup(){const e=jt(),t=nt(),s=at(),i=Xe(),{directory:n}=Ze();return{directory:n,fileListWidth:i,actionsMenuStore:e,filesStore:t,selectionStore:s}},data:()=>({loading:null}),computed:{enabledActions(){return Li.filter((e=>e.execBatch)).filter((e=>!e.enabled||e.enabled(this.nodes,this.currentView))).sort(((e,t)=>(e.order||0)-(t.order||0)))},nodes(){return this.selectedNodes.map((e=>this.getNode(e))).filter(Boolean)},areSomeNodesLoading(){return this.nodes.some((e=>e.status===a.zI.LOADING))},openedMenu:{get(){return"global"===this.actionsMenuStore.opened},set(e){this.actionsMenuStore.opened=e?"global":null}},inlineActions(){return this.fileListWidth<512?0:this.fileListWidth<768?1:this.fileListWidth<1024?2:3}},methods:{getNode(e){return this.filesStore.getNode(e)},async onActionClick(e){const t=e.displayName(this.nodes,this.currentView),s=this.selectedNodes;try{this.loading=e.id,this.nodes.forEach((e=>{this.$set(e,"status",a.zI.LOADING)}));const i=await e.execBatch(this.nodes,this.currentView,this.directory);if(!i.some((e=>null!==e)))return void this.selectionStore.reset();if(i.some((e=>!1===e))){const e=s.filter(((e,t)=>!1===i[t]));if(this.selectionStore.set(e),i.some((e=>null===e)))return;return void(0,N.Qg)(this.t("files",'"{displayName}" failed on some elements ',{displayName:t}))}(0,N.Te)(this.t("files",'"{displayName}" batch action executed successfully',{displayName:t})),this.selectionStore.reset()}catch(s){P.error("Error while executing action",{action:e,e:s}),(0,N.Qg)(this.t("files",'"{displayName}" action failed',{displayName:t}))}finally{this.loading=null,this.nodes.forEach((e=>{this.$set(e,"status",void 0)}))}},t:A.Tl}}),Fi=Ni;var Ei=i(39513),Ui={};Ui.styleTagTransform=Y(),Ui.setAttributes=W(),Ui.insert=V().bind(null,"head"),Ui.domAPI=j(),Ui.insertStyleElement=q(),O()(Ei.A,Ui),Ei.A&&Ei.A.locals&&Ei.A.locals;var Ii=(0,b.A)(Fi,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("div",{staticClass:"files-list__column files-list__row-actions-batch",attrs:{"data-cy-files-list-selection-actions":""}},[t("NcActions",{ref:"actionsMenu",attrs:{container:"#app-content-vue",disabled:!!e.loading||e.areSomeNodesLoading,"force-name":!0,inline:e.inlineActions,"menu-name":e.inlineActions<=1?e.t("files","Actions"):null,open:e.openedMenu},on:{"update:open":function(t){e.openedMenu=t}}},e._l(e.enabledActions,(function(s){return t("NcActionButton",{key:s.id,class:"files-list__row-actions-batch-"+s.id,attrs:{"aria-label":s.displayName(e.nodes,e.currentView)+" "+e.t("files","(selected)"),"data-cy-files-list-selection-action":s.id},on:{click:function(t){return e.onActionClick(s)}},scopedSlots:e._u([{key:"icon",fn:function(){return[e.loading===s.id?t("NcLoadingIcon",{attrs:{size:18}}):t("NcIconSvgWrapper",{attrs:{svg:s.iconSvgInline(e.nodes,e.currentView)}})]},proxy:!0}],null,!0)},[e._v("\n\t\t\t"+e._s(s.displayName(e.nodes,e.currentView))+"\n\t\t")])})),1)],1)}),[],!1,null,"6c741170",null);const Pi=Ii.exports;var Bi=i(41944),zi=i(89918);const Di=(0,o.pM)({__name:"FileListFilters",setup(e){const t=Ce(),s=(0,o.EW)((()=>t.filtersWithUI)),i=(0,o.EW)((()=>t.activeChips)),n=(0,o.KR)([]);return(0,o.nT)((()=>{n.value.forEach(((e,t)=>s.value[t].mount(e)))})),{__sfc:!0,filterStore:t,visualFilters:s,activeChips:i,filterElements:n,t:A.t,NcAvatar:Bi.A,NcChip:zi.A}}});var Oi=i(3085),Ri={};Ri.styleTagTransform=Y(),Ri.setAttributes=W(),Ri.insert=V().bind(null,"head"),Ri.domAPI=j(),Ri.insertStyleElement=q(),O()(Oi.A,Ri),Oi.A&&Oi.A.locals&&Oi.A.locals;const ji=(0,b.A)(Di,(function(){var e=this,t=e._self._c,s=e._self._setupProxy;return t("div",{staticClass:"file-list-filters"},[t("div",{staticClass:"file-list-filters__filter",attrs:{"data-cy-files-filters":""}},e._l(s.visualFilters,(function(e){return t("span",{key:e.id,ref:"filterElements",refInFor:!0})})),0),e._v(" "),s.activeChips.length>0?t("ul",{staticClass:"file-list-filters__active",attrs:{"aria-label":s.t("files","Active filters")}},e._l(s.activeChips,(function(i,n){return t("li",{key:n},[t(s.NcChip,{attrs:{"aria-label-close":s.t("files","Remove filter"),"icon-svg":i.icon,text:i.text},on:{close:i.onclick},scopedSlots:e._u([i.user?{key:"icon",fn:function(){return[t(s.NcAvatar,{attrs:{"disable-menu":"","show-user-status":!1,size:24,user:i.user}})]},proxy:!0}:null],null,!0)})],1)})),0):e._e()])}),[],!1,null,"bd0c8440",null).exports,Mi=(0,o.pM)({name:"FilesListVirtual",components:{FileListFilters:ji,FilesListHeader:li,FilesListTableFooter:ui,FilesListTableHeader:xi,VirtualList:Si,FilesListTableHeaderActions:Pi},props:{currentView:{type:a.Ss,required:!0},currentFolder:{type:a.vd,required:!0},nodes:{type:Array,required:!0}},setup(){const e=re(),t=at(),s=Xe(),{fileId:i,openFile:n}=Ze();return{fileId:i,fileListWidth:s,openFile:n,userConfigStore:e,selectionStore:t}},data:()=>({FileEntry:ni,FileEntryGrid:ri,headers:(0,a.By)(),scrollToIndex:0,openFileId:null}),computed:{userConfig(){return this.userConfigStore.userConfig},summary(){return Ot(this.nodes)},isMtimeAvailable(){return!(this.fileListWidth<768)&&this.nodes.some((e=>void 0!==e.mtime))},isSizeAvailable(){return!(this.fileListWidth<768)&&this.nodes.some((e=>void 0!==e.size))},sortedHeaders(){return this.currentFolder&&this.currentView?[...this.headers].sort(((e,t)=>e.order-t.order)):[]},cantUpload(){return this.currentFolder&&!(this.currentFolder.permissions&a.aX.CREATE)},isQuotaExceeded(){return 0===this.currentFolder?.attributes?.["quota-available-bytes"]},caption(){const e=(0,A.Tl)("files","List of files and folders.");return[this.currentView.caption||e,this.cantUpload?(0,A.Tl)("files","You don’t have permission to upload or create files here."):null,this.isQuotaExceeded?(0,A.Tl)("files","You have used your space quota and cannot upload files anymore."):null,(0,A.Tl)("files","Column headers with buttons are sortable."),(0,A.Tl)("files","This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list.")].filter(Boolean).join("\n")},selectedNodes(){return this.selectionStore.selected},isNoneSelected(){return 0===this.selectedNodes.length}},watch:{fileId:{handler(e){this.scrollToFile(e,!1)},immediate:!0},openFile:{handler(){this.$nextTick((()=>{this.fileId&&(this.openFile?this.handleOpenFile(this.fileId):this.unselectFile())}))},immediate:!0}},mounted(){window.document.querySelector("main.app-content").addEventListener("dragover",this.onDragOver),(0,v.B1)("files:sidebar:closed",this.unselectFile),this.fileId&&this.openSidebarForFile(this.fileId)},beforeDestroy(){window.document.querySelector("main.app-content").removeEventListener("dragover",this.onDragOver),(0,v.al)("files:sidebar:closed",this.unselectFile)},methods:{openSidebarForFile(e){if(document.documentElement.clientWidth>1024&&this.currentFolder.fileid!==e){const t=this.nodes.find((t=>t.fileid===e));t&&Ge?.enabled?.([t],this.currentView)&&(P.debug("Opening sidebar on file "+t.path,{node:t}),Ge.exec(t,this.currentView,this.currentFolder.path))}},scrollToFile(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(e){if(e===this.currentFolder.fileid)return;const s=this.nodes.findIndex((t=>t.fileid===e));t&&-1===s&&e!==this.currentFolder.fileid&&(0,N.Qg)(this.t("files","File not found")),this.scrollToIndex=Math.max(0,s)}},unselectFile(){this.openFile||""!==OCA.Files.Sidebar.file||window.OCP.Files.Router.goToRoute(null,{...this.$route.params,fileid:String(this.currentFolder.fileid??"")},this.$route.query)},handleOpenFile(e){if(null===e||this.openFileId===e)return;const t=this.nodes.find((t=>t.fileid===e));if(void 0===t||t.type===a.pt.Folder)return;P.debug("Opening file "+t.path,{node:t}),this.openFileId=e;const s=(0,a.qK)().filter((e=>!!e?.default)).filter((e=>!e.enabled||e.enabled([t],this.currentView))).sort(((e,t)=>(e.order||0)-(t.order||0))).at(0);s?.exec(t,this.currentView,this.currentFolder.path)},onDragOver(e){const t=e.dataTransfer?.types.includes("Files");if(t)return;e.preventDefault(),e.stopPropagation();const s=this.$refs.table.$el,i=s.getBoundingClientRect().top,n=i+s.getBoundingClientRect().height;e.clientY<i+100?s.scrollTop=s.scrollTop-25:e.clientY>n-50&&(s.scrollTop=s.scrollTop+25)},t:A.Tl}});var Vi=i(29971),$i={};$i.styleTagTransform=Y(),$i.setAttributes=W(),$i.insert=V().bind(null,"head"),$i.domAPI=j(),$i.insertStyleElement=q(),O()(Vi.A,$i),Vi.A&&Vi.A.locals&&Vi.A.locals;var Wi=i(61579),Hi={};Hi.styleTagTransform=Y(),Hi.setAttributes=W(),Hi.insert=V().bind(null,"head"),Hi.domAPI=j(),Hi.insertStyleElement=q(),O()(Wi.A,Hi),Wi.A&&Wi.A.locals&&Wi.A.locals;const qi=(0,b.A)(Mi,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("VirtualList",{ref:"table",attrs:{"data-component":e.userConfig.grid_view?e.FileEntryGrid:e.FileEntry,"data-key":"source","data-sources":e.nodes,"grid-mode":e.userConfig.grid_view,"extra-props":{isMtimeAvailable:e.isMtimeAvailable,isSizeAvailable:e.isSizeAvailable,nodes:e.nodes,fileListWidth:e.fileListWidth},"scroll-to-index":e.scrollToIndex,caption:e.caption},scopedSlots:e._u([{key:"filters",fn:function(){return[t("FileListFilters")]},proxy:!0},e.isNoneSelected?null:{key:"header-overlay",fn:function(){return[t("span",{staticClass:"files-list__selected"},[e._v(e._s(e.t("files","{count} selected",{count:e.selectedNodes.length})))]),e._v(" "),t("FilesListTableHeaderActions",{attrs:{"current-view":e.currentView,"selected-nodes":e.selectedNodes}})]},proxy:!0},{key:"before",fn:function(){return e._l(e.sortedHeaders,(function(s){return t("FilesListHeader",{key:s.id,attrs:{"current-folder":e.currentFolder,"current-view":e.currentView,header:s}})}))},proxy:!0},{key:"header",fn:function(){return[t("FilesListTableHeader",{ref:"thead",attrs:{"files-list-width":e.fileListWidth,"is-mtime-available":e.isMtimeAvailable,"is-size-available":e.isSizeAvailable,nodes:e.nodes}})]},proxy:!0},{key:"footer",fn:function(){return[t("FilesListTableFooter",{attrs:{"current-view":e.currentView,"files-list-width":e.fileListWidth,"is-mtime-available":e.isMtimeAvailable,"is-size-available":e.isSizeAvailable,nodes:e.nodes,summary:e.summary}})]},proxy:!0}],null,!0)})}),[],!1,null,"76316b7f",null).exports,Gi={name:"TrayArrowDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Yi=(0,b.A)(Gi,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon tray-arrow-down-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 15L17.55 9.54L16.13 8.13L13 11.25V2H11V11.25L7.88 8.13L6.46 9.55L12 15Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,Ki=(0,o.pM)({name:"DragAndDropNotice",components:{TrayArrowDownIcon:Yi},props:{currentFolder:{type:Object,required:!0}},setup(){const{currentView:e}=ge();return{currentView:e}},data:()=>({dragover:!1}),computed:{canUpload(){return this.currentFolder&&!!(this.currentFolder.permissions&a.aX.CREATE)},isQuotaExceeded(){return 0===this.currentFolder?.attributes?.["quota-available-bytes"]},cantUploadLabel(){return this.isQuotaExceeded?this.t("files","Your have used your space quota and cannot upload files anymore"):this.canUpload?null:this.t("files","You don’t have permission to upload or create files here")},resetDragOver(){return ki()((()=>{this.dragover=!1}),3e3)}},mounted(){const e=window.document.getElementById("app-content-vue");e.addEventListener("dragover",this.onDragOver),e.addEventListener("dragleave",this.onDragLeave),e.addEventListener("drop",this.onContentDrop)},beforeDestroy(){const e=window.document.getElementById("app-content-vue");e.removeEventListener("dragover",this.onDragOver),e.removeEventListener("dragleave",this.onDragLeave),e.removeEventListener("drop",this.onContentDrop)},methods:{onDragOver(e){e.preventDefault();const t=e.dataTransfer?.types.includes("Files");t&&(this.dragover=!0,this.resetDragOver())},onDragLeave(e){const t=e.currentTarget;t?.contains(e.relatedTarget??e.target)||this.dragover&&(this.dragover=!1,this.resetDragOver.clear())},onContentDrop(e){P.debug("Drag and drop cancelled, dropped on empty space",{event:e}),e.preventDefault(),this.dragover&&(this.dragover=!1,this.resetDragOver.clear())},async onDrop(e){if(this.cantUploadLabel)return void(0,N.Qg)(this.cantUploadLabel);if(this.$el.querySelector("tbody")?.contains(e.target))return;e.preventDefault(),e.stopPropagation();const t=[...e.dataTransfer?.items||[]],s=await Ft(t),i=await(this.currentView?.getContents(this.currentFolder.path)),n=i?.folder;if(!n)return void(0,N.Qg)(this.t("files","Target folder does not exist any more"));if(e.button)return;P.debug("Dropped",{event:e,folder:n,fileTree:s});const a=(await Et(s,n,i.contents)).findLast((e=>e.status!==Ne.S.FAILED&&!e.file.webkitRelativePath.includes("/")&&e.response?.headers?.["oc-fileid"]&&2===e.source.replace(n.source,"").split("/").length));if(void 0!==a){P.debug("Scrolling to last upload in current folder",{lastUpload:a});const e={path:this.$route.path,params:{...this.$route.params,fileid:String(a.response.headers["oc-fileid"])},query:{...this.$route.query}};delete e.query.openfile,this.$router.push(e)}this.dragover=!1,this.resetDragOver.clear()},t:A.Tl}});var Qi=i(81602),Ji={};Ji.styleTagTransform=Y(),Ji.setAttributes=W(),Ji.insert=V().bind(null,"head"),Ji.domAPI=j(),Ji.insertStyleElement=q(),O()(Qi.A,Ji),Qi.A&&Qi.A.locals&&Qi.A.locals;const Xi=(0,b.A)(Ki,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("div",{directives:[{name:"show",rawName:"v-show",value:e.dragover,expression:"dragover"}],staticClass:"files-list__drag-drop-notice",attrs:{"data-cy-files-drag-drop-area":""},on:{drop:e.onDrop}},[t("div",{staticClass:"files-list__drag-drop-notice-wrapper"},[e.canUpload&&!e.isQuotaExceeded?[t("TrayArrowDownIcon",{attrs:{size:48}}),e._v(" "),t("h3",{staticClass:"files-list-drag-drop-notice__title"},[e._v("\n\t\t\t\t"+e._s(e.t("files","Drag and drop files here to upload"))+"\n\t\t\t")])]:[t("h3",{staticClass:"files-list-drag-drop-notice__title"},[e._v("\n\t\t\t\t"+e._s(e.cantUploadLabel)+"\n\t\t\t")])]],2)])}),[],!1,null,"48abd828",null).exports;const Zi=void 0!==(0,Te.F)()?.files_sharing,en=(0,o.pM)({name:"FilesList",components:{BreadCrumbs:Dt,DragAndDropNotice:Xi,FilesListVirtual:qi,LinkIcon:Ie.A,ListViewIcon:Be,NcAppContent:ze.A,NcActions:De.A,NcActionButton:Oe.A,NcButton:Re.A,NcEmptyContent:je.A,NcIconSvgWrapper:ue.A,NcLoadingIcon:Me.A,AccountPlusIcon:$e,UploadPicker:Ne.U,ViewGridIcon:He,IconAlertCircleOutline:Fe.A,IconReload:Ue},mixins:[pi],props:{isPublic:{type:Boolean,default:!1}},setup(){const e=nt(),t=Ce(),s=it(),i=at(),n=ot(),a=re(),r=pe(),{currentView:o}=ge(),l=Xe(),{directory:d,fileId:m}=Ze(),c=(0,L.C)("core","config",[])["enable_non-accessible_features"]??!0,u=(0,L.C)("files","forbiddenCharacters",[]);return{currentView:o,directory:d,fileId:m,fileListWidth:l,t:A.Tl,filesStore:e,filtersStore:t,pathsStore:s,selectionStore:i,uploaderStore:n,userConfigStore:a,viewConfigStore:r,enableGridView:c,forbiddenCharacters:u,ShareType:Le.I}},data:()=>({loading:!0,error:null,promise:null,dirContentsFiltered:[]}),computed:{getContent(){const e=this.currentView;return async t=>{const s=(0,Se.normalize)(`${this.currentFolder?.path??""}/${t??""}`),i=this.filesStore.getNodesByPath(e.id,s);return i.length>0?i:(await e.getContents(s)).contents}},userConfig(){return this.userConfigStore.userConfig},pageHeading(){const e=this.currentView?.name??(0,A.Tl)("files","Files");return void 0===this.currentFolder||"/"===this.directory?e:`${this.currentFolder.displayname} - ${e}`},currentFolder(){if(!this.currentView?.id)return;if("/"===this.directory)return this.filesStore.getRoot(this.currentView.id);const e=this.pathsStore.getPath(this.currentView.id,this.directory);return void 0!==e?this.filesStore.getNode(e):void 0},dirContents(){return(this.currentFolder?._children||[]).map(this.filesStore.getNode).filter((e=>!!e))},dirContentsSorted(){if(!this.currentView)return[];const e=(this.currentView?.columns||[]).find((e=>e.id===this.sortingMode));if(e?.sort&&"function"==typeof e.sort){const t=[...this.dirContentsFiltered].sort(e.sort);return this.isAscSorting?t:t.reverse()}return(0,a.ur)(this.dirContentsFiltered,{sortFavoritesFirst:this.userConfig.sort_favorites_first,sortFoldersFirst:this.userConfig.sort_folders_first,sortingMode:this.sortingMode,sortingOrder:this.isAscSorting?"asc":"desc"})},isEmptyDir(){return 0===this.dirContents.length},isRefreshing(){return void 0!==this.currentFolder&&!this.isEmptyDir&&this.loading},toPreviousDir(){const e=this.directory.split("/").slice(0,-1).join("/")||"/";return{...this.$route,query:{dir:e}}},shareTypesAttributes(){if(this.currentFolder?.attributes?.["share-types"])return Object.values(this.currentFolder?.attributes?.["share-types"]||{}).flat()},shareButtonLabel(){return this.shareTypesAttributes?this.shareButtonType===Le.I.Link?(0,A.Tl)("files","Shared by link"):(0,A.Tl)("files","Shared"):(0,A.Tl)("files","Share")},shareButtonType(){return this.shareTypesAttributes?this.shareTypesAttributes.some((e=>e===Le.I.Link))?Le.I.Link:Le.I.User:null},gridViewButtonLabel(){return this.userConfig.grid_view?(0,A.Tl)("files","Switch to list view"):(0,A.Tl)("files","Switch to grid view")},canUpload(){return this.currentFolder&&!!(this.currentFolder.permissions&a.aX.CREATE)},isQuotaExceeded(){return 0===this.currentFolder?.attributes?.["quota-available-bytes"]},canShare(){return Zi&&!this.isPublic&&this.currentFolder&&!!(this.currentFolder.permissions&a.aX.SHARE)},filtersChanged(){return this.filtersStore.filtersChanged},showCustomEmptyView(){return!this.loading&&this.isEmptyDir&&void 0!==this.currentView?.emptyView},enabledFileListActions(){const e=(0,a.g5)().filter((e=>void 0===e.enabled||e.enabled(this.currentView,this.dirContents,{folder:this.currentFolder}))).toSorted(((e,t)=>e.order-t.order));return e}},watch:{pageHeading(){document.title=`${this.pageHeading} - ${(0,Te.F)().theming?.productName??"Nextcloud"}`},showCustomEmptyView(e){e&&this.$nextTick((()=>{const e=this.$refs.customEmptyView;this.currentView.emptyView(e)}))},currentView(e,t){e?.id!==t?.id&&(P.debug("View changed",{newView:e,oldView:t}),this.selectionStore.reset(),this.fetchContent())},directory(e,t){P.debug("Directory changed",{newDir:e,oldDir:t}),this.selectionStore.reset(),window.OCA.Files.Sidebar?.close&&window.OCA.Files.Sidebar.close(),this.fetchContent();const s=this.$refs?.filesListVirtual;s?.$el&&(s.$el.scrollTop=0)},dirContents(e){P.debug("Directory contents changed",{view:this.currentView,folder:this.currentFolder,contents:e}),(0,v.Ic)("files:list:updated",{view:this.currentView,folder:this.currentFolder,contents:e}),this.filterDirContent()},filtersChanged(){this.filtersChanged&&(this.filterDirContent(),this.filtersStore.filtersChanged=!1)}},mounted(){this.filtersStore.init(),this.fetchContent(),(0,v.B1)("files:node:deleted",this.onNodeDeleted),(0,v.B1)("files:node:updated",this.onUpdatedNode),(0,v.B1)("files:config:updated",this.fetchContent)},unmounted(){(0,v.al)("files:node:deleted",this.onNodeDeleted),(0,v.al)("files:node:updated",this.onUpdatedNode),(0,v.al)("files:config:updated",this.fetchContent)},methods:{async fetchContent(){this.loading=!0,this.error=null;const e=this.directory,t=this.currentView;if(t){this.promise&&"cancel"in this.promise&&(this.promise.cancel(),P.debug("Cancelled previous ongoing fetch")),this.promise=t.getContents(e);try{const{folder:s,contents:i}=await this.promise;P.debug("Fetched contents",{dir:e,folder:s,contents:i}),this.filesStore.updateNodes(i),this.$set(s,"_children",i.map((e=>e.source))),"/"===e?this.filesStore.setRoot({service:t.id,root:s}):s.fileid?(this.filesStore.updateNodes([s]),this.pathsStore.addPath({service:t.id,source:s.source,path:e})):P.fatal("Invalid root folder returned",{dir:e,folder:s,currentView:t}),i.filter((e=>"folder"===e.type)).forEach((s=>{this.pathsStore.addPath({service:t.id,source:s.source,path:(0,Se.join)(e,s.basename)})}))}catch(e){P.error("Error while fetching content",{error:e}),this.error=function(e){if(e instanceof Error){if(function(e){return e instanceof Error&&"status"in e&&"response"in e}(e)){const t=e.status||e.response?.status||0;if([400,404,405].includes(t))return(0,A.t)("files","Folder not found");if(403===t)return(0,A.t)("files","This operation is forbidden");if(500===t)return(0,A.t)("files","This directory is unavailable, please check the logs or contact the administrator");if(503===t)return(0,A.t)("files","Storage is temporarily not available")}return(0,A.t)("files","Unexpected error: {error}",{error:e.message})}return(0,A.t)("files","Unknown error")}(e)}finally{this.loading=!1}}else P.debug("The current view doesn't exists or is not ready.",{currentView:t})},onNodeDeleted(e){e.fileid&&e.fileid===this.fileId&&(e.fileid===this.currentFolder?.fileid?window.OCP.Files.Router.goToRoute(null,{view:this.currentView.id},{dir:this.currentFolder?.dirname??"/"}):window.OCP.Files.Router.goToRoute(null,{...this.$route.params,fileid:void 0},{...this.$route.query,openfile:void 0}))},onUpload(e){(0,Se.dirname)(e.source)===this.currentFolder.source&&this.fetchContent()},async onUploadFail(e){const t=e.response?.status||0;if(e.status!==Ne.S.CANCELLED)if(507!==t)if(404!==t&&409!==t)if(403!==t){if("string"==typeof e.response?.data)try{const t=(new DOMParser).parseFromString(e.response.data,"text/xml"),s=t.getElementsByTagName("s:message")[0]?.textContent??"";if(""!==s.trim())return void(0,N.Qg)((0,A.Tl)("files","Error during upload: {message}",{message:s}))}catch(e){P.error("Could not parse message",{error:e})}0===t?(0,N.Qg)((0,A.Tl)("files","Unknown error during upload")):(0,N.Qg)((0,A.Tl)("files","Error during upload, status code {status}",{status:t}))}else(0,N.Qg)((0,A.Tl)("files","Operation is blocked by access control"));else(0,N.Qg)((0,A.Tl)("files","Target folder does not exist any more"));else(0,N.Qg)((0,A.Tl)("files","Not enough free space"));else(0,N.I9)((0,A.Tl)("files","Upload was cancelled by user"))},onUpdatedNode(e){e?.fileid===this.currentFolder?.fileid&&this.fetchContent()},openSharingSidebar(){this.currentFolder?(window?.OCA?.Files?.Sidebar?.setActiveTab&&window.OCA.Files.Sidebar.setActiveTab("sharing"),Ge.exec(this.currentFolder,this.currentView,this.currentFolder.path)):P.debug("No current folder found for opening sharing sidebar")},toggleGridView(){this.userConfigStore.update("grid_view",!this.userConfig.grid_view)},filterDirContent(){let e=this.dirContents;for(const t of this.filtersStore.sortedFilters)e=t.filter(e);this.dirContentsFiltered=e}}}),tn=en;var sn=i(24271),nn={};nn.styleTagTransform=Y(),nn.setAttributes=W(),nn.insert=V().bind(null,"head"),nn.domAPI=j(),nn.insertStyleElement=q(),O()(sn.A,nn),sn.A&&sn.A.locals&&sn.A.locals;var an=(0,b.A)(tn,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("NcAppContent",{attrs:{"page-heading":e.pageHeading,"data-cy-files-content":""}},[t("div",{staticClass:"files-list__header",class:{"files-list__header--public":e.isPublic}},[t("BreadCrumbs",{attrs:{path:e.directory},on:{reload:e.fetchContent},scopedSlots:e._u([{key:"actions",fn:function(){return[e.canShare&&e.fileListWidth>=512?t("NcButton",{staticClass:"files-list__header-share-button",class:{"files-list__header-share-button--shared":e.shareButtonType},attrs:{"aria-label":e.shareButtonLabel,title:e.shareButtonLabel,type:"tertiary"},on:{click:e.openSharingSidebar},scopedSlots:e._u([{key:"icon",fn:function(){return[e.shareButtonType===e.ShareType.Link?t("LinkIcon"):t("AccountPlusIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,4106306959)}):e._e(),e._v(" "),e.canUpload&&!e.isQuotaExceeded&&e.currentFolder?t("UploadPicker",{staticClass:"files-list__header-upload-button",attrs:{"allow-folders":"",content:e.getContent,destination:e.currentFolder,"forbidden-characters":e.forbiddenCharacters,multiple:""},on:{failed:e.onUploadFail,uploaded:e.onUpload}}):e._e(),e._v(" "),t("NcActions",{attrs:{inline:1,"force-name":""}},e._l(e.enabledFileListActions,(function(s){return t("NcActionButton",{key:s.id,attrs:{"close-after-click":""},on:{click:()=>s.exec(e.currentView,e.dirContents,{folder:e.currentFolder})},scopedSlots:e._u([{key:"icon",fn:function(){return[t("NcIconSvgWrapper",{attrs:{svg:s.iconSvgInline(e.currentView)}})]},proxy:!0}],null,!0)},[e._v("\n\t\t\t\t\t\t"+e._s(s.displayName(e.currentView))+"\n\t\t\t\t\t")])})),1)]},proxy:!0}])}),e._v(" "),e.isRefreshing?t("NcLoadingIcon",{staticClass:"files-list__refresh-icon"}):e._e(),e._v(" "),e.fileListWidth>=512&&e.enableGridView?t("NcButton",{staticClass:"files-list__header-grid-button",attrs:{"aria-label":e.gridViewButtonLabel,title:e.gridViewButtonLabel,type:"tertiary"},on:{click:e.toggleGridView},scopedSlots:e._u([{key:"icon",fn:function(){return[e.userConfig.grid_view?t("ListViewIcon"):t("ViewGridIcon")]},proxy:!0}],null,!1,1682960703)}):e._e()],1),e._v(" "),!e.loading&&e.canUpload?t("DragAndDropNotice",{attrs:{"current-folder":e.currentFolder}}):e._e(),e._v(" "),e.loading&&!e.isRefreshing?t("NcLoadingIcon",{staticClass:"files-list__loading-icon",attrs:{size:38,name:e.t("files","Loading current folder")}}):!e.loading&&e.isEmptyDir?[e.error?t("NcEmptyContent",{attrs:{name:e.error,"data-cy-files-content-error":""},scopedSlots:e._u([{key:"action",fn:function(){return[t("NcButton",{attrs:{type:"secondary"},on:{click:e.fetchContent},scopedSlots:e._u([{key:"icon",fn:function(){return[t("IconReload",{attrs:{size:20}})]},proxy:!0}],null,!1,3448385010)},[e._v("\n\t\t\t\t\t"+e._s(e.t("files","Retry"))+"\n\t\t\t\t")])]},proxy:!0},{key:"icon",fn:function(){return[t("IconAlertCircleOutline")]},proxy:!0}],null,!1,2673163798)}):e.currentView?.emptyView?t("div",{staticClass:"files-list__empty-view-wrapper"},[t("div",{ref:"customEmptyView"})]):t("NcEmptyContent",{attrs:{name:e.currentView?.emptyTitle||e.t("files","No files in here"),description:e.currentView?.emptyCaption||e.t("files","Upload some content or sync with your devices!"),"data-cy-files-content-empty":""},scopedSlots:e._u(["/"!==e.directory?{key:"action",fn:function(){return[e.canUpload&&!e.isQuotaExceeded?t("UploadPicker",{staticClass:"files-list__header-upload-button",attrs:{"allow-folders":"",content:e.getContent,destination:e.currentFolder,"forbidden-characters":e.forbiddenCharacters,multiple:""},on:{failed:e.onUploadFail,uploaded:e.onUpload}}):t("NcButton",{attrs:{to:e.toPreviousDir,type:"primary"}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files","Go back"))+"\n\t\t\t\t")])]},proxy:!0}:null,{key:"icon",fn:function(){return[t("NcIconSvgWrapper",{attrs:{svg:e.currentView.icon}})]},proxy:!0}],null,!0)})]:t("FilesListVirtual",{ref:"filesListVirtual",attrs:{"current-folder":e.currentFolder,"current-view":e.currentView,nodes:e.dirContentsSorted}})],2)}),[],!1,null,"0d5ddd73",null);const rn=an.exports,on=(0,o.pM)({name:"FilesApp",components:{NcContent:w.A,FilesList:rn,Navigation:ke},setup:()=>({isPublic:(0,h.f)()})}),ln=(0,b.A)(on,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("NcContent",{attrs:{"app-name":"files"}},[e.isPublic?e._e():t("Navigation"),e._v(" "),t("FilesList",{attrs:{"is-public":e.isPublic}})],1)}),[],!1,null,null,null).exports;if(i.nc=(0,n.aV)(),window.OCA.Files=window.OCA.Files??{},window.OCP.Files=window.OCP.Files??{},!window.OCP.Files.Router){const e=new f(g);Object.assign(window.OCP.Files,{Router:e})}o.Ay.use(r.R2);const dn=o.Ay.observable((0,a.bh)());o.Ay.prototype.$navigation=dn;const mn=new class{constructor(){(function(e,t,s){(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var s=t.call(e,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s})(this,"_settings",void 0),this._settings=[],console.debug("OCA.Files.Settings initialized")}register(e){return this._settings.filter((t=>t.name===e.name)).length>0?(console.error("A setting with the same name is already registered"),!1):(this._settings.push(e),!0)}get settings(){return this._settings}};Object.assign(window.OCA.Files,{Settings:mn}),Object.assign(window.OCA.Files.Settings,{Setting:class{constructor(e,t){let{el:s,open:i,close:n}=t;p(this,"_close",void 0),p(this,"_el",void 0),p(this,"_name",void 0),p(this,"_open",void 0),this._name=e,this._el=s,this._open=i,this._close=n,"function"!=typeof this._open&&(this._open=()=>{}),"function"!=typeof this._close&&(this._close=()=>{})}get name(){return this._name}get el(){return this._el}get open(){return this._open}get close(){return this._close}}}),new(o.Ay.extend(ln))({router:window.OCP.Files.Router._router,pinia:l}).$mount("#content")},18407:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".files-list__breadcrumbs[data-v-61601fd4]{flex:1 1 100% !important;width:100%;height:100%;margin-block:0;margin-inline:10px;min-width:0}.files-list__breadcrumbs[data-v-61601fd4] a{cursor:pointer !important}.files-list__breadcrumbs--with-progress[data-v-61601fd4]{flex-direction:column !important;align-items:flex-start !important}","",{version:3,sources:["webpack://./apps/files/src/components/BreadCrumbs.vue"],names:[],mappings:"AACA,0CAEC,wBAAA,CACA,UAAA,CACA,WAAA,CACA,cAAA,CACA,kBAAA,CACA,WAAA,CAGC,6CACC,yBAAA,CAIF,yDACC,gCAAA,CACA,iCAAA",sourceRoot:""}]);const o=r},81602:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".files-list__drag-drop-notice[data-v-48abd828]{display:flex;align-items:center;justify-content:center;width:100%;min-height:113px;margin:0;user-select:none;color:var(--color-text-maxcontrast);background-color:var(--color-main-background);border-color:#000}.files-list__drag-drop-notice h3[data-v-48abd828]{margin-inline-start:16px;color:inherit}.files-list__drag-drop-notice-wrapper[data-v-48abd828]{display:flex;align-items:center;justify-content:center;height:15vh;max-height:70%;padding:0 5vw;border:2px var(--color-border-dark) dashed;border-radius:var(--border-radius-large)}","",{version:3,sources:["webpack://./apps/files/src/components/DragAndDropNotice.vue"],names:[],mappings:"AACA,+CACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CAEA,gBAAA,CACA,QAAA,CACA,gBAAA,CACA,mCAAA,CACA,6CAAA,CACA,iBAAA,CAEA,kDACC,wBAAA,CACA,aAAA,CAGD,uDACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,WAAA,CACA,cAAA,CACA,aAAA,CACA,0CAAA,CACA,wCAAA",sourceRoot:""}]);const o=r},20768:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".files-list-drag-image{position:absolute;top:-9999px;inset-inline-start:-9999px;display:flex;overflow:hidden;align-items:center;height:44px;padding:6px 12px;background:var(--color-main-background)}.files-list-drag-image__icon,.files-list-drag-image .files-list__row-icon{display:flex;overflow:hidden;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--border-radius)}.files-list-drag-image__icon{overflow:visible;margin-inline-end:12px}.files-list-drag-image__icon img{max-width:100%;max-height:100%}.files-list-drag-image__icon .material-design-icon{color:var(--color-text-maxcontrast)}.files-list-drag-image__icon .material-design-icon.folder-icon{color:var(--color-primary-element)}.files-list-drag-image__icon>span{display:flex}.files-list-drag-image__icon>span .files-list__row-icon+.files-list__row-icon{margin-top:6px;margin-inline-start:-26px}.files-list-drag-image__icon>span .files-list__row-icon+.files-list__row-icon+.files-list__row-icon{margin-top:12px}.files-list-drag-image__icon>span:not(:empty)+*{display:none}.files-list-drag-image__name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}","",{version:3,sources:["webpack://./apps/files/src/components/DragAndDropPreview.vue"],names:[],mappings:"AAIA,uBACC,iBAAA,CACA,WAAA,CACA,0BAAA,CACA,YAAA,CACA,eAAA,CACA,kBAAA,CACA,WAAA,CACA,gBAAA,CACA,uCAAA,CAEA,0EAEC,YAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,kCAAA,CAGD,6BACC,gBAAA,CACA,sBAAA,CAEA,iCACC,cAAA,CACA,eAAA,CAGD,mDACC,mCAAA,CACA,+DACC,kCAAA,CAKF,kCACC,YAAA,CAGA,8EACC,cA9CU,CA+CV,yBAAA,CACA,oGACC,eAAA,CAKF,gDACC,YAAA,CAKH,6BACC,eAAA,CACA,kBAAA,CACA,sBAAA",sourceRoot:""}]);const o=r},4575:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".favorite-marker-icon[data-v-f2d0cf6e]{color:var(--color-favorite);min-width:unset !important;min-height:unset !important}.favorite-marker-icon[data-v-f2d0cf6e] svg{width:26px !important;height:26px !important;max-width:unset !important;max-height:unset !important}.favorite-marker-icon[data-v-f2d0cf6e] svg path{stroke:var(--color-main-background);stroke-width:8px;stroke-linejoin:round;paint-order:stroke}","",{version:3,sources:["webpack://./apps/files/src/components/FileEntry/FavoriteIcon.vue"],names:[],mappings:"AACA,uCACC,2BAAA,CAEA,0BAAA,CACG,2BAAA,CAGF,4CAEC,qBAAA,CACA,sBAAA,CAGA,0BAAA,CACA,2BAAA,CAGA,iDACC,mCAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA",sourceRoot:""}]);const o=r},25851:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,"main.app-content[style*=mouse-pos-x] .v-popper__popper{transform:translate3d(var(--mouse-pos-x), var(--mouse-pos-y), 0px) !important}main.app-content[style*=mouse-pos-x] .v-popper__popper[data-popper-placement=top]{transform:translate3d(var(--mouse-pos-x), calc(var(--mouse-pos-y) - 50vh + 34px), 0px) !important}main.app-content[style*=mouse-pos-x] .v-popper__popper .v-popper__arrow-container{display:none}","",{version:3,sources:["webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue"],names:[],mappings:"AAGA,uDACC,6EAAA,CAGA,kFAEC,iGAAA,CAGD,kFACC,YAAA",sourceRoot:""}]);const o=r},93655:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,"[data-v-1d682792] .button-vue--icon-and-text .button-vue__text{color:var(--color-primary-element)}[data-v-1d682792] .button-vue--icon-and-text .button-vue__icon{color:var(--color-primary-element)}","",{version:3,sources:["webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue"],names:[],mappings:"AAEC,+DACC,kCAAA,CAED,+DACC,kCAAA",sourceRoot:""}]);const o=r},42342:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,"button.files-list__row-name-link[data-v-ce4c1580]{background-color:unset;border:none;font-weight:normal}button.files-list__row-name-link[data-v-ce4c1580]:active{background-color:unset !important}","",{version:3,sources:["webpack://./apps/files/src/components/FileEntry/FileEntryName.vue"],names:[],mappings:"AACA,kDACC,sBAAA,CACA,WAAA,CACA,kBAAA,CAEA,yDAEC,iCAAA",sourceRoot:""}]);const o=r},3085:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".file-list-filters[data-v-bd0c8440]{display:flex;flex-direction:column;gap:var(--default-grid-baseline);height:100%;width:100%}.file-list-filters__filter[data-v-bd0c8440]{display:flex;align-items:start;justify-content:start;gap:calc(var(--default-grid-baseline, 4px)*2)}.file-list-filters__filter>*[data-v-bd0c8440]{flex:0 1 fit-content}.file-list-filters__active[data-v-bd0c8440]{display:flex;flex-direction:row;gap:calc(var(--default-grid-baseline, 4px)*2)}","",{version:3,sources:["webpack://./apps/files/src/components/FileListFilters.vue"],names:[],mappings:"AACA,oCACC,YAAA,CACA,qBAAA,CACA,gCAAA,CACA,WAAA,CACA,UAAA,CAEA,4CACC,YAAA,CACA,iBAAA,CACA,qBAAA,CACA,6CAAA,CAEA,8CACC,oBAAA,CAIF,4CACC,YAAA,CACA,kBAAA,CACA,6CAAA",sourceRoot:""}]);const o=r},55498:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,"tr[data-v-4c69fc7c]{margin-bottom:max(25vh,var(--body-container-margin));border-top:1px solid var(--color-border);background-color:rgba(0,0,0,0) !important;border-bottom:none !important}tr td[data-v-4c69fc7c]{user-select:none;color:var(--color-text-maxcontrast) !important}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListTableFooter.vue"],names:[],mappings:"AAEA,oBACC,oDAAA,CACA,wCAAA,CAEA,yCAAA,CACA,6BAAA,CAEA,uBACC,gBAAA,CAEA,8CAAA",sourceRoot:""}]);const o=r},37617:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".files-list__column[data-v-4daa9603]{user-select:none;color:var(--color-text-maxcontrast) !important}.files-list__column--sortable[data-v-4daa9603]{cursor:pointer}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListTableHeader.vue"],names:[],mappings:"AACA,qCACC,gBAAA,CAEA,8CAAA,CAEA,+CACC,cAAA",sourceRoot:""}]);const o=r},39513:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".files-list__row-actions-batch[data-v-6c741170]{flex:1 1 100% !important;max-width:100%}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListTableHeaderActions.vue"],names:[],mappings:"AACA,gDACC,wBAAA,CACA,cAAA",sourceRoot:""}]);const o=r},64800:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".files-list__column-sort-button[data-v-6d7680f0]{margin:0 calc(var(--button-padding, var(--cell-margin))*-1);min-width:calc(100% - 3*var(--cell-margin)) !important}.files-list__column-sort-button-text[data-v-6d7680f0]{color:var(--color-text-maxcontrast);font-weight:normal}.files-list__column-sort-button-icon[data-v-6d7680f0]{color:var(--color-text-maxcontrast);opacity:0;transition:opacity var(--animation-quick);inset-inline-start:-10px}.files-list__column-sort-button--size .files-list__column-sort-button-icon[data-v-6d7680f0]{inset-inline-start:10px}.files-list__column-sort-button--active .files-list__column-sort-button-icon[data-v-6d7680f0],.files-list__column-sort-button:hover .files-list__column-sort-button-icon[data-v-6d7680f0],.files-list__column-sort-button:focus .files-list__column-sort-button-icon[data-v-6d7680f0],.files-list__column-sort-button:active .files-list__column-sort-button-icon[data-v-6d7680f0]{opacity:1}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListTableHeaderButton.vue"],names:[],mappings:"AACA,iDAEC,2DAAA,CACA,sDAAA,CAEA,sDACC,mCAAA,CACA,kBAAA,CAGD,sDACC,mCAAA,CACA,SAAA,CACA,yCAAA,CACA,wBAAA,CAGD,4FACC,uBAAA,CAGD,mXAIC,SAAA",sourceRoot:""}]);const o=r},29971:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".files-list[data-v-76316b7f]{--row-height: 55px;--cell-margin: 14px;--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);--checkbox-size: 24px;--clickable-area: var(--default-clickable-area);--icon-preview-size: 32px;--fixed-block-start-position: var(--default-clickable-area);overflow:auto;height:100%;will-change:scroll-position}.files-list[data-v-76316b7f]:has(.file-list-filters__active){--fixed-block-start-position: calc(var(--default-clickable-area) + var(--default-grid-baseline) + var(--clickable-area-small))}.files-list[data-v-76316b7f] tbody{will-change:padding;contain:layout paint style;display:flex;flex-direction:column;width:100%;position:relative}.files-list[data-v-76316b7f] tbody tr{contain:strict}.files-list[data-v-76316b7f] tbody tr:hover,.files-list[data-v-76316b7f] tbody tr:focus{background-color:var(--color-background-dark)}.files-list[data-v-76316b7f] .files-list__before{display:flex;flex-direction:column}.files-list[data-v-76316b7f] .files-list__selected{padding-inline-end:12px;white-space:nowrap}.files-list[data-v-76316b7f] .files-list__table{display:block}.files-list[data-v-76316b7f] .files-list__table.files-list__table--with-thead-overlay{margin-block-start:calc(-1*var(--row-height))}.files-list[data-v-76316b7f] .files-list__filters{position:sticky;top:0;background-color:var(--color-main-background);z-index:10;padding-inline:var(--row-height) var(--default-grid-baseline, 4px);height:var(--fixed-block-start-position);width:100%}.files-list[data-v-76316b7f] .files-list__thead-overlay{position:sticky;top:var(--fixed-block-start-position);margin-inline-start:var(--row-height);z-index:20;display:flex;align-items:center;background-color:var(--color-main-background);border-block-end:1px solid var(--color-border);height:var(--row-height)}.files-list[data-v-76316b7f] .files-list__thead,.files-list[data-v-76316b7f] .files-list__tfoot{display:flex;flex-direction:column;width:100%;background-color:var(--color-main-background)}.files-list[data-v-76316b7f] .files-list__thead{position:sticky;z-index:10;top:var(--fixed-block-start-position)}.files-list[data-v-76316b7f] tr{position:relative;display:flex;align-items:center;width:100%;border-block-end:1px solid var(--color-border);box-sizing:border-box;user-select:none;height:var(--row-height)}.files-list[data-v-76316b7f] td,.files-list[data-v-76316b7f] th{display:flex;align-items:center;flex:0 0 auto;justify-content:start;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}.files-list[data-v-76316b7f] td span,.files-list[data-v-76316b7f] th span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list[data-v-76316b7f] .files-list__row--failed{position:absolute;display:block;top:0;inset-inline:0;bottom:0;opacity:.1;z-index:-1;background:var(--color-error)}.files-list[data-v-76316b7f] .files-list__row-checkbox{justify-content:center}.files-list[data-v-76316b7f] .files-list__row-checkbox .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list[data-v-76316b7f] .files-list__row-checkbox .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list[data-v-76316b7f] .files-list__row-checkbox .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list[data-v-76316b7f] .files-list__row:hover,.files-list[data-v-76316b7f] .files-list__row:focus,.files-list[data-v-76316b7f] .files-list__row:active,.files-list[data-v-76316b7f] .files-list__row--active,.files-list[data-v-76316b7f] .files-list__row--dragover{background-color:var(--color-background-hover);--color-text-maxcontrast: var(--color-main-text)}.files-list[data-v-76316b7f] .files-list__row:hover>*,.files-list[data-v-76316b7f] .files-list__row:focus>*,.files-list[data-v-76316b7f] .files-list__row:active>*,.files-list[data-v-76316b7f] .files-list__row--active>*,.files-list[data-v-76316b7f] .files-list__row--dragover>*{--color-border: var(--color-border-dark)}.files-list[data-v-76316b7f] .files-list__row:hover .favorite-marker-icon svg path,.files-list[data-v-76316b7f] .files-list__row:focus .favorite-marker-icon svg path,.files-list[data-v-76316b7f] .files-list__row:active .favorite-marker-icon svg path,.files-list[data-v-76316b7f] .files-list__row--active .favorite-marker-icon svg path,.files-list[data-v-76316b7f] .files-list__row--dragover .favorite-marker-icon svg path{stroke:var(--color-background-hover)}.files-list[data-v-76316b7f] .files-list__row--dragover *{pointer-events:none}.files-list[data-v-76316b7f] .files-list__row-icon{position:relative;display:flex;overflow:visible;align-items:center;flex:0 0 var(--icon-preview-size);justify-content:center;width:var(--icon-preview-size);height:100%;margin-inline-end:var(--checkbox-padding);color:var(--color-primary-element)}.files-list[data-v-76316b7f] .files-list__row-icon *{cursor:pointer}.files-list[data-v-76316b7f] .files-list__row-icon>span{justify-content:flex-start}.files-list[data-v-76316b7f] .files-list__row-icon>span:not(.files-list__row-icon-favorite) svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list[data-v-76316b7f] .files-list__row-icon>span.folder-icon,.files-list[data-v-76316b7f] .files-list__row-icon>span.folder-open-icon{margin:-3px}.files-list[data-v-76316b7f] .files-list__row-icon>span.folder-icon svg,.files-list[data-v-76316b7f] .files-list__row-icon>span.folder-open-icon svg{width:calc(var(--icon-preview-size) + 6px);height:calc(var(--icon-preview-size) + 6px)}.files-list[data-v-76316b7f] .files-list__row-icon-preview-container{position:relative;overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius)}.files-list[data-v-76316b7f] .files-list__row-icon-blurhash{position:absolute;inset-block-start:0;inset-inline-start:0;height:100%;width:100%;object-fit:cover}.files-list[data-v-76316b7f] .files-list__row-icon-preview{object-fit:contain;object-position:center;height:100%;width:100%}.files-list[data-v-76316b7f] .files-list__row-icon-preview:not(.files-list__row-icon-preview--loaded){background:var(--color-loading-dark)}.files-list[data-v-76316b7f] .files-list__row-icon-favorite{position:absolute;top:0px;inset-inline-end:-10px}.files-list[data-v-76316b7f] .files-list__row-icon-overlay{position:absolute;max-height:calc(var(--icon-preview-size)*.5);max-width:calc(var(--icon-preview-size)*.5);color:var(--color-primary-element-text);margin-block-start:2px}.files-list[data-v-76316b7f] .files-list__row-icon-overlay--file{color:var(--color-main-text);background:var(--color-main-background);border-radius:100%}.files-list[data-v-76316b7f] .files-list__row-name{overflow:hidden;flex:1 1 auto}.files-list[data-v-76316b7f] .files-list__row-name button.files-list__row-name-link{display:flex;align-items:center;text-align:start;width:100%;height:100%;min-width:0;margin:0;padding:0}.files-list[data-v-76316b7f] .files-list__row-name button.files-list__row-name-link:focus-visible{outline:none !important}.files-list[data-v-76316b7f] .files-list__row-name button.files-list__row-name-link:focus .files-list__row-name-text{outline:var(--border-width-input-focused) solid var(--color-main-text) !important;border-radius:var(--border-radius-element)}.files-list[data-v-76316b7f] .files-list__row-name button.files-list__row-name-link:focus:not(:focus-visible) .files-list__row-name-text{outline:none !important}.files-list[data-v-76316b7f] .files-list__row-name .files-list__row-name-text{color:var(--color-main-text);padding:var(--default-grid-baseline) calc(2*var(--default-grid-baseline));padding-inline-start:-10px;display:inline-flex}.files-list[data-v-76316b7f] .files-list__row-name .files-list__row-name-ext{color:var(--color-text-maxcontrast);overflow:visible}.files-list[data-v-76316b7f] .files-list__row-rename{width:100%;max-width:600px}.files-list[data-v-76316b7f] .files-list__row-rename input{width:100%;margin-inline-start:-8px;padding:2px 6px;border-width:2px}.files-list[data-v-76316b7f] .files-list__row-rename input:invalid{border-color:var(--color-error);color:red}.files-list[data-v-76316b7f] .files-list__row-actions{width:auto}.files-list[data-v-76316b7f] .files-list__row-actions~td,.files-list[data-v-76316b7f] .files-list__row-actions~th{margin:0 var(--cell-margin)}.files-list[data-v-76316b7f] .files-list__row-actions button .button-vue__text{font-weight:normal}.files-list[data-v-76316b7f] .files-list__row-action--inline{margin-inline-end:7px}.files-list[data-v-76316b7f] .files-list__row-mtime,.files-list[data-v-76316b7f] .files-list__row-size{color:var(--color-text-maxcontrast)}.files-list[data-v-76316b7f] .files-list__row-size{width:calc(var(--row-height)*1.5);justify-content:flex-end}.files-list[data-v-76316b7f] .files-list__row-mtime{width:calc(var(--row-height)*2)}.files-list[data-v-76316b7f] .files-list__row-column-custom{width:calc(var(--row-height)*2)}@media screen and (max-width: 512px){.files-list[data-v-76316b7f] .files-list__filters{padding-inline:var(--default-grid-baseline, 4px)}}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListVirtual.vue"],names:[],mappings:"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",sourceRoot:""}]);const o=r},61579:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,'tbody.files-list__tbody.files-list__tbody--grid{--half-clickable-area: calc(var(--clickable-area) / 2);--item-padding: 16px;--icon-preview-size: 166px;--name-height: 32px;--mtime-height: 16px;--row-width: calc(var(--icon-preview-size) + var(--item-padding) * 2);--row-height: calc(var(--icon-preview-size) + var(--name-height) + var(--mtime-height) + var(--item-padding) * 2);--checkbox-padding: 0px;display:grid;grid-template-columns:repeat(auto-fill, var(--row-width));align-content:center;align-items:center;justify-content:space-around;justify-items:center}tbody.files-list__tbody.files-list__tbody--grid tr{display:flex;flex-direction:column;width:var(--row-width);height:var(--row-height);border:none;border-radius:var(--border-radius-large);padding:var(--item-padding)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-checkbox{position:absolute;z-index:9;top:calc(var(--item-padding)/2);inset-inline-start:calc(var(--item-padding)/2);overflow:hidden;--checkbox-container-size: 44px;width:var(--checkbox-container-size);height:var(--checkbox-container-size)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-checkbox .checkbox-radio-switch__content::after{content:"";width:16px;height:16px;position:absolute;inset-inline-start:50%;margin-inline-start:-8px;z-index:-1;background:var(--color-main-background)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-icon-favorite{position:absolute;top:0;inset-inline-end:0;display:flex;align-items:center;justify-content:center;width:var(--clickable-area);height:var(--clickable-area)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-name{display:flex;flex-direction:column;width:var(--icon-preview-size);height:calc(var(--icon-preview-size) + var(--name-height));overflow:visible}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-name span.files-list__row-icon{width:var(--icon-preview-size);height:var(--icon-preview-size)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-name .files-list__row-name-text{margin:0;margin-inline-start:-4px;padding:0px 4px}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-mtime{width:var(--icon-preview-size);height:var(--mtime-height);font-size:calc(var(--default-font-size) - 4px)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-actions{position:absolute;inset-inline-end:calc(var(--half-clickable-area)/2);inset-block-end:calc(var(--mtime-height)/2);width:var(--clickable-area);height:var(--clickable-area)}',"",{version:3,sources:["webpack://./apps/files/src/components/FilesListVirtual.vue"],names:[],mappings:"AAEA,gDACC,sDAAA,CACA,oBAAA,CACA,0BAAA,CACA,mBAAA,CACA,oBAAA,CACA,qEAAA,CACA,iHAAA,CACA,uBAAA,CACA,YAAA,CACA,yDAAA,CAEA,oBAAA,CACA,kBAAA,CACA,4BAAA,CACA,oBAAA,CAEA,mDACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,wBAAA,CACA,WAAA,CACA,wCAAA,CACA,2BAAA,CAID,0EACC,iBAAA,CACA,SAAA,CACA,+BAAA,CACA,8CAAA,CACA,eAAA,CACA,+BAAA,CACA,oCAAA,CACA,qCAAA,CAGA,iHACC,UAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,sBAAA,CACA,wBAAA,CACA,UAAA,CACA,uCAAA,CAKF,+EACC,iBAAA,CACA,KAAA,CACA,kBAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,2BAAA,CACA,4BAAA,CAGD,sEACC,YAAA,CACA,qBAAA,CACA,8BAAA,CACA,0DAAA,CAEA,gBAAA,CAEA,gGACC,8BAAA,CACA,+BAAA,CAGD,iGACC,QAAA,CAEA,wBAAA,CACA,eAAA,CAIF,uEACC,8BAAA,CACA,0BAAA,CACA,8CAAA,CAGD,yEACC,iBAAA,CACA,mDAAA,CACA,2CAAA,CACA,2BAAA,CACA,4BAAA",sourceRoot:""}]);const o=r},84877:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".app-navigation-entry__settings-quota[data-v-6ed9379e]{--app-navigation-quota-margin: calc((var(--default-clickable-area) - 24px) / 2)}.app-navigation-entry__settings-quota--not-unlimited[data-v-6ed9379e] .app-navigation-entry__name{line-height:1;margin-top:var(--app-navigation-quota-margin)}.app-navigation-entry__settings-quota progress[data-v-6ed9379e]{position:absolute;bottom:var(--app-navigation-quota-margin);margin-inline-start:var(--default-clickable-area);width:calc(100% - 1.5*var(--default-clickable-area))}","",{version:3,sources:["webpack://./apps/files/src/components/NavigationQuota.vue"],names:[],mappings:"AAEA,uDAEC,+EAAA,CAEA,kGACC,aAAA,CACA,6CAAA,CAGD,gEACC,iBAAA,CACA,yCAAA,CACA,iDAAA,CACA,oDAAA",sourceRoot:""}]);const o=r},24271:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".toast-loading-icon{margin-inline-start:-4px;min-width:26px}.app-content[data-v-0d5ddd73]{display:flex;overflow:hidden;flex-direction:column;max-height:100%;position:relative !important}.files-list__header[data-v-0d5ddd73]{display:flex;align-items:center;flex:0 0;max-width:100%;margin-block:var(--app-navigation-padding, 4px);margin-inline:calc(var(--default-clickable-area, 44px) + 2*var(--app-navigation-padding, 4px)) var(--app-navigation-padding, 4px)}.files-list__header--public[data-v-0d5ddd73]{margin-inline:0 var(--app-navigation-padding, 4px)}.files-list__header>*[data-v-0d5ddd73]{flex:0 0}.files-list__header-share-button[data-v-0d5ddd73]{color:var(--color-text-maxcontrast) !important}.files-list__header-share-button--shared[data-v-0d5ddd73]{color:var(--color-main-text) !important}.files-list__empty-view-wrapper[data-v-0d5ddd73]{display:flex;height:100%}.files-list__refresh-icon[data-v-0d5ddd73]{flex:0 0 var(--default-clickable-area);width:var(--default-clickable-area);height:var(--default-clickable-area)}.files-list__loading-icon[data-v-0d5ddd73]{margin:auto}","",{version:3,sources:["webpack://./apps/files/src/views/FilesList.vue"],names:[],mappings:"AACA,oBAEC,wBAAA,CAEA,cAAA,CAGD,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CACA,4BAAA,CAIA,qCACC,YAAA,CACA,kBAAA,CAEA,QAAA,CACA,cAAA,CAEA,+CAAA,CACA,iIAAA,CAEA,6CAEC,kDAAA,CAGD,uCAGC,QAAA,CAGD,kDACC,8CAAA,CAEA,0DACC,uCAAA,CAKH,iDACC,YAAA,CACA,WAAA,CAGD,2CACC,sCAAA,CACA,mCAAA,CACA,oCAAA,CAGD,2CACC,WAAA",sourceRoot:""}]);const o=r},16912:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".app-navigation[data-v-008142f0] .app-navigation-entry.active .button-vue.icon-collapse:not(:hover){color:var(--color-primary-element-text)}.app-navigation>ul.app-navigation__list[data-v-008142f0]{padding-bottom:var(--default-grid-baseline, 4px)}.app-navigation-entry__settings[data-v-008142f0]{height:auto !important;overflow:hidden !important;padding-top:0 !important;flex:0 0 auto}.files-navigation__list[data-v-008142f0]{height:100%}.files-navigation[data-v-008142f0] .app-navigation__content > ul.app-navigation__list{will-change:scroll-position}","",{version:3,sources:["webpack://./apps/files/src/views/Navigation.vue"],names:[],mappings:"AAEC,oGACC,uCAAA,CAGD,yDAEC,gDAAA,CAIF,iDACC,sBAAA,CACA,0BAAA,CACA,wBAAA,CAEA,aAAA,CAIA,yCACC,WAAA,CAGD,sFACC,2BAAA",sourceRoot:""}]);const o=r},66921:(e,t,s)=>{s.d(t,{A:()=>o});var i=s(71354),n=s.n(i),a=s(76314),r=s.n(a)()(n());r.push([e.id,".setting-link[data-v-23881b2c]:hover{text-decoration:underline}","",{version:3,sources:["webpack://./apps/files/src/views/Settings.vue"],names:[],mappings:"AACA,qCACC,yBAAA",sourceRoot:""}]);const o=r},35810:(e,t,s)=>{s.d(t,{Al:()=>i.r,By:()=>p,Dw:()=>xt,E6:()=>A,H4:()=>i.c,KT:()=>v,L3:()=>bt,PY:()=>i.b,Q$:()=>i.e,R3:()=>i.n,Ss:()=>Ye,VL:()=>i.l,ZH:()=>i.q,a7:()=>d,aX:()=>i.P,bP:()=>i.N,bh:()=>T,cZ:()=>yt,di:()=>w,g5:()=>f,hY:()=>u,lJ:()=>i.d,m1:()=>kt,m9:()=>c,nF:()=>h,pt:()=>i.F,qK:()=>g,sR:()=>_t,ur:()=>_,v7:()=>y,vd:()=>i.s,zI:()=>i.t});var i=s(29719),n=s(87485),a=s(43627),r=s(53334),o=s(380),l=s(65606),d=(e=>(e[e.UploadFromDevice=0]="UploadFromDevice",e[e.CreateNew=1]="CreateNew",e[e.Other=2]="Other",e))(d||{});class m{_entries=[];registerEntry(e){this.validateEntry(e),e.category=e.category??1,this._entries.push(e)}unregisterEntry(e){const t="string"==typeof e?this.getEntryIndex(e):this.getEntryIndex(e.id);-1!==t?this._entries.splice(t,1):i.o.warn("Entry not found, nothing removed",{entry:e,entries:this.getEntries()})}getEntries(e){return e?this._entries.filter((t=>"function"!=typeof t.enabled||t.enabled(e))):this._entries}getEntryIndex(e){return this._entries.findIndex((t=>t.id===e))}validateEntry(e){if(!e.id||!e.displayName||!e.iconSvgInline&&!e.iconClass||!e.handler)throw new Error("Invalid entry");if("string"!=typeof e.id||"string"!=typeof e.displayName)throw new Error("Invalid id or displayName property");if(e.iconClass&&"string"!=typeof e.iconClass||e.iconSvgInline&&"string"!=typeof e.iconSvgInline)throw new Error("Invalid icon provided");if(void 0!==e.enabled&&"function"!=typeof e.enabled)throw new Error("Invalid enabled property");if("function"!=typeof e.handler)throw new Error("Invalid handler property");if("order"in e&&"number"!=typeof e.order)throw new Error("Invalid order property");if(-1!==this.getEntryIndex(e.id))throw new Error("Duplicate entry")}}var c=(e=>(e.DEFAULT="default",e.HIDDEN="hidden",e))(c||{});class u{_action;constructor(e){this.validateAction(e),this._action=e}get id(){return this._action.id}get displayName(){return this._action.displayName}get title(){return this._action.title}get iconSvgInline(){return this._action.iconSvgInline}get enabled(){return this._action.enabled}get exec(){return this._action.exec}get execBatch(){return this._action.execBatch}get order(){return this._action.order}get parent(){return this._action.parent}get default(){return this._action.default}get destructive(){return this._action.destructive}get inline(){return this._action.inline}get renderInline(){return this._action.renderInline}validateAction(e){if(!e.id||"string"!=typeof e.id)throw new Error("Invalid id");if(!e.displayName||"function"!=typeof e.displayName)throw new Error("Invalid displayName function");if("title"in e&&"function"!=typeof e.title)throw new Error("Invalid title function");if(!e.iconSvgInline||"function"!=typeof e.iconSvgInline)throw new Error("Invalid iconSvgInline function");if(!e.exec||"function"!=typeof e.exec)throw new Error("Invalid exec function");if("enabled"in e&&"function"!=typeof e.enabled)throw new Error("Invalid enabled function");if("execBatch"in e&&"function"!=typeof e.execBatch)throw new Error("Invalid execBatch function");if("order"in e&&"number"!=typeof e.order)throw new Error("Invalid order");if(void 0!==e.destructive&&"boolean"!=typeof e.destructive)throw new Error("Invalid destructive flag");if("parent"in e&&"string"!=typeof e.parent)throw new Error("Invalid parent");if(e.default&&!Object.values(c).includes(e.default))throw new Error("Invalid default");if("inline"in e&&"function"!=typeof e.inline)throw new Error("Invalid inline function");if("renderInline"in e&&"function"!=typeof e.renderInline)throw new Error("Invalid renderInline function")}}const g=function(){return void 0===window._nc_fileactions&&(window._nc_fileactions=[],i.o.debug("FileActions initialized")),window._nc_fileactions},f=()=>(void 0===window._nc_filelistactions&&(window._nc_filelistactions=[]),window._nc_filelistactions),p=function(){return void 0===window._nc_filelistheader&&(window._nc_filelistheader=[],i.o.debug("FileListHeaders initialized")),window._nc_filelistheader};var h=(e=>(e.ReservedName="reserved name",e.Character="character",e.Extension="extension",e))(h||{});class w extends Error{constructor(e){super(`Invalid ${e.reason} '${e.segment}' in filename '${e.filename}'`,{cause:e})}get filename(){return this.cause.filename}get reason(){return this.cause.reason}get segment(){return this.cause.segment}}function v(e){const t=(0,n.F)().files,s=t.forbidden_filename_characters??window._oc_config?.forbidden_filenames_characters??["/","\\"];for(const t of s)if(e.includes(t))throw new w({segment:t,reason:"character",filename:e});if(e=e.toLocaleLowerCase(),(t.forbidden_filenames??[".htaccess"]).includes(e))throw new w({filename:e,segment:e,reason:"reserved name"});const i=e.indexOf(".",1),a=e.substring(0,-1===i?void 0:i);if((t.forbidden_filename_basenames??[]).includes(a))throw new w({filename:e,segment:a,reason:"reserved name"});const r=t.forbidden_filename_extensions??[".part",".filepart"];for(const t of r)if(e.length>t.length&&e.endsWith(t))throw new w({segment:t,reason:"extension",filename:e})}function A(e,t,s){const i={suffix:e=>`(${e})`,ignoreFileExtension:!1,...s};let n=e,r=1;for(;t.includes(n);){const t=i.ignoreFileExtension?"":(0,a.extname)(e);n=`${(0,a.basename)(e,t)} ${i.suffix(r++)}${t}`}return n}const C=["B","KB","MB","GB","TB","PB"],b=["B","KiB","MiB","GiB","TiB","PiB"];function y(e,t=!1,s=!1,i=!1){s=s&&!i,"string"==typeof e&&(e=Number(e));let n=e>0?Math.floor(Math.log(e)/Math.log(i?1e3:1024)):0;n=Math.min((s?b.length:C.length)-1,n);const a=s?b[n]:C[n];let o=(e/Math.pow(i?1e3:1024,n)).toFixed(1);return!0===t&&0===n?("0.0"!==o?"< 1 ":"0 ")+(s?b[1]:C[1]):(o=n<2?parseFloat(o).toFixed(0):parseFloat(o).toLocaleString((0,r.lO)()),o+" "+a)}function x(e){return e instanceof Date?e.toISOString():String(e)}function _(e,t={}){const s={sortingMode:"basename",sortingOrder:"asc",...t};return function(e,t,s){s=s??[];const i=(t=t??[e=>e]).map(((e,t)=>"asc"===(s[t]??"asc")?1:-1)),n=Intl.Collator([(0,r.Z0)(),(0,r.lO)()],{numeric:!0,usage:"sort"});return[...e].sort(((e,s)=>{for(const[a,r]of t.entries()){const t=n.compare(x(r(e)),x(r(s)));if(0!==t)return t*i[a]}return 0}))}(e,[...s.sortFavoritesFirst?[e=>1!==e.attributes?.favorite]:[],...s.sortFoldersFirst?[e=>"folder"!==e.type]:[],..."basename"!==s.sortingMode?[e=>e[s.sortingMode]]:[],e=>{return(t=e.displayname||e.attributes?.displayname||e.basename).lastIndexOf(".")>0?t.slice(0,t.lastIndexOf(".")):t;var t},e=>e.basename],[...s.sortFavoritesFirst?["asc"]:[],...s.sortFoldersFirst?["asc"]:[],..."mtime"===s.sortingMode?["asc"===s.sortingOrder?"desc":"asc"]:[],..."mtime"!==s.sortingMode&&"basename"!==s.sortingMode?[s.sortingOrder]:[],s.sortingOrder,s.sortingOrder])}class k extends o.m{_views=[];_currentView=null;register(e){if(this._views.find((t=>t.id===e.id)))throw new Error(`View id ${e.id} is already registered`);this._views.push(e),this.dispatchTypedEvent("update",new CustomEvent("update"))}remove(e){const t=this._views.findIndex((t=>t.id===e));-1!==t&&(this._views.splice(t,1),this.dispatchTypedEvent("update",new CustomEvent("update")))}setActive(e){this._currentView=e;const t=new CustomEvent("updateActive",{detail:e});this.dispatchTypedEvent("updateActive",t)}get active(){return this._currentView}get views(){return this._views}}const T=function(){return void 0===window._nc_navigation&&(window._nc_navigation=new k,i.o.debug("Navigation service initialized")),window._nc_navigation};class S{_column;constructor(e){L(e),this._column=e}get id(){return this._column.id}get title(){return this._column.title}get render(){return this._column.render}get sort(){return this._column.sort}get summary(){return this._column.summary}}const L=function(e){if(!e.id||"string"!=typeof e.id)throw new Error("A column id is required");if(!e.title||"string"!=typeof e.title)throw new Error("A column title is required");if(!e.render||"function"!=typeof e.render)throw new Error("A render function is required");if(e.sort&&"function"!=typeof e.sort)throw new Error("Column sortFunction must be a function");if(e.summary&&"function"!=typeof e.summary)throw new Error("Column summary must be a function");return!0};function N(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var F={},E={};!function(e){const t=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",s="["+t+"]["+t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",i=new RegExp("^"+s+"$");e.isExist=function(e){return void 0!==e},e.isEmptyObject=function(e){return 0===Object.keys(e).length},e.merge=function(e,t,s){if(t){const i=Object.keys(t),n=i.length;for(let a=0;a<n;a++)e[i[a]]="strict"===s?[t[i[a]]]:t[i[a]]}},e.getValue=function(t){return e.isExist(t)?t:""},e.isName=function(e){return!(null==i.exec(e))},e.getAllMatches=function(e,t){const s=[];let i=t.exec(e);for(;i;){const n=[];n.startIndex=t.lastIndex-i[0].length;const a=i.length;for(let e=0;e<a;e++)n.push(i[e]);s.push(n),i=t.exec(e)}return s},e.nameRegexp=s}(E);const U=E,I={allowBooleanAttributes:!1,unpairedTags:[]};function P(e){return" "===e||"\t"===e||"\n"===e||"\r"===e}function B(e,t){const s=t;for(;t<e.length;t++)if("?"!=e[t]&&" "!=e[t]);else{const i=e.substr(s,t-s);if(t>5&&"xml"===i)return $("InvalidXml","XML declaration allowed only at the start of the document.",H(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function z(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t<e.length;t++)if("-"===e[t]&&"-"===e[t+1]&&">"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let s=1;for(t+=8;t<e.length;t++)if("<"===e[t])s++;else if(">"===e[t]&&(s--,0===s))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t<e.length;t++)if("]"===e[t]&&"]"===e[t+1]&&">"===e[t+2]){t+=2;break}return t}F.validate=function(e,t){t=Object.assign({},I,t);const s=[];let i=!1,n=!1;"\ufeff"===e[0]&&(e=e.substr(1));for(let r=0;r<e.length;r++)if("<"===e[r]&&"?"===e[r+1]){if(r+=2,r=B(e,r),r.err)return r}else{if("<"!==e[r]){if(P(e[r]))continue;return $("InvalidChar","char '"+e[r]+"' is not expected.",H(e,r))}{let o=r;if(r++,"!"===e[r]){r=z(e,r);continue}{let l=!1;"/"===e[r]&&(l=!0,r++);let d="";for(;r<e.length&&">"!==e[r]&&" "!==e[r]&&"\t"!==e[r]&&"\n"!==e[r]&&"\r"!==e[r];r++)d+=e[r];if(d=d.trim(),"/"===d[d.length-1]&&(d=d.substring(0,d.length-1),r--),a=d,!U.isName(a)){let t;return t=0===d.trim().length?"Invalid space after '<'.":"Tag '"+d+"' is an invalid name.",$("InvalidTag",t,H(e,r))}const m=R(e,r);if(!1===m)return $("InvalidAttr","Attributes for '"+d+"' have open quote.",H(e,r));let c=m.value;if(r=m.index,"/"===c[c.length-1]){const s=r-c.length;c=c.substring(0,c.length-1);const n=M(c,t);if(!0!==n)return $(n.err.code,n.err.msg,H(e,s+n.err.line));i=!0}else if(l){if(!m.tagClosed)return $("InvalidTag","Closing tag '"+d+"' doesn't have proper closing.",H(e,r));if(c.trim().length>0)return $("InvalidTag","Closing tag '"+d+"' can't have attributes or invalid starting.",H(e,o));if(0===s.length)return $("InvalidTag","Closing tag '"+d+"' has not been opened.",H(e,o));{const t=s.pop();if(d!==t.tagName){let s=H(e,t.tagStartPos);return $("InvalidTag","Expected closing tag '"+t.tagName+"' (opened in line "+s.line+", col "+s.col+") instead of closing tag '"+d+"'.",H(e,o))}0==s.length&&(n=!0)}}else{const a=M(c,t);if(!0!==a)return $(a.err.code,a.err.msg,H(e,r-c.length+a.err.line));if(!0===n)return $("InvalidXml","Multiple possible root nodes found.",H(e,r));-1!==t.unpairedTags.indexOf(d)||s.push({tagName:d,tagStartPos:o}),i=!0}for(r++;r<e.length;r++)if("<"===e[r]){if("!"===e[r+1]){r++,r=z(e,r);continue}if("?"!==e[r+1])break;if(r=B(e,++r),r.err)return r}else if("&"===e[r]){const t=V(e,r);if(-1==t)return $("InvalidChar","char '&' is not expected.",H(e,r));r=t}else if(!0===n&&!P(e[r]))return $("InvalidXml","Extra text at the end",H(e,r));"<"===e[r]&&r--}}}var a;return i?1==s.length?$("InvalidTag","Unclosed tag '"+s[0].tagName+"'.",H(e,s[0].tagStartPos)):!(s.length>0)||$("InvalidXml","Invalid '"+JSON.stringify(s.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):$("InvalidXml","Start tag expected.",1)};const D='"',O="'";function R(e,t){let s="",i="",n=!1;for(;t<e.length;t++){if(e[t]===D||e[t]===O)""===i?i=e[t]:i!==e[t]||(i="");else if(">"===e[t]&&""===i){n=!0;break}s+=e[t]}return""===i&&{value:s,index:t,tagClosed:n}}const j=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function M(e,t){const s=U.getAllMatches(e,j),i={};for(let e=0;e<s.length;e++){if(0===s[e][1].length)return $("InvalidAttr","Attribute '"+s[e][2]+"' has no space in starting.",q(s[e]));if(void 0!==s[e][3]&&void 0===s[e][4])return $("InvalidAttr","Attribute '"+s[e][2]+"' is without value.",q(s[e]));if(void 0===s[e][3]&&!t.allowBooleanAttributes)return $("InvalidAttr","boolean attribute '"+s[e][2]+"' is not allowed.",q(s[e]));const n=s[e][2];if(!W(n))return $("InvalidAttr","Attribute '"+n+"' is an invalid name.",q(s[e]));if(i.hasOwnProperty(n))return $("InvalidAttr","Attribute '"+n+"' is repeated.",q(s[e]));i[n]=1}return!0}function V(e,t){if(";"===e[++t])return-1;if("#"===e[t])return function(e,t){let s=/\d/;for("x"===e[t]&&(t++,s=/[\da-fA-F]/);t<e.length;t++){if(";"===e[t])return t;if(!e[t].match(s))break}return-1}(e,++t);let s=0;for(;t<e.length;t++,s++)if(!(e[t].match(/\w/)&&s<20)){if(";"===e[t])break;return-1}return t}function $(e,t,s){return{err:{code:e,msg:t,line:s.line||s,col:s.col}}}function W(e){return U.isName(e)}function H(e,t){const s=e.substring(0,t).split(/\r?\n/);return{line:s.length,col:s[s.length-1].length+1}}function q(e){return e.startIndex+e[1].length}var G={};const Y={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,s){return e}};G.buildOptions=function(e){return Object.assign({},Y,e)},G.defaultOptions=Y;const K=E;function Q(e,t){let s="";for(;t<e.length&&"'"!==e[t]&&'"'!==e[t];t++)s+=e[t];if(s=s.trim(),-1!==s.indexOf(" "))throw new Error("External entites are not supported");const i=e[t++];let n="";for(;t<e.length&&e[t]!==i;t++)n+=e[t];return[s,n,t]}function J(e,t){return"!"===e[t+1]&&"-"===e[t+2]&&"-"===e[t+3]}function X(e,t){return"!"===e[t+1]&&"E"===e[t+2]&&"N"===e[t+3]&&"T"===e[t+4]&&"I"===e[t+5]&&"T"===e[t+6]&&"Y"===e[t+7]}function Z(e,t){return"!"===e[t+1]&&"E"===e[t+2]&&"L"===e[t+3]&&"E"===e[t+4]&&"M"===e[t+5]&&"E"===e[t+6]&&"N"===e[t+7]&&"T"===e[t+8]}function ee(e,t){return"!"===e[t+1]&&"A"===e[t+2]&&"T"===e[t+3]&&"T"===e[t+4]&&"L"===e[t+5]&&"I"===e[t+6]&&"S"===e[t+7]&&"T"===e[t+8]}function te(e,t){return"!"===e[t+1]&&"N"===e[t+2]&&"O"===e[t+3]&&"T"===e[t+4]&&"A"===e[t+5]&&"T"===e[t+6]&&"I"===e[t+7]&&"O"===e[t+8]&&"N"===e[t+9]}function se(e){if(K.isName(e))return e;throw new Error(`Invalid entity name ${e}`)}const ie=/^[-+]?0x[a-fA-F0-9]+$/,ne=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const ae={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};var re=function(e){return"function"==typeof e?e:Array.isArray(e)?t=>{for(const s of e){if("string"==typeof s&&t===s)return!0;if(s instanceof RegExp&&s.test(t))return!0}}:()=>!1};const oe=E,le=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}},de=function(e,t){const s={};if("O"!==e[t+3]||"C"!==e[t+4]||"T"!==e[t+5]||"Y"!==e[t+6]||"P"!==e[t+7]||"E"!==e[t+8])throw new Error("Invalid Tag instead of DOCTYPE");{t+=9;let i=1,n=!1,a=!1,r="";for(;t<e.length;t++)if("<"!==e[t]||a)if(">"===e[t]){if(a?"-"===e[t-1]&&"-"===e[t-2]&&(a=!1,i--):i--,0===i)break}else"["===e[t]?n=!0:r+=e[t];else{if(n&&X(e,t))t+=7,[entityName,val,t]=Q(e,t+1),-1===val.indexOf("&")&&(s[se(entityName)]={regx:RegExp(`&${entityName};`,"g"),val});else if(n&&Z(e,t))t+=8;else if(n&&ee(e,t))t+=8;else if(n&&te(e,t))t+=9;else{if(!J)throw new Error("Invalid DOCTYPE");a=!0}i++,r=""}if(0!==i)throw new Error("Unclosed DOCTYPE")}return{entities:s,i:t}},me=function(e,t={}){if(t=Object.assign({},ae,t),!e||"string"!=typeof e)return e;let s=e.trim();if(void 0!==t.skipLike&&t.skipLike.test(s))return e;if(t.hex&&ie.test(s))return Number.parseInt(s,16);{const n=ne.exec(s);if(n){const a=n[1],r=n[2];let o=(i=n[3])&&-1!==i.indexOf(".")?("."===(i=i.replace(/0+$/,""))?i="0":"."===i[0]?i="0"+i:"."===i[i.length-1]&&(i=i.substr(0,i.length-1)),i):i;const l=n[4]||n[6];if(!t.leadingZeros&&r.length>0&&a&&"."!==s[2])return e;if(!t.leadingZeros&&r.length>0&&!a&&"."!==s[1])return e;{const i=Number(s),n=""+i;return-1!==n.search(/[eE]/)||l?t.eNotation?i:e:-1!==s.indexOf(".")?"0"===n&&""===o||n===o||a&&n==="-"+o?i:e:r?o===n||a+o===n?i:e:s===n||s===a+n?i:e}}return e}var i},ce=re;function ue(e){const t=Object.keys(e);for(let s=0;s<t.length;s++){const i=t[s];this.lastEntities[i]={regex:new RegExp("&"+i+";","g"),val:e[i]}}}function ge(e,t,s,i,n,a,r){if(void 0!==e&&(this.options.trimValues&&!i&&(e=e.trim()),e.length>0)){r||(e=this.replaceEntitiesValue(e));const i=this.options.tagValueProcessor(t,e,s,n,a);return null==i?e:typeof i!=typeof e||i!==e?i:this.options.trimValues||e.trim()===e?ke(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function fe(e){if(this.options.removeNSPrefix){const t=e.split(":"),s="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=s+t[1])}return e}const pe=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function he(e,t,s){if(!0!==this.options.ignoreAttributes&&"string"==typeof e){const s=oe.getAllMatches(e,pe),i=s.length,n={};for(let e=0;e<i;e++){const i=this.resolveNameSpace(s[e][1]);if(this.ignoreAttributesFn(i,t))continue;let a=s[e][4],r=this.options.attributeNamePrefix+i;if(i.length)if(this.options.transformAttributeName&&(r=this.options.transformAttributeName(r)),"__proto__"===r&&(r="#__proto__"),void 0!==a){this.options.trimValues&&(a=a.trim()),a=this.replaceEntitiesValue(a);const e=this.options.attributeValueProcessor(i,a,t);n[r]=null==e?a:typeof e!=typeof a||e!==a?e:ke(a,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(n[r]=!0)}if(!Object.keys(n).length)return;if(this.options.attributesGroupName){const e={};return e[this.options.attributesGroupName]=n,e}return n}}const we=function(e){e=e.replace(/\r\n?/g,"\n");const t=new le("!xml");let s=t,i="",n="";for(let a=0;a<e.length;a++)if("<"===e[a])if("/"===e[a+1]){const t=ye(e,">",a,"Closing Tag is not closed.");let r=e.substring(a+2,t).trim();if(this.options.removeNSPrefix){const e=r.indexOf(":");-1!==e&&(r=r.substr(e+1))}this.options.transformTagName&&(r=this.options.transformTagName(r)),s&&(i=this.saveTextToParentTag(i,s,n));const o=n.substring(n.lastIndexOf(".")+1);if(r&&-1!==this.options.unpairedTags.indexOf(r))throw new Error(`Unpaired tag can not be used as closing tag: </${r}>`);let l=0;o&&-1!==this.options.unpairedTags.indexOf(o)?(l=n.lastIndexOf(".",n.lastIndexOf(".")-1),this.tagsNodeStack.pop()):l=n.lastIndexOf("."),n=n.substring(0,l),s=this.tagsNodeStack.pop(),i="",a=t}else if("?"===e[a+1]){let t=xe(e,a,!1,"?>");if(!t)throw new Error("Pi Tag is not closed.");if(i=this.saveTextToParentTag(i,s,n),this.options.ignoreDeclaration&&"?xml"===t.tagName||this.options.ignorePiTags);else{const e=new le(t.tagName);e.add(this.options.textNodeName,""),t.tagName!==t.tagExp&&t.attrExpPresent&&(e[":@"]=this.buildAttributesMap(t.tagExp,n,t.tagName)),this.addChild(s,e,n)}a=t.closeIndex+1}else if("!--"===e.substr(a+1,3)){const t=ye(e,"--\x3e",a+4,"Comment is not closed.");if(this.options.commentPropName){const r=e.substring(a+4,t-2);i=this.saveTextToParentTag(i,s,n),s.add(this.options.commentPropName,[{[this.options.textNodeName]:r}])}a=t}else if("!D"===e.substr(a+1,2)){const t=de(e,a);this.docTypeEntities=t.entities,a=t.i}else if("!["===e.substr(a+1,2)){const t=ye(e,"]]>",a,"CDATA is not closed.")-2,r=e.substring(a+9,t);i=this.saveTextToParentTag(i,s,n);let o=this.parseTextData(r,s.tagname,n,!0,!1,!0,!0);null==o&&(o=""),this.options.cdataPropName?s.add(this.options.cdataPropName,[{[this.options.textNodeName]:r}]):s.add(this.options.textNodeName,o),a=t+2}else{let r=xe(e,a,this.options.removeNSPrefix),o=r.tagName;const l=r.rawTagName;let d=r.tagExp,m=r.attrExpPresent,c=r.closeIndex;this.options.transformTagName&&(o=this.options.transformTagName(o)),s&&i&&"!xml"!==s.tagname&&(i=this.saveTextToParentTag(i,s,n,!1));const u=s;if(u&&-1!==this.options.unpairedTags.indexOf(u.tagname)&&(s=this.tagsNodeStack.pop(),n=n.substring(0,n.lastIndexOf("."))),o!==t.tagname&&(n+=n?"."+o:o),this.isItStopNode(this.options.stopNodes,n,o)){let t="";if(d.length>0&&d.lastIndexOf("/")===d.length-1)"/"===o[o.length-1]?(o=o.substr(0,o.length-1),n=n.substr(0,n.length-1),d=o):d=d.substr(0,d.length-1),a=r.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(o))a=r.closeIndex;else{const s=this.readStopNodeData(e,l,c+1);if(!s)throw new Error(`Unexpected end of ${l}`);a=s.i,t=s.tagContent}const i=new le(o);o!==d&&m&&(i[":@"]=this.buildAttributesMap(d,n,o)),t&&(t=this.parseTextData(t,o,n,!0,m,!0,!0)),n=n.substr(0,n.lastIndexOf(".")),i.add(this.options.textNodeName,t),this.addChild(s,i,n)}else{if(d.length>0&&d.lastIndexOf("/")===d.length-1){"/"===o[o.length-1]?(o=o.substr(0,o.length-1),n=n.substr(0,n.length-1),d=o):d=d.substr(0,d.length-1),this.options.transformTagName&&(o=this.options.transformTagName(o));const e=new le(o);o!==d&&m&&(e[":@"]=this.buildAttributesMap(d,n,o)),this.addChild(s,e,n),n=n.substr(0,n.lastIndexOf("."))}else{const e=new le(o);this.tagsNodeStack.push(s),o!==d&&m&&(e[":@"]=this.buildAttributesMap(d,n,o)),this.addChild(s,e,n),s=e}i="",a=c}}else i+=e[a];return t.child};function ve(e,t,s){const i=this.options.updateTag(t.tagname,s,t[":@"]);!1===i||("string"==typeof i?(t.tagname=i,e.addChild(t)):e.addChild(t))}const Ae=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const s=this.docTypeEntities[t];e=e.replace(s.regx,s.val)}for(let t in this.lastEntities){const s=this.lastEntities[t];e=e.replace(s.regex,s.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const s=this.htmlEntities[t];e=e.replace(s.regex,s.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function Ce(e,t,s,i){return e&&(void 0===i&&(i=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,s,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,i))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function be(e,t,s){const i="*."+s;for(const s in e){const n=e[s];if(i===n||t===n)return!0}return!1}function ye(e,t,s,i){const n=e.indexOf(t,s);if(-1===n)throw new Error(i);return n+t.length-1}function xe(e,t,s,i=">"){const n=function(e,t,s=">"){let i,n="";for(let a=t;a<e.length;a++){let t=e[a];if(i)t===i&&(i="");else if('"'===t||"'"===t)i=t;else if(t===s[0]){if(!s[1])return{data:n,index:a};if(e[a+1]===s[1])return{data:n,index:a}}else"\t"===t&&(t=" ");n+=t}}(e,t+1,i);if(!n)return;let a=n.data;const r=n.index,o=a.search(/\s/);let l=a,d=!0;-1!==o&&(l=a.substring(0,o),a=a.substring(o+1).trimStart());const m=l;if(s){const e=l.indexOf(":");-1!==e&&(l=l.substr(e+1),d=l!==n.data.substr(e+1))}return{tagName:l,tagExp:a,closeIndex:r,attrExpPresent:d,rawTagName:m}}function _e(e,t,s){const i=s;let n=1;for(;s<e.length;s++)if("<"===e[s])if("/"===e[s+1]){const a=ye(e,">",s,`${t} is not closed`);if(e.substring(s+2,a).trim()===t&&(n--,0===n))return{tagContent:e.substring(i,s),i:a};s=a}else if("?"===e[s+1])s=ye(e,"?>",s+1,"StopNode is not closed.");else if("!--"===e.substr(s+1,3))s=ye(e,"--\x3e",s+3,"StopNode is not closed.");else if("!["===e.substr(s+1,2))s=ye(e,"]]>",s,"StopNode is not closed.")-2;else{const i=xe(e,s,">");i&&((i&&i.tagName)===t&&"/"!==i.tagExp[i.tagExp.length-1]&&n++,s=i.closeIndex)}}function ke(e,t,s){if(t&&"string"==typeof e){const t=e.trim();return"true"===t||"false"!==t&&me(e,s)}return oe.isExist(e)?e:""}var Te={};function Se(e,t,s){let i;const n={};for(let a=0;a<e.length;a++){const r=e[a],o=Le(r);let l="";if(l=void 0===s?o:s+"."+o,o===t.textNodeName)void 0===i?i=r[o]:i+=""+r[o];else{if(void 0===o)continue;if(r[o]){let e=Se(r[o],t,l);const s=Fe(e,t);r[":@"]?Ne(e,r[":@"],l,t):1!==Object.keys(e).length||void 0===e[t.textNodeName]||t.alwaysCreateTextNode?0===Object.keys(e).length&&(t.alwaysCreateTextNode?e[t.textNodeName]="":e=""):e=e[t.textNodeName],void 0!==n[o]&&n.hasOwnProperty(o)?(Array.isArray(n[o])||(n[o]=[n[o]]),n[o].push(e)):t.isArray(o,l,s)?n[o]=[e]:n[o]=e}}}return"string"==typeof i?i.length>0&&(n[t.textNodeName]=i):void 0!==i&&(n[t.textNodeName]=i),n}function Le(e){const t=Object.keys(e);for(let e=0;e<t.length;e++){const s=t[e];if(":@"!==s)return s}}function Ne(e,t,s,i){if(t){const n=Object.keys(t),a=n.length;for(let r=0;r<a;r++){const a=n[r];i.isArray(a,s+"."+a,!0,!0)?e[a]=[t[a]]:e[a]=t[a]}}}function Fe(e,t){const{textNodeName:s}=t,i=Object.keys(e).length;return 0===i||!(1!==i||!e[s]&&"boolean"!=typeof e[s]&&0!==e[s])}Te.prettify=function(e,t){return Se(e,t)};const{buildOptions:Ee}=G,Ue=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=ue,this.parseXml=we,this.parseTextData=ge,this.resolveNameSpace=fe,this.buildAttributesMap=he,this.isItStopNode=be,this.replaceEntitiesValue=Ae,this.readStopNodeData=_e,this.saveTextToParentTag=Ce,this.addChild=ve,this.ignoreAttributesFn=ce(this.options.ignoreAttributes)}},{prettify:Ie}=Te,Pe=F;function Be(e,t,s,i){let n="",a=!1;for(let r=0;r<e.length;r++){const o=e[r],l=ze(o);if(void 0===l)continue;let d="";if(d=0===s.length?l:`${s}.${l}`,l===t.textNodeName){let e=o[l];Oe(d,t)||(e=t.tagValueProcessor(l,e),e=Re(e,t)),a&&(n+=i),n+=e,a=!1;continue}if(l===t.cdataPropName){a&&(n+=i),n+=`<![CDATA[${o[l][0][t.textNodeName]}]]>`,a=!1;continue}if(l===t.commentPropName){n+=i+`\x3c!--${o[l][0][t.textNodeName]}--\x3e`,a=!0;continue}if("?"===l[0]){const e=De(o[":@"],t),s="?xml"===l?"":i;let r=o[l][0][t.textNodeName];r=0!==r.length?" "+r:"",n+=s+`<${l}${r}${e}?>`,a=!0;continue}let m=i;""!==m&&(m+=t.indentBy);const c=i+`<${l}${De(o[":@"],t)}`,u=Be(o[l],t,d,m);-1!==t.unpairedTags.indexOf(l)?t.suppressUnpairedNode?n+=c+">":n+=c+"/>":u&&0!==u.length||!t.suppressEmptyNode?u&&u.endsWith(">")?n+=c+`>${u}${i}</${l}>`:(n+=c+">",u&&""!==i&&(u.includes("/>")||u.includes("</"))?n+=i+t.indentBy+u+i:n+=u,n+=`</${l}>`):n+=c+"/>",a=!0}return n}function ze(e){const t=Object.keys(e);for(let s=0;s<t.length;s++){const i=t[s];if(e.hasOwnProperty(i)&&":@"!==i)return i}}function De(e,t){let s="";if(e&&!t.ignoreAttributes)for(let i in e){if(!e.hasOwnProperty(i))continue;let n=t.attributeValueProcessor(i,e[i]);n=Re(n,t),!0===n&&t.suppressBooleanAttributes?s+=` ${i.substr(t.attributeNamePrefix.length)}`:s+=` ${i.substr(t.attributeNamePrefix.length)}="${n}"`}return s}function Oe(e,t){let s=(e=e.substr(0,e.length-t.textNodeName.length-1)).substr(e.lastIndexOf(".")+1);for(let i in t.stopNodes)if(t.stopNodes[i]===e||t.stopNodes[i]==="*."+s)return!0;return!1}function Re(e,t){if(e&&e.length>0&&t.processEntities)for(let s=0;s<t.entities.length;s++){const i=t.entities[s];e=e.replace(i.regex,i.val)}return e}const je=function(e,t){let s="";return t.format&&t.indentBy.length>0&&(s="\n"),Be(e,t,"",s)},Me=re,Ve={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&amp;"},{regex:new RegExp(">","g"),val:"&gt;"},{regex:new RegExp("<","g"),val:"&lt;"},{regex:new RegExp("'","g"),val:"&apos;"},{regex:new RegExp('"',"g"),val:"&quot;"}],processEntities:!0,stopNodes:[],oneListGroup:!1};function $e(e){this.options=Object.assign({},Ve,e),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=Me(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=qe),this.processTextOrObjNode=We,this.options.format?(this.indentate=He,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function We(e,t,s,i){const n=this.j2x(e,s+1,i.concat(t));return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,n.attrStr,s):this.buildObjectNode(n.val,t,n.attrStr,s)}function He(e){return this.options.indentBy.repeat(e)}function qe(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}$e.prototype.build=function(e){return this.options.preserveOrder?je(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0,[]).val)},$e.prototype.j2x=function(e,t,s){let i="",n="";const a=s.join(".");for(let r in e)if(Object.prototype.hasOwnProperty.call(e,r))if(void 0===e[r])this.isAttribute(r)&&(n+="");else if(null===e[r])this.isAttribute(r)?n+="":"?"===r[0]?n+=this.indentate(t)+"<"+r+"?"+this.tagEndChar:n+=this.indentate(t)+"<"+r+"/"+this.tagEndChar;else if(e[r]instanceof Date)n+=this.buildTextValNode(e[r],r,"",t);else if("object"!=typeof e[r]){const s=this.isAttribute(r);if(s&&!this.ignoreAttributesFn(s,a))i+=this.buildAttrPairStr(s,""+e[r]);else if(!s)if(r===this.options.textNodeName){let t=this.options.tagValueProcessor(r,""+e[r]);n+=this.replaceEntitiesValue(t)}else n+=this.buildTextValNode(e[r],r,"",t)}else if(Array.isArray(e[r])){const i=e[r].length;let a="",o="";for(let l=0;l<i;l++){const i=e[r][l];if(void 0===i);else if(null===i)"?"===r[0]?n+=this.indentate(t)+"<"+r+"?"+this.tagEndChar:n+=this.indentate(t)+"<"+r+"/"+this.tagEndChar;else if("object"==typeof i)if(this.options.oneListGroup){const e=this.j2x(i,t+1,s.concat(r));a+=e.val,this.options.attributesGroupName&&i.hasOwnProperty(this.options.attributesGroupName)&&(o+=e.attrStr)}else a+=this.processTextOrObjNode(i,r,t,s);else if(this.options.oneListGroup){let e=this.options.tagValueProcessor(r,i);e=this.replaceEntitiesValue(e),a+=e}else a+=this.buildTextValNode(i,r,"",t)}this.options.oneListGroup&&(a=this.buildObjectNode(a,r,o,t)),n+=a}else if(this.options.attributesGroupName&&r===this.options.attributesGroupName){const t=Object.keys(e[r]),s=t.length;for(let n=0;n<s;n++)i+=this.buildAttrPairStr(t[n],""+e[r][t[n]])}else n+=this.processTextOrObjNode(e[r],r,t,s);return{attrStr:i,val:n}},$e.prototype.buildAttrPairStr=function(e,t){return t=this.options.attributeValueProcessor(e,""+t),t=this.replaceEntitiesValue(t),this.options.suppressBooleanAttributes&&"true"===t?" "+e:" "+e+'="'+t+'"'},$e.prototype.buildObjectNode=function(e,t,s,i){if(""===e)return"?"===t[0]?this.indentate(i)+"<"+t+s+"?"+this.tagEndChar:this.indentate(i)+"<"+t+s+this.closeTag(t)+this.tagEndChar;{let n="</"+t+this.tagEndChar,a="";return"?"===t[0]&&(a="?",n=""),!s&&""!==s||-1!==e.indexOf("<")?!1!==this.options.commentPropName&&t===this.options.commentPropName&&0===a.length?this.indentate(i)+`\x3c!--${e}--\x3e`+this.newLine:this.indentate(i)+"<"+t+s+a+this.tagEndChar+e+this.indentate(i)+n:this.indentate(i)+"<"+t+s+a+">"+e+n}},$e.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":`></${e}`,t},$e.prototype.buildTextValNode=function(e,t,s,i){if(!1!==this.options.cdataPropName&&t===this.options.cdataPropName)return this.indentate(i)+`<![CDATA[${e}]]>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(i)+`\x3c!--${e}--\x3e`+this.newLine;if("?"===t[0])return this.indentate(i)+"<"+t+s+"?"+this.tagEndChar;{let n=this.options.tagValueProcessor(t,e);return n=this.replaceEntitiesValue(n),""===n?this.indentate(i)+"<"+t+s+this.closeTag(t)+this.tagEndChar:this.indentate(i)+"<"+t+s+">"+n+"</"+t+this.tagEndChar}},$e.prototype.replaceEntitiesValue=function(e){if(e&&e.length>0&&this.options.processEntities)for(let t=0;t<this.options.entities.length;t++){const s=this.options.entities[t];e=e.replace(s.regex,s.val)}return e};var Ge={XMLParser:class{constructor(e){this.externalEntities={},this.options=Ee(e)}parse(e,t){if("string"==typeof e);else{if(!e.toString)throw new Error("XML data is accepted in String or Bytes[] form.");e=e.toString()}if(t){!0===t&&(t={});const s=Pe.validate(e,t);if(!0!==s)throw Error(`${s.err.msg}:${s.err.line}:${s.err.col}`)}const s=new Ue(this.options);s.addExternalEntities(this.externalEntities);const i=s.parseXml(e);return this.options.preserveOrder||void 0===i?i:Ie(i,this.options)}addEntity(e,t){if(-1!==t.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==e.indexOf("&")||-1!==e.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '&#xD;'");if("&"===t)throw new Error("An entity with value '&' is not permitted");this.externalEntities[e]=t}},XMLValidator:F,XMLBuilder:$e};class Ye{_view;constructor(e){Ke(e),this._view=e}get id(){return this._view.id}get name(){return this._view.name}get caption(){return this._view.caption}get emptyTitle(){return this._view.emptyTitle}get emptyCaption(){return this._view.emptyCaption}get getContents(){return this._view.getContents}get icon(){return this._view.icon}set icon(e){this._view.icon=e}get order(){return this._view.order}set order(e){this._view.order=e}get params(){return this._view.params}set params(e){this._view.params=e}get columns(){return this._view.columns}get emptyView(){return this._view.emptyView}get parent(){return this._view.parent}get sticky(){return this._view.sticky}get expanded(){return this._view.expanded}set expanded(e){this._view.expanded=e}get defaultSortKey(){return this._view.defaultSortKey}get loadChildViews(){return this._view.loadChildViews}}const Ke=function(e){if(!e.id||"string"!=typeof e.id)throw new Error("View id is required and must be a string");if(!e.name||"string"!=typeof e.name)throw new Error("View name is required and must be a string");if("caption"in e&&"string"!=typeof e.caption)throw new Error("View caption must be a string");if(!e.getContents||"function"!=typeof e.getContents)throw new Error("View getContents is required and must be a function");if(!e.icon||"string"!=typeof e.icon||!function(e){if("string"!=typeof e)throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);if(0===(e=e.trim()).length)return!1;if(!0!==Ge.XMLValidator.validate(e))return!1;let t;const s=new Ge.XMLParser;try{t=s.parse(e)}catch{return!1}return!!t&&!!Object.keys(t).some((e=>"svg"===e.toLowerCase()))}(e.icon))throw new Error("View icon is required and must be a valid svg string");if("order"in e&&"number"!=typeof e.order)throw new Error("View order must be a number");if(e.columns&&e.columns.forEach((e=>{if(!(e instanceof S))throw new Error("View columns must be an array of Column. Invalid column found")})),e.emptyView&&"function"!=typeof e.emptyView)throw new Error("View emptyView must be a function");if(e.parent&&"string"!=typeof e.parent)throw new Error("View parent must be a string");if("sticky"in e&&"boolean"!=typeof e.sticky)throw new Error("View sticky must be a boolean");if("expanded"in e&&"boolean"!=typeof e.expanded)throw new Error("View expanded must be a boolean");if(e.defaultSortKey&&"string"!=typeof e.defaultSortKey)throw new Error("View defaultSortKey must be a string");if(e.loadChildViews&&"function"!=typeof e.loadChildViews)throw new Error("View loadChildViews must be a function");return!0};var Qe="object"==typeof l&&l.env&&l.env.NODE_DEBUG&&/\bsemver\b/i.test(l.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{},Je={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER||9007199254740991,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2},Xe={exports:{}};!function(e,t){const{MAX_SAFE_COMPONENT_LENGTH:s,MAX_SAFE_BUILD_LENGTH:i,MAX_LENGTH:n}=Je,a=Qe,r=(t=e.exports={}).re=[],o=t.safeRe=[],l=t.src=[],d=t.t={};let m=0;const c="[a-zA-Z0-9-]",u=[["\\s",1],["\\d",n],[c,i]],g=(e,t,s)=>{const i=(e=>{for(const[t,s]of u)e=e.split(`${t}*`).join(`${t}{0,${s}}`).split(`${t}+`).join(`${t}{1,${s}}`);return e})(t),n=m++;a(e,n,t),d[e]=n,l[n]=t,r[n]=new RegExp(t,s?"g":void 0),o[n]=new RegExp(i,s?"g":void 0)};g("NUMERICIDENTIFIER","0|[1-9]\\d*"),g("NUMERICIDENTIFIERLOOSE","\\d+"),g("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${c}*`),g("MAINVERSION",`(${l[d.NUMERICIDENTIFIER]})\\.(${l[d.NUMERICIDENTIFIER]})\\.(${l[d.NUMERICIDENTIFIER]})`),g("MAINVERSIONLOOSE",`(${l[d.NUMERICIDENTIFIERLOOSE]})\\.(${l[d.NUMERICIDENTIFIERLOOSE]})\\.(${l[d.NUMERICIDENTIFIERLOOSE]})`),g("PRERELEASEIDENTIFIER",`(?:${l[d.NUMERICIDENTIFIER]}|${l[d.NONNUMERICIDENTIFIER]})`),g("PRERELEASEIDENTIFIERLOOSE",`(?:${l[d.NUMERICIDENTIFIERLOOSE]}|${l[d.NONNUMERICIDENTIFIER]})`),g("PRERELEASE",`(?:-(${l[d.PRERELEASEIDENTIFIER]}(?:\\.${l[d.PRERELEASEIDENTIFIER]})*))`),g("PRERELEASELOOSE",`(?:-?(${l[d.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${l[d.PRERELEASEIDENTIFIERLOOSE]})*))`),g("BUILDIDENTIFIER",`${c}+`),g("BUILD",`(?:\\+(${l[d.BUILDIDENTIFIER]}(?:\\.${l[d.BUILDIDENTIFIER]})*))`),g("FULLPLAIN",`v?${l[d.MAINVERSION]}${l[d.PRERELEASE]}?${l[d.BUILD]}?`),g("FULL",`^${l[d.FULLPLAIN]}$`),g("LOOSEPLAIN",`[v=\\s]*${l[d.MAINVERSIONLOOSE]}${l[d.PRERELEASELOOSE]}?${l[d.BUILD]}?`),g("LOOSE",`^${l[d.LOOSEPLAIN]}$`),g("GTLT","((?:<|>)?=?)"),g("XRANGEIDENTIFIERLOOSE",`${l[d.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),g("XRANGEIDENTIFIER",`${l[d.NUMERICIDENTIFIER]}|x|X|\\*`),g("XRANGEPLAIN",`[v=\\s]*(${l[d.XRANGEIDENTIFIER]})(?:\\.(${l[d.XRANGEIDENTIFIER]})(?:\\.(${l[d.XRANGEIDENTIFIER]})(?:${l[d.PRERELEASE]})?${l[d.BUILD]}?)?)?`),g("XRANGEPLAINLOOSE",`[v=\\s]*(${l[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[d.XRANGEIDENTIFIERLOOSE]})(?:${l[d.PRERELEASELOOSE]})?${l[d.BUILD]}?)?)?`),g("XRANGE",`^${l[d.GTLT]}\\s*${l[d.XRANGEPLAIN]}$`),g("XRANGELOOSE",`^${l[d.GTLT]}\\s*${l[d.XRANGEPLAINLOOSE]}$`),g("COERCEPLAIN",`(^|[^\\d])(\\d{1,${s}})(?:\\.(\\d{1,${s}}))?(?:\\.(\\d{1,${s}}))?`),g("COERCE",`${l[d.COERCEPLAIN]}(?:$|[^\\d])`),g("COERCEFULL",l[d.COERCEPLAIN]+`(?:${l[d.PRERELEASE]})?(?:${l[d.BUILD]})?(?:$|[^\\d])`),g("COERCERTL",l[d.COERCE],!0),g("COERCERTLFULL",l[d.COERCEFULL],!0),g("LONETILDE","(?:~>?)"),g("TILDETRIM",`(\\s*)${l[d.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",g("TILDE",`^${l[d.LONETILDE]}${l[d.XRANGEPLAIN]}$`),g("TILDELOOSE",`^${l[d.LONETILDE]}${l[d.XRANGEPLAINLOOSE]}$`),g("LONECARET","(?:\\^)"),g("CARETTRIM",`(\\s*)${l[d.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",g("CARET",`^${l[d.LONECARET]}${l[d.XRANGEPLAIN]}$`),g("CARETLOOSE",`^${l[d.LONECARET]}${l[d.XRANGEPLAINLOOSE]}$`),g("COMPARATORLOOSE",`^${l[d.GTLT]}\\s*(${l[d.LOOSEPLAIN]})$|^$`),g("COMPARATOR",`^${l[d.GTLT]}\\s*(${l[d.FULLPLAIN]})$|^$`),g("COMPARATORTRIM",`(\\s*)${l[d.GTLT]}\\s*(${l[d.LOOSEPLAIN]}|${l[d.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",g("HYPHENRANGE",`^\\s*(${l[d.XRANGEPLAIN]})\\s+-\\s+(${l[d.XRANGEPLAIN]})\\s*$`),g("HYPHENRANGELOOSE",`^\\s*(${l[d.XRANGEPLAINLOOSE]})\\s+-\\s+(${l[d.XRANGEPLAINLOOSE]})\\s*$`),g("STAR","(<|>)?=?\\s*\\*"),g("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),g("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(Xe,Xe.exports);var Ze=Xe.exports;const et=Object.freeze({loose:!0}),tt=Object.freeze({});const st=/^[0-9]+$/,it=(e,t)=>{const s=st.test(e),i=st.test(t);return s&&i&&(e=+e,t=+t),e===t?0:s&&!i?-1:i&&!s?1:e<t?-1:1};var nt={compareIdentifiers:it,rcompareIdentifiers:(e,t)=>it(t,e)};const at=Qe,{MAX_LENGTH:rt,MAX_SAFE_INTEGER:ot}=Je,{safeRe:lt,t:dt}=Ze,mt=e=>e?"object"!=typeof e?et:e:tt,{compareIdentifiers:ct}=nt;var ut=class e{constructor(t,s){if(s=mt(s),t instanceof e){if(t.loose===!!s.loose&&t.includePrerelease===!!s.includePrerelease)return t;t=t.version}else if("string"!=typeof t)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof t}".`);if(t.length>rt)throw new TypeError(`version is longer than ${rt} characters`);at("SemVer",t,s),this.options=s,this.loose=!!s.loose,this.includePrerelease=!!s.includePrerelease;const i=t.trim().match(s.loose?lt[dt.LOOSE]:lt[dt.FULL]);if(!i)throw new TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>ot||this.major<0)throw new TypeError("Invalid major version");if(this.minor>ot||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>ot||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map((e=>{if(/^[0-9]+$/.test(e)){const t=+e;if(t>=0&&t<ot)return t}return e})):this.prerelease=[],this.build=i[5]?i[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(t){if(at("SemVer.compare",this.version,this.options,t),!(t instanceof e)){if("string"==typeof t&&t===this.version)return 0;t=new e(t,this.options)}return t.version===this.version?0:this.compareMain(t)||this.comparePre(t)}compareMain(t){return t instanceof e||(t=new e(t,this.options)),ct(this.major,t.major)||ct(this.minor,t.minor)||ct(this.patch,t.patch)}comparePre(t){if(t instanceof e||(t=new e(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let s=0;do{const e=this.prerelease[s],i=t.prerelease[s];if(at("prerelease compare",s,e,i),void 0===e&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===e)return-1;if(e!==i)return ct(e,i)}while(++s)}compareBuild(t){t instanceof e||(t=new e(t,this.options));let s=0;do{const e=this.build[s],i=t.build[s];if(at("build compare",s,e,i),void 0===e&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===e)return-1;if(e!==i)return ct(e,i)}while(++s)}inc(e,t,s){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,s);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,s);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,s),this.inc("pre",t,s);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",t,s),this.inc("pre",t,s);break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":{const e=Number(s)?1:0;if(!t&&!1===s)throw new Error("invalid increment argument: identifier is empty");if(0===this.prerelease.length)this.prerelease=[e];else{let i=this.prerelease.length;for(;--i>=0;)"number"==typeof this.prerelease[i]&&(this.prerelease[i]++,i=-2);if(-1===i){if(t===this.prerelease.join(".")&&!1===s)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(e)}}if(t){let i=[t,e];!1===s&&(i=[t]),0===ct(this.prerelease[0],t)?isNaN(this.prerelease[1])&&(this.prerelease=i):this.prerelease=i}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};const gt=ut,ft=N(((e,t)=>{const s=((e,t,s=!1)=>{if(e instanceof gt)return e;try{return new gt(e,t)}catch(e){if(!s)return null;throw e}})(e,t);return s?s.version:null})),pt=ut,ht=N(((e,t)=>new pt(e,t).major));class wt{bus;constructor(e){"function"==typeof e.getVersion&&ft(e.getVersion())?ht(e.getVersion())!==ht(this.getVersion())&&console.warn("Proxying an event bus of version "+e.getVersion()+" with "+this.getVersion()):console.warn("Proxying an event bus with an unknown or invalid version"),this.bus=e}getVersion(){return"3.3.1"}subscribe(e,t){this.bus.subscribe(e,t)}unsubscribe(e,t){this.bus.unsubscribe(e,t)}emit(e,t){this.bus.emit(e,t)}}class vt{handlers=new Map;getVersion(){return"3.3.1"}subscribe(e,t){this.handlers.set(e,(this.handlers.get(e)||[]).concat(t))}unsubscribe(e,t){this.handlers.set(e,(this.handlers.get(e)||[]).filter((e=>e!==t)))}emit(e,t){(this.handlers.get(e)||[]).forEach((e=>{try{e(t)}catch(e){console.error("could not invoke event listener",e)}}))}}let At=null;function Ct(e,t){(null!==At?At:"undefined"==typeof window?new Proxy({},{get:()=>()=>console.error("Window not available, EventBus can not be established!")}):(window.OC?._eventBus&&void 0===window._nc_event_bus&&(console.warn("found old event bus instance at OC._eventBus. Update your version!"),window._nc_event_bus=window.OC._eventBus),At=void 0!==window?._nc_event_bus?new wt(window._nc_event_bus):window._nc_event_bus=new vt,At)).emit(e,t)}class bt extends o.m{id;order;constructor(e,t=100){super(),this.id=e,this.order=t}filter(e){throw new Error("Not implemented")}updateChips(e){this.dispatchTypedEvent("update:chips",new CustomEvent("update:chips",{detail:e}))}filterUpdated(){this.dispatchTypedEvent("update:filter",new CustomEvent("update:filter"))}}function yt(e){if(window._nc_filelist_filters||(window._nc_filelist_filters=new Map),window._nc_filelist_filters.has(e.id))throw new Error(`File list filter "${e.id}" already registered`);window._nc_filelist_filters.set(e.id,e),Ct("files:filter:added",e)}function xt(e){window._nc_filelist_filters&&window._nc_filelist_filters.has(e)&&(window._nc_filelist_filters.delete(e),Ct("files:filter:removed",e))}function _t(){return window._nc_filelist_filters?[...window._nc_filelist_filters.values()]:[]}const kt=function(e){return(void 0===window._nc_newfilemenu&&(window._nc_newfilemenu=new m,i.o.debug("NewFileMenu initialized")),window._nc_newfilemenu).getEntries(e).sort(((e,t)=>void 0!==e.order&&void 0!==t.order&&e.order!==t.order?e.order-t.order:e.displayName.localeCompare(t.displayName,void 0,{numeric:!0,sensitivity:"base"})))}},24351:(e,t,s)=>{s.d(t,{S:()=>N,U:()=>K,a:()=>U,b:()=>z,g:()=>Q,h:()=>G,i:()=>E,l:()=>O,n:()=>M,o:()=>J,t:()=>D}),s(3632);var i=s(82680),n=s(85471),a=s(21777),r=s(35810),o=s(71225),l=s(43627),d=s(65043),m=s(53553),c=s(57994),u=s(63814),g=s(11950),f=s(11195),p=s(35947),h=s(87485),w=s(75270),v=s(18503),A=s(75625),C=s(15502),b=s(24764),y=s(70995),x=s(6695),_=s(95101),k=s(85168);(0,g.Ay)(d.Ay,{retries:0});const T=async function(e,t,s,i=()=>{},n=void 0,a={},r=5){let o;return o=t instanceof Blob?t:await t(),n&&(a.Destination=n),a["Content-Type"]||(a["Content-Type"]="application/octet-stream"),await d.Ay.request({method:"PUT",url:e,data:o,signal:s,onUploadProgress:i,headers:a,"axios-retry":{retries:r,retryDelay:(e,t)=>(0,g.Nv)(e,t,1e3)}})},S=function(e,t,s){return 0===t&&e.size<=s?Promise.resolve(new Blob([e],{type:e.type||"application/octet-stream"})):Promise.resolve(new Blob([e.slice(t,t+s)],{type:"application/octet-stream"}))},L=function(e=void 0){const t=window.OC?.appConfig?.files?.max_chunk_size;if(t<=0)return 0;if(!Number(t))return 10485760;const s=Math.max(Number(t),5242880);return void 0===e?s:Math.max(s,Math.ceil(e/1e4))};var N=(e=>(e[e.INITIALIZED=0]="INITIALIZED",e[e.UPLOADING=1]="UPLOADING",e[e.ASSEMBLING=2]="ASSEMBLING",e[e.FINISHED=3]="FINISHED",e[e.CANCELLED=4]="CANCELLED",e[e.FAILED=5]="FAILED",e))(N||{});class F{_source;_file;_isChunked;_chunks;_size;_uploaded=0;_startTime=0;_status=0;_controller;_response=null;constructor(e,t=!1,s,i){const n=Math.min(L()>0?Math.ceil(s/L()):1,1e4);this._source=e,this._isChunked=t&&L()>0&&n>1,this._chunks=this._isChunked?n:1,this._size=s,this._file=i,this._controller=new AbortController}get source(){return this._source}get file(){return this._file}get isChunked(){return this._isChunked}get chunks(){return this._chunks}get size(){return this._size}get startTime(){return this._startTime}set response(e){this._response=e}get response(){return this._response}get uploaded(){return this._uploaded}set uploaded(e){if(e>=this._size)return this._status=this._isChunked?2:3,void(this._uploaded=this._size);this._status=1,this._uploaded=e,0===this._startTime&&(this._startTime=(new Date).getTime())}get status(){return this._status}set status(e){this._status=e}get signal(){return this._controller.signal}cancel(){this._controller.abort(),this._status=4}}const E=e=>"FileSystemFileEntry"in window&&e instanceof FileSystemFileEntry,U=e=>"FileSystemEntry"in window&&e instanceof FileSystemEntry;class I extends File{_originalName;_path;_children;constructor(e){super([],(0,o.P8)(e),{type:"httpd/unix-directory",lastModified:0}),this._children=new Map,this._originalName=(0,o.P8)(e),this._path=e}get size(){return this.children.reduce(((e,t)=>e+t.size),0)}get lastModified(){return this.children.reduce(((e,t)=>Math.max(e,t.lastModified)),0)}get originalName(){return this._originalName}get children(){return Array.from(this._children.values())}get webkitRelativePath(){return this._path}getChild(e){return this._children.get(e)??null}async addChildren(e){for(const t of e)await this.addChild(t)}async addChild(e){const t=this._path&&`${this._path}/`;if(E(e))e=await new Promise(((t,s)=>e.file(t,s)));else if("FileSystemDirectoryEntry"in window&&e instanceof FileSystemDirectoryEntry){const s=e.createReader(),i=await new Promise(((e,t)=>s.readEntries(e,t))),n=new I(`${t}${e.name}`);return await n.addChildren(i),void this._children.set(e.name,n)}const s=e.webkitRelativePath??e.name;if(s.includes("/")){if(!s.startsWith(this._path))throw new Error(`File ${s} is not a child of ${this._path}`);const i=s.slice(t.length),n=(0,o.P8)(i);if(n===i)this._children.set(n,e);else{const s=i.slice(0,i.indexOf("/"));if(this._children.has(s))await this._children.get(s).addChild(e);else{const i=new I(`${t}${s}`);await i.addChild(e),this._children.set(s,i)}}}else this._children.set(e.name,e)}}const P=(0,f.$)().detectLocale();[{locale:"af",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Afrikaans (https://www.transifex.com/nextcloud/teams/64236/af/)","Content-Type":"text/plain; charset=UTF-8",Language:"af","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Afrikaans (https://www.transifex.com/nextcloud/teams/64236/af/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: af\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"ar",json:{charset:"utf-8",headers:{"Last-Translator":"abusaud, 2024","Language-Team":"Arabic (https://app.transifex.com/nextcloud/teams/64236/ar/)","Content-Type":"text/plain; charset=UTF-8",Language:"ar","Plural-Forms":"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nAli <alimahwer@yahoo.com>, 2024\nabusaud, 2024\n"},msgstr:["Last-Translator: abusaud, 2024\nLanguage-Team: Arabic (https://app.transifex.com/nextcloud/teams/64236/ar/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ar\nPlural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" هو اسم ممنوع لملف أو مجلد.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" هو نوع ممنوع أن يكون لملف.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" هو غير مسموح به في اسم ملف أو مجلد.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} ملف متعارض","{count} ملف متعارض","{count} ملفان متعارضان","{count} ملف متعارض","{count} ملفات متعارضة","{count} ملفات متعارضة"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} ملف متعارض في {dirname}","{count} ملف متعارض في {dirname}","{count} ملفان متعارضان في {dirname}","{count} ملف متعارض في {dirname}","{count} ملفات متعارضة في {dirname}","{count} ملفات متعارضة في {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} ثانية متبقية"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} متبقية"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["بضع ثوانٍ متبقية"]},Cancel:{msgid:"Cancel",msgstr:["إلغاء"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["إلغِ العملية بالكامل"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["إلغاء عمليات رفع الملفات"]},Continue:{msgid:"Continue",msgstr:["إستمر"]},"Create new":{msgid:"Create new",msgstr:["إنشاء جديد"]},"estimating time left":{msgid:"estimating time left",msgstr:["تقدير الوقت المتبقي"]},"Existing version":{msgid:"Existing version",msgstr:["الإصدار الحالي"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['غير مسموح ان ينتهي اسم الملف بـ "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["إذا اخترت الاحتفاظ بالنسختين فسيتم إلحاق رقم عداد آخر اسم الملف الوارد."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["اسم ملف غير صحيح"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["تاريخ آخر تعديل غير معروف"]},New:{msgid:"New",msgstr:["جديد"]},"New filename":{msgid:"New filename",msgstr:["اسم ملف جديد"]},"New version":{msgid:"New version",msgstr:["نسخة جديدة"]},paused:{msgid:"paused",msgstr:["مُجمَّد"]},"Preview image":{msgid:"Preview image",msgstr:["معاينة الصورة"]},Rename:{msgid:"Rename",msgstr:["تغيير التسمية"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["حدِّد كل صناديق الخيارات"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["حدِّد كل الملفات الموجودة"]},"Select all new files":{msgid:"Select all new files",msgstr:["حدِّد كل الملفات الجديدة"]},Skip:{msgid:"Skip",msgstr:["تخطِّي"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["تخطَّ {count} ملف","تخطَّ {count} ملف","تخطَّ {count} ملف","تخطَّ {count} ملف","تخطَّ {count} ملف","تخطَّ {count} ملف"]},"Unknown size":{msgid:"Unknown size",msgstr:["حجم غير معلوم"]},Upload:{msgid:"Upload",msgstr:["رفع الملفات"]},"Upload files":{msgid:"Upload files",msgstr:["رفع ملفات"]},"Upload folders":{msgid:"Upload folders",msgstr:["رفع مجلدات"]},"Upload from device":{msgid:"Upload from device",msgstr:["الرفع من جهاز "]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["تمّ إلغاء عملية رفع الملفات"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["تمّ تجاوز الرفع"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['رفع "{folder}" تمّ تجاوزه']},"Upload progress":{msgid:"Upload progress",msgstr:["تقدُّم الرفع "]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["عند تحديد مجلد وارد، أي ملفات متعارضة بداخله ستتم الكتابة فوقها."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["عند تحديد مجلد وارد، ستتم كتابة المحتوى في المجلد الموجود و سيتم تنفيذ حل التعارض بشكل تعاوُدي."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["أيُّ الملفات ترغب في الإبقاء عليها؟"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["يمكنك إمّا تغيير اسم الملف، أو تجاوزه، أو إلغاء العملية برُمَّتها."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["يجب أن تختار نسخة واحدة على الأقل من كل ملف للاستمرار."]}}}}},{locale:"ast",json:{charset:"utf-8",headers:{"Last-Translator":"enolp <enolp@softastur.org>, 2023","Language-Team":"Asturian (https://app.transifex.com/nextcloud/teams/64236/ast/)","Content-Type":"text/plain; charset=UTF-8",Language:"ast","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nenolp <enolp@softastur.org>, 2023\n"},msgstr:["Last-Translator: enolp <enolp@softastur.org>, 2023\nLanguage-Team: Asturian (https://app.transifex.com/nextcloud/teams/64236/ast/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ast\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} ficheru en coflictu","{count} ficheros en coflictu"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} ficheru en coflictu en {dirname}","{count} ficheros en coflictu en {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["Queden {seconds} segundos"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["Tiempu que queda: {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["queden unos segundos"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Encaboxar les xubes"]},Continue:{msgid:"Continue",msgstr:["Siguir"]},"estimating time left":{msgid:"estimating time left",msgstr:["estimando'l tiempu que falta"]},"Existing version":{msgid:"Existing version",msgstr:["Versión esistente"]},"If you select both versions, the copied file will have a number added to its name.":{msgid:"If you select both versions, the copied file will have a number added to its name.",msgstr:["Si seleiciones dambes versiones, el ficheru copiáu va tener un númberu amestáu al so nome."]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["La data de la última modificación ye desconocida"]},New:{msgid:"New",msgstr:["Nuevu"]},"New version":{msgid:"New version",msgstr:["Versión nueva"]},paused:{msgid:"paused",msgstr:["en posa"]},"Preview image":{msgid:"Preview image",msgstr:["Previsualizar la imaxe"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Marcar toles caxelles"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Seleicionar tolos ficheros esistentes"]},"Select all new files":{msgid:"Select all new files",msgstr:["Seleicionar tolos ficheros nuevos"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Saltar esti ficheru","Saltar {count} ficheros"]},"Unknown size":{msgid:"Unknown size",msgstr:["Tamañu desconocíu"]},"Upload cancelled":{msgid:"Upload cancelled",msgstr:["Encaboxóse la xuba"]},"Upload files":{msgid:"Upload files",msgstr:["Xubir ficheros"]},"Upload progress":{msgid:"Upload progress",msgstr:["Xuba en cursu"]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["¿Qué ficheros quies caltener?"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Tienes de seleicionar polo menos una versión de cada ficheru pa siguir."]}}}}},{locale:"az",json:{charset:"utf-8",headers:{"Last-Translator":"Rashad Aliyev <microphprashad@gmail.com>, 2023","Language-Team":"Azerbaijani (https://app.transifex.com/nextcloud/teams/64236/az/)","Content-Type":"text/plain; charset=UTF-8",Language:"az","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nRashad Aliyev <microphprashad@gmail.com>, 2023\n"},msgstr:["Last-Translator: Rashad Aliyev <microphprashad@gmail.com>, 2023\nLanguage-Team: Azerbaijani (https://app.transifex.com/nextcloud/teams/64236/az/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: az\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} saniyə qalıb"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["{time} qalıb"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["bir neçə saniyə qalıb"]},Add:{msgid:"Add",msgstr:["Əlavə et"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Yükləməni imtina et"]},"estimating time left":{msgid:"estimating time left",msgstr:["Təxmini qalan vaxt"]},paused:{msgid:"paused",msgstr:["pauzadadır"]},"Upload files":{msgid:"Upload files",msgstr:["Faylları yüklə"]}}}}},{locale:"be",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Belarusian (https://www.transifex.com/nextcloud/teams/64236/be/)","Content-Type":"text/plain; charset=UTF-8",Language:"be","Plural-Forms":"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Belarusian (https://www.transifex.com/nextcloud/teams/64236/be/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: be\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"bg",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Bulgarian (Bulgaria) (https://www.transifex.com/nextcloud/teams/64236/bg_BG/)","Content-Type":"text/plain; charset=UTF-8",Language:"bg_BG","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Bulgarian (Bulgaria) (https://www.transifex.com/nextcloud/teams/64236/bg_BG/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: bg_BG\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"bn_BD",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Bengali (Bangladesh) (https://www.transifex.com/nextcloud/teams/64236/bn_BD/)","Content-Type":"text/plain; charset=UTF-8",Language:"bn_BD","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Bengali (Bangladesh) (https://www.transifex.com/nextcloud/teams/64236/bn_BD/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: bn_BD\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"br",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Breton (https://www.transifex.com/nextcloud/teams/64236/br/)","Content-Type":"text/plain; charset=UTF-8",Language:"br","Plural-Forms":"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: br\nPlural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"bs",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Bosnian (https://www.transifex.com/nextcloud/teams/64236/bs/)","Content-Type":"text/plain; charset=UTF-8",Language:"bs","Plural-Forms":"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Bosnian (https://www.transifex.com/nextcloud/teams/64236/bs/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: bs\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"ca",json:{charset:"utf-8",headers:{"Last-Translator":"Toni Hermoso Pulido <toniher@softcatala.cat>, 2022","Language-Team":"Catalan (https://www.transifex.com/nextcloud/teams/64236/ca/)","Content-Type":"text/plain; charset=UTF-8",Language:"ca","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nMarc Riera <marcriera@softcatala.org>, 2022\nToni Hermoso Pulido <toniher@softcatala.cat>, 2022\n"},msgstr:["Last-Translator: Toni Hermoso Pulido <toniher@softcatala.cat>, 2022\nLanguage-Team: Catalan (https://www.transifex.com/nextcloud/teams/64236/ca/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ca\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["Queden {seconds} segons"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["Queden {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["Queden uns segons"]},Add:{msgid:"Add",msgstr:["Afegeix"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Cancel·la les pujades"]},"estimating time left":{msgid:"estimating time left",msgstr:["S'està estimant el temps restant"]},paused:{msgid:"paused",msgstr:["En pausa"]},"Upload files":{msgid:"Upload files",msgstr:["Puja els fitxers"]}}}}},{locale:"cs",json:{charset:"utf-8",headers:{"Last-Translator":"Pavel Borecki <pavel.borecki@gmail.com>, 2024","Language-Team":"Czech (Czech Republic) (https://app.transifex.com/nextcloud/teams/64236/cs_CZ/)","Content-Type":"text/plain; charset=UTF-8",Language:"cs_CZ","Plural-Forms":"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nMichal Šmahel <ceskyDJ@seznam.cz>, 2024\nMartin Hankovec, 2024\nAppukonrad <appukonrad@gmail.com>, 2024\nPavel Borecki <pavel.borecki@gmail.com>, 2024\n"},msgstr:["Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2024\nLanguage-Team: Czech (Czech Republic) (https://app.transifex.com/nextcloud/teams/64236/cs_CZ/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: cs_CZ\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:["„{segment}“ není povoleno použít jako název souboru či složky."]},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:["„{segment}“ není povoleného typu souboru."]},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:["„{segment}“ není povoleno použít v rámci názvu souboru či složky."]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} kolize souborů","{count} kolize souborů","{count} kolizí souborů","{count} kolize souborů"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} kolize souboru v {dirname}","{count} kolize souboru v {dirname}","{count} kolizí souborů v {dirname}","{count} kolize souboru v {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["zbývá {seconds}"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["zbývá {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["zbývá několik sekund"]},Cancel:{msgid:"Cancel",msgstr:["Zrušit"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Zrušit celou operaci"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Zrušit nahrávání"]},Continue:{msgid:"Continue",msgstr:["Pokračovat"]},"Create new":{msgid:"Create new",msgstr:["Vytvořit nový"]},"estimating time left":{msgid:"estimating time left",msgstr:["odhaduje se zbývající čas"]},"Existing version":{msgid:"Existing version",msgstr:["Existující verze"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:["Názvy souborů nemohou končit na „{segment}“."]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Pokud vyberete obě verze, příchozí soubor bude mít ke jménu přidánu číslici."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Neplatný název souboru"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Neznámé datum poslední úpravy"]},New:{msgid:"New",msgstr:["Nové"]},"New filename":{msgid:"New filename",msgstr:["Nový název souboru"]},"New version":{msgid:"New version",msgstr:["Nová verze"]},paused:{msgid:"paused",msgstr:["pozastaveno"]},"Preview image":{msgid:"Preview image",msgstr:["Náhled obrázku"]},Rename:{msgid:"Rename",msgstr:["Přejmenovat"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Označit všechny zaškrtávací kolonky"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Vybrat veškeré stávající soubory"]},"Select all new files":{msgid:"Select all new files",msgstr:["Vybrat veškeré nové soubory"]},Skip:{msgid:"Skip",msgstr:["Přeskočit"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Přeskočit tento soubor","Přeskočit {count} soubory","Přeskočit {count} souborů","Přeskočit {count} soubory"]},"Unknown size":{msgid:"Unknown size",msgstr:["Neznámá velikost"]},Upload:{msgid:"Upload",msgstr:["Nahrát"]},"Upload files":{msgid:"Upload files",msgstr:["Nahrát soubory"]},"Upload folders":{msgid:"Upload folders",msgstr:["Nahrát složky"]},"Upload from device":{msgid:"Upload from device",msgstr:["Nahrát ze zařízení"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Nahrávání bylo zrušeno"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Nahrání bylo přeskočeno"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:["Nahrání „{folder}“ bylo přeskočeno"]},"Upload progress":{msgid:"Upload progress",msgstr:["Postup v nahrávání"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Po výběru příchozí složky budou rovněž přepsány všechny v ní obsažené konfliktní soubory"]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Když je vybrána příchozí složka, obsah je zapsán do existující složky a je provedeno rekurzivní řešení kolizí."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Které soubory si přejete ponechat?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Soubor je možné buď přejmenovat, přeskočit nebo celou operaci zrušit."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Aby bylo možné pokračovat, je třeba vybrat alespoň jednu verzi od každého souboru."]}}}}},{locale:"cy_GB",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Welsh (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/cy_GB/)","Content-Type":"text/plain; charset=UTF-8",Language:"cy_GB","Plural-Forms":"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Welsh (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/cy_GB/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: cy_GB\nPlural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"da",json:{charset:"utf-8",headers:{"Last-Translator":"Martin Bonde <Martin@maboni.dk>, 2024","Language-Team":"Danish (https://app.transifex.com/nextcloud/teams/64236/da/)","Content-Type":"text/plain; charset=UTF-8",Language:"da","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nRasmus Rosendahl-Kaa, 2024\nMartin Bonde <Martin@maboni.dk>, 2024\n"},msgstr:["Last-Translator: Martin Bonde <Martin@maboni.dk>, 2024\nLanguage-Team: Danish (https://app.transifex.com/nextcloud/teams/64236/da/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: da\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" er et forbudt fil- eller mappenavn.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" er en forbudt filtype.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" er ikke tilladt i et fil- eller mappenavn.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} fil konflikt","{count} filer i konflikt"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} fil konflikt i {dirname}","{count} filer i konflikt i {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{sekunder} sekunder tilbage"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} tilbage"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["et par sekunder tilbage"]},Cancel:{msgid:"Cancel",msgstr:["Annuller"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Annuller hele handlingen"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Annuller uploads"]},Continue:{msgid:"Continue",msgstr:["Fortsæt"]},"Create new":{msgid:"Create new",msgstr:["Opret ny"]},"estimating time left":{msgid:"estimating time left",msgstr:["estimering af resterende tid"]},"Existing version":{msgid:"Existing version",msgstr:["Eksisterende version"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Filnavne må ikke slutte med "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Hvis du vælger begge versioner, vil den indkommende fil have et nummer tilføjet til sit navn."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Ugyldigt filnavn"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Sidste modifikationsdato ukendt"]},New:{msgid:"New",msgstr:["Ny"]},"New filename":{msgid:"New filename",msgstr:["Nyt filnavn"]},"New version":{msgid:"New version",msgstr:["Ny version"]},paused:{msgid:"paused",msgstr:["pauset"]},"Preview image":{msgid:"Preview image",msgstr:["Forhåndsvisning af billede"]},Rename:{msgid:"Rename",msgstr:["Omdøb"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Vælg alle felter"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Vælg alle eksisterende filer"]},"Select all new files":{msgid:"Select all new files",msgstr:["Vælg alle nye filer"]},Skip:{msgid:"Skip",msgstr:["Spring over"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Spring denne fil over","Spring {count} filer over"]},"Unknown size":{msgid:"Unknown size",msgstr:["Ukendt størrelse"]},Upload:{msgid:"Upload",msgstr:["Upload"]},"Upload files":{msgid:"Upload files",msgstr:["Upload filer"]},"Upload folders":{msgid:"Upload folders",msgstr:["Upload mapper"]},"Upload from device":{msgid:"Upload from device",msgstr:["Upload fra enhed"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Upload er blevet annulleret"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Upload er blevet sprunget over"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Upload af "{folder}" er blevet sprunget over']},"Upload progress":{msgid:"Upload progress",msgstr:["Upload fremskridt"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Når en indgående mappe er valgt, vil alle modstridende filer i den også blive overskrevet."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Når en indkommende mappe er valgt, vil dens indhold blive skrevet ind i den eksisterende mappe og en rekursiv konfliktløsning udføres."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Hvilke filer ønsker du at beholde?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Du kan enten omdøbe filen, springe denne fil over eller annullere hele handlingen."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Du skal vælge mindst én version af hver fil for at fortsætte."]}}}}},{locale:"de",json:{charset:"utf-8",headers:{"Last-Translator":"Andy Scherzinger <info@andy-scherzinger.de>, 2024","Language-Team":"German (https://app.transifex.com/nextcloud/teams/64236/de/)","Content-Type":"text/plain; charset=UTF-8",Language:"de","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nMario Siegmann <mario_siegmann@web.de>, 2024\nMartin Wilichowski, 2024\nAndy Scherzinger <info@andy-scherzinger.de>, 2024\n"},msgstr:["Last-Translator: Andy Scherzinger <info@andy-scherzinger.de>, 2024\nLanguage-Team: German (https://app.transifex.com/nextcloud/teams/64236/de/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: de\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" ist ein verbotener Datei- oder Ordnername.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" ist ein verbotener Dateityp.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" ist in einem Datei- oder Ordnernamen nicht zulässig.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} Datei-Konflikt","{count} Datei-Konflikte"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} Datei-Konflikt in {dirname}","{count} Datei-Konflikte in {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} Sekunden verbleiben"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} verbleibend"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["ein paar Sekunden verbleiben"]},Cancel:{msgid:"Cancel",msgstr:["Abbrechen"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Den gesamten Vorgang abbrechen"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Hochladen abbrechen"]},Continue:{msgid:"Continue",msgstr:["Fortsetzen"]},"Create new":{msgid:"Create new",msgstr:["Neu erstellen"]},"estimating time left":{msgid:"estimating time left",msgstr:["Geschätzte verbleibende Zeit"]},"Existing version":{msgid:"Existing version",msgstr:["Vorhandene Version"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Dateinamen dürfen nicht mit "{segment}" enden.']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Wenn du beide Versionen auswählst, wird der eingehenden Datei eine Nummer zum Namen hinzugefügt."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Ungültiger Dateiname"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Datum der letzten Änderung unbekannt"]},New:{msgid:"New",msgstr:["Neu"]},"New filename":{msgid:"New filename",msgstr:["Neuer Dateiname"]},"New version":{msgid:"New version",msgstr:["Neue Version"]},paused:{msgid:"paused",msgstr:["Pausiert"]},"Preview image":{msgid:"Preview image",msgstr:["Vorschaubild"]},Rename:{msgid:"Rename",msgstr:["Umbenennen"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Alle Kontrollkästchen aktivieren"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Alle vorhandenen Dateien auswählen"]},"Select all new files":{msgid:"Select all new files",msgstr:["Alle neuen Dateien auswählen"]},Skip:{msgid:"Skip",msgstr:["Überspringen"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Diese Datei überspringen","{count} Dateien überspringen"]},"Unknown size":{msgid:"Unknown size",msgstr:["Unbekannte Größe"]},Upload:{msgid:"Upload",msgstr:["Hochladen"]},"Upload files":{msgid:"Upload files",msgstr:["Dateien hochladen"]},"Upload folders":{msgid:"Upload folders",msgstr:["Ordner hochladen"]},"Upload from device":{msgid:"Upload from device",msgstr:["Vom Gerät hochladen"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Das Hochladen wurde abgebrochen"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Das Hochladen wurde übersprungen"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Das Hochladen von "{folder}" wurde übersprungen']},"Upload progress":{msgid:"Upload progress",msgstr:["Fortschritt beim Hochladen"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Wenn ein eingehender Ordner ausgewählt wird, werden alle darin enthaltenen Konfliktdateien ebenfalls überschrieben."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Welche Dateien möchtest du behalten?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Du kannst die Datei entweder umbenennen, diese Datei überspringen oder den gesamten Vorgang abbrechen."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Du musst mindestens eine Version jeder Datei auswählen, um fortzufahren."]}}}}},{locale:"de_DE",json:{charset:"utf-8",headers:{"Last-Translator":"Mark Ziegler <mark.ziegler@rakekniven.de>, 2024","Language-Team":"German (Germany) (https://app.transifex.com/nextcloud/teams/64236/de_DE/)","Content-Type":"text/plain; charset=UTF-8",Language:"de_DE","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nMario Siegmann <mario_siegmann@web.de>, 2024\nMark Ziegler <mark.ziegler@rakekniven.de>, 2024\n"},msgstr:["Last-Translator: Mark Ziegler <mark.ziegler@rakekniven.de>, 2024\nLanguage-Team: German (Germany) (https://app.transifex.com/nextcloud/teams/64236/de_DE/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: de_DE\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" ist ein verbotener Datei- oder Ordnername.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" ist ein verbotener Dateityp.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" ist in einem Datei- oder Ordnernamen nicht zulässig.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} Datei-Konflikt","{count} Datei-Konflikte"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} Datei-Konflikt in {dirname}","{count} Datei-Konflikte in {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} Sekunden verbleiben"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} verbleibend"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["ein paar Sekunden verbleiben"]},Cancel:{msgid:"Cancel",msgstr:["Abbrechen"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Den gesamten Vorgang abbrechen"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Hochladen abbrechen"]},Continue:{msgid:"Continue",msgstr:["Fortsetzen"]},"Create new":{msgid:"Create new",msgstr:["Neu erstellen"]},"estimating time left":{msgid:"estimating time left",msgstr:["Berechne verbleibende Zeit"]},"Existing version":{msgid:"Existing version",msgstr:["Vorhandene Version"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Dateinamen dürfen nicht mit "{segment}" enden.']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Wenn Sie beide Versionen auswählen, wird der eingehenden Datei eine Nummer zum Namen hinzugefügt."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Ungültiger Dateiname"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Datum der letzten Änderung unbekannt"]},New:{msgid:"New",msgstr:["Neu"]},"New filename":{msgid:"New filename",msgstr:["Neuer Dateiname"]},"New version":{msgid:"New version",msgstr:["Neue Version"]},paused:{msgid:"paused",msgstr:["Pausiert"]},"Preview image":{msgid:"Preview image",msgstr:["Vorschaubild"]},Rename:{msgid:"Rename",msgstr:["Umbenennen"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Alle Kontrollkästchen aktivieren"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Alle vorhandenen Dateien auswählen"]},"Select all new files":{msgid:"Select all new files",msgstr:["Alle neuen Dateien auswählen"]},Skip:{msgid:"Skip",msgstr:["Überspringen"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["{count} Datei überspringen","{count} Dateien überspringen"]},"Unknown size":{msgid:"Unknown size",msgstr:["Unbekannte Größe"]},Upload:{msgid:"Upload",msgstr:["Hochladen"]},"Upload files":{msgid:"Upload files",msgstr:["Dateien hochladen"]},"Upload folders":{msgid:"Upload folders",msgstr:["Ordner hochladen"]},"Upload from device":{msgid:"Upload from device",msgstr:["Vom Gerät hochladen"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Das Hochladen wurde abgebrochen"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Das Hochladen wurde übersprungen"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Das Hochladen von "{folder}" wurde übersprungen']},"Upload progress":{msgid:"Upload progress",msgstr:["Fortschritt beim Hochladen"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Wenn ein eingehender Ordner ausgewählt wird, werden alle darin enthaltenen Konfliktdateien ebenfalls überschrieben."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Welche Dateien möchten Sie behalten?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Sie können die Datei entweder umbenennen, diese Datei überspringen oder den gesamten Vorgang abbrechen."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Sie müssen mindestens eine Version jeder Datei auswählen, um fortzufahren."]}}}}},{locale:"el",json:{charset:"utf-8",headers:{"Last-Translator":"Nik Pap, 2022","Language-Team":"Greek (https://www.transifex.com/nextcloud/teams/64236/el/)","Content-Type":"text/plain; charset=UTF-8",Language:"el","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nNik Pap, 2022\n"},msgstr:["Last-Translator: Nik Pap, 2022\nLanguage-Team: Greek (https://www.transifex.com/nextcloud/teams/64236/el/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: el\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["απομένουν {seconds} δευτερόλεπτα"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["απομένουν {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["απομένουν λίγα δευτερόλεπτα"]},Add:{msgid:"Add",msgstr:["Προσθήκη"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Ακύρωση μεταφορτώσεων"]},"estimating time left":{msgid:"estimating time left",msgstr:["εκτίμηση του χρόνου που απομένει"]},paused:{msgid:"paused",msgstr:["σε παύση"]},"Upload files":{msgid:"Upload files",msgstr:["Μεταφόρτωση αρχείων"]}}}}},{locale:"en_GB",json:{charset:"utf-8",headers:{"Last-Translator":"Andi Chandler <andi@gowling.com>, 2024","Language-Team":"English (United Kingdom) (https://app.transifex.com/nextcloud/teams/64236/en_GB/)","Content-Type":"text/plain; charset=UTF-8",Language:"en_GB","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nAndi Chandler <andi@gowling.com>, 2024\n"},msgstr:["Last-Translator: Andi Chandler <andi@gowling.com>, 2024\nLanguage-Team: English (United Kingdom) (https://app.transifex.com/nextcloud/teams/64236/en_GB/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: en_GB\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" is a forbidden file or folder name.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" is a forbidden file type.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" is not allowed inside a file or folder name.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} file conflict","{count} files conflict"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} file conflict in {dirname}","{count} file conflicts in {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} seconds left"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} left"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["a few seconds left"]},Cancel:{msgid:"Cancel",msgstr:["Cancel"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Cancel the entire operation"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Cancel uploads"]},Continue:{msgid:"Continue",msgstr:["Continue"]},"Create new":{msgid:"Create new",msgstr:["Create new"]},"estimating time left":{msgid:"estimating time left",msgstr:["estimating time left"]},"Existing version":{msgid:"Existing version",msgstr:["Existing version"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Filenames must not end with "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["If you select both versions, the incoming file will have a number added to its name."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Invalid filename"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Last modified date unknown"]},New:{msgid:"New",msgstr:["New"]},"New filename":{msgid:"New filename",msgstr:["New filename"]},"New version":{msgid:"New version",msgstr:["New version"]},paused:{msgid:"paused",msgstr:["paused"]},"Preview image":{msgid:"Preview image",msgstr:["Preview image"]},Rename:{msgid:"Rename",msgstr:["Rename"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Select all checkboxes"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Select all existing files"]},"Select all new files":{msgid:"Select all new files",msgstr:["Select all new files"]},Skip:{msgid:"Skip",msgstr:["Skip"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Skip this file","Skip {count} files"]},"Unknown size":{msgid:"Unknown size",msgstr:["Unknown size"]},Upload:{msgid:"Upload",msgstr:["Upload"]},"Upload files":{msgid:"Upload files",msgstr:["Upload files"]},"Upload folders":{msgid:"Upload folders",msgstr:["Upload folders"]},"Upload from device":{msgid:"Upload from device",msgstr:["Upload from device"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Upload has been cancelled"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Upload has been skipped"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Upload of "{folder}" has been skipped']},"Upload progress":{msgid:"Upload progress",msgstr:["Upload progress"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["When an incoming folder is selected, any conflicting files within it will also be overwritten."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Which files do you want to keep?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["You can either rename the file, skip this file or cancel the whole operation."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["You need to select at least one version of each file to continue."]}}}}},{locale:"eo",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)","Content-Type":"text/plain; charset=UTF-8",Language:"eo","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: eo\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es",json:{charset:"utf-8",headers:{"Last-Translator":"Julio C. Ortega, 2024","Language-Team":"Spanish (https://app.transifex.com/nextcloud/teams/64236/es/)","Content-Type":"text/plain; charset=UTF-8",Language:"es","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nFranciscoFJ <dev-ooo@satel-sa.com>, 2024\nJulio C. Ortega, 2024\n"},msgstr:["Last-Translator: Julio C. Ortega, 2024\nLanguage-Team: Spanish (https://app.transifex.com/nextcloud/teams/64236/es/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},'"{filename}" contains invalid characters, how do you want to continue?':{msgid:'"{filename}" contains invalid characters, how do you want to continue?',msgstr:['"{filename}" contiene caracteres inválidos, ¿cómo desea continuar?']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} conflicto de archivo","{count} conflictos de archivo","{count} conflictos de archivo"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} conflicto de archivo en {dirname}","{count} conflictos de archivo en {dirname}","{count} conflictos de archivo en {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} segundos restantes"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} restante"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["quedan unos segundos"]},Cancel:{msgid:"Cancel",msgstr:["Cancelar"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Cancelar toda la operación"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Cancelar subidas"]},Continue:{msgid:"Continue",msgstr:["Continuar"]},"Create new":{msgid:"Create new",msgstr:["Crear nuevo"]},"estimating time left":{msgid:"estimating time left",msgstr:["estimando tiempo restante"]},"Existing version":{msgid:"Existing version",msgstr:["Versión existente"]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Si selecciona ambas versionas, el archivo entrante le será agregado un número a su nombre."]},"Invalid file name":{msgid:"Invalid file name",msgstr:["Nombre de archivo inválido"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Última fecha de modificación desconocida"]},New:{msgid:"New",msgstr:["Nuevo"]},"New version":{msgid:"New version",msgstr:["Nueva versión"]},paused:{msgid:"paused",msgstr:["pausado"]},"Preview image":{msgid:"Preview image",msgstr:["Previsualizar imagen"]},Rename:{msgid:"Rename",msgstr:["Renombrar"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Seleccionar todas las casillas de verificación"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Seleccionar todos los archivos existentes"]},"Select all new files":{msgid:"Select all new files",msgstr:["Seleccionar todos los archivos nuevos"]},Skip:{msgid:"Skip",msgstr:["Saltar"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Saltar este archivo","Saltar {count} archivos","Saltar {count} archivos"]},"Unknown size":{msgid:"Unknown size",msgstr:["Tamaño desconocido"]},"Upload files":{msgid:"Upload files",msgstr:["Subir archivos"]},"Upload folders":{msgid:"Upload folders",msgstr:["Subir carpetas"]},"Upload from device":{msgid:"Upload from device",msgstr:["Subir desde dispositivo"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["La subida ha sido cancelada"]},"Upload progress":{msgid:"Upload progress",msgstr:["Progreso de la subida"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Cuando una carpeta entrante es seleccionada, cualquier de los archivos en conflictos también serán sobre-escritos."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Cuando una carpeta entrante es seleccionada, el contenido es escrito en la carpeta existente y se realizará una resolución de conflictos recursiva."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["¿Qué archivos desea conservar?"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Debe seleccionar al menos una versión de cada archivo para continuar."]}}}}},{locale:"es_419",json:{charset:"utf-8",headers:{"Last-Translator":"ALEJANDRO CASTRO, 2022","Language-Team":"Spanish (Latin America) (https://www.transifex.com/nextcloud/teams/64236/es_419/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_419","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nALEJANDRO CASTRO, 2022\n"},msgstr:["Last-Translator: ALEJANDRO CASTRO, 2022\nLanguage-Team: Spanish (Latin America) (https://www.transifex.com/nextcloud/teams/64236/es_419/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_419\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} segundos restantes"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["{tiempo} restante"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["quedan pocos segundos"]},Add:{msgid:"Add",msgstr:["agregar"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Cancelar subidas"]},"estimating time left":{msgid:"estimating time left",msgstr:["estimando tiempo restante"]},paused:{msgid:"paused",msgstr:["pausado"]},"Upload files":{msgid:"Upload files",msgstr:["Subir archivos"]}}}}},{locale:"es_AR",json:{charset:"utf-8",headers:{"Last-Translator":"Matías Campo Hoet <matiascampo@gmail.com>, 2024","Language-Team":"Spanish (Argentina) (https://app.transifex.com/nextcloud/teams/64236/es_AR/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_AR","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nMatías Campo Hoet <matiascampo@gmail.com>, 2024\n"},msgstr:["Last-Translator: Matías Campo Hoet <matiascampo@gmail.com>, 2024\nLanguage-Team: Spanish (Argentina) (https://app.transifex.com/nextcloud/teams/64236/es_AR/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_AR\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},'"{filename}" contains invalid characters, how do you want to continue?':{msgid:'"{filename}" contains invalid characters, how do you want to continue?',msgstr:['"{filename}" contiene caracteres inválidos, ¿cómo desea continuar?']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} conflicto de archivo","{count} conflictos de archivo","{count} conflictos de archivo"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} conflicto de archivo en {dirname}","{count} conflictos de archivo en {dirname}","{count} conflictos de archivo en {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} segundos restantes"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} restante"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["quedan unos segundos"]},Cancel:{msgid:"Cancel",msgstr:["Cancelar"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Cancelar toda la operación"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Cancelar subidas"]},Continue:{msgid:"Continue",msgstr:["Continuar"]},"Create new":{msgid:"Create new",msgstr:["Crear nuevo"]},"estimating time left":{msgid:"estimating time left",msgstr:["estimando tiempo restante"]},"Existing version":{msgid:"Existing version",msgstr:["Versión existente"]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Si selecciona ambas versionas, se agregará un número al nombre del archivo entrante."]},"Invalid file name":{msgid:"Invalid file name",msgstr:["Nombre de archivo inválido"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Fecha de última modificación desconocida"]},New:{msgid:"New",msgstr:["Nuevo"]},"New version":{msgid:"New version",msgstr:["Nueva versión"]},paused:{msgid:"paused",msgstr:["pausado"]},"Preview image":{msgid:"Preview image",msgstr:["Vista previa de imagen"]},Rename:{msgid:"Rename",msgstr:["Renombrar"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Seleccionar todas las casillas de verificación"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Seleccionar todos los archivos existentes"]},"Select all new files":{msgid:"Select all new files",msgstr:["Seleccionar todos los archivos nuevos"]},Skip:{msgid:"Skip",msgstr:["Omitir"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Omitir este archivo","Omitir {count} archivos","Omitir {count} archivos"]},"Unknown size":{msgid:"Unknown size",msgstr:["Tamaño desconocido"]},"Upload files":{msgid:"Upload files",msgstr:["Cargar archivos"]},"Upload folders":{msgid:"Upload folders",msgstr:["Cargar carpetas"]},"Upload from device":{msgid:"Upload from device",msgstr:["Cargar desde dispositivo"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Carga cancelada"]},"Upload progress":{msgid:"Upload progress",msgstr:["Progreso de la carga"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Cuando una carpeta entrante es seleccionada, cualquier archivo en conflicto dentro de la misma también serán sobreescritos."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Cuando una carpeta entrante es seleccionada, el contenido se escribe en la carpeta existente y se realiza una resolución de conflictos recursiva."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["¿Qué archivos desea conservar?"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Debe seleccionar al menos una versión de cada archivo para continuar."]}}}}},{locale:"es_CL",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Chile) (https://www.transifex.com/nextcloud/teams/64236/es_CL/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_CL","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Chile) (https://www.transifex.com/nextcloud/teams/64236/es_CL/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_CL\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_CO",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Colombia) (https://www.transifex.com/nextcloud/teams/64236/es_CO/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_CO","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Colombia) (https://www.transifex.com/nextcloud/teams/64236/es_CO/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_CO\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_CR",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Costa Rica) (https://www.transifex.com/nextcloud/teams/64236/es_CR/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_CR","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Costa Rica) (https://www.transifex.com/nextcloud/teams/64236/es_CR/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_CR\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_DO",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Dominican Republic) (https://www.transifex.com/nextcloud/teams/64236/es_DO/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_DO","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Dominican Republic) (https://www.transifex.com/nextcloud/teams/64236/es_DO/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_DO\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_EC",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Ecuador) (https://www.transifex.com/nextcloud/teams/64236/es_EC/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_EC","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Ecuador) (https://www.transifex.com/nextcloud/teams/64236/es_EC/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_EC\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_GT",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Guatemala) (https://www.transifex.com/nextcloud/teams/64236/es_GT/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_GT","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Guatemala) (https://www.transifex.com/nextcloud/teams/64236/es_GT/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_GT\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_HN",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Honduras) (https://www.transifex.com/nextcloud/teams/64236/es_HN/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_HN","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Honduras) (https://www.transifex.com/nextcloud/teams/64236/es_HN/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_HN\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_MX",json:{charset:"utf-8",headers:{"Last-Translator":"Jehu Marcos Herrera Puentes, 2024","Language-Team":"Spanish (Mexico) (https://app.transifex.com/nextcloud/teams/64236/es_MX/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_MX","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nJehu Marcos Herrera Puentes, 2024\n"},msgstr:["Last-Translator: Jehu Marcos Herrera Puentes, 2024\nLanguage-Team: Spanish (Mexico) (https://app.transifex.com/nextcloud/teams/64236/es_MX/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_MX\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},'"{filename}" contains invalid characters, how do you want to continue?':{msgid:'"{filename}" contains invalid characters, how do you want to continue?',msgstr:['"{filename}" contiene caracteres inválidos, ¿Cómo desea continuar?']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} conflicto de archivo","{count} conflictos de archivo","{count} archivos en conflicto"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} archivo en conflicto en {dirname}","{count} archivos en conflicto en {dirname}","{count} archivo en conflicto en {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} segundos restantes"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{tiempo} restante"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["quedan pocos segundos"]},Cancel:{msgid:"Cancel",msgstr:["Cancelar"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Cancelar toda la operación"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Cancelar subidas"]},Continue:{msgid:"Continue",msgstr:["Continuar"]},"Create new":{msgid:"Create new",msgstr:["Crear nuevo"]},"estimating time left":{msgid:"estimating time left",msgstr:["estimando tiempo restante"]},"Existing version":{msgid:"Existing version",msgstr:["Versión existente"]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Si selecciona ambas versionas, se agregará un número al nombre del archivo entrante."]},"Invalid file name":{msgid:"Invalid file name",msgstr:["Nombre de archivo inválido"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Fecha de última modificación desconocida"]},New:{msgid:"New",msgstr:["Nuevo"]},"New version":{msgid:"New version",msgstr:["Nueva versión"]},paused:{msgid:"paused",msgstr:["en pausa"]},"Preview image":{msgid:"Preview image",msgstr:["Previsualizar imagen"]},Rename:{msgid:"Rename",msgstr:["Renombrar"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Seleccionar todas las casillas de verificación"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Seleccionar todos los archivos existentes"]},"Select all new files":{msgid:"Select all new files",msgstr:["Seleccionar todos los archivos nuevos"]},Skip:{msgid:"Skip",msgstr:["Omitir"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Omitir este archivo","Omitir {count} archivos","Omitir {count} archivos"]},"Unknown size":{msgid:"Unknown size",msgstr:["Tamaño desconocido"]},"Upload files":{msgid:"Upload files",msgstr:["Subir archivos"]},"Upload folders":{msgid:"Upload folders",msgstr:["Subir carpetas"]},"Upload from device":{msgid:"Upload from device",msgstr:["Subir desde dispositivo"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["La subida ha sido cancelada"]},"Upload progress":{msgid:"Upload progress",msgstr:["Progreso de la subida"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Cuando una carpeta entrante es seleccionada, cualquier archivo en conflicto dentro de la misma también será sobrescrito."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Cuando una carpeta entrante es seleccionada, el contenido se escribe en la carpeta existente y se realiza una resolución de conflictos recursiva."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["¿Cuáles archivos desea conservar?"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Debe seleccionar al menos una versión de cada archivo para continuar."]}}}}},{locale:"es_NI",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Nicaragua) (https://www.transifex.com/nextcloud/teams/64236/es_NI/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_NI","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Nicaragua) (https://www.transifex.com/nextcloud/teams/64236/es_NI/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_NI\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_PA",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Panama) (https://www.transifex.com/nextcloud/teams/64236/es_PA/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_PA","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Panama) (https://www.transifex.com/nextcloud/teams/64236/es_PA/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_PA\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_PE",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Peru) (https://www.transifex.com/nextcloud/teams/64236/es_PE/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_PE","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Peru) (https://www.transifex.com/nextcloud/teams/64236/es_PE/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_PE\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_PR",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Puerto Rico) (https://www.transifex.com/nextcloud/teams/64236/es_PR/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_PR","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Puerto Rico) (https://www.transifex.com/nextcloud/teams/64236/es_PR/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_PR\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_PY",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Paraguay) (https://www.transifex.com/nextcloud/teams/64236/es_PY/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_PY","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Paraguay) (https://www.transifex.com/nextcloud/teams/64236/es_PY/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_PY\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_SV",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (El Salvador) (https://www.transifex.com/nextcloud/teams/64236/es_SV/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_SV","Plural-Forms":"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (El Salvador) (https://www.transifex.com/nextcloud/teams/64236/es_SV/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_SV\nPlural-Forms: nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"es_UY",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Spanish (Uruguay) (https://www.transifex.com/nextcloud/teams/64236/es_UY/)","Content-Type":"text/plain; charset=UTF-8",Language:"es_UY","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Spanish (Uruguay) (https://www.transifex.com/nextcloud/teams/64236/es_UY/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: es_UY\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"et_EE",json:{charset:"utf-8",headers:{"Last-Translator":"Taavo Roos, 2023","Language-Team":"Estonian (Estonia) (https://app.transifex.com/nextcloud/teams/64236/et_EE/)","Content-Type":"text/plain; charset=UTF-8",Language:"et_EE","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nMait R, 2022\nTaavo Roos, 2023\n"},msgstr:["Last-Translator: Taavo Roos, 2023\nLanguage-Team: Estonian (Estonia) (https://app.transifex.com/nextcloud/teams/64236/et_EE/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: et_EE\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} jäänud sekundid"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["{time} aega jäänud"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["jäänud mõni sekund"]},Add:{msgid:"Add",msgstr:["Lisa"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Tühista üleslaadimine"]},"estimating time left":{msgid:"estimating time left",msgstr:["hinnanguline järelejäänud aeg"]},paused:{msgid:"paused",msgstr:["pausil"]},"Upload files":{msgid:"Upload files",msgstr:["Lae failid üles"]}}}}},{locale:"eu",json:{charset:"utf-8",headers:{"Last-Translator":"Unai Tolosa Pontesta <utolosa002@gmail.com>, 2022","Language-Team":"Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)","Content-Type":"text/plain; charset=UTF-8",Language:"eu","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nUnai Tolosa Pontesta <utolosa002@gmail.com>, 2022\n"},msgstr:["Last-Translator: Unai Tolosa Pontesta <utolosa002@gmail.com>, 2022\nLanguage-Team: Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: eu\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} segundo geratzen dira"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["{time} geratzen da"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["segundo batzuk geratzen dira"]},Add:{msgid:"Add",msgstr:["Gehitu"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Ezeztatu igoerak"]},"estimating time left":{msgid:"estimating time left",msgstr:["kalkulatutako geratzen den denbora"]},paused:{msgid:"paused",msgstr:["geldituta"]},"Upload files":{msgid:"Upload files",msgstr:["Igo fitxategiak"]}}}}},{locale:"fa",json:{charset:"utf-8",headers:{"Last-Translator":"Fatemeh Komeily, 2023","Language-Team":"Persian (https://app.transifex.com/nextcloud/teams/64236/fa/)","Content-Type":"text/plain; charset=UTF-8",Language:"fa","Plural-Forms":"nplurals=2; plural=(n > 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nFatemeh Komeily, 2023\n"},msgstr:["Last-Translator: Fatemeh Komeily, 2023\nLanguage-Team: Persian (https://app.transifex.com/nextcloud/teams/64236/fa/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: fa\nPlural-Forms: nplurals=2; plural=(n > 1);\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["ثانیه های باقی مانده"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["باقی مانده"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["چند ثانیه مانده"]},Add:{msgid:"Add",msgstr:["اضافه کردن"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["کنسل کردن فایل های اپلود شده"]},"estimating time left":{msgid:"estimating time left",msgstr:["تخمین زمان باقی مانده"]},paused:{msgid:"paused",msgstr:["مکث کردن"]},"Upload files":{msgid:"Upload files",msgstr:["بارگذاری فایل ها"]}}}}},{locale:"fi",json:{charset:"utf-8",headers:{"Last-Translator":"teemue, 2024","Language-Team":"Finnish (Finland) (https://app.transifex.com/nextcloud/teams/64236/fi_FI/)","Content-Type":"text/plain; charset=UTF-8",Language:"fi_FI","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nJiri Grönroos <jiri.gronroos@iki.fi>, 2024\nthingumy, 2024\nteemue, 2024\n"},msgstr:["Last-Translator: teemue, 2024\nLanguage-Team: Finnish (Finland) (https://app.transifex.com/nextcloud/teams/64236/fi_FI/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: fi_FI\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" on kielletty tiedoston tai hakemiston nimi.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" on kielletty tiedostotyyppi.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" ei ole sallittu tiedoston tai hakemiston nimessä.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} tiedoston ristiriita","{count} tiedoston ristiriita"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} tiedoston ristiriita kansiossa {dirname}","{count} tiedoston ristiriita kansiossa {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} sekuntia jäljellä"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} jäljellä"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["muutama sekunti jäljellä"]},Cancel:{msgid:"Cancel",msgstr:["Peruuta"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Peruuta koko toimenpide"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Peruuta lähetykset"]},Continue:{msgid:"Continue",msgstr:["Jatka"]},"Create new":{msgid:"Create new",msgstr:["Luo uusi"]},"estimating time left":{msgid:"estimating time left",msgstr:["arvioidaan jäljellä olevaa aikaa"]},"Existing version":{msgid:"Existing version",msgstr:["Olemassa oleva versio"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Tiedoston nimi ei saa päättyä "{segment}"']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Jos valitset molemmat versiot, saapuvan tiedoston nimeen lisätään numero."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Kielletty/väärä tiedoston nimi"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Viimeisin muokkauspäivä on tuntematon"]},New:{msgid:"New",msgstr:["Uusi"]},"New filename":{msgid:"New filename",msgstr:["Uusi tiedostonimi"]},"New version":{msgid:"New version",msgstr:["Uusi versio"]},paused:{msgid:"paused",msgstr:["keskeytetty"]},"Preview image":{msgid:"Preview image",msgstr:["Esikatsele kuva"]},Rename:{msgid:"Rename",msgstr:["Nimeä uudelleen"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Valitse kaikki valintaruudut"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Valitse kaikki olemassa olevat tiedostot"]},"Select all new files":{msgid:"Select all new files",msgstr:["Valitse kaikki uudet tiedostot"]},Skip:{msgid:"Skip",msgstr:["Ohita"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Ohita tämä tiedosto","Ohita {count} tiedostoa"]},"Unknown size":{msgid:"Unknown size",msgstr:["Tuntematon koko"]},Upload:{msgid:"Upload",msgstr:["Lähetä"]},"Upload files":{msgid:"Upload files",msgstr:["Lähetä tiedostoja"]},"Upload folders":{msgid:"Upload folders",msgstr:["Lähetä kansioita"]},"Upload from device":{msgid:"Upload from device",msgstr:["Lähetä laitteelta"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Lähetys on peruttu"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Lähetys on ohitettu"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Hakemiston "{folder}" lähetys on ohitettu']},"Upload progress":{msgid:"Upload progress",msgstr:["Lähetyksen edistyminen"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Valittuasi saapuvien kansion, kaikki ristiriitaiset tiedostot kansiossa ylikirjoitetaan."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Valittuasi saapuvien kansion, sisältö kirjoitetaan olemassaolevaan kansioon ja suoritetaan rekursiivinen ristiriitojen poisto."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Mitkä tiedostot haluat säilyttää?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Voit joko nimetä tiedoston uudelleen, ohittaa tämän tiedoston tai peruuttaa koko toiminnon."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Sinun täytyy valita vähintään yksi versio jokaisesta tiedostosta jatkaaksesi."]}}}}},{locale:"fo",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Faroese (https://www.transifex.com/nextcloud/teams/64236/fo/)","Content-Type":"text/plain; charset=UTF-8",Language:"fo","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Faroese (https://www.transifex.com/nextcloud/teams/64236/fo/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: fo\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"fr",json:{charset:"utf-8",headers:{"Last-Translator":"Arnaud Cazenave, 2024","Language-Team":"French (https://app.transifex.com/nextcloud/teams/64236/fr/)","Content-Type":"text/plain; charset=UTF-8",Language:"fr","Plural-Forms":"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nBenoit Pruneau, 2024\njed boulahya, 2024\nJérôme HERBINET, 2024\nArnaud Cazenave, 2024\n"},msgstr:["Last-Translator: Arnaud Cazenave, 2024\nLanguage-Team: French (https://app.transifex.com/nextcloud/teams/64236/fr/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: fr\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" est un nom de fichier ou de dossier interdit.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" est un type de fichier interdit.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:["\"{segment}\" n'est pas autorisé dans le nom d'un fichier ou d'un dossier."]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} fichier en conflit","{count} fichiers en conflit","{count} fichiers en conflit"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} fichier en conflit dans {dirname}","{count} fichiers en conflit dans {dirname}","{count} fichiers en conflit dans {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} secondes restantes"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} restant"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["quelques secondes restantes"]},Cancel:{msgid:"Cancel",msgstr:["Annuler"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Annuler l'opération entière"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Annuler les téléversements"]},Continue:{msgid:"Continue",msgstr:["Continuer"]},"Create new":{msgid:"Create new",msgstr:["Créer un nouveau"]},"estimating time left":{msgid:"estimating time left",msgstr:["estimation du temps restant"]},"Existing version":{msgid:"Existing version",msgstr:["Version existante"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Le nom des fichiers ne doit pas finir par "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Si vous sélectionnez les deux versions, le nouveau fichier aura un nombre ajouté à son nom."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Nom de fichier invalide"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Date de la dernière modification est inconnue"]},New:{msgid:"New",msgstr:["Nouveau"]},"New filename":{msgid:"New filename",msgstr:["Nouveau nom de fichier"]},"New version":{msgid:"New version",msgstr:["Nouvelle version"]},paused:{msgid:"paused",msgstr:["en pause"]},"Preview image":{msgid:"Preview image",msgstr:["Aperçu de l'image"]},Rename:{msgid:"Rename",msgstr:["Renommer"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Sélectionner toutes les cases à cocher"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Sélectionner tous les fichiers existants"]},"Select all new files":{msgid:"Select all new files",msgstr:["Sélectionner tous les nouveaux fichiers"]},Skip:{msgid:"Skip",msgstr:["Ignorer"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Ignorer ce fichier","Ignorer {count} fichiers","Ignorer {count} fichiers"]},"Unknown size":{msgid:"Unknown size",msgstr:["Taille inconnue"]},Upload:{msgid:"Upload",msgstr:["Téléverser"]},"Upload files":{msgid:"Upload files",msgstr:["Téléverser des fichiers"]},"Upload folders":{msgid:"Upload folders",msgstr:["Téléverser des dossiers"]},"Upload from device":{msgid:"Upload from device",msgstr:["Téléverser depuis l'appareil"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Le téléversement a été annulé"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Le téléversement a été ignoré"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Le téléversement de "{folder}" a été ignoré']},"Upload progress":{msgid:"Upload progress",msgstr:["Progression du téléversement"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Lorsqu'un dossier entrant est sélectionné, tous les fichiers en conflit qu'il contient seront également écrasés."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Lorsqu'un dossier entrant est sélectionné, le contenu est ajouté dans le dossier existant et une résolution récursive des conflits est effectuée."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Quels fichiers souhaitez-vous conserver ?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Vous pouvez soit renommer le fichier, soit ignorer le fichier soit annuler toute l'opération."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Vous devez sélectionner au moins une version de chaque fichier pour continuer."]}}}}},{locale:"ga",json:{charset:"utf-8",headers:{"Last-Translator":"Aindriú Mac Giolla Eoin, 2024","Language-Team":"Irish (https://app.transifex.com/nextcloud/teams/64236/ga/)","Content-Type":"text/plain; charset=UTF-8",Language:"ga","Plural-Forms":"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nAindriú Mac Giolla Eoin, 2024\n"},msgstr:["Last-Translator: Aindriú Mac Giolla Eoin, 2024\nLanguage-Team: Irish (https://app.transifex.com/nextcloud/teams/64236/ga/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ga\nPlural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['Is ainm toirmiscthe comhaid nó fillteáin é "{segment}".']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['Is cineál comhaid toirmiscthe é "{segment}".']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['Ní cheadaítear "{segment}" taobh istigh d\'ainm comhaid nó fillteáin.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} coimhlint comhaid","{count} coimhlintí comhaid","{count} coimhlintí comhaid","{count} coimhlintí comhaid","{count} coimhlintí comhaid"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} coimhlint comhaid i {dirname}","{count} coimhlintí comhaid i {dirname}","{count} coimhlintí comhaid i {dirname}","{count} coimhlintí comhaid i {dirname}","{count} coimhlintí comhaid i {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} soicind fágtha"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} fágtha"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["cúpla soicind fágtha"]},Cancel:{msgid:"Cancel",msgstr:["Cealaigh"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Cealaigh an oibríocht iomlán"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Cealaigh uaslódálacha"]},Continue:{msgid:"Continue",msgstr:["Leanúint ar aghaidh"]},"Create new":{msgid:"Create new",msgstr:["Cruthaigh nua"]},"estimating time left":{msgid:"estimating time left",msgstr:["ag déanamh meastachán ar an am atá fágtha"]},"Existing version":{msgid:"Existing version",msgstr:["Leagan láithreach "]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Níor cheart go gcríochnaíonn comhaid chomhad le "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Má roghnaíonn tú an dá leagan, cuirfear uimhir leis an ainm a thagann isteach."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Ainm comhaid neamhbhailí"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Dáta modhnaithe is déanaí anaithnid"]},New:{msgid:"New",msgstr:["Nua"]},"New filename":{msgid:"New filename",msgstr:["Ainm comhaid nua"]},"New version":{msgid:"New version",msgstr:["Leagan nua"]},paused:{msgid:"paused",msgstr:["sos"]},"Preview image":{msgid:"Preview image",msgstr:["Íomhá réamhamharc"]},Rename:{msgid:"Rename",msgstr:["Athainmnigh"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Roghnaigh gach ticbhosca"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Roghnaigh gach comhad atá ann cheana féin"]},"Select all new files":{msgid:"Select all new files",msgstr:["Roghnaigh gach comhad nua"]},Skip:{msgid:"Skip",msgstr:["Scipeáil"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Léim an comhad seo","Léim ar {count} comhad","Léim ar {count} comhad","Léim ar {count} comhad","Léim ar {count} comhad"]},"Unknown size":{msgid:"Unknown size",msgstr:["Méid anaithnid"]},Upload:{msgid:"Upload",msgstr:["Uaslódáil"]},"Upload files":{msgid:"Upload files",msgstr:["Uaslódáil comhaid"]},"Upload folders":{msgid:"Upload folders",msgstr:["Uaslódáil fillteáin"]},"Upload from device":{msgid:"Upload from device",msgstr:["Íosluchtaigh ó ghléas"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Cuireadh an t-uaslódáil ar ceal"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Léiríodh an uaslódáil"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Léiríodh an uaslódáil "{folder}".']},"Upload progress":{msgid:"Upload progress",msgstr:["Uaslódáil dul chun cinn"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Nuair a roghnaítear fillteán isteach, déanfar aon chomhad contrártha laistigh de a fhorscríobh freisin."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Nuair a roghnaítear fillteán isteach, scríobhtar an t-ábhar isteach san fhillteán atá ann cheana agus déantar réiteach coinbhleachta athchúrsach."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Cé na comhaid ar mhaith leat a choinneáil?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Is féidir leat an comhad a athainmniú, scipeáil an comhad seo nó an oibríocht iomlán a chealú."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Ní mór duit leagan amháin ar a laghad de gach comhad a roghnú chun leanúint ar aghaidh."]}}}}},{locale:"gd",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Gaelic, Scottish (https://www.transifex.com/nextcloud/teams/64236/gd/)","Content-Type":"text/plain; charset=UTF-8",Language:"gd","Plural-Forms":"nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Gaelic, Scottish (https://www.transifex.com/nextcloud/teams/64236/gd/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: gd\nPlural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"gl",json:{charset:"utf-8",headers:{"Last-Translator":"Miguel Anxo Bouzada <mbouzada@gmail.com>, 2024","Language-Team":"Galician (https://app.transifex.com/nextcloud/teams/64236/gl/)","Content-Type":"text/plain; charset=UTF-8",Language:"gl","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nMiguel Anxo Bouzada <mbouzada@gmail.com>, 2024\n"},msgstr:["Last-Translator: Miguel Anxo Bouzada <mbouzada@gmail.com>, 2024\nLanguage-Team: Galician (https://app.transifex.com/nextcloud/teams/64236/gl/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: gl\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:["«{segment}» é un nome vedado para un ficheiro ou cartafol."]},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:["«{segment}» é un tipo de ficheiro vedado."]},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:["«{segment}» non está permitido dentro dun nome de ficheiro ou cartafol."]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} conflito de ficheiros","{count} conflitos de ficheiros"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} conflito de ficheiros en {dirname}","{count} conflitos de ficheiros en {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["faltan {seconds} segundos"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["falta {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["faltan uns segundos"]},Cancel:{msgid:"Cancel",msgstr:["Cancelar"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Cancela toda a operación"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Cancelar envíos"]},Continue:{msgid:"Continue",msgstr:["Continuar"]},"Create new":{msgid:"Create new",msgstr:["Crear un novo"]},"estimating time left":{msgid:"estimating time left",msgstr:["calculando canto tempo falta"]},"Existing version":{msgid:"Existing version",msgstr:["Versión existente"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:["Os nomes de ficheiros non deben rematar con «{segment}»."]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Se selecciona ambas as versións, o ficheiro entrante terá un número engadido ao seu nome."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["O nome de ficheiro non é válido"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Data da última modificación descoñecida"]},New:{msgid:"New",msgstr:["Nova"]},"New filename":{msgid:"New filename",msgstr:["Novo nome de ficheiro"]},"New version":{msgid:"New version",msgstr:["Nova versión"]},paused:{msgid:"paused",msgstr:["detido"]},"Preview image":{msgid:"Preview image",msgstr:["Vista previa da imaxe"]},Rename:{msgid:"Rename",msgstr:["Renomear"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Marcar todas as caixas de selección"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Seleccionar todos os ficheiros existentes"]},"Select all new files":{msgid:"Select all new files",msgstr:["Seleccionar todos os ficheiros novos"]},Skip:{msgid:"Skip",msgstr:["Omitir"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Omita este ficheiro","Omitir {count} ficheiros"]},"Unknown size":{msgid:"Unknown size",msgstr:["Tamaño descoñecido"]},Upload:{msgid:"Upload",msgstr:["Enviar"]},"Upload files":{msgid:"Upload files",msgstr:["Enviar ficheiros"]},"Upload folders":{msgid:"Upload folders",msgstr:["Enviar cartafoles"]},"Upload from device":{msgid:"Upload from device",msgstr:["Enviar dende o dispositivo"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["O envío foi cancelado"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["O envío foi omitido"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:["O envío de «{folder}» foi omitido"]},"Upload progress":{msgid:"Upload progress",msgstr:["Progreso do envío"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Cando se selecciona un cartafol entrante, tamén se sobrescribirán os ficheiros en conflito dentro del."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Cando se selecciona un cartafol entrante, o contido escríbese no cartafol existente e lévase a cabo unha resolución recursiva de conflitos."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Que ficheiros quere conservar?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Pode cambiar o nome do ficheiro, omitir este ficheiro ou cancelar toda a operación."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Debe seleccionar polo menos unha versión de cada ficheiro para continuar."]}}}}},{locale:"he",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)","Content-Type":"text/plain; charset=UTF-8",Language:"he","Plural-Forms":"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: he\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"hi_IN",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Hindi (India) (https://www.transifex.com/nextcloud/teams/64236/hi_IN/)","Content-Type":"text/plain; charset=UTF-8",Language:"hi_IN","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Hindi (India) (https://www.transifex.com/nextcloud/teams/64236/hi_IN/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: hi_IN\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"hr",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Croatian (https://www.transifex.com/nextcloud/teams/64236/hr/)","Content-Type":"text/plain; charset=UTF-8",Language:"hr","Plural-Forms":"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Croatian (https://www.transifex.com/nextcloud/teams/64236/hr/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: hr\nPlural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"hsb",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Upper Sorbian (https://www.transifex.com/nextcloud/teams/64236/hsb/)","Content-Type":"text/plain; charset=UTF-8",Language:"hsb","Plural-Forms":"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Upper Sorbian (https://www.transifex.com/nextcloud/teams/64236/hsb/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: hsb\nPlural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"hu",json:{charset:"utf-8",headers:{"Last-Translator":"Gyuris Gellért <jobel@ujevangelizacio.hu>, 2024","Language-Team":"Hungarian (Hungary) (https://app.transifex.com/nextcloud/teams/64236/hu_HU/)","Content-Type":"text/plain; charset=UTF-8",Language:"hu_HU","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nGyuris Gellért <jobel@ujevangelizacio.hu>, 2024\n"},msgstr:["Last-Translator: Gyuris Gellért <jobel@ujevangelizacio.hu>, 2024\nLanguage-Team: Hungarian (Hungary) (https://app.transifex.com/nextcloud/teams/64236/hu_HU/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: hu_HU\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['Tiltott fájl- vagy mappanév: „{segment}".']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['Tiltott fájltípus: „{segment}".']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['Nem megengedett egy fájl- vagy mappanévben: „{segment}".']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count}fájlt érintő konfliktus","{count} fájlt érintő konfliktus"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} fájlt érintő konfliktus a mappában: {dirname}","{count}fájlt érintő konfliktus a mappában: {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{} másodperc van hátra"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} van hátra"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["pár másodperc van hátra"]},Cancel:{msgid:"Cancel",msgstr:["Mégse"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Teljes művelet megszakítása"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Feltöltések megszakítása"]},Continue:{msgid:"Continue",msgstr:["Tovább"]},"Create new":{msgid:"Create new",msgstr:["Új létrehozása"]},"estimating time left":{msgid:"estimating time left",msgstr:["hátralévő idő becslése"]},"Existing version":{msgid:"Existing version",msgstr:["Jelenlegi változat"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:["Fájlnevek nem végződhetnek erre: „{segment}”."]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Ha mindkét verziót kiválasztja, a bejövő fájl neve egy számmal egészül ki."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Érvénytelen fájlnév"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Utolsó módosítás dátuma ismeretlen"]},New:{msgid:"New",msgstr:["Új"]},"New filename":{msgid:"New filename",msgstr:["Új fájlnév"]},"New version":{msgid:"New version",msgstr:["Új verzió"]},paused:{msgid:"paused",msgstr:["szüneteltetve"]},"Preview image":{msgid:"Preview image",msgstr:["Kép előnézete"]},Rename:{msgid:"Rename",msgstr:["Átnevezés"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Minden jelölőnégyzet kijelölése"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Minden jelenlegi fájl kijelölése"]},"Select all new files":{msgid:"Select all new files",msgstr:["Minden új fájl kijelölése"]},Skip:{msgid:"Skip",msgstr:["Kihagyás"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Ezen fájl kihagyása","{count}fájl kihagyása"]},"Unknown size":{msgid:"Unknown size",msgstr:["Ismeretlen méret"]},Upload:{msgid:"Upload",msgstr:["Feltöltés"]},"Upload files":{msgid:"Upload files",msgstr:["Fájlok feltöltése"]},"Upload folders":{msgid:"Upload folders",msgstr:["Mappák feltöltése"]},"Upload from device":{msgid:"Upload from device",msgstr:["Feltöltés eszközről"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Feltöltés meg lett szakítva"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Feltöltés át lett ugorva"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:["„{folder}” feltöltése át lett ugorva"]},"Upload progress":{msgid:"Upload progress",msgstr:["Feltöltési folyamat"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Ha egy bejövő mappa van kiválasztva, a mappában lévő ütköző fájlok is felülírásra kerülnek."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Ha egy bejövő mappa van kiválasztva, a tartalom a meglévő mappába íródik és rekurzív konfliktusfeloldás történik."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Mely fájlokat kívánja megtartani?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Átnevezheti a fájlt, kihagyhatja ezt a fájlt, vagy törölheti az egész műveletet."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["A folytatáshoz minden fájlból legalább egy verziót ki kell választani."]}}}}},{locale:"hy",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Armenian (https://www.transifex.com/nextcloud/teams/64236/hy/)","Content-Type":"text/plain; charset=UTF-8",Language:"hy","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Armenian (https://www.transifex.com/nextcloud/teams/64236/hy/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: hy\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"ia",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Interlingua (https://www.transifex.com/nextcloud/teams/64236/ia/)","Content-Type":"text/plain; charset=UTF-8",Language:"ia","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Interlingua (https://www.transifex.com/nextcloud/teams/64236/ia/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ia\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"id",json:{charset:"utf-8",headers:{"Last-Translator":"Linerly <linerly@proton.me>, 2023","Language-Team":"Indonesian (https://app.transifex.com/nextcloud/teams/64236/id/)","Content-Type":"text/plain; charset=UTF-8",Language:"id","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJohn Molakvoæ <skjnldsv@protonmail.com>, 2023\nEmpty Slot Filler, 2023\nLinerly <linerly@proton.me>, 2023\n"},msgstr:["Last-Translator: Linerly <linerly@proton.me>, 2023\nLanguage-Team: Indonesian (https://app.transifex.com/nextcloud/teams/64236/id/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: id\nPlural-Forms: nplurals=1; plural=0;\n"]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} berkas berkonflik"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} berkas berkonflik dalam {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} detik tersisa"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} tersisa"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["tinggal sebentar lagi"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Batalkan unggahan"]},Continue:{msgid:"Continue",msgstr:["Lanjutkan"]},"estimating time left":{msgid:"estimating time left",msgstr:["memperkirakan waktu yang tersisa"]},"Existing version":{msgid:"Existing version",msgstr:["Versi yang ada"]},"If you select both versions, the copied file will have a number added to its name.":{msgid:"If you select both versions, the copied file will have a number added to its name.",msgstr:["Jika Anda memilih kedua versi, nama berkas yang disalin akan ditambahi angka."]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Tanggal perubahan terakhir tidak diketahui"]},New:{msgid:"New",msgstr:["Baru"]},"New version":{msgid:"New version",msgstr:["Versi baru"]},paused:{msgid:"paused",msgstr:["dijeda"]},"Preview image":{msgid:"Preview image",msgstr:["Gambar pratinjau"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Pilih semua kotak centang"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Pilih semua berkas yang ada"]},"Select all new files":{msgid:"Select all new files",msgstr:["Pilih semua berkas baru"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Lewati {count} berkas"]},"Unknown size":{msgid:"Unknown size",msgstr:["Ukuran tidak diketahui"]},"Upload cancelled":{msgid:"Upload cancelled",msgstr:["Unggahan dibatalkan"]},"Upload files":{msgid:"Upload files",msgstr:["Unggah berkas"]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Berkas mana yang Anda ingin tetap simpan?"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Anda harus memilih setidaknya satu versi dari masing-masing berkas untuk melanjutkan."]}}}}},{locale:"ig",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Igbo (https://www.transifex.com/nextcloud/teams/64236/ig/)","Content-Type":"text/plain; charset=UTF-8",Language:"ig","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Igbo (https://www.transifex.com/nextcloud/teams/64236/ig/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ig\nPlural-Forms: nplurals=1; plural=0;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"is",json:{charset:"utf-8",headers:{"Last-Translator":"Sveinn í Felli <sv1@fellsnet.is>, 2023","Language-Team":"Icelandic (https://app.transifex.com/nextcloud/teams/64236/is/)","Content-Type":"text/plain; charset=UTF-8",Language:"is","Plural-Forms":"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nSveinn í Felli <sv1@fellsnet.is>, 2023\n"},msgstr:["Last-Translator: Sveinn í Felli <sv1@fellsnet.is>, 2023\nLanguage-Team: Icelandic (https://app.transifex.com/nextcloud/teams/64236/is/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: is\nPlural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n"]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} árekstur skráa","{count} árekstrar skráa"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} árekstur skráa í {dirname}","{count} árekstrar skráa í {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} sekúndur eftir"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} eftir"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["nokkrar sekúndur eftir"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Hætta við innsendingar"]},Continue:{msgid:"Continue",msgstr:["Halda áfram"]},"estimating time left":{msgid:"estimating time left",msgstr:["áætla tíma sem eftir er"]},"Existing version":{msgid:"Existing version",msgstr:["Fyrirliggjandi útgáfa"]},"If you select both versions, the copied file will have a number added to its name.":{msgid:"If you select both versions, the copied file will have a number added to its name.",msgstr:["Ef þú velur báðar útgáfur, þá mun verða bætt tölustaf aftan við heiti afrituðu skrárinnar."]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Síðasta breytingadagsetning er óþekkt"]},New:{msgid:"New",msgstr:["Nýtt"]},"New version":{msgid:"New version",msgstr:["Ný útgáfa"]},paused:{msgid:"paused",msgstr:["í bið"]},"Preview image":{msgid:"Preview image",msgstr:["Forskoðun myndar"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Velja gátreiti"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Velja allar fyrirliggjandi skrár"]},"Select all new files":{msgid:"Select all new files",msgstr:["Velja allar nýjar skrár"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Sleppa þessari skrá","Sleppa {count} skrám"]},"Unknown size":{msgid:"Unknown size",msgstr:["Óþekkt stærð"]},"Upload cancelled":{msgid:"Upload cancelled",msgstr:["Hætt við innsendingu"]},"Upload files":{msgid:"Upload files",msgstr:["Senda inn skrár"]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Hvaða skrám vilt þú vilt halda eftir?"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Þú verður að velja að minnsta kosti eina útgáfu af hverri skrá til að halda áfram."]}}}}},{locale:"it",json:{charset:"utf-8",headers:{"Last-Translator":"albanobattistella <albanobattistella@gmail.com>, 2024","Language-Team":"Italian (https://app.transifex.com/nextcloud/teams/64236/it/)","Content-Type":"text/plain; charset=UTF-8",Language:"it","Plural-Forms":"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nFrancesco Sercia, 2024\nalbanobattistella <albanobattistella@gmail.com>, 2024\n"},msgstr:["Last-Translator: albanobattistella <albanobattistella@gmail.com>, 2024\nLanguage-Team: Italian (https://app.transifex.com/nextcloud/teams/64236/it/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: it\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" è un nome di file o cartella proibito.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}"è un tipo di file proibito.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" non è consentito all\'interno di un nome di file o cartella.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} file in conflitto","{count} file in conflitto","{count} file in conflitto"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} file in conflitto in {dirname}","{count} file in conflitto in {dirname}","{count} file in conflitto in {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} secondi rimanenti "]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} rimanente"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["alcuni secondi rimanenti"]},Cancel:{msgid:"Cancel",msgstr:["Annulla"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Annulla l'intera operazione"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Annulla i caricamenti"]},Continue:{msgid:"Continue",msgstr:["Continua"]},"Create new":{msgid:"Create new",msgstr:["Crea nuovo"]},"estimating time left":{msgid:"estimating time left",msgstr:["calcolo il tempo rimanente"]},"Existing version":{msgid:"Existing version",msgstr:["Versione esistente"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['I nomi dei file non devono terminare con "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Se selezioni entrambe le versioni, nel nome del file copiato verrà aggiunto un numero "]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Nome file non valido"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Ultima modifica sconosciuta"]},New:{msgid:"New",msgstr:["Nuovo"]},"New filename":{msgid:"New filename",msgstr:["Nuovo nome file"]},"New version":{msgid:"New version",msgstr:["Nuova versione"]},paused:{msgid:"paused",msgstr:["pausa"]},"Preview image":{msgid:"Preview image",msgstr:["Anteprima immagine"]},Rename:{msgid:"Rename",msgstr:["Rinomina"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Seleziona tutte le caselle"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Seleziona tutti i file esistenti"]},"Select all new files":{msgid:"Select all new files",msgstr:["Seleziona tutti i nuovi file"]},Skip:{msgid:"Skip",msgstr:["Salta"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Salta questo file","Salta {count} file","Salta {count} file"]},"Unknown size":{msgid:"Unknown size",msgstr:["Dimensione sconosciuta"]},Upload:{msgid:"Upload",msgstr:["Caricamento"]},"Upload files":{msgid:"Upload files",msgstr:["Carica i file"]},"Upload folders":{msgid:"Upload folders",msgstr:["Carica cartelle"]},"Upload from device":{msgid:"Upload from device",msgstr:["Carica dal dispositivo"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Caricamento annullato"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Il caricamento è stato saltato"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Il caricamento di "{folder}" è stato saltato']},"Upload progress":{msgid:"Upload progress",msgstr:["Progresso del caricamento"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Quando si seleziona una cartella in arrivo, anche tutti i file in conflitto al suo interno verranno sovrascritti."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Quando si seleziona una cartella in arrivo, il contenuto viene scritto nella cartella esistente e viene eseguita una risoluzione ricorsiva dei conflitti."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Quali file vuoi mantenere?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["È possibile rinominare il file, ignorarlo o annullare l'intera operazione."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Devi selezionare almeno una versione di ogni file per continuare"]}}}}},{locale:"ja",json:{charset:"utf-8",headers:{"Last-Translator":"kshimohata, 2024","Language-Team":"Japanese (Japan) (https://app.transifex.com/nextcloud/teams/64236/ja_JP/)","Content-Type":"text/plain; charset=UTF-8",Language:"ja_JP","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nkojima.imamura, 2024\nTakafumi AKAMATSU, 2024\ndevi, 2024\nkshimohata, 2024\n"},msgstr:["Last-Translator: kshimohata, 2024\nLanguage-Team: Japanese (Japan) (https://app.transifex.com/nextcloud/teams/64236/ja_JP/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ja_JP\nPlural-Forms: nplurals=1; plural=0;\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" は禁止されているファイルまたはフォルダ名です。']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" は禁止されているファイルタイプです。']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['ファイルまたはフォルダ名に "{segment}" を含めることはできません。']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} ファイル数の競合"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{dirname} で {count} 個のファイルが競合しています"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["残り {seconds} 秒"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["残り {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["残り数秒"]},Cancel:{msgid:"Cancel",msgstr:["キャンセル"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["すべての操作をキャンセルする"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["アップロードをキャンセル"]},Continue:{msgid:"Continue",msgstr:["続ける"]},"Create new":{msgid:"Create new",msgstr:["新規作成"]},"estimating time left":{msgid:"estimating time left",msgstr:["概算残り時間"]},"Existing version":{msgid:"Existing version",msgstr:["既存バージョン"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['ファイル名の末尾に "{segment}" を付けることはできません。']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["両方のバージョンを選択した場合、受信ファイルの名前に数字が追加されます。"]},"Invalid filename":{msgid:"Invalid filename",msgstr:["無効なファイル名"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["最終更新日不明"]},New:{msgid:"New",msgstr:["新規作成"]},"New filename":{msgid:"New filename",msgstr:["新しいファイル名"]},"New version":{msgid:"New version",msgstr:["新しいバージョン"]},paused:{msgid:"paused",msgstr:["一時停止中"]},"Preview image":{msgid:"Preview image",msgstr:["プレビュー画像"]},Rename:{msgid:"Rename",msgstr:["名前を変更"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["すべて選択"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["すべての既存ファイルを選択"]},"Select all new files":{msgid:"Select all new files",msgstr:["すべての新規ファイルを選択"]},Skip:{msgid:"Skip",msgstr:["スキップ"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["{count} 個のファイルをスキップする"]},"Unknown size":{msgid:"Unknown size",msgstr:["サイズ不明"]},Upload:{msgid:"Upload",msgstr:["アップロード"]},"Upload files":{msgid:"Upload files",msgstr:["ファイルをアップロード"]},"Upload folders":{msgid:"Upload folders",msgstr:["フォルダのアップロード"]},"Upload from device":{msgid:"Upload from device",msgstr:["デバイスからのアップロード"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["アップロードはキャンセルされました"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["アップロードがスキップされました"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['"{folder}" のアップロードがスキップされました']},"Upload progress":{msgid:"Upload progress",msgstr:["アップロード進行状況"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["受信フォルダが選択されると、その中の競合するファイルもすべて上書きされます。"]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["受信フォルダが選択されると、その内容は既存のフォルダに書き込まれ、再帰的な競合解決が行われます。"]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["どのファイルを保持しますか?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["ファイル名を変更するか、このファイルをスキップするか、操作全体をキャンセルすることができます。"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["続行するには、各ファイルの少なくとも1つのバージョンを選択する必要があります。"]}}}}},{locale:"ka",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Georgian (https://www.transifex.com/nextcloud/teams/64236/ka/)","Content-Type":"text/plain; charset=UTF-8",Language:"ka","Plural-Forms":"nplurals=2; plural=(n!=1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Georgian (https://www.transifex.com/nextcloud/teams/64236/ka/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ka\nPlural-Forms: nplurals=2; plural=(n!=1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"ka_GE",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Georgian (Georgia) (https://www.transifex.com/nextcloud/teams/64236/ka_GE/)","Content-Type":"text/plain; charset=UTF-8",Language:"ka_GE","Plural-Forms":"nplurals=2; plural=(n!=1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Georgian (Georgia) (https://www.transifex.com/nextcloud/teams/64236/ka_GE/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ka_GE\nPlural-Forms: nplurals=2; plural=(n!=1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"kab",json:{charset:"utf-8",headers:{"Last-Translator":"ZiriSut, 2023","Language-Team":"Kabyle (https://app.transifex.com/nextcloud/teams/64236/kab/)","Content-Type":"text/plain; charset=UTF-8",Language:"kab","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nZiriSut, 2023\n"},msgstr:["Last-Translator: ZiriSut, 2023\nLanguage-Team: Kabyle (https://app.transifex.com/nextcloud/teams/64236/kab/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: kab\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} tesdatin i d-yeqqimen"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["{time} i d-yeqqimen"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["qqiment-d kra n tesdatin kan"]},Add:{msgid:"Add",msgstr:["Rnu"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Sefsex asali"]},"estimating time left":{msgid:"estimating time left",msgstr:["asizel n wakud i d-yeqqimen"]},paused:{msgid:"paused",msgstr:["yeḥbes"]},"Upload files":{msgid:"Upload files",msgstr:["Sali-d ifuyla"]}}}}},{locale:"kk",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Kazakh (https://www.transifex.com/nextcloud/teams/64236/kk/)","Content-Type":"text/plain; charset=UTF-8",Language:"kk","Plural-Forms":"nplurals=2; plural=(n!=1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Kazakh (https://www.transifex.com/nextcloud/teams/64236/kk/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: kk\nPlural-Forms: nplurals=2; plural=(n!=1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"km",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Khmer (https://www.transifex.com/nextcloud/teams/64236/km/)","Content-Type":"text/plain; charset=UTF-8",Language:"km","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Khmer (https://www.transifex.com/nextcloud/teams/64236/km/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: km\nPlural-Forms: nplurals=1; plural=0;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"kn",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Kannada (https://www.transifex.com/nextcloud/teams/64236/kn/)","Content-Type":"text/plain; charset=UTF-8",Language:"kn","Plural-Forms":"nplurals=2; plural=(n > 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Kannada (https://www.transifex.com/nextcloud/teams/64236/kn/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: kn\nPlural-Forms: nplurals=2; plural=(n > 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"ko",json:{charset:"utf-8",headers:{"Last-Translator":"이상오, 2024","Language-Team":"Korean (https://app.transifex.com/nextcloud/teams/64236/ko/)","Content-Type":"text/plain; charset=UTF-8",Language:"ko","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\n이상오, 2024\n"},msgstr:["Last-Translator: 이상오, 2024\nLanguage-Team: Korean (https://app.transifex.com/nextcloud/teams/64236/ko/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ko\nPlural-Forms: nplurals=1; plural=0;\n"]},'"{filename}" contains invalid characters, how do you want to continue?':{msgid:'"{filename}" contains invalid characters, how do you want to continue?',msgstr:['"{filename}"에 유효하지 않은 문자가 있습니다, 계속하시겠습니까?']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count}개의 파일이 충돌함"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{dirname}에서 {count}개의 파일이 충돌함"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds}초 남음"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} 남음"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["곧 완료"]},Cancel:{msgid:"Cancel",msgstr:["취소"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["전체 작업을 취소"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["업로드 취소"]},Continue:{msgid:"Continue",msgstr:["확인"]},"Create new":{msgid:"Create new",msgstr:["새로 만들기"]},"estimating time left":{msgid:"estimating time left",msgstr:["남은 시간 계산"]},"Existing version":{msgid:"Existing version",msgstr:["현재 버전"]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["두 파일을 모두 선택하면, 들어오는 파일의 이름에 번호가 추가됩니다."]},"Invalid file name":{msgid:"Invalid file name",msgstr:["잘못된 파일 이름"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["최근 수정일 알 수 없음"]},New:{msgid:"New",msgstr:["새로 만들기"]},"New version":{msgid:"New version",msgstr:["새 버전"]},paused:{msgid:"paused",msgstr:["일시정지됨"]},"Preview image":{msgid:"Preview image",msgstr:["미리보기 이미지"]},Rename:{msgid:"Rename",msgstr:["이름 바꾸기"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["모든 체크박스 선택"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["기존 파일을 모두 선택"]},"Select all new files":{msgid:"Select all new files",msgstr:["새로운 파일을 모두 선택"]},Skip:{msgid:"Skip",msgstr:["건너뛰기"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["{count}개의 파일 넘기기"]},"Unknown size":{msgid:"Unknown size",msgstr:["크기를 알 수 없음"]},"Upload files":{msgid:"Upload files",msgstr:["파일 업로드"]},"Upload folders":{msgid:"Upload folders",msgstr:["폴더 업로드"]},"Upload from device":{msgid:"Upload from device",msgstr:["장치에서 업로드"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["업로드가 취소되었습니다."]},"Upload progress":{msgid:"Upload progress",msgstr:["업로드 진행도"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["들어오는 폴더를 선택했다면, 충돌하는 내부 파일들은 덮어쓰기 됩니다."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["들어오는 폴더를 선택했다면 내용물이 그 기존 폴더 안에 작성되고, 전체적으로 충돌 해결을 수행합니다."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["어떤 파일을 보존하시겠습니까?"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["계속하기 위해서는 한 파일에 최소 하나의 버전을 선택해야 합니다."]}}}}},{locale:"la",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Latin (https://www.transifex.com/nextcloud/teams/64236/la/)","Content-Type":"text/plain; charset=UTF-8",Language:"la","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Latin (https://www.transifex.com/nextcloud/teams/64236/la/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: la\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"lb",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Luxembourgish (https://www.transifex.com/nextcloud/teams/64236/lb/)","Content-Type":"text/plain; charset=UTF-8",Language:"lb","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Luxembourgish (https://www.transifex.com/nextcloud/teams/64236/lb/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: lb\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"lo",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Lao (https://www.transifex.com/nextcloud/teams/64236/lo/)","Content-Type":"text/plain; charset=UTF-8",Language:"lo","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Lao (https://www.transifex.com/nextcloud/teams/64236/lo/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: lo\nPlural-Forms: nplurals=1; plural=0;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"lt_LT",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)","Content-Type":"text/plain; charset=UTF-8",Language:"lt_LT","Plural-Forms":"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: lt_LT\nPlural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"lv",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Latvian (https://www.transifex.com/nextcloud/teams/64236/lv/)","Content-Type":"text/plain; charset=UTF-8",Language:"lv","Plural-Forms":"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Latvian (https://www.transifex.com/nextcloud/teams/64236/lv/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: lv\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"mk",json:{charset:"utf-8",headers:{"Last-Translator":"Сашко Тодоров <sasetodorov@gmail.com>, 2022","Language-Team":"Macedonian (https://www.transifex.com/nextcloud/teams/64236/mk/)","Content-Type":"text/plain; charset=UTF-8",Language:"mk","Plural-Forms":"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nСашко Тодоров <sasetodorov@gmail.com>, 2022\n"},msgstr:["Last-Translator: Сашко Тодоров <sasetodorov@gmail.com>, 2022\nLanguage-Team: Macedonian (https://www.transifex.com/nextcloud/teams/64236/mk/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: mk\nPlural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["преостануваат {seconds} секунди"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["преостанува {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["уште неколку секунди"]},Add:{msgid:"Add",msgstr:["Додади"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Прекини прикачување"]},"estimating time left":{msgid:"estimating time left",msgstr:["приближно преостанато време"]},paused:{msgid:"paused",msgstr:["паузирано"]},"Upload files":{msgid:"Upload files",msgstr:["Прикачување датотеки"]}}}}},{locale:"mn",json:{charset:"utf-8",headers:{"Last-Translator":"BATKHUYAG Ganbold, 2023","Language-Team":"Mongolian (https://app.transifex.com/nextcloud/teams/64236/mn/)","Content-Type":"text/plain; charset=UTF-8",Language:"mn","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nBATKHUYAG Ganbold, 2023\n"},msgstr:["Last-Translator: BATKHUYAG Ganbold, 2023\nLanguage-Team: Mongolian (https://app.transifex.com/nextcloud/teams/64236/mn/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: mn\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} секунд үлдсэн"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["{time} үлдсэн"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["хэдхэн секунд үлдсэн"]},Add:{msgid:"Add",msgstr:["Нэмэх"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Илгээлтийг цуцлах"]},"estimating time left":{msgid:"estimating time left",msgstr:["Үлдсэн хугацааг тооцоолж байна"]},paused:{msgid:"paused",msgstr:["түр зогсоосон"]},"Upload files":{msgid:"Upload files",msgstr:["Файл илгээх"]}}}}},{locale:"mr",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Marathi (https://www.transifex.com/nextcloud/teams/64236/mr/)","Content-Type":"text/plain; charset=UTF-8",Language:"mr","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Marathi (https://www.transifex.com/nextcloud/teams/64236/mr/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: mr\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"ms_MY",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Malay (Malaysia) (https://www.transifex.com/nextcloud/teams/64236/ms_MY/)","Content-Type":"text/plain; charset=UTF-8",Language:"ms_MY","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Malay (Malaysia) (https://www.transifex.com/nextcloud/teams/64236/ms_MY/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ms_MY\nPlural-Forms: nplurals=1; plural=0;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"my",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)","Content-Type":"text/plain; charset=UTF-8",Language:"my","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: my\nPlural-Forms: nplurals=1; plural=0;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"nb",json:{charset:"utf-8",headers:{"Last-Translator":"Roger Knutsen, 2024","Language-Team":"Norwegian Bokmål (Norway) (https://app.transifex.com/nextcloud/teams/64236/nb_NO/)","Content-Type":"text/plain; charset=UTF-8",Language:"nb_NO","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nRoger Knutsen, 2024\n"},msgstr:["Last-Translator: Roger Knutsen, 2024\nLanguage-Team: Norwegian Bokmål (Norway) (https://app.transifex.com/nextcloud/teams/64236/nb_NO/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: nb_NO\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" er et forbudt fil- eller mappenavn.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" er en forbudt filtype.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" er ikke tillatt i et fil- eller mappenavn.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} file conflict","{count} filkonflikter"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} file conflict in {dirname}","{count} filkonflikter i {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} sekunder igjen"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} igjen"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["noen få sekunder igjen"]},Cancel:{msgid:"Cancel",msgstr:["Avbryt"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Avbryt hele operasjonen"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Avbryt opplastninger"]},Continue:{msgid:"Continue",msgstr:["Fortsett"]},"Create new":{msgid:"Create new",msgstr:["Opprett ny"]},"estimating time left":{msgid:"estimating time left",msgstr:["Estimerer tid igjen"]},"Existing version":{msgid:"Existing version",msgstr:["Gjeldende versjon"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Filnavn må ikke slutte med "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Hvis du velger begge versjonene, vil den innkommende filen ha et nummer lagt til navnet."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Ugyldig filnavn"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Siste gang redigert ukjent"]},New:{msgid:"New",msgstr:["Ny"]},"New filename":{msgid:"New filename",msgstr:["Nytt filnavn"]},"New version":{msgid:"New version",msgstr:["Ny versjon"]},paused:{msgid:"paused",msgstr:["pauset"]},"Preview image":{msgid:"Preview image",msgstr:["Forhåndsvis bilde"]},Rename:{msgid:"Rename",msgstr:["Omdøp"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Velg alle"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Velg alle eksisterende filer"]},"Select all new files":{msgid:"Select all new files",msgstr:["Velg alle nye filer"]},Skip:{msgid:"Skip",msgstr:["Hopp over"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Skip this file","Hopp over {count} filer"]},"Unknown size":{msgid:"Unknown size",msgstr:["Ukjent størrelse"]},"Upload files":{msgid:"Upload files",msgstr:["Last opp filer"]},"Upload folders":{msgid:"Upload folders",msgstr:["Last opp mapper"]},"Upload from device":{msgid:"Upload from device",msgstr:["Last opp fra enhet"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Opplastingen er kansellert"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Opplastingen er hoppet over"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Opplasting av "{folder}" er hoppet over']},"Upload progress":{msgid:"Upload progress",msgstr:["Fremdrift, opplasting"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Når en innkommende mappe velges, blir eventuelle motstridende filer i den også overskrevet."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Når en innkommende mappe velges, skrives innholdet inn i den eksisterende mappen, og en rekursiv konfliktløsning utføres."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Hvilke filer vil du beholde?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Du kan enten gi nytt navn til filen, hoppe over denne filen eller avbryte hele operasjonen."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Du må velge minst en versjon av hver fil for å fortsette."]}}}}},{locale:"ne",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Nepali (https://www.transifex.com/nextcloud/teams/64236/ne/)","Content-Type":"text/plain; charset=UTF-8",Language:"ne","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Nepali (https://www.transifex.com/nextcloud/teams/64236/ne/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ne\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"nl",json:{charset:"utf-8",headers:{"Last-Translator":"Rico <rico-schwab@hotmail.com>, 2023","Language-Team":"Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)","Content-Type":"text/plain; charset=UTF-8",Language:"nl","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nRico <rico-schwab@hotmail.com>, 2023\n"},msgstr:["Last-Translator: Rico <rico-schwab@hotmail.com>, 2023\nLanguage-Team: Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: nl\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["Nog {seconds} seconden"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["{seconds} over"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["Nog een paar seconden"]},Add:{msgid:"Add",msgstr:["Voeg toe"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Uploads annuleren"]},"estimating time left":{msgid:"estimating time left",msgstr:["Schatting van de resterende tijd"]},paused:{msgid:"paused",msgstr:["Gepauzeerd"]},"Upload files":{msgid:"Upload files",msgstr:["Upload bestanden"]}}}}},{locale:"nn_NO",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Norwegian Nynorsk (Norway) (https://www.transifex.com/nextcloud/teams/64236/nn_NO/)","Content-Type":"text/plain; charset=UTF-8",Language:"nn_NO","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Norwegian Nynorsk (Norway) (https://www.transifex.com/nextcloud/teams/64236/nn_NO/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: nn_NO\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"oc",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)","Content-Type":"text/plain; charset=UTF-8",Language:"oc","Plural-Forms":"nplurals=2; plural=(n > 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: oc\nPlural-Forms: nplurals=2; plural=(n > 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"pl",json:{charset:"utf-8",headers:{"Last-Translator":"Piotr Strębski <strebski@gmail.com>, 2024","Language-Team":"Polish (https://app.transifex.com/nextcloud/teams/64236/pl/)","Content-Type":"text/plain; charset=UTF-8",Language:"pl","Plural-Forms":"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nPiotr Strębski <strebski@gmail.com>, 2024\n"},msgstr:["Last-Translator: Piotr Strębski <strebski@gmail.com>, 2024\nLanguage-Team: Polish (https://app.transifex.com/nextcloud/teams/64236/pl/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: pl\nPlural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:["„{segment}” to zabroniona nazwa pliku lub folderu."]},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:["„{segment}” jest zabronionym typem pliku."]},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:["Znak „{segment}” nie jest dozwolony w nazwie pliku lub folderu."]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["konflikt 1 pliku","{count} konfliktów plików","{count} konfliktów plików","{count} konfliktów plików"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} konfliktowy plik w {dirname}","{count} konfliktowych plików w {dirname}","{count} konfliktowych plików w {dirname}","{count} konfliktowych plików w {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["Pozostało {seconds} sekund"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["Pozostało {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["Pozostało kilka sekund"]},Cancel:{msgid:"Cancel",msgstr:["Anuluj"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Anuluj całą operację"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Anuluj wysyłanie"]},Continue:{msgid:"Continue",msgstr:["Kontynuuj"]},"Create new":{msgid:"Create new",msgstr:["Utwórz nowe"]},"estimating time left":{msgid:"estimating time left",msgstr:["Szacowanie pozostałego czasu"]},"Existing version":{msgid:"Existing version",msgstr:["Istniejąca wersja"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:["Nazwy plików nie mogą kończyć się na „{segment}”."]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Jeśli wybierzesz obie wersje, do nazwy pliku przychodzącego zostanie dodany numer."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Nieprawidłowa nazwa pliku"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Nieznana data ostatniej modyfikacji"]},New:{msgid:"New",msgstr:["Nowy"]},"New filename":{msgid:"New filename",msgstr:["Nowa nazwa pliku"]},"New version":{msgid:"New version",msgstr:["Nowa wersja"]},paused:{msgid:"paused",msgstr:["Wstrzymane"]},"Preview image":{msgid:"Preview image",msgstr:["Podgląd obrazu"]},Rename:{msgid:"Rename",msgstr:["Zmiana nazwy"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Zaznacz wszystkie pola wyboru"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Zaznacz wszystkie istniejące pliki"]},"Select all new files":{msgid:"Select all new files",msgstr:["Zaznacz wszystkie nowe pliki"]},Skip:{msgid:"Skip",msgstr:["Pomiń"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Pomiń 1 plik","Pomiń {count} plików","Pomiń {count} plików","Pomiń {count} plików"]},"Unknown size":{msgid:"Unknown size",msgstr:["Nieznany rozmiar"]},Upload:{msgid:"Upload",msgstr:["Prześlij"]},"Upload files":{msgid:"Upload files",msgstr:["Wyślij pliki"]},"Upload folders":{msgid:"Upload folders",msgstr:["Prześlij foldery"]},"Upload from device":{msgid:"Upload from device",msgstr:["Prześlij z urządzenia"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Przesyłanie zostało anulowane"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Przesyłanie zostało pominięte"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:["Przesyłanie „{folder}” zostało pominięte"]},"Upload progress":{msgid:"Upload progress",msgstr:["Postęp wysyłania"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Po wybraniu folderu przychodzącego wszelkie znajdujące się w nim pliki powodujące konflikt również zostaną nadpisane."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Po wybraniu folderu przychodzącego zawartość jest zapisywana w istniejącym folderze i przeprowadzane jest rekursywne rozwiązywanie konfliktów."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Które pliki chcesz zachować?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Możesz zmienić nazwę pliku, pominąć ten plik lub anulować całą operację."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Aby kontynuować, musisz wybrać co najmniej jedną wersję każdego pliku."]}}}}},{locale:"ps",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Pashto (https://www.transifex.com/nextcloud/teams/64236/ps/)","Content-Type":"text/plain; charset=UTF-8",Language:"ps","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Pashto (https://www.transifex.com/nextcloud/teams/64236/ps/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ps\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"pt_BR",json:{charset:"utf-8",headers:{"Last-Translator":"Paulo Schopf, 2024","Language-Team":"Portuguese (Brazil) (https://app.transifex.com/nextcloud/teams/64236/pt_BR/)","Content-Type":"text/plain; charset=UTF-8",Language:"pt_BR","Plural-Forms":"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nLeonardo Colman Lopes <leonardo.dev@colman.com.br>, 2024\nRodrigo Sottomaior Macedo <sottomaiormacedotec@sottomaiormacedo.tech>, 2024\nPaulo Schopf, 2024\n"},msgstr:["Last-Translator: Paulo Schopf, 2024\nLanguage-Team: Portuguese (Brazil) (https://app.transifex.com/nextcloud/teams/64236/pt_BR/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: pt_BR\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" é um nome de arquivo ou pasta proibido.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" é um tipo de arquivo proibido.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" não é permitido dentro de um nome de arquivo ou pasta.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} arquivos em conflito","{count} arquivos em conflito","{count} arquivos em conflito"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} conflitos de arquivo em {dirname}","{count} conflitos de arquivo em {dirname}","{count} conflitos de arquivo em {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} segundos restantes"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} restante"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["alguns segundos restantes"]},Cancel:{msgid:"Cancel",msgstr:["Cancelar"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Cancelar a operação inteira"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Cancelar uploads"]},Continue:{msgid:"Continue",msgstr:["Continuar"]},"Create new":{msgid:"Create new",msgstr:["Criar novo"]},"estimating time left":{msgid:"estimating time left",msgstr:["estimando tempo restante"]},"Existing version":{msgid:"Existing version",msgstr:["Versão existente"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Os nomes dos arquivos não devem terminar com "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Se você selecionar ambas as versões, o arquivo recebido terá um número adicionado ao seu nome."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Nome de arquivo inválido"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Data da última modificação desconhecida"]},New:{msgid:"New",msgstr:["Novo"]},"New filename":{msgid:"New filename",msgstr:["Novo nome de arquivo"]},"New version":{msgid:"New version",msgstr:["Nova versão"]},paused:{msgid:"paused",msgstr:["pausado"]},"Preview image":{msgid:"Preview image",msgstr:["Visualizar imagem"]},Rename:{msgid:"Rename",msgstr:["Renomear"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Marque todas as caixas de seleção"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Selecione todos os arquivos existentes"]},"Select all new files":{msgid:"Select all new files",msgstr:["Selecione todos os novos arquivos"]},Skip:{msgid:"Skip",msgstr:["Pular"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Ignorar {count} arquivos","Ignorar {count} arquivos","Ignorar {count} arquivos"]},"Unknown size":{msgid:"Unknown size",msgstr:["Tamanho desconhecido"]},Upload:{msgid:"Upload",msgstr:["Enviar"]},"Upload files":{msgid:"Upload files",msgstr:["Enviar arquivos"]},"Upload folders":{msgid:"Upload folders",msgstr:["Enviar pastas"]},"Upload from device":{msgid:"Upload from device",msgstr:["Carregar do dispositivo"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["O upload foi cancelado"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["O upload foi pulado"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['O upload de "{folder}" foi ignorado']},"Upload progress":{msgid:"Upload progress",msgstr:["Envio em progresso"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Quando uma pasta é selecionada, quaisquer arquivos dentro dela também serão sobrescritos."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Quando uma pasta de entrada é selecionada, o conteúdo é gravado na pasta existente e uma resolução de conflito recursiva é executada."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Quais arquivos você deseja manter?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Você pode renomear o arquivo, pular este arquivo ou cancelar toda a operação."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Você precisa selecionar pelo menos uma versão de cada arquivo para continuar."]}}}}},{locale:"pt_PT",json:{charset:"utf-8",headers:{"Last-Translator":"Manuela Silva <mmsrs@sky.com>, 2022","Language-Team":"Portuguese (Portugal) (https://www.transifex.com/nextcloud/teams/64236/pt_PT/)","Content-Type":"text/plain; charset=UTF-8",Language:"pt_PT","Plural-Forms":"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nManuela Silva <mmsrs@sky.com>, 2022\n"},msgstr:["Last-Translator: Manuela Silva <mmsrs@sky.com>, 2022\nLanguage-Team: Portuguese (Portugal) (https://www.transifex.com/nextcloud/teams/64236/pt_PT/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: pt_PT\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["faltam {seconds} segundo(s)"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["faltam {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["faltam uns segundos"]},Add:{msgid:"Add",msgstr:["Adicionar"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Cancelar envios"]},"estimating time left":{msgid:"estimating time left",msgstr:["tempo em falta estimado"]},paused:{msgid:"paused",msgstr:["pausado"]},"Upload files":{msgid:"Upload files",msgstr:["Enviar ficheiros"]}}}}},{locale:"ro",json:{charset:"utf-8",headers:{"Last-Translator":"Mădălin Vasiliu <contact@madalinvasiliu.com>, 2022","Language-Team":"Romanian (https://www.transifex.com/nextcloud/teams/64236/ro/)","Content-Type":"text/plain; charset=UTF-8",Language:"ro","Plural-Forms":"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nMădălin Vasiliu <contact@madalinvasiliu.com>, 2022\n"},msgstr:["Last-Translator: Mădălin Vasiliu <contact@madalinvasiliu.com>, 2022\nLanguage-Team: Romanian (https://www.transifex.com/nextcloud/teams/64236/ro/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ro\nPlural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} secunde rămase"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["{time} rămas"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["câteva secunde rămase"]},Add:{msgid:"Add",msgstr:["Adaugă"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Anulați încărcările"]},"estimating time left":{msgid:"estimating time left",msgstr:["estimarea timpului rămas"]},paused:{msgid:"paused",msgstr:["pus pe pauză"]},"Upload files":{msgid:"Upload files",msgstr:["Încarcă fișiere"]}}}}},{locale:"ru",json:{charset:"utf-8",headers:{"Last-Translator":"Roman Stepanov, 2024","Language-Team":"Russian (https://app.transifex.com/nextcloud/teams/64236/ru/)","Content-Type":"text/plain; charset=UTF-8",Language:"ru","Plural-Forms":"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nAlex <kekcuha@gmail.com>, 2024\nВлад, 2024\nAlex <fedotov22091982@gmail.com>, 2024\nRoman Stepanov, 2024\n"},msgstr:["Last-Translator: Roman Stepanov, 2024\nLanguage-Team: Russian (https://app.transifex.com/nextcloud/teams/64236/ru/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ru\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:["{segment} — это запрещенное имя файла или папки."]},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:["{segment}— это запрещенный тип файла."]},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:["{segment}не допускается в имени файла или папки."]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["конфликт {count} файла","конфликт {count} файлов","конфликт {count} файлов","конфликт {count} файлов"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["конфликт {count} файла в {dirname}","конфликт {count} файлов в {dirname}","конфликт {count} файлов в {dirname}","конфликт {count} файлов в {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["осталось {seconds} секунд"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["осталось {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["осталось несколько секунд"]},Cancel:{msgid:"Cancel",msgstr:["Отмена"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Отменить всю операцию целиком"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Отменить загрузки"]},Continue:{msgid:"Continue",msgstr:["Продолжить"]},"Create new":{msgid:"Create new",msgstr:["Создать новое"]},"estimating time left":{msgid:"estimating time left",msgstr:["оценка оставшегося времени"]},"Existing version":{msgid:"Existing version",msgstr:["Текущая версия"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:["Имена файлов не должны заканчиваться на {segment}"]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Если вы выберете обе версии, к имени входящего файла будет добавлен номер."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Неверное имя файла"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Дата последнего изменения неизвестна"]},New:{msgid:"New",msgstr:["Новый"]},"New filename":{msgid:"New filename",msgstr:["Новое имя файла"]},"New version":{msgid:"New version",msgstr:["Новая версия"]},paused:{msgid:"paused",msgstr:["приостановлено"]},"Preview image":{msgid:"Preview image",msgstr:["Предварительный просмотр"]},Rename:{msgid:"Rename",msgstr:["Переименовать"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Установить все флажки"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Выбрать все существующие файлы"]},"Select all new files":{msgid:"Select all new files",msgstr:["Выбрать все новые файлы"]},Skip:{msgid:"Skip",msgstr:["Пропуск"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Пропустить файл","Пропустить {count} файла","Пропустить {count} файлов","Пропустить {count} файлов"]},"Unknown size":{msgid:"Unknown size",msgstr:["Неизвестный размер"]},Upload:{msgid:"Upload",msgstr:["Загрузить"]},"Upload files":{msgid:"Upload files",msgstr:["Загрузка файлов"]},"Upload folders":{msgid:"Upload folders",msgstr:["Загрузка папок"]},"Upload from device":{msgid:"Upload from device",msgstr:["Загрузка с устройства"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Загрузка была отменена"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Загрузка была пропущена"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:["Загрузка {folder}была пропущена"]},"Upload progress":{msgid:"Upload progress",msgstr:["Состояние передачи на сервер"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Когда выбрана входящая папка, все конфликтующие файлы в ней также будут перезаписаны."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Когда выбрана входящая папка, содержимое записывается в существующую папку и выполняется рекурсивное разрешение конфликтов."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Какие файлы вы хотите сохранить?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Вы можете переименовать файл, пропустить этот файл или отменить всю операцию."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Для продолжения вам нужно выбрать по крайней мере одну версию каждого файла."]}}}}},{locale:"sc",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Sardinian (https://www.transifex.com/nextcloud/teams/64236/sc/)","Content-Type":"text/plain; charset=UTF-8",Language:"sc","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Sardinian (https://www.transifex.com/nextcloud/teams/64236/sc/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: sc\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"si",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)","Content-Type":"text/plain; charset=UTF-8",Language:"si","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: si\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"sk",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Slovak (Slovakia) (https://www.transifex.com/nextcloud/teams/64236/sk_SK/)","Content-Type":"text/plain; charset=UTF-8",Language:"sk_SK","Plural-Forms":"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Slovak (Slovakia) (https://www.transifex.com/nextcloud/teams/64236/sk_SK/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: sk_SK\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"sl",json:{charset:"utf-8",headers:{"Last-Translator":"Simon Bogina, 2024","Language-Team":"Slovenian (https://app.transifex.com/nextcloud/teams/64236/sl/)","Content-Type":"text/plain; charset=UTF-8",Language:"sl","Plural-Forms":"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nJan Kraljič <jan.kraljic@patware.eu>, 2024\nSimon Bogina, 2024\n"},msgstr:["Last-Translator: Simon Bogina, 2024\nLanguage-Team: Slovenian (https://app.transifex.com/nextcloud/teams/64236/sl/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: sl\nPlural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" je prepovedano ime datoteka ali mape.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" je prepovedan tip datoteke.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" ni dovoljeno v imenu datoteke ali mape.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["1{count} datoteka je v konfliktu","1{count} datoteki sta v konfiktu","1{count} datotek je v konfliktu","{count} datotek je v konfliktu"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} datoteka je v konfiktu v {dirname}","{count} datoteki sta v konfiktu v {dirname}","{count} datotek je v konfiktu v {dirname}","{count} konfliktov datotek v {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["še {seconds} sekund"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["še {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["še nekaj sekund"]},Cancel:{msgid:"Cancel",msgstr:["Prekliči"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Prekliči celotni postopek"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Prekliči pošiljanje"]},Continue:{msgid:"Continue",msgstr:["Nadaljuj"]},"Create new":{msgid:"Create new",msgstr:["Ustvari nov"]},"estimating time left":{msgid:"estimating time left",msgstr:["ocenjujem čas do konca"]},"Existing version":{msgid:"Existing version",msgstr:["Obstoječa različica"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Imena datotek se ne smejo končati s "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Če izberete obe različici, bo imenu dohodne datoteke na koncu dodana številka."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Nepravilno ime datoteke"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Datum zadnje spremembe neznan"]},New:{msgid:"New",msgstr:["Nov"]},"New filename":{msgid:"New filename",msgstr:["Novo ime datoteke"]},"New version":{msgid:"New version",msgstr:["Nova različica"]},paused:{msgid:"paused",msgstr:["v premoru"]},"Preview image":{msgid:"Preview image",msgstr:["Predogled slike"]},Rename:{msgid:"Rename",msgstr:["Preimenuj"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Izberi vsa potrditvena polja"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Označi vse obstoječe datoteke"]},"Select all new files":{msgid:"Select all new files",msgstr:["Označi vse nove datoteke"]},Skip:{msgid:"Skip",msgstr:["Preskoči"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Preskoči datoteko","Preskoči {count} datoteki","Preskoči {count} datotek","Preskoči {count} datotek"]},"Unknown size":{msgid:"Unknown size",msgstr:["Neznana velikost"]},Upload:{msgid:"Upload",msgstr:["Naloži"]},"Upload files":{msgid:"Upload files",msgstr:["Naloži datoteke"]},"Upload folders":{msgid:"Upload folders",msgstr:["Naloži mape"]},"Upload from device":{msgid:"Upload from device",msgstr:["Naloži iz naprave"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Nalaganje je bilo preklicano"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Nalaganje je bilo preskočeno"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Nalaganje "{folder}" je bilo preskočeno']},"Upload progress":{msgid:"Upload progress",msgstr:["Napredek nalaganja"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Ko je izbrana dohodna mapa, bodo vse datototeke v konfliktu znotraj nje prepisane."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Ko je izbrana dohodna mapa, je vsebina vpisana v obstoječo mapo in je izvedeno rekurzivno reševanje konfliktov."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Katere datoteke želite obdržati?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Datoteko lahko preimenujete, preskočite ali prekličete celo operacijo."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Izbrati morate vsaj eno različico vsake datoteke da nadaljujete."]}}}}},{locale:"sq",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)","Content-Type":"text/plain; charset=UTF-8",Language:"sq","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: sq\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"sr",json:{charset:"utf-8",headers:{"Last-Translator":"Иван Пешић, 2024","Language-Team":"Serbian (https://app.transifex.com/nextcloud/teams/64236/sr/)","Content-Type":"text/plain; charset=UTF-8",Language:"sr","Plural-Forms":"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nИван Пешић, 2024\n"},msgstr:["Last-Translator: Иван Пешић, 2024\nLanguage-Team: Serbian (https://app.transifex.com/nextcloud/teams/64236/sr/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: sr\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:["„{segment}” је забрањено име фајла или фолдера."]},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:["„{segment}” је забрањен тип фајла."]},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:["„{segment}” није дозвољено унутар имена фајла или фолдера."]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} фајл конфликт","{count} фајл конфликта","{count} фајл конфликта"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} фајл конфликт у {dirname}","{count} фајл конфликта у {dirname}","{count} фајл конфликта у {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["преостало је {seconds} секунди"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} преостало"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["преостало је неколико секунди"]},Cancel:{msgid:"Cancel",msgstr:["Откажи"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Отказује комплетну операцију"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Обустави отпремања"]},Continue:{msgid:"Continue",msgstr:["Настави"]},"Create new":{msgid:"Create new",msgstr:["Креирај ново"]},"estimating time left":{msgid:"estimating time left",msgstr:["процена преосталог времена"]},"Existing version":{msgid:"Existing version",msgstr:["Постојећа верзија"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:["Имена фајлова не смеју да се завршавају на „{segment}”."]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Ако изаберете обе верзије, на име долазног фајла ће се додати број."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Неисправно име фајла"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Није познат датум последње измене"]},New:{msgid:"New",msgstr:["Ново"]},"New filename":{msgid:"New filename",msgstr:["Ново име фајла"]},"New version":{msgid:"New version",msgstr:["Нова верзија"]},paused:{msgid:"paused",msgstr:["паузирано"]},"Preview image":{msgid:"Preview image",msgstr:["Слика прегледа"]},Rename:{msgid:"Rename",msgstr:["Промени име"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Штиклирај сва поља за штиклирање"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Изабери све постојеће фајлове"]},"Select all new files":{msgid:"Select all new files",msgstr:["Изабери све нове фајлове"]},Skip:{msgid:"Skip",msgstr:["Прескочи"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Прескочи овај фајл","Прескочи {count} фајла","Прескочи {count} фајлова"]},"Unknown size":{msgid:"Unknown size",msgstr:["Непозната величина"]},Upload:{msgid:"Upload",msgstr:["Отпреми"]},"Upload files":{msgid:"Upload files",msgstr:["Отпреми фајлове"]},"Upload folders":{msgid:"Upload folders",msgstr:["Отпреми фолдере"]},"Upload from device":{msgid:"Upload from device",msgstr:["Отпреми са уређаја"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Отпремање је отказано"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Отпремање је прескочено"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:["Отпремање „{folder}”је прескочено"]},"Upload progress":{msgid:"Upload progress",msgstr:["Напредак отпремања"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Када се изабере долазни фолдер, сва имена фајлова са конфликтом унутар њега ће се такође преписати."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Када се изабере долазни фолдер, садржај се уписује у постојећи фолдер и извршава се рекурзивно разрешавање конфликата."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Које фајлове желите да задржите?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Можете или да промените име фајлу, прескочите овај фајл или откажете комплетну операцију."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Морате да изаберете барем једну верзију сваког фајла да наставите."]}}}}},{locale:"sr@latin",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Serbian (Latin) (https://www.transifex.com/nextcloud/teams/64236/sr@latin/)","Content-Type":"text/plain; charset=UTF-8",Language:"sr@latin","Plural-Forms":"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Serbian (Latin) (https://www.transifex.com/nextcloud/teams/64236/sr@latin/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: sr@latin\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"sv",json:{charset:"utf-8",headers:{"Last-Translator":"Magnus Höglund, 2024","Language-Team":"Swedish (https://app.transifex.com/nextcloud/teams/64236/sv/)","Content-Type":"text/plain; charset=UTF-8",Language:"sv","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nMagnus Höglund, 2024\n"},msgstr:["Last-Translator: Magnus Höglund, 2024\nLanguage-Team: Swedish (https://app.transifex.com/nextcloud/teams/64236/sv/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: sv\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" är ett förbjudet fil- eller mappnamn.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" är en förbjuden filtyp.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" är inte tillåtet i ett fil- eller mappnamn.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} filkonflikt","{count} filkonflikter"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} filkonflikt i {dirname}","{count} filkonflikter i {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} sekunder kvarstår"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} kvarstår"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["några sekunder kvar"]},Cancel:{msgid:"Cancel",msgstr:["Avbryt"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Avbryt hela operationen"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Avbryt uppladdningar"]},Continue:{msgid:"Continue",msgstr:["Fortsätt"]},"Create new":{msgid:"Create new",msgstr:["Skapa ny"]},"estimating time left":{msgid:"estimating time left",msgstr:["uppskattar kvarstående tid"]},"Existing version":{msgid:"Existing version",msgstr:["Nuvarande version"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Filnamn får inte sluta med "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Om du väljer båda versionerna kommer den inkommande filen att läggas till ett nummer i namnet."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Ogiltigt filnamn"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Senaste ändringsdatum okänt"]},New:{msgid:"New",msgstr:["Ny"]},"New filename":{msgid:"New filename",msgstr:["Nytt filnamn"]},"New version":{msgid:"New version",msgstr:["Ny version"]},paused:{msgid:"paused",msgstr:["pausad"]},"Preview image":{msgid:"Preview image",msgstr:["Förhandsgranska bild"]},Rename:{msgid:"Rename",msgstr:["Byt namn"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Markera alla kryssrutor"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Välj alla befintliga filer"]},"Select all new files":{msgid:"Select all new files",msgstr:["Välj alla nya filer"]},Skip:{msgid:"Skip",msgstr:["Hoppa över"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Hoppa över denna fil","Hoppa över {count} filer"]},"Unknown size":{msgid:"Unknown size",msgstr:["Okänd storlek"]},Upload:{msgid:"Upload",msgstr:["Ladda upp"]},"Upload files":{msgid:"Upload files",msgstr:["Ladda upp filer"]},"Upload folders":{msgid:"Upload folders",msgstr:["Ladda upp mappar"]},"Upload from device":{msgid:"Upload from device",msgstr:["Ladda upp från enhet"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Uppladdningen har avbrutits"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Uppladdningen har hoppats över"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Uppladdningen av "{folder}" har hoppats över']},"Upload progress":{msgid:"Upload progress",msgstr:["Uppladdningsförlopp"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["När en inkommande mapp väljs skrivs även alla konfliktande filer i den över."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["När en inkommande mapp väljs skrivs innehållet in i den befintliga mappen och en rekursiv konfliktlösning utförs."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Vilka filer vill du behålla?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Du kan antingen byta namn på filen, hoppa över den här filen eller avbryta hela operationen."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Du måste välja minst en version av varje fil för att fortsätta."]}}}}},{locale:"sw",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Swahili (https://www.transifex.com/nextcloud/teams/64236/sw/)","Content-Type":"text/plain; charset=UTF-8",Language:"sw","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Swahili (https://www.transifex.com/nextcloud/teams/64236/sw/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: sw\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"ta",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Tamil (https://www.transifex.com/nextcloud/teams/64236/ta/)","Content-Type":"text/plain; charset=UTF-8",Language:"ta","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Tamil (https://www.transifex.com/nextcloud/teams/64236/ta/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ta\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"th",json:{charset:"utf-8",headers:{"Last-Translator":"Phongpanot Phairat <ppnplus@protonmail.com>, 2022","Language-Team":"Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)","Content-Type":"text/plain; charset=UTF-8",Language:"th_TH","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nPhongpanot Phairat <ppnplus@protonmail.com>, 2022\n"},msgstr:["Last-Translator: Phongpanot Phairat <ppnplus@protonmail.com>, 2022\nLanguage-Team: Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: th_TH\nPlural-Forms: nplurals=1; plural=0;\n"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["เหลืออีก {seconds} วินาที"]},"{time} left":{msgid:"{time} left",comments:{extracted:"time has the format 00:00:00"},msgstr:["เหลืออีก {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["เหลืออีกไม่กี่วินาที"]},Add:{msgid:"Add",msgstr:["เพิ่ม"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["ยกเลิกการอัปโหลด"]},"estimating time left":{msgid:"estimating time left",msgstr:["กำลังคำนวณเวลาที่เหลือ"]},paused:{msgid:"paused",msgstr:["หยุดชั่วคราว"]},"Upload files":{msgid:"Upload files",msgstr:["อัปโหลดไฟล์"]}}}}},{locale:"tk",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Turkmen (https://www.transifex.com/nextcloud/teams/64236/tk/)","Content-Type":"text/plain; charset=UTF-8",Language:"tk","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Turkmen (https://www.transifex.com/nextcloud/teams/64236/tk/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: tk\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"tr",json:{charset:"utf-8",headers:{"Last-Translator":"Kaya Zeren <kayazeren@gmail.com>, 2024","Language-Team":"Turkish (https://app.transifex.com/nextcloud/teams/64236/tr/)","Content-Type":"text/plain; charset=UTF-8",Language:"tr","Plural-Forms":"nplurals=2; plural=(n > 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nKaya Zeren <kayazeren@gmail.com>, 2024\n"},msgstr:["Last-Translator: Kaya Zeren <kayazeren@gmail.com>, 2024\nLanguage-Team: Turkish (https://app.transifex.com/nextcloud/teams/64236/tr/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: tr\nPlural-Forms: nplurals=2; plural=(n > 1);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" dosya ya da klasör adına izin verilmiyor.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" dosya türüne izin verilmiyor.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['Bir dosya ya da klasör adında "{segment}" ifadesine izin verilmiyor.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} dosya çakışması var","{count} dosya çakışması var"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{dirname} klasöründe {count} dosya çakışması var","{dirname} klasöründe {count} dosya çakışması var"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["{seconds} saniye kaldı"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["{time} kaldı"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["bir kaç saniye kaldı"]},Cancel:{msgid:"Cancel",msgstr:["İptal"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Tüm işlemi iptal et"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Yüklemeleri iptal et"]},Continue:{msgid:"Continue",msgstr:["İlerle"]},"Create new":{msgid:"Create new",msgstr:["Yeni ekle"]},"estimating time left":{msgid:"estimating time left",msgstr:["öngörülen kalan süre"]},"Existing version":{msgid:"Existing version",msgstr:["Var olan sürüm"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Dosya adları "{segment}" ile bitmemeli.']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["İki sürümü de seçerseniz, gelen dosyanın adına bir sayı eklenir."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Dosya adı geçersiz"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Son değiştirilme tarihi bilinmiyor"]},New:{msgid:"New",msgstr:["Yeni"]},"New filename":{msgid:"New filename",msgstr:["Yeni dosya adı"]},"New version":{msgid:"New version",msgstr:["Yeni sürüm"]},paused:{msgid:"paused",msgstr:["duraklatıldı"]},"Preview image":{msgid:"Preview image",msgstr:["Görsel ön izlemesi"]},Rename:{msgid:"Rename",msgstr:["Yeniden adlandır"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Tüm kutuları işaretle"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Tüm var olan dosyaları seç"]},"Select all new files":{msgid:"Select all new files",msgstr:["Tüm yeni dosyaları seç"]},Skip:{msgid:"Skip",msgstr:["Atla"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Bu dosyayı atla","{count} dosyayı atla"]},"Unknown size":{msgid:"Unknown size",msgstr:["Boyut bilinmiyor"]},Upload:{msgid:"Upload",msgstr:["Yükle"]},"Upload files":{msgid:"Upload files",msgstr:["Dosyaları yükle"]},"Upload folders":{msgid:"Upload folders",msgstr:["Klasörleri yükle"]},"Upload from device":{msgid:"Upload from device",msgstr:["Aygıttan yükle"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Yükleme iptal edildi"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Yükleme atlandı"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['"{folder}" klasörünün yüklenmesi atlandı']},"Upload progress":{msgid:"Upload progress",msgstr:["Yükleme ilerlemesi"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Bir gelen klasör seçildiğinde, içindeki çakışan dosyaların da üzerine yazılır."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Bir gelen klasörü seçildiğinde içerik var olan klasöre yazılır ve yinelemeli bir çakışma çözümü uygulanır."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Hangi dosyaları tutmak istiyorsunuz?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Dosya adını değiştirebilir, bu dosyayı atlayabilir ya da tüm işlemi iptal edebilirsiniz."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["İlerlemek için her dosyanın en az bir sürümünü seçmelisiniz."]}}}}},{locale:"ug",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Uyghur (https://www.transifex.com/nextcloud/teams/64236/ug/)","Content-Type":"text/plain; charset=UTF-8",Language:"ug","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Uyghur (https://www.transifex.com/nextcloud/teams/64236/ug/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ug\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"uk",json:{charset:"utf-8",headers:{"Last-Translator":"O St <oleksiy.stasevych@gmail.com>, 2024","Language-Team":"Ukrainian (https://app.transifex.com/nextcloud/teams/64236/uk/)","Content-Type":"text/plain; charset=UTF-8",Language:"uk","Plural-Forms":"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nO St <oleksiy.stasevych@gmail.com>, 2024\n"},msgstr:["Last-Translator: O St <oleksiy.stasevych@gmail.com>, 2024\nLanguage-Team: Ukrainian (https://app.transifex.com/nextcloud/teams/64236/uk/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: uk\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" не є дозволеним ім\'ям файлу або каталогу.']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" не є дозволеним типом файлу.']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" не дозволене сполучення символів в назві файлу або каталогу.']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} конфліктний файл","{count} конфліктних файли","{count} конфліктних файлів","{count} конфліктних файлів"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} конфліктний файл у каталозі {dirname}","{count} конфліктних файли у каталозі {dirname}","{count} конфліктних файлів у каталозі {dirname}","{count} конфліктних файлів у каталозі {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["Залишилося {seconds} секунд"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["Залишилося {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["залишилося кілька секунд"]},Cancel:{msgid:"Cancel",msgstr:["Скасувати"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["Скасувати операцію повністю"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Скасувати завантаження"]},Continue:{msgid:"Continue",msgstr:["Продовжити"]},"Create new":{msgid:"Create new",msgstr:["Створити новий"]},"estimating time left":{msgid:"estimating time left",msgstr:["оцінка часу, що залишився"]},"Existing version":{msgid:"Existing version",msgstr:["Присутня версія"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['Ім\'я файлів не можуть закінчуватися на "{segment}".']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Якщо буде вибрано обидві версії, до імени вхідного файлу було додано цифру."]},"Invalid filename":{msgid:"Invalid filename",msgstr:["Недійсне ім'я файлу"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Дата останньої зміни невідома"]},New:{msgid:"New",msgstr:["Нове"]},"New filename":{msgid:"New filename",msgstr:["Нове ім'я файлу"]},"New version":{msgid:"New version",msgstr:["Нова версія"]},paused:{msgid:"paused",msgstr:["призупинено"]},"Preview image":{msgid:"Preview image",msgstr:["Попередній перегляд"]},Rename:{msgid:"Rename",msgstr:["Перейменувати"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Вибрати все"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Вибрати усі присутні файли"]},"Select all new files":{msgid:"Select all new files",msgstr:["Вибрати усі нові файли"]},Skip:{msgid:"Skip",msgstr:["Пропустити"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Пропустити файл","Пропустити {count} файли","Пропустити {count} файлів","Пропустити {count} файлів"]},"Unknown size":{msgid:"Unknown size",msgstr:["Невідомий розмір"]},Upload:{msgid:"Upload",msgstr:["Завантажити"]},"Upload files":{msgid:"Upload files",msgstr:["Завантажити файли"]},"Upload folders":{msgid:"Upload folders",msgstr:["Завантажити каталоги"]},"Upload from device":{msgid:"Upload from device",msgstr:["Завантажити з пристрою"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["Завантаження скасовано"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["Завантаження пропущено"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['Завантаження "{folder}" пропущено']},"Upload progress":{msgid:"Upload progress",msgstr:["Поступ завантаження"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Усі конфліктні файли у вибраному каталозі призначення буде перезаписано поверх."]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Якщо буде вибрано вхідний каталог, вміст буде записано до наявного каталогу та вирішено конфлікти у відповідних файлах каталогу та підкаталогів."]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Які файли залишити?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["Ви можете або перейменувати цей файл, пропустити або скасувати дію з файлом."]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Для продовження потрібно вибрати принаймні одну версію для кожного файлу."]}}}}},{locale:"ur_PK",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Urdu (Pakistan) (https://www.transifex.com/nextcloud/teams/64236/ur_PK/)","Content-Type":"text/plain; charset=UTF-8",Language:"ur_PK","Plural-Forms":"nplurals=2; plural=(n != 1);"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Urdu (Pakistan) (https://www.transifex.com/nextcloud/teams/64236/ur_PK/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ur_PK\nPlural-Forms: nplurals=2; plural=(n != 1);\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"uz",json:{charset:"utf-8",headers:{"Last-Translator":"Transifex Bot <>, 2022","Language-Team":"Uzbek (https://www.transifex.com/nextcloud/teams/64236/uz/)","Content-Type":"text/plain; charset=UTF-8",Language:"uz","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nTransifex Bot <>, 2022\n"},msgstr:["Last-Translator: Transifex Bot <>, 2022\nLanguage-Team: Uzbek (https://www.transifex.com/nextcloud/teams/64236/uz/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: uz\nPlural-Forms: nplurals=1; plural=0;\n"]},"{estimate} seconds left":{msgid:"{estimate} seconds left",msgstr:[""]},"{hours} hours and {minutes} minutes left":{msgid:"{hours} hours and {minutes} minutes left",msgstr:[""]},"{minutes} minutes left":{msgid:"{minutes} minutes left",msgstr:[""]},"a few seconds left":{msgid:"a few seconds left",msgstr:[""]},Add:{msgid:"Add",msgstr:[""]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:[""]},"estimating time left":{msgid:"estimating time left",msgstr:[""]},paused:{msgid:"paused",msgstr:[""]}}}}},{locale:"vi",json:{charset:"utf-8",headers:{"Last-Translator":"Tung DangQuang, 2023","Language-Team":"Vietnamese (https://app.transifex.com/nextcloud/teams/64236/vi/)","Content-Type":"text/plain; charset=UTF-8",Language:"vi","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJohn Molakvoæ <skjnldsv@protonmail.com>, 2023\nTung DangQuang, 2023\n"},msgstr:["Last-Translator: Tung DangQuang, 2023\nLanguage-Team: Vietnamese (https://app.transifex.com/nextcloud/teams/64236/vi/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: vi\nPlural-Forms: nplurals=1; plural=0;\n"]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} Tập tin xung đột"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{count} tập tin lỗi trong {dirname}"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["Còn {second} giây"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["Còn lại {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["Còn lại một vài giây"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["Huỷ tải lên"]},Continue:{msgid:"Continue",msgstr:["Tiếp Tục"]},"estimating time left":{msgid:"estimating time left",msgstr:["Thời gian còn lại dự kiến"]},"Existing version":{msgid:"Existing version",msgstr:["Phiên Bản Hiện Tại"]},"If you select both versions, the copied file will have a number added to its name.":{msgid:"If you select both versions, the copied file will have a number added to its name.",msgstr:["Nếu bạn chọn cả hai phiên bản, tệp được sao chép sẽ có thêm một số vào tên của nó."]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["Ngày sửa dổi lần cuối không xác định"]},New:{msgid:"New",msgstr:["Tạo Mới"]},"New version":{msgid:"New version",msgstr:["Phiên Bản Mới"]},paused:{msgid:"paused",msgstr:["đã tạm dừng"]},"Preview image":{msgid:"Preview image",msgstr:["Xem Trước Ảnh"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["Chọn tất cả hộp checkbox"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["Chọn tất cả các tập tin có sẵn"]},"Select all new files":{msgid:"Select all new files",msgstr:["Chọn tất cả các tập tin mới"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["Bỏ Qua {count} tập tin"]},"Unknown size":{msgid:"Unknown size",msgstr:["Không rõ dung lượng"]},"Upload cancelled":{msgid:"Upload cancelled",msgstr:["Dừng Tải Lên"]},"Upload files":{msgid:"Upload files",msgstr:["Tập tin tải lên"]},"Upload progress":{msgid:"Upload progress",msgstr:["Đang Tải Lên"]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["Bạn muốn giữ tập tin nào?"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["Bạn cần chọn ít nhất một phiên bản tập tin mới có thể tiếp tục"]}}}}},{locale:"zh_CN",json:{charset:"utf-8",headers:{"Last-Translator":"Gloryandel, 2024","Language-Team":"Chinese (China) (https://app.transifex.com/nextcloud/teams/64236/zh_CN/)","Content-Type":"text/plain; charset=UTF-8",Language:"zh_CN","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nGloryandel, 2024\n"},msgstr:["Last-Translator: Gloryandel, 2024\nLanguage-Team: Chinese (China) (https://app.transifex.com/nextcloud/teams/64236/zh_CN/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: zh_CN\nPlural-Forms: nplurals=1; plural=0;\n"]},'"{segment}" is a forbidden file or folder name.':{msgid:'"{segment}" is a forbidden file or folder name.',msgstr:['"{segment}" 是被禁止的文件名或文件夹名。']},'"{segment}" is a forbidden file type.':{msgid:'"{segment}" is a forbidden file type.',msgstr:['"{segment}" 是被禁止的文件类型。']},'"{segment}" is not allowed inside a file or folder name.':{msgid:'"{segment}" is not allowed inside a file or folder name.',msgstr:['"{segment}" 不允许包含在文件名或文件夹名中。']},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count}文件冲突"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["在{dirname}目录下有{count}个文件冲突"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["剩余 {seconds} 秒"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["剩余 {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["还剩几秒"]},Cancel:{msgid:"Cancel",msgstr:["取消"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["取消整个操作"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["取消上传"]},Continue:{msgid:"Continue",msgstr:["继续"]},"Create new":{msgid:"Create new",msgstr:["新建"]},"estimating time left":{msgid:"estimating time left",msgstr:["估计剩余时间"]},"Existing version":{msgid:"Existing version",msgstr:["服务端版本"]},'Filenames must not end with "{segment}".':{msgid:'Filenames must not end with "{segment}".',msgstr:['文件名不得以 "{segment}" 结尾。']},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["如果同时选择两个版本,则上传文件的名称中将添加一个数字。"]},"Invalid filename":{msgid:"Invalid filename",msgstr:["无效文件名"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["文件最后修改日期未知"]},New:{msgid:"New",msgstr:["新建"]},"New filename":{msgid:"New filename",msgstr:["新文件名"]},"New version":{msgid:"New version",msgstr:["上传版本"]},paused:{msgid:"paused",msgstr:["已暂停"]},"Preview image":{msgid:"Preview image",msgstr:["图片预览"]},Rename:{msgid:"Rename",msgstr:["重命名"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["选择所有的选择框"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["保留所有服务端版本"]},"Select all new files":{msgid:"Select all new files",msgstr:["保留所有上传版本"]},Skip:{msgid:"Skip",msgstr:["跳过"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["跳过{count}个文件"]},"Unknown size":{msgid:"Unknown size",msgstr:["文件大小未知"]},Upload:{msgid:"Upload",msgstr:["上传"]},"Upload files":{msgid:"Upload files",msgstr:["上传文件"]},"Upload folders":{msgid:"Upload folders",msgstr:["上传文件夹"]},"Upload from device":{msgid:"Upload from device",msgstr:["从设备上传"]},"Upload has been cancelled":{msgid:"Upload has been cancelled",msgstr:["上传已取消"]},"Upload has been skipped":{msgid:"Upload has been skipped",msgstr:["上传已跳过"]},'Upload of "{folder}" has been skipped':{msgid:'Upload of "{folder}" has been skipped',msgstr:['已跳过上传"{folder}"']},"Upload progress":{msgid:"Upload progress",msgstr:["上传进度"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["当选择上传文件夹时,其中任何冲突的文件也都会被覆盖。"]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["选择上传文件夹后,内容将写入现有文件夹,并递归执行冲突解决。"]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["你要保留哪些文件?"]},"You can either rename the file, skip this file or cancel the whole operation.":{msgid:"You can either rename the file, skip this file or cancel the whole operation.",msgstr:["您可以重命名文件、跳过此文件或取消整个操作。"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["每个文件至少选择保留一个版本"]}}}}},{locale:"zh_HK",json:{charset:"utf-8",headers:{"Last-Translator":"Café Tango, 2024","Language-Team":"Chinese (Hong Kong) (https://app.transifex.com/nextcloud/teams/64236/zh_HK/)","Content-Type":"text/plain; charset=UTF-8",Language:"zh_HK","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\nCafé Tango, 2024\n"},msgstr:["Last-Translator: Café Tango, 2024\nLanguage-Team: Chinese (Hong Kong) (https://app.transifex.com/nextcloud/teams/64236/zh_HK/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: zh_HK\nPlural-Forms: nplurals=1; plural=0;\n"]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} 個檔案衝突"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{dirname} 中有 {count} 個檔案衝突"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["剩餘 {seconds} 秒"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["剩餘 {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["還剩幾秒"]},Cancel:{msgid:"Cancel",msgstr:["取消"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["取消整個操作"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["取消上傳"]},Continue:{msgid:"Continue",msgstr:["繼續"]},"estimating time left":{msgid:"estimating time left",msgstr:["估計剩餘時間"]},"Existing version":{msgid:"Existing version",msgstr:["既有版本"]},"If you select both versions, the incoming file will have a number added to its name.":{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["若您選取兩個版本,傳入檔案的名稱將會新增編號。"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["最後修改日期不詳"]},New:{msgid:"New",msgstr:["新增"]},"New version":{msgid:"New version",msgstr:["新版本 "]},paused:{msgid:"paused",msgstr:["已暫停"]},"Preview image":{msgid:"Preview image",msgstr:["預覽圖片"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["選取所有核取方塊"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["選取所有既有檔案"]},"Select all new files":{msgid:"Select all new files",msgstr:["選取所有新檔案"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["略過 {count} 個檔案"]},"Unknown size":{msgid:"Unknown size",msgstr:["大小不詳"]},"Upload cancelled":{msgid:"Upload cancelled",msgstr:["已取消上傳"]},"Upload files":{msgid:"Upload files",msgstr:["上傳檔案"]},"Upload progress":{msgid:"Upload progress",msgstr:["上傳進度"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["選取傳入資料夾後,其中任何的衝突檔案都會被覆寫。"]},"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.":{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["選擇傳入資料夾後,內容將寫入現有資料夾並執行遞歸衝突解決。"]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["您想保留哪些檔案?"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["您必須為每個檔案都至少選取一個版本以繼續。"]}}}}},{locale:"zh_TW",json:{charset:"utf-8",headers:{"Last-Translator":"黃柏諺 <s8321414@gmail.com>, 2024","Language-Team":"Chinese (Taiwan) (https://app.transifex.com/nextcloud/teams/64236/zh_TW/)","Content-Type":"text/plain; charset=UTF-8",Language:"zh_TW","Plural-Forms":"nplurals=1; plural=0;"},translations:{"":{"":{msgid:"",comments:{translator:"\nTranslators:\nJoas Schilling, 2024\n黃柏諺 <s8321414@gmail.com>, 2024\n"},msgstr:["Last-Translator: 黃柏諺 <s8321414@gmail.com>, 2024\nLanguage-Team: Chinese (Taiwan) (https://app.transifex.com/nextcloud/teams/64236/zh_TW/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: zh_TW\nPlural-Forms: nplurals=1; plural=0;\n"]},"{count} file conflict":{msgid:"{count} file conflict",msgid_plural:"{count} files conflict",msgstr:["{count} 個檔案衝突"]},"{count} file conflict in {dirname}":{msgid:"{count} file conflict in {dirname}",msgid_plural:"{count} file conflicts in {dirname}",msgstr:["{dirname} 中有 {count} 個檔案衝突"]},"{seconds} seconds left":{msgid:"{seconds} seconds left",msgstr:["剩餘 {seconds} 秒"]},"{time} left":{msgid:"{time} left",comments:{extracted:"TRANSLATORS time has the format 00:00:00"},msgstr:["剩餘 {time}"]},"a few seconds left":{msgid:"a few seconds left",msgstr:["還剩幾秒"]},Cancel:{msgid:"Cancel",msgstr:["取消"]},"Cancel the entire operation":{msgid:"Cancel the entire operation",msgstr:["取消整個操作"]},"Cancel uploads":{msgid:"Cancel uploads",msgstr:["取消上傳"]},Continue:{msgid:"Continue",msgstr:["繼續"]},"estimating time left":{msgid:"estimating time left",msgstr:["估計剩餘時間"]},"Existing version":{msgid:"Existing version",msgstr:["既有版本"]},"If you select both versions, the copied file will have a number added to its name.":{msgid:"If you select both versions, the copied file will have a number added to its name.",msgstr:["若您選取兩個版本,複製的檔案的名稱將會新增編號。"]},"Last modified date unknown":{msgid:"Last modified date unknown",msgstr:["最後修改日期未知"]},New:{msgid:"New",msgstr:["新增"]},"New version":{msgid:"New version",msgstr:["新版本"]},paused:{msgid:"paused",msgstr:["已暫停"]},"Preview image":{msgid:"Preview image",msgstr:["預覽圖片"]},"Select all checkboxes":{msgid:"Select all checkboxes",msgstr:["選取所有核取方塊"]},"Select all existing files":{msgid:"Select all existing files",msgstr:["選取所有既有檔案"]},"Select all new files":{msgid:"Select all new files",msgstr:["選取所有新檔案"]},"Skip this file":{msgid:"Skip this file",msgid_plural:"Skip {count} files",msgstr:["略過 {count} 檔案"]},"Unknown size":{msgid:"Unknown size",msgstr:["未知大小"]},"Upload cancelled":{msgid:"Upload cancelled",msgstr:["已取消上傳"]},"Upload files":{msgid:"Upload files",msgstr:["上傳檔案"]},"Upload progress":{msgid:"Upload progress",msgstr:["上傳進度"]},"When an incoming folder is selected, any conflicting files within it will also be overwritten.":{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["選取傳入資料夾後,其中任何的衝突檔案都會被覆寫。"]},"Which files do you want to keep?":{msgid:"Which files do you want to keep?",msgstr:["您想保留哪些檔案?"]},"You need to select at least one version of each file to continue.":{msgid:"You need to select at least one version of each file to continue.",msgstr:["您必須為每個檔案都至少選取一個版本以繼續。"]}}}}}].map((e=>P.addTranslation(e.locale,e.json)));const B=P.build(),z=B.ngettext.bind(B),D=B.gettext.bind(B),O=(0,p.YK)().setApp("@nextcloud/upload").detectUser().build();var R=(e=>(e[e.IDLE=0]="IDLE",e[e.UPLOADING=1]="UPLOADING",e[e.PAUSED=2]="PAUSED",e))(R||{});class j{_destinationFolder;_isPublic;_customHeaders;_uploadQueue=[];_jobQueue=new c.A({concurrency:(0,h.F)().files?.chunked_upload?.max_parallel_count??5});_queueSize=0;_queueProgress=0;_queueStatus=0;_notifiers=[];constructor(e=!1,t){if(this._isPublic=e,this._customHeaders={},!t){const s=`${r.PY}${r.lJ}`;let i;if(e)i="anonymous";else{const e=(0,a.HW)()?.uid;if(!e)throw new Error("User is not logged in");i=e}t=new r.vd({id:0,owner:i,permissions:r.aX.ALL,root:r.lJ,source:s})}this.destination=t,this._jobQueue.addListener("idle",(()=>this.reset())),O.debug("Upload workspace initialized",{destination:this.destination,root:this.root,isPublic:e,maxChunksSize:L()})}get destination(){return this._destinationFolder}set destination(e){if(!e||e.type!==r.pt.Folder||!e.source)throw new Error("Invalid destination folder");O.debug("Destination set",{folder:e}),this._destinationFolder=e}get root(){return this._destinationFolder.source}get customHeaders(){return structuredClone(this._customHeaders)}setCustomHeader(e,t=""){this._customHeaders[e]=t}deleteCustomerHeader(e){delete this._customHeaders[e]}get queue(){return this._uploadQueue}reset(){this._uploadQueue.splice(0,this._uploadQueue.length),this._jobQueue.clear(),this._queueSize=0,this._queueProgress=0,this._queueStatus=0}pause(){this._jobQueue.pause(),this._queueStatus=2}start(){this._jobQueue.start(),this._queueStatus=1,this.updateStats()}get info(){return{size:this._queueSize,progress:this._queueProgress,status:this._queueStatus}}updateStats(){const e=this._uploadQueue.map((e=>e.size)).reduce(((e,t)=>e+t),0),t=this._uploadQueue.map((e=>e.uploaded)).reduce(((e,t)=>e+t),0);this._queueSize=e,this._queueProgress=t,2!==this._queueStatus&&(this._queueStatus=this._jobQueue.size>0?1:0)}addNotifier(e){this._notifiers.push(e)}_notifyAll(e){for(const t of this._notifiers)try{t(e)}catch(t){O.warn("Error in upload notifier",{error:t,source:e.source})}}batchUpload(e,t,s){return s||(s=async e=>e),new m.A((async(i,n,a)=>{const o=new I("");await o.addChildren(t);const l=`${this.root.replace(/\/$/,"")}/${e.replace(/^\//,"")}`,d=new F(l,!1,0,o);d.status=N.UPLOADING,this._uploadQueue.push(d),O.debug("Starting new batch upload",{target:l});try{const t=(0,r.H4)(this.root,this._customHeaders),n=this.uploadDirectory(e,o,s,t);a((()=>n.cancel()));const l=await n;d.status=N.FINISHED,i(l)}catch(e){O.error("Error in batch upload",{error:e}),d.status=N.FAILED,n(D("Upload has been cancelled"))}finally{this._notifyAll(d),this.updateStats()}}))}createDirectory(e,t,s){const i=(0,l.normalize)(`${e}/${t.name}`).replace(/\/$/,""),n=`${this.root.replace(/\/$/,"")}/${i.replace(/^\//,"")}`;if(!t.name)throw new Error("Can not create empty directory");const a=new F(n,!1,0,t);return this._uploadQueue.push(a),new m.A((async(e,n,r)=>{const o=new AbortController;r((()=>o.abort())),a.signal.addEventListener("abort",(()=>n(D("Upload has been cancelled")))),await this._jobQueue.add((async()=>{a.status=N.UPLOADING;try{await s.createDirectory(i,{signal:o.signal}),e(a)}catch(e){e&&"object"==typeof e&&"status"in e&&405===e.status?(a.status=N.FINISHED,O.debug("Directory already exists, writing into it",{directory:t.name})):(a.status=N.FAILED,n(e))}finally{this._notifyAll(a),this.updateStats()}}))}))}uploadDirectory(e,t,s,i){const n=(0,l.normalize)(`${e}/${t.name}`).replace(/\/$/,"");return new m.A((async(a,r,o)=>{const l=new AbortController;o((()=>l.abort()));const d=await s(t.children,n);if(!1===d)return O.debug("Upload canceled by user",{directory:t}),void r(D("Upload has been cancelled"));if(0===d.length&&t.children.length>0)return O.debug("Skipping directory, as all files were skipped by user",{directory:t}),void a([]);const m=[],c=[];l.signal.addEventListener("abort",(()=>{m.forEach((e=>e.cancel())),c.forEach((e=>e.cancel()))})),O.debug("Start directory upload",{directory:t});try{t.name&&(c.push(this.createDirectory(e,t,i)),await c.at(-1));for(const e of d)e instanceof I?m.push(this.uploadDirectory(n,e,s,i)):c.push(this.upload(`${n}/${e.name}`,e));a([await Promise.all(c),...await Promise.all(m)].flat())}catch(e){l.abort(e),r(e)}}))}upload(e,t,s,i=5){const n=`${(s=s||this.root).replace(/\/$/,"")}/${e.replace(/^\//,"")}`,{origin:r}=new URL(n),l=r+(0,o.O0)(n.slice(r.length));return O.debug(`Uploading ${t.name} to ${l}`),new m.A((async(e,s,r)=>{E(t)&&(t=await new Promise((e=>t.file(e,s))));const o=t,m=L("size"in o?o.size:void 0),c=this._isPublic||0===m||"size"in o&&o.size<m,f=new F(n,!c,o.size,o);if(this._uploadQueue.push(f),this.updateStats(),r(f.cancel),c){O.debug("Initializing regular upload",{file:o,upload:f});const t=await S(o,0,f.size),i=async()=>{try{f.response=await T(l,t,f.signal,(e=>{f.uploaded=f.uploaded+e.bytes,this.updateStats()}),void 0,{...this._customHeaders,"X-OC-Mtime":Math.floor(o.lastModified/1e3),"Content-Type":o.type}),f.uploaded=f.size,this.updateStats(),O.debug(`Successfully uploaded ${o.name}`,{file:o,upload:f}),e(f)}catch(e){if((0,d.FZ)(e))return f.status=N.FAILED,void s(D("Upload has been cancelled"));e?.response&&(f.response=e.response),f.status=N.FAILED,O.error(`Failed uploading ${o.name}`,{error:e,file:o,upload:f}),s("Failed uploading the file")}this._notifyAll(f)};this._jobQueue.add(i),this.updateStats()}else{O.debug("Initializing chunked upload",{file:o,upload:f});const t=await async function(e,t=5){const s=`${(0,u.dC)(`dav/uploads/${(0,a.HW)()?.uid}`)}/web-file-upload-${[...Array(16)].map((()=>Math.floor(16*Math.random()).toString(16))).join("")}`,i=e?{Destination:e}:void 0;return await d.Ay.request({method:"MKCOL",url:s,headers:i,"axios-retry":{retries:t,retryDelay:(e,t)=>(0,g.Nv)(e,t,1e3)}}),s}(l,i),n=[];for(let e=0;e<f.chunks;e++){const s=e*m,a=Math.min(s+m,f.size),r=()=>S(o,s,m),c=()=>T(`${t}/${e+1}`,r,f.signal,(()=>this.updateStats()),l,{...this._customHeaders,"X-OC-Mtime":Math.floor(o.lastModified/1e3),"OC-Total-Length":o.size,"Content-Type":"application/octet-stream"},i).then((()=>{f.uploaded=f.uploaded+m})).catch((t=>{if(507===t?.response?.status)throw O.error("Upload failed, not enough space on the server or quota exceeded. Cancelling the remaining chunks",{error:t,upload:f}),f.cancel(),f.status=N.FAILED,t;throw(0,d.FZ)(t)||(O.error(`Chunk ${e+1} ${s} - ${a} uploading failed`,{error:t,upload:f}),f.cancel(),f.status=N.FAILED),t}));n.push(this._jobQueue.add(c))}try{await Promise.all(n),this.updateStats(),f.response=await d.Ay.request({method:"MOVE",url:`${t}/.file`,headers:{...this._customHeaders,"X-OC-Mtime":Math.floor(o.lastModified/1e3),"OC-Total-Length":o.size,Destination:l}}),this.updateStats(),f.status=N.FINISHED,O.debug(`Successfully uploaded ${o.name}`,{file:o,upload:f}),e(f)}catch(e){(0,d.FZ)(e)?(f.status=N.FAILED,s(D("Upload has been cancelled"))):(f.status=N.FAILED,s("Failed assembling the chunks together")),d.Ay.request({method:"DELETE",url:`${t}`})}this._notifyAll(f)}return f}))}}function M(e,t,s,i,n,a,r,o){var l="function"==typeof e?e.options:e;return t&&(l.render=t,l.staticRenderFns=s,l._compiled=!0),a&&(l._scopeId="data-v-"+a),{exports:e,options:l}}const V=M({name:"CancelIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon cancel-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M12 4C10.1 4 8.4 4.6 7.1 5.7L18.3 16.9C19.3 15.5 20 13.8 20 12C20 7.6 16.4 4 12 4M16.9 18.3L5.7 7.1C4.6 8.4 4 10.1 4 12C4 16.4 7.6 20 12 20C13.9 20 15.6 19.4 16.9 18.3Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],0,0,null).exports,$=M({name:"FolderUploadIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon folder-upload-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],0,0,null).exports,W=M({name:"PlusIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon plus-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],0,0,null).exports,H=M({name:"UploadIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon upload-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],0,0,null).exports;function q(e){const t=(0,n.$V)((()=>Promise.all([s.e(4208),s.e(5828)]).then(s.bind(s,35828)))),{promise:i,reject:a,resolve:o}=Promise.withResolvers();return(0,k.Ss)(t,{error:e,validateFilename:r.KT},((...e)=>{const[{skip:t,rename:s}]=e;t?o(!1):s?o(s):a()})),i}function G(e,t){return Y(e,t).length>0}function Y(e,t){const s=t.map((e=>e.basename));return e.filter((e=>{const t="basename"in e?e.basename:e.name;return-1!==s.indexOf(t)}))}const K=M(n.Ay.extend({name:"UploadPicker",components:{IconCancel:V,IconFolderUpload:$,IconPlus:W,IconUpload:H,NcActionButton:v.A,NcActionCaption:A.A,NcActionSeparator:C.A,NcActions:b.A,NcButton:y.A,NcIconSvgWrapper:x.A,NcProgressBar:_.A},props:{accept:{type:Array,default:null},disabled:{type:Boolean,default:!1},multiple:{type:Boolean,default:!1},noMenu:{type:Boolean,default:!1},destination:{type:r.vd,default:void 0},allowFolders:{type:Boolean,default:!1},content:{type:[Array,Function],default:()=>[]},forbiddenCharacters:{type:Array,default:()=>[]}},setup:()=>({t:D,progressTimeId:`nc-uploader-progress-${Math.random().toString(36).slice(7)}`}),data:()=>({eta:null,timeLeft:"",newFileMenuEntries:[],uploadManager:Q()}),computed:{menuEntriesUpload(){return this.newFileMenuEntries.filter((e=>e.category===r.a7.UploadFromDevice))},menuEntriesNew(){return this.newFileMenuEntries.filter((e=>e.category===r.a7.CreateNew))},menuEntriesOther(){return this.newFileMenuEntries.filter((e=>e.category===r.a7.Other))},canUploadFolders(){return this.allowFolders&&"webkitdirectory"in document.createElement("input")},totalQueueSize(){return this.uploadManager.info?.size||0},uploadedQueueSize(){return this.uploadManager.info?.progress||0},progress(){return Math.round(this.uploadedQueueSize/this.totalQueueSize*100)||0},queue(){return this.uploadManager.queue},hasFailure(){return 0!==this.queue?.filter((e=>e.status===N.FAILED)).length},isUploading(){return this.queue?.length>0},isAssembling(){return 0!==this.queue?.filter((e=>e.status===N.ASSEMBLING)).length},isPaused(){return this.uploadManager.info?.status===R.PAUSED},buttonLabel(){return this.noMenu?D("Upload"):D("New")},buttonName(){if(!this.isUploading)return this.buttonLabel}},watch:{allowFolders:{immediate:!0,handler(){"function"!=typeof this.content&&this.allowFolders&&O.error("[UploadPicker] Setting `allowFolders` is only allowed if `content` is a function")}},destination(e){this.setDestination(e)},totalQueueSize(e){this.eta=w({min:0,max:e}),this.updateStatus()},uploadedQueueSize(e){this.eta?.report?.(e),this.updateStatus()},isPaused(e){e?this.$emit("paused",this.queue):this.$emit("resumed",this.queue)}},beforeMount(){this.destination&&this.setDestination(this.destination),this.uploadManager.addNotifier(this.onUploadCompletion),O.debug("UploadPicker initialised")},methods:{async onClick(e){e.handler(this.destination,await this.getContent().catch((()=>[])))},onTriggerPick(e=!1){const t=this.$refs.input;this.canUploadFolders&&(t.webkitdirectory=e),this.$nextTick((()=>t.click()))},async getContent(e){return Array.isArray(this.content)?this.content:await this.content(e)},onPick(){const e=this.$refs.input,t=e.files?Array.from(e.files):[];var s;this.uploadManager.batchUpload("",t,(s=this.getContent,async(e,t)=>{try{const i=await s(t).catch((()=>[])),n=Y(e,i);if(n.length>0){const{selected:s,renamed:a}=await J(t,n,i,{recursive:!0});e=[...s,...a]}const a=[];for(const t of e)try{(0,r.KT)(t.name),a.push(t)}catch(s){if(!(s instanceof r.di))throw O.error(`Unexpected error while validating ${t.name}`,{error:s}),s;let i=await q(s);!1!==i&&(i=(0,r.E6)(i,e.map((e=>e.name))),Object.defineProperty(t,"name",{value:i}),a.push(t))}if(0===a.length&&e.length>0){const e=(0,o.P8)(t);(0,k.cf)(e?D('Upload of "{folder}" has been skipped',{folder:e}):D("Upload has been skipped"))}return a}catch(e){return O.debug("Upload has been cancelled",{error:e}),(0,k.I9)(D("Upload has been cancelled")),!1}})).catch((e=>O.debug("Error while uploading",{error:e}))).finally((()=>this.resetForm()))},resetForm(){const e=this.$refs.form;e?.reset()},onCancel(){this.uploadManager.queue.forEach((e=>{e.cancel()})),this.resetForm()},updateStatus(){if(this.isPaused)return void(this.timeLeft=D("paused"));const e=Math.round(this.eta.estimate());if(e!==1/0)if(e<10)this.timeLeft=D("a few seconds left");else if(e>60){const t=new Date(0);t.setSeconds(e);const s=t.toISOString().slice(11,19);this.timeLeft=D("{time} left",{time:s})}else this.timeLeft=D("{seconds} seconds left",{seconds:e});else this.timeLeft=D("estimating time left")},setDestination(e){this.destination?(this.uploadManager.destination=e,this.newFileMenuEntries=(0,r.m1)(e)):O.debug("Invalid destination")},onUploadCompletion(e){e.status===N.FAILED?this.$emit("failed",e):this.$emit("uploaded",e)}}}),(function(){var e=this,t=e._self._c;return e._self._setupProxy,e.destination?t("form",{ref:"form",staticClass:"upload-picker",class:{"upload-picker--uploading":e.isUploading,"upload-picker--paused":e.isPaused},attrs:{"data-cy-upload-picker":""}},[!e.noMenu&&0!==e.newFileMenuEntries.length||e.canUploadFolders?t("NcActions",{attrs:{"aria-label":e.buttonLabel,"menu-name":e.buttonName,type:"secondary"},scopedSlots:e._u([{key:"icon",fn:function(){return[t("IconPlus",{attrs:{size:20}})]},proxy:!0}],null,!1,1991456921)},[t("NcActionCaption",{attrs:{name:e.t("Upload from device")}}),t("NcActionButton",{attrs:{"data-cy-upload-picker-add":"","data-cy-upload-picker-menu-entry":"upload-file","close-after-click":!0},on:{click:function(t){return e.onTriggerPick()}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("IconUpload",{attrs:{size:20}})]},proxy:!0}],null,!1,337456192)},[e._v(" "+e._s(e.t("Upload files"))+" ")]),e.canUploadFolders?t("NcActionButton",{attrs:{"close-after-click":"","data-cy-upload-picker-add-folders":"","data-cy-upload-picker-menu-entry":"upload-folder"},on:{click:function(t){return e.onTriggerPick(!0)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("IconFolderUpload",{staticStyle:{color:"var(--color-primary-element)"},attrs:{size:20}})]},proxy:!0}],null,!1,1037549157)},[e._v(" "+e._s(e.t("Upload folders"))+" ")]):e._e(),e.noMenu?e._e():e._l(e.menuEntriesUpload,(function(s){return t("NcActionButton",{key:s.id,staticClass:"upload-picker__menu-entry",attrs:{icon:s.iconClass,"close-after-click":!0,"data-cy-upload-picker-menu-entry":s.id},on:{click:function(t){return e.onClick(s)}},scopedSlots:e._u([s.iconSvgInline?{key:"icon",fn:function(){return[t("NcIconSvgWrapper",{attrs:{svg:s.iconSvgInline}})]},proxy:!0}:null],null,!0)},[e._v(" "+e._s(s.displayName)+" ")])})),!e.noMenu&&e.menuEntriesNew.length>0?[t("NcActionSeparator"),t("NcActionCaption",{attrs:{name:e.t("Create new")}}),e._l(e.menuEntriesNew,(function(s){return t("NcActionButton",{key:s.id,staticClass:"upload-picker__menu-entry",attrs:{icon:s.iconClass,"close-after-click":!0,"data-cy-upload-picker-menu-entry":s.id},on:{click:function(t){return e.onClick(s)}},scopedSlots:e._u([s.iconSvgInline?{key:"icon",fn:function(){return[t("NcIconSvgWrapper",{attrs:{svg:s.iconSvgInline}})]},proxy:!0}:null],null,!0)},[e._v(" "+e._s(s.displayName)+" ")])}))]:e._e(),!e.noMenu&&e.menuEntriesOther.length>0?[t("NcActionSeparator"),e._l(e.menuEntriesOther,(function(s){return t("NcActionButton",{key:s.id,staticClass:"upload-picker__menu-entry",attrs:{icon:s.iconClass,"close-after-click":!0,"data-cy-upload-picker-menu-entry":s.id},on:{click:function(t){return e.onClick(s)}},scopedSlots:e._u([s.iconSvgInline?{key:"icon",fn:function(){return[t("NcIconSvgWrapper",{attrs:{svg:s.iconSvgInline}})]},proxy:!0}:null],null,!0)},[e._v(" "+e._s(s.displayName)+" ")])}))]:e._e()],2):t("NcButton",{attrs:{disabled:e.disabled,"data-cy-upload-picker-add":"","data-cy-upload-picker-menu-entry":"upload-file",type:"secondary"},on:{click:function(t){return e.onTriggerPick()}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("IconPlus",{attrs:{size:20}})]},proxy:!0}],null,!1,1991456921)},[e._v(" "+e._s(e.buttonName)+" ")]),t("div",{directives:[{name:"show",rawName:"v-show",value:e.isUploading,expression:"isUploading"}],staticClass:"upload-picker__progress"},[t("NcProgressBar",{attrs:{"aria-label":e.t("Upload progress"),"aria-describedby":e.progressTimeId,error:e.hasFailure,value:e.progress,size:"medium"}}),t("p",{attrs:{id:e.progressTimeId}},[e._v(" "+e._s(e.timeLeft)+" ")])],1),e.isUploading?t("NcButton",{staticClass:"upload-picker__cancel",attrs:{type:"tertiary","aria-label":e.t("Cancel uploads"),"data-cy-upload-picker-cancel":""},on:{click:e.onCancel},scopedSlots:e._u([{key:"icon",fn:function(){return[t("IconCancel",{attrs:{size:20}})]},proxy:!0}],null,!1,3076329829)}):e._e(),t("input",{ref:"input",staticClass:"hidden-visually",attrs:{accept:e.accept?.join?.(", "),multiple:e.multiple,"data-cy-upload-picker-input":"",type:"file"},on:{change:e.onPick}})],1):e._e()}),[],0,0,"c5517ef8").exports;function Q(e=(0,i.f)(),t=!1){return(t||void 0===window._nc_uploader)&&(window._nc_uploader=new j(e)),window._nc_uploader}async function J(e,t,i,a){const r=(0,n.$V)((()=>Promise.all([s.e(4208),s.e(6473)]).then(s.bind(s,36473))));return new Promise(((s,o)=>{const l=new n.Ay({name:"ConflictPickerRoot",render:n=>n(r,{props:{dirname:e,conflicts:t,content:i,recursiveUpload:!0===a?.recursive},on:{submit(e){s(e),l.$destroy(),l.$el?.parentNode?.removeChild(l.$el)},cancel(e){o(e??new Error("Canceled")),l.$destroy(),l.$el?.parentNode?.removeChild(l.$el)}}})});l.$mount(),document.body.appendChild(l.$el)}))}}},a={};function r(e){var t=a[e];if(void 0!==t)return t.exports;var s=a[e]={id:e,loaded:!1,exports:{}};return n[e].call(s.exports,s,s.exports,r),s.loaded=!0,s.exports}r.m=n,e=[],r.O=(t,s,i,n)=>{if(!s){var a=1/0;for(m=0;m<e.length;m++){s=e[m][0],i=e[m][1],n=e[m][2];for(var o=!0,l=0;l<s.length;l++)(!1&n||a>=n)&&Object.keys(r.O).every((e=>r.O[e](s[l])))?s.splice(l--,1):(o=!1,n<a&&(a=n));if(o){e.splice(m--,1);var d=i();void 0!==d&&(t=d)}}return t}n=n||0;for(var m=e.length;m>0&&e[m-1][2]>n;m--)e[m]=e[m-1];e[m]=[s,i,n]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var s in t)r.o(t,s)&&!r.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((t,s)=>(r.f[s](e,t),t)),[])),r.u=e=>e+"-"+e+".js?v="+{5706:"3153330af47fc26a725a",5828:"251f4c2fee5cd4300ac4",6127:"da37b69cd9ee64a1836b",6473:"29a59b355eab986be8fd"}[e],r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s={},i="nextcloud:",r.l=(e,t,n,a)=>{if(s[e])s[e].push(t);else{var o,l;if(void 0!==n)for(var d=document.getElementsByTagName("script"),m=0;m<d.length;m++){var c=d[m];if(c.getAttribute("src")==e||c.getAttribute("data-webpack")==i+n){o=c;break}}o||(l=!0,(o=document.createElement("script")).charset="utf-8",o.timeout=120,r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",i+n),o.src=e),s[e]=[t];var u=(t,i)=>{o.onerror=o.onload=null,clearTimeout(g);var n=s[e];if(delete s[e],o.parentNode&&o.parentNode.removeChild(o),n&&n.forEach((e=>e(i))),t)return t(i)},g=setTimeout(u.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=u.bind(null,o.onerror),o.onload=u.bind(null,o.onload),l&&document.head.appendChild(o)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.j=2882,(()=>{var e;r.g.importScripts&&(e=r.g.location+"");var t=r.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var s=t.getElementsByTagName("script");if(s.length)for(var i=s.length-1;i>-1&&(!e||!/^http(s?):/.test(e));)e=s[i--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=e})(),(()=>{r.b=document.baseURI||self.location.href;var e={2882:0};r.f.j=(t,s)=>{var i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)s.push(i[2]);else{var n=new Promise(((s,n)=>i=e[t]=[s,n]));s.push(i[2]=n);var a=r.p+r.u(t),o=new Error;r.l(a,(s=>{if(r.o(e,t)&&(0!==(i=e[t])&&(e[t]=void 0),i)){var n=s&&("load"===s.type?"missing":s.type),a=s&&s.target&&s.target.src;o.message="Loading chunk "+t+" failed.\n("+n+": "+a+")",o.name="ChunkLoadError",o.type=n,o.request=a,i[1](o)}}),"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,s)=>{var i,n,a=s[0],o=s[1],l=s[2],d=0;if(a.some((t=>0!==e[t]))){for(i in o)r.o(o,i)&&(r.m[i]=o[i]);if(l)var m=l(r)}for(t&&t(s);d<a.length;d++)n=a[d],r.o(e,n)&&e[n]&&e[n][0](),e[n]=0;return r.O(m)},s=self.webpackChunknextcloud=self.webpackChunknextcloud||[];s.forEach(t.bind(null,0)),s.push=t.bind(null,s.push.bind(s))})(),r.nc=void 0;var o=r.O(void 0,[4208],(()=>r(50458)));o=r.O(o)})();
+//# sourceMappingURL=files-main.js.map?v=53b0245c45c3dd90bd3e \ No newline at end of file
diff --git a/dist/files-main.js.map b/dist/files-main.js.map
index a3a8e68972b..c00db73d644 100644
--- a/dist/files-main.js.map
+++ b/dist/files-main.js.map
@@ -1 +1 @@
-{"version":3,"file":"files-main.js?v=058646fab82a3df903d1","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/files/src/store/index.ts","webpack:///nextcloud/apps/files/src/router/router.ts","webpack:///nextcloud/apps/files/src/services/RouterService.ts","webpack:///nextcloud/apps/files/src/FilesApp.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Cog.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Cog.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Cog.vue?4d6d","webpack:///nextcloud/node_modules/vue-material-design-icons/Cog.vue?vue&type=template&id=209aff25","webpack:///nextcloud/node_modules/throttle-debounce/esm/index.js","webpack:///nextcloud/node_modules/vue-material-design-icons/ChartPie.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ChartPie.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/ChartPie.vue?421f","webpack:///nextcloud/node_modules/vue-material-design-icons/ChartPie.vue?vue&type=template&id=90a70766","webpack:///nextcloud/apps/files/src/logger.ts","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?e0b0","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?2966","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?08cb","webpack://nextcloud/./apps/files/src/views/Settings.vue?84f7","webpack:///nextcloud/apps/files/src/components/Setting.vue","webpack:///nextcloud/apps/files/src/components/Setting.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/files/src/components/Setting.vue?98ea","webpack://nextcloud/./apps/files/src/components/Setting.vue?8d57","webpack:///nextcloud/apps/files/src/store/userconfig.ts","webpack:///nextcloud/apps/files/src/views/Settings.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files/src/views/Settings.vue","webpack://nextcloud/./apps/files/src/views/Settings.vue?4fb0","webpack://nextcloud/./apps/files/src/views/Settings.vue?b81b","webpack:///nextcloud/apps/files/src/components/FilesNavigationItem.vue","webpack:///nextcloud/apps/files/src/composables/useNavigation.ts","webpack:///nextcloud/apps/files/src/store/viewConfig.ts","webpack:///nextcloud/apps/files/src/components/FilesNavigationItem.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesNavigationItem.vue?172f","webpack:///nextcloud/apps/files/src/filters/FilenameFilter.ts","webpack:///nextcloud/apps/files/src/store/filters.ts","webpack:///nextcloud/apps/files/src/views/Navigation.vue","webpack:///nextcloud/apps/files/src/views/Navigation.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/composables/useFilenameFilter.ts","webpack://nextcloud/./apps/files/src/views/Navigation.vue?13e6","webpack://nextcloud/./apps/files/src/views/Navigation.vue?74b9","webpack:///nextcloud/apps/files/src/views/FilesList.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Reload.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Reload.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Reload.vue?2e35","webpack:///nextcloud/node_modules/vue-material-design-icons/Reload.vue?vue&type=template&id=39a07256","webpack:///nextcloud/node_modules/vue-material-design-icons/FormatListBulletedSquare.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/FormatListBulletedSquare.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/FormatListBulletedSquare.vue?5dae","webpack:///nextcloud/node_modules/vue-material-design-icons/FormatListBulletedSquare.vue?vue&type=template&id=64cece03","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountPlus.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountPlus.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/AccountPlus.vue?2818","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountPlus.vue?vue&type=template&id=53a26aa0","webpack:///nextcloud/node_modules/vue-material-design-icons/ViewGrid.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/ViewGrid.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/ViewGrid.vue?4e55","webpack:///nextcloud/node_modules/vue-material-design-icons/ViewGrid.vue?vue&type=template&id=672ea5c8","webpack:///nextcloud/apps/files/src/actions/sidebarAction.ts","webpack:///nextcloud/apps/files/src/composables/useFileListWidth.ts","webpack:///nextcloud/apps/files/src/composables/useRouteParameters.ts","webpack:///nextcloud/node_modules/vue-router/composables.mjs","webpack:///nextcloud/apps/files/src/services/WebdavClient.ts","webpack:///nextcloud/apps/files/src/store/paths.ts","webpack:///nextcloud/apps/files/src/store/files.ts","webpack:///nextcloud/apps/files/src/store/selection.ts","webpack:///nextcloud/apps/files/src/store/uploader.ts","webpack:///nextcloud/apps/files/src/services/DropServiceUtils.ts","webpack:///nextcloud/apps/files/src/actions/moveOrCopyActionUtils.ts","webpack:///nextcloud/apps/files/src/services/Files.ts","webpack:///nextcloud/apps/files/src/actions/moveOrCopyAction.ts","webpack:///nextcloud/apps/files/src/services/DropService.ts","webpack:///nextcloud/apps/files/src/store/dragging.ts","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?f50f","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?d357","webpack:///nextcloud/apps/files/src/utils/fileUtils.ts","webpack:///nextcloud/apps/files/src/components/FileEntry.vue","webpack:///nextcloud/apps/files/src/store/actionsmenu.ts","webpack:///nextcloud/apps/files/src/store/renaming.ts","webpack:///nextcloud/node_modules/vue-material-design-icons/FileMultiple.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/FileMultiple.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/FileMultiple.vue?6e9d","webpack:///nextcloud/node_modules/vue-material-design-icons/FileMultiple.vue?vue&type=template&id=15fca808","webpack:///nextcloud/apps/files/src/components/DragAndDropPreview.vue","webpack:///nextcloud/apps/files/src/components/DragAndDropPreview.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/DragAndDropPreview.vue?dbe9","webpack://nextcloud/./apps/files/src/components/DragAndDropPreview.vue?36f6","webpack:///nextcloud/apps/files/src/utils/dragUtils.ts","webpack:///nextcloud/apps/files/src/components/FileEntryMixin.ts","webpack:///nextcloud/apps/files/src/utils/hashUtils.ts","webpack:///nextcloud/apps/files/src/utils/permissions.ts","webpack:///nextcloud/apps/files/src/components/CustomElementRender.vue","webpack:///nextcloud/apps/files/src/components/CustomElementRender.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/CustomElementRender.vue?5f5c","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryActions.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ArrowLeft.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ArrowLeft.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/ArrowLeft.vue?f857","webpack:///nextcloud/node_modules/vue-material-design-icons/ArrowLeft.vue?vue&type=template&id=16833c02","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryActions.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryActions.vue?4d16","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryActions.vue?016b","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryActions.vue?7b52","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryCheckbox.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryCheckbox.vue","webpack:///nextcloud/apps/files/src/store/keyboard.ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryCheckbox.vue?a18b","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryName.vue","webpack:///nextcloud/apps/files/src/utils/filenameValidity.ts","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryName.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryName.vue?ea94","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryName.vue?98a4","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryPreview.vue","webpack:///nextcloud/node_modules/blurhash/dist/esm/index.js","webpack:///nextcloud/node_modules/vue-material-design-icons/File.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/File.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/File.vue?245d","webpack:///nextcloud/node_modules/vue-material-design-icons/File.vue?vue&type=template&id=0f6b0bb0","webpack:///nextcloud/node_modules/vue-material-design-icons/FolderOpen.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/FolderOpen.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/FolderOpen.vue?6818","webpack:///nextcloud/node_modules/vue-material-design-icons/FolderOpen.vue?vue&type=template&id=ae0c5fc0","webpack:///nextcloud/node_modules/vue-material-design-icons/Key.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Key.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Key.vue?157c","webpack:///nextcloud/node_modules/vue-material-design-icons/Key.vue?vue&type=template&id=499b3412","webpack:///nextcloud/node_modules/vue-material-design-icons/Network.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Network.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Network.vue?11eb","webpack:///nextcloud/node_modules/vue-material-design-icons/Network.vue?vue&type=template&id=7bf2ec80","webpack:///nextcloud/node_modules/vue-material-design-icons/Tag.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Tag.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Tag.vue?6116","webpack:///nextcloud/node_modules/vue-material-design-icons/Tag.vue?vue&type=template&id=356230e0","webpack:///nextcloud/node_modules/vue-material-design-icons/PlayCircle.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/PlayCircle.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/PlayCircle.vue?0c26","webpack:///nextcloud/node_modules/vue-material-design-icons/PlayCircle.vue?vue&type=template&id=3cc1493c","webpack:///nextcloud/apps/files/src/components/FileEntry/CollectivesIcon.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files/src/components/FileEntry/CollectivesIcon.vue","webpack://nextcloud/./apps/files/src/components/FileEntry/CollectivesIcon.vue?1937","webpack://nextcloud/./apps/files/src/components/FileEntry/CollectivesIcon.vue?949d","webpack:///nextcloud/apps/files/src/components/FileEntry/FavoriteIcon.vue","webpack:///nextcloud/apps/files/src/components/FileEntry/FavoriteIcon.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FavoriteIcon.vue?f7c8","webpack://nextcloud/./apps/files/src/components/FileEntry/FavoriteIcon.vue?62c6","webpack:///nextcloud/apps/files/src/services/LivePhotos.ts","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryPreview.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryPreview.vue?8c1f","webpack:///nextcloud/apps/files/src/components/FileEntry.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry.vue?da7c","webpack:///nextcloud/apps/files/src/components/FileEntryGrid.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/FileEntryGrid.vue","webpack://nextcloud/./apps/files/src/components/FileEntryGrid.vue?bb8e","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue","webpack://nextcloud/./apps/files/src/components/FilesListHeader.vue?349b","webpack:///nextcloud/apps/files/src/components/FilesListTableFooter.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/FilesListTableFooter.vue","webpack://nextcloud/./apps/files/src/components/FilesListTableFooter.vue?8a94","webpack://nextcloud/./apps/files/src/components/FilesListTableFooter.vue?fa4c","webpack:///nextcloud/apps/files/src/components/FilesListTableHeader.vue","webpack:///nextcloud/apps/files/src/mixins/filesSorting.ts","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderButton.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderButton.vue","webpack://nextcloud/./apps/files/src/components/FilesListTableHeaderButton.vue?55b2","webpack://nextcloud/./apps/files/src/components/FilesListTableHeaderButton.vue?e364","webpack:///nextcloud/apps/files/src/components/FilesListTableHeader.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesListTableHeader.vue?c084","webpack://nextcloud/./apps/files/src/components/FilesListTableHeader.vue?b1c9","webpack:///nextcloud/apps/files/src/components/VirtualList.vue","webpack:///nextcloud/apps/files/src/components/VirtualList.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/VirtualList.vue?37fa","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderActions.vue","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderActions.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesListTableHeaderActions.vue?fd14","webpack://nextcloud/./apps/files/src/components/FilesListTableHeaderActions.vue?9494","webpack:///nextcloud/apps/files/src/components/FileListFilters.vue","webpack:///nextcloud/apps/files/src/components/FileListFilters.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FileListFilters.vue?eef0","webpack://nextcloud/./apps/files/src/components/FileListFilters.vue?ac4e","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?ebaf","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?a98d","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?3555","webpack:///nextcloud/node_modules/vue-material-design-icons/TrayArrowDown.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/TrayArrowDown.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/TrayArrowDown.vue?a897","webpack:///nextcloud/node_modules/vue-material-design-icons/TrayArrowDown.vue?vue&type=template&id=5dbf2618","webpack:///nextcloud/apps/files/src/components/DragAndDropNotice.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/DragAndDropNotice.vue","webpack://nextcloud/./apps/files/src/components/DragAndDropNotice.vue?0326","webpack://nextcloud/./apps/files/src/components/DragAndDropNotice.vue?a2e0","webpack:///nextcloud/apps/files/src/utils/davUtils.ts","webpack:///nextcloud/apps/files/src/views/FilesList.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/views/FilesList.vue?34db","webpack://nextcloud/./apps/files/src/views/FilesList.vue?1e5b","webpack:///nextcloud/apps/files/src/FilesApp.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/FilesApp.vue?597e","webpack:///nextcloud/apps/files/src/main.ts","webpack:///nextcloud/apps/files/src/services/Settings.js","webpack:///nextcloud/apps/files/src/models/Setting.js","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue?vue&type=style&index=0&id=61601fd4&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/DragAndDropNotice.vue?vue&type=style&index=0&id=48abd828&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/DragAndDropPreview.vue?vue&type=style&index=0&id=01562099&prod&lang=scss","webpack:///nextcloud/apps/files/src/components/FileEntry/FavoriteIcon.vue?vue&type=style&index=0&id=f2d0cf6e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryActions.vue?vue&type=style&index=0&id=1d682792&prod&lang=scss","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryActions.vue?vue&type=style&index=1&id=1d682792&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryName.vue?vue&type=style&index=0&id=ce4c1580&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FileListFilters.vue?vue&type=style&index=0&id=bd0c8440&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListTableFooter.vue?vue&type=style&index=0&id=4c69fc7c&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListTableHeader.vue?vue&type=style&index=0&id=4daa9603&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderActions.vue?vue&type=style&index=0&id=6c741170&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderButton.vue?vue&type=style&index=0&id=6d7680f0&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=style&index=0&id=2c0fe312&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=style&index=1&id=2c0fe312&prod&lang=scss","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue?vue&type=style&index=0&id=6ed9379e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/views/FilesList.vue?vue&type=style&index=0&id=53e05d31&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/views/Navigation.vue?vue&type=style&index=0&id=008142f0&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/views/Settings.vue?vue&type=style&index=0&id=23881b2c&prod&lang=scss&scoped=true","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/node_modules/@nextcloud/upload/dist/chunks/index-i9myasgp.mjs","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { createPinia } from 'pinia';\nexport const pinia = createPinia();\n","import { generateUrl } from '@nextcloud/router';\nimport queryString from 'query-string';\nimport Router from 'vue-router';\nimport Vue from 'vue';\nVue.use(Router);\n// Prevent router from throwing errors when we're already on the page we're trying to go to\nconst originalPush = Router.prototype.push;\nRouter.prototype.push = function push(to, onComplete, onAbort) {\n if (onComplete || onAbort)\n return originalPush.call(this, to, onComplete, onAbort);\n return originalPush.call(this, to).catch(err => err);\n};\nconst router = new Router({\n mode: 'history',\n // if index.php is in the url AND we got this far, then it's working:\n // let's keep using index.php in the url\n base: generateUrl('/apps/files'),\n linkActiveClass: 'active',\n routes: [\n {\n path: '/',\n // Pretending we're using the default view\n redirect: { name: 'filelist', params: { view: 'files' } },\n },\n {\n path: '/:view/:fileid(\\\\d+)?',\n name: 'filelist',\n props: true,\n },\n ],\n // Custom stringifyQuery to prevent encoding of slashes in the url\n stringifyQuery(query) {\n const result = queryString.stringify(query).replace(/%2F/gmi, '/');\n return result ? ('?' + result) : '';\n },\n});\nexport default router;\n","export default class RouterService {\n // typescript compiles this to `#router` to make it private even in JS,\n // but in TS it needs to be called without the visibility specifier\n router;\n constructor(router) {\n this.router = router;\n }\n get name() {\n return this.router.currentRoute.name;\n }\n get query() {\n return this.router.currentRoute.query || {};\n }\n get params() {\n return this.router.currentRoute.params || {};\n }\n /**\n * This is a protected getter only for internal use\n * @private\n */\n get _router() {\n return this.router;\n }\n /**\n * Trigger a route change on the files app\n *\n * @param path the url path, eg: '/trashbin?dir=/Deleted'\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goTo(path, replace = false) {\n return this.router.push({\n path,\n replace,\n });\n }\n /**\n * Trigger a route change on the files App\n *\n * @param name the route name\n * @param params the route parameters\n * @param query the url query parameters\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goToRoute(name, params, query, replace) {\n return this.router.push({\n name,\n query,\n params,\n replace,\n });\n }\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcContent',{attrs:{\"app-name\":\"files\"}},[(!_vm.isPublic)?_c('Navigation'):_vm._e(),_vm._v(\" \"),_c('FilesList',{attrs:{\"is-public\":_vm.isPublic}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon cog-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"CogIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Cog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Cog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Cog.vue?vue&type=template&id=209aff25\"\nimport script from \"./Cog.vue?vue&type=script&lang=js\"\nexport * from \"./Cog.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon cog-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n * are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n * as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n * one final time after the last throttled-function call. (After the throttled-function has not been called for\n * `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n * callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n * false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nfunction throttle (delay, callback, options) {\n var _ref = options || {},\n _ref$noTrailing = _ref.noTrailing,\n noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,\n _ref$noLeading = _ref.noLeading,\n noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,\n _ref$debounceMode = _ref.debounceMode,\n debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n var timeoutID;\n var cancelled = false;\n\n // Keep track of the last time `callback` was executed.\n var lastExec = 0;\n\n // Function to clear existing timeout\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n }\n\n // Function to cancel next exec\n function cancel(options) {\n var _ref2 = options || {},\n _ref2$upcomingOnly = _ref2.upcomingOnly,\n upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;\n clearExistingTimeout();\n cancelled = !upcomingOnly;\n }\n\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n var self = this;\n var elapsed = Date.now() - lastExec;\n if (cancelled) {\n return;\n }\n\n // Execute `callback` and update the `lastExec` timestamp.\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n function clear() {\n timeoutID = undefined;\n }\n if (!noLeading && debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`\n * and noLeading != true.\n */\n exec();\n }\n clearExistingTimeout();\n if (debounceMode === undefined && elapsed > delay) {\n if (noLeading) {\n /*\n * In throttle mode with noLeading, if `delay` time has\n * been exceeded, update `lastExec` and schedule `callback`\n * to execute after `delay` ms.\n */\n lastExec = Date.now();\n if (!noTrailing) {\n timeoutID = setTimeout(debounceMode ? clear : exec, delay);\n }\n } else {\n /*\n * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n }\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n wrapper.cancel = cancel;\n\n // Return the wrapper function.\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\nfunction debounce (delay, callback, options) {\n var _ref = options || {},\n _ref$atBegin = _ref.atBegin,\n atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;\n return throttle(delay, callback, {\n debounceMode: atBegin !== false\n });\n}\n\nexport { debounce, throttle };\n//# sourceMappingURL=index.js.map\n","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon chart-pie-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M11,2V22C5.9,21.5 2,17.2 2,12C2,6.8 5.9,2.5 11,2M13,2V11H22C21.5,6.2 17.8,2.5 13,2M13,13V22C17.7,21.5 21.5,17.8 22,13H13Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ChartPieIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPie.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPie.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ChartPie.vue?vue&type=template&id=90a70766\"\nimport script from \"./ChartPie.vue?vue&type=script&lang=js\"\nexport * from \"./ChartPie.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon chart-pie-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M11,2V22C5.9,21.5 2,17.2 2,12C2,6.8 5.9,2.5 11,2M13,2V11H22C21.5,6.2 17.8,2.5 13,2M13,13V22C17.7,21.5 21.5,17.8 22,13H13Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files')\n .detectUser()\n .build();\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js\"","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n -->\n<template>\n\t<NcAppNavigationItem v-if=\"storageStats\"\n\t\t:aria-description=\"t('files', 'Storage information')\"\n\t\t:class=\"{ 'app-navigation-entry__settings-quota--not-unlimited': storageStats.quota >= 0}\"\n\t\t:loading=\"loadingStorageStats\"\n\t\t:name=\"storageStatsTitle\"\n\t\t:title=\"storageStatsTooltip\"\n\t\tclass=\"app-navigation-entry__settings-quota\"\n\t\tdata-cy-files-navigation-settings-quota\n\t\t@click.stop.prevent=\"debounceUpdateStorageStats\">\n\t\t<ChartPie slot=\"icon\" :size=\"20\" />\n\n\t\t<!-- Progress bar -->\n\t\t<NcProgressBar v-if=\"storageStats.quota >= 0\"\n\t\t\tslot=\"extra\"\n\t\t\t:aria-label=\"t('files', 'Storage quota')\"\n\t\t\t:error=\"storageStats.relative > 80\"\n\t\t\t:value=\"Math.min(storageStats.relative, 100)\" />\n\t</NcAppNavigationItem>\n</template>\n\n<script>\nimport { debounce, throttle } from 'throttle-debounce'\nimport { formatFileSize } from '@nextcloud/files'\nimport { generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport { showError } from '@nextcloud/dialogs'\nimport { subscribe } from '@nextcloud/event-bus'\nimport { translate } from '@nextcloud/l10n'\nimport axios from '@nextcloud/axios'\n\nimport ChartPie from 'vue-material-design-icons/ChartPie.vue'\nimport NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js'\nimport NcProgressBar from '@nextcloud/vue/dist/Components/NcProgressBar.js'\n\nimport logger from '../logger.ts'\n\nexport default {\n\tname: 'NavigationQuota',\n\n\tcomponents: {\n\t\tChartPie,\n\t\tNcAppNavigationItem,\n\t\tNcProgressBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloadingStorageStats: false,\n\t\t\tstorageStats: loadState('files', 'storageStats', null),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tstorageStatsTitle() {\n\t\t\tconst usedQuotaByte = formatFileSize(this.storageStats?.used, false, false)\n\t\t\tconst quotaByte = formatFileSize(this.storageStats?.quota, false, false)\n\n\t\t\t// If no quota set\n\t\t\tif (this.storageStats?.quota < 0) {\n\t\t\t\treturn this.t('files', '{usedQuotaByte} used', { usedQuotaByte })\n\t\t\t}\n\n\t\t\treturn this.t('files', '{used} of {quota} used', {\n\t\t\t\tused: usedQuotaByte,\n\t\t\t\tquota: quotaByte,\n\t\t\t})\n\t\t},\n\t\tstorageStatsTooltip() {\n\t\t\tif (!this.storageStats.relative) {\n\t\t\t\treturn ''\n\t\t\t}\n\n\t\t\treturn this.t('files', '{relative}% used', this.storageStats)\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\t/**\n\t\t * Update storage stats every minute\n\t\t * TODO: remove when all views are migrated to Vue\n\t\t */\n\t\tsetInterval(this.throttleUpdateStorageStats, 60 * 1000)\n\n\t\tsubscribe('files:node:created', this.throttleUpdateStorageStats)\n\t\tsubscribe('files:node:deleted', this.throttleUpdateStorageStats)\n\t\tsubscribe('files:node:moved', this.throttleUpdateStorageStats)\n\t\tsubscribe('files:node:updated', this.throttleUpdateStorageStats)\n\t},\n\n\tmounted() {\n\t\t// If the user has a quota set, warn if the available account storage is <=0\n\t\t//\n\t\t// NOTE: This doesn't catch situations where actual *server*\n\t\t// disk (non-quota) space is low, but those should probably\n\t\t// be handled differently anyway since a regular user can't\n\t\t// can't do much about them (If we did want to indicate server disk\n\t\t// space matters to users, we'd probably want to use a warning\n\t\t// specific to that situation anyhow. So this covers warning covers\n\t\t// our primary day-to-day concern (individual account quota usage).\n\t\t//\n\t\tif (this.storageStats?.quota > 0 && this.storageStats?.free === 0) {\n\t\t\tthis.showStorageFullWarning()\n\t\t}\n\t},\n\n\tmethods: {\n\t\t// From user input\n\t\tdebounceUpdateStorageStats: debounce(200, function(event) {\n\t\t\tthis.updateStorageStats(event)\n\t\t}),\n\t\t// From interval or event bus\n\t\tthrottleUpdateStorageStats: throttle(1000, function(event) {\n\t\t\tthis.updateStorageStats(event)\n\t\t}),\n\n\t\t/**\n\t\t * Update the storage stats\n\t\t * Throttled at max 1 refresh per minute\n\t\t *\n\t\t * @param {Event} [event] if user interaction\n\t\t */\n\t\tasync updateStorageStats(event = null) {\n\t\t\tif (this.loadingStorageStats) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.loadingStorageStats = true\n\t\t\ttry {\n\t\t\t\tconst response = await axios.get(generateUrl('/apps/files/api/v1/stats'))\n\t\t\t\tif (!response?.data?.data) {\n\t\t\t\t\tthrow new Error('Invalid storage stats')\n\t\t\t\t}\n\n\t\t\t\t// Warn the user if the available account storage changed from > 0 to 0\n\t\t\t\t// (unless only because quota was intentionally set to 0 by admin in the interim)\n\t\t\t\tif (this.storageStats?.free > 0 && response.data.data?.free === 0 && response.data.data?.quota > 0) {\n\t\t\t\t\tthis.showStorageFullWarning()\n\t\t\t\t}\n\n\t\t\t\tthis.storageStats = response.data.data\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Could not refresh storage stats', { error })\n\t\t\t\t// Only show to the user if it was manually triggered\n\t\t\t\tif (event) {\n\t\t\t\t\tshowError(t('files', 'Could not refresh storage stats'))\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loadingStorageStats = false\n\t\t\t}\n\t\t},\n\n\t\tshowStorageFullWarning() {\n\t\t\tshowError(this.t('files', 'Your storage is full, files can not be updated or synced anymore!'))\n\t\t},\n\n\t\tt: translate,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n// User storage stats display\n.app-navigation-entry__settings-quota {\n\t// Align title with progress and icon\n\t--app-navigation-quota-margin: calc((var(--default-clickable-area) - 24px) / 2); // 20px icon size and 4px progress bar\n\n\t&--not-unlimited :deep(.app-navigation-entry__name) {\n\t\tline-height: 1;\n\t\tmargin-top: var(--app-navigation-quota-margin);\n\t}\n\n\tprogress {\n\t\tposition: absolute;\n\t\tbottom: var(--app-navigation-quota-margin);\n\t\tmargin-inline-start: var(--default-clickable-area);\n\t\twidth: calc(100% - (1.5 * var(--default-clickable-area)));\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=6ed9379e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=6ed9379e&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NavigationQuota.vue?vue&type=template&id=6ed9379e&scoped=true\"\nimport script from \"./NavigationQuota.vue?vue&type=script&lang=js\"\nexport * from \"./NavigationQuota.vue?vue&type=script&lang=js\"\nimport style0 from \"./NavigationQuota.vue?vue&type=style&index=0&id=6ed9379e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6ed9379e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.storageStats)?_c('NcAppNavigationItem',{staticClass:\"app-navigation-entry__settings-quota\",class:{ 'app-navigation-entry__settings-quota--not-unlimited': _vm.storageStats.quota >= 0},attrs:{\"aria-description\":_vm.t('files', 'Storage information'),\"loading\":_vm.loadingStorageStats,\"name\":_vm.storageStatsTitle,\"title\":_vm.storageStatsTooltip,\"data-cy-files-navigation-settings-quota\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.debounceUpdateStorageStats.apply(null, arguments)}}},[_c('ChartPie',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"}),_vm._v(\" \"),(_vm.storageStats.quota >= 0)?_c('NcProgressBar',{attrs:{\"slot\":\"extra\",\"aria-label\":_vm.t('files', 'Storage quota'),\"error\":_vm.storageStats.relative > 80,\"value\":Math.min(_vm.storageStats.relative, 100)},slot:\"extra\"}):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppSettingsDialog',{attrs:{\"open\":_vm.open,\"show-navigation\":true,\"name\":_vm.t('files', 'Files settings')},on:{\"update:open\":_vm.onClose}},[_c('NcAppSettingsSection',{attrs:{\"id\":\"settings\",\"name\":_vm.t('files', 'Files settings')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"data-cy-files-settings-setting\":\"sort_favorites_first\",\"checked\":_vm.userConfig.sort_favorites_first},on:{\"update:checked\":function($event){return _vm.setConfig('sort_favorites_first', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Sort favorites first'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"data-cy-files-settings-setting\":\"sort_folders_first\",\"checked\":_vm.userConfig.sort_folders_first},on:{\"update:checked\":function($event){return _vm.setConfig('sort_folders_first', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Sort folders before files'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"data-cy-files-settings-setting\":\"show_hidden\",\"checked\":_vm.userConfig.show_hidden},on:{\"update:checked\":function($event){return _vm.setConfig('show_hidden', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Show hidden files'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"data-cy-files-settings-setting\":\"crop_image_previews\",\"checked\":_vm.userConfig.crop_image_previews},on:{\"update:checked\":function($event){return _vm.setConfig('crop_image_previews', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Crop image previews'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.enableGridView)?_c('NcCheckboxRadioSwitch',{attrs:{\"data-cy-files-settings-setting\":\"grid_view\",\"checked\":_vm.userConfig.grid_view},on:{\"update:checked\":function($event){return _vm.setConfig('grid_view', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Enable the grid view'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"data-cy-files-settings-setting\":\"folder_tree\",\"checked\":_vm.userConfig.folder_tree},on:{\"update:checked\":function($event){return _vm.setConfig('folder_tree', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Enable folder tree'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.settings.length !== 0)?_c('NcAppSettingsSection',{attrs:{\"id\":\"more-settings\",\"name\":_vm.t('files', 'Additional settings')}},[_vm._l((_vm.settings),function(setting){return [_c('Setting',{key:setting.name,attrs:{\"el\":setting.el}})]})],2):_vm._e(),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"webdav\",\"name\":_vm.t('files', 'WebDAV')}},[_c('NcInputField',{attrs:{\"id\":\"webdav-url-input\",\"label\":_vm.t('files', 'WebDAV URL'),\"show-trailing-button\":true,\"success\":_vm.webdavUrlCopied,\"trailing-button-label\":_vm.t('files', 'Copy to clipboard'),\"value\":_vm.webdavUrl,\"readonly\":\"readonly\",\"type\":\"url\"},on:{\"focus\":function($event){return $event.target.select()},\"trailing-button-click\":_vm.copyCloudId},scopedSlots:_vm._u([{key:\"trailing-button-icon\",fn:function(){return [_c('Clipboard',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('em',[_c('a',{staticClass:\"setting-link\",attrs:{\"href\":_vm.webdavDocs,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Use this address to access your Files via WebDAV'))+\" ↗\\n\\t\\t\\t\")])]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',[_c('a',{staticClass:\"setting-link\",attrs:{\"href\":_vm.appPasswordUrl}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'If you have enabled 2FA, you must create and use a new app password by clicking here.'))+\" ↗\\n\\t\\t\\t\")])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div />\n</template>\n<script>\nexport default {\n\tname: 'Setting',\n\tprops: {\n\t\tel: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.$el.appendChild(this.el())\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Setting.vue?vue&type=template&id=315a4ce8\"\nimport script from \"./Setting.vue?vue&type=script&lang=js\"\nexport * from \"./Setting.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineStore } from 'pinia';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\nimport { loadState } from '@nextcloud/initial-state';\nimport axios from '@nextcloud/axios';\nimport Vue from 'vue';\nconst userConfig = loadState('files', 'config', {\n show_hidden: false,\n crop_image_previews: true,\n sort_favorites_first: true,\n sort_folders_first: true,\n grid_view: false,\n});\nexport const useUserConfigStore = function (...args) {\n const store = defineStore('userconfig', {\n state: () => ({\n userConfig,\n }),\n actions: {\n /**\n * Update the user config local store\n * @param key\n * @param value\n */\n onUpdate(key, value) {\n Vue.set(this.userConfig, key, value);\n },\n /**\n * Update the user config local store AND on server side\n * @param key\n * @param value\n */\n async update(key, value) {\n await axios.put(generateUrl('/apps/files/api/v1/config/' + key), {\n value,\n });\n emit('files:config:updated', { key, value });\n },\n },\n });\n const userConfigStore = store(...args);\n // Make sure we only register the listeners once\n if (!userConfigStore._initialized) {\n subscribe('files:config:updated', function ({ key, value }) {\n userConfigStore.onUpdate(key, value);\n });\n userConfigStore._initialized = true;\n }\n return userConfigStore;\n};\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js\"","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<NcAppSettingsDialog :open=\"open\"\n\t\t:show-navigation=\"true\"\n\t\t:name=\"t('files', 'Files settings')\"\n\t\t@update:open=\"onClose\">\n\t\t<!-- Settings API-->\n\t\t<NcAppSettingsSection id=\"settings\" :name=\"t('files', 'Files settings')\">\n\t\t\t<NcCheckboxRadioSwitch data-cy-files-settings-setting=\"sort_favorites_first\"\n\t\t\t\t:checked=\"userConfig.sort_favorites_first\"\n\t\t\t\t@update:checked=\"setConfig('sort_favorites_first', $event)\">\n\t\t\t\t{{ t('files', 'Sort favorites first') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch data-cy-files-settings-setting=\"sort_folders_first\"\n\t\t\t\t:checked=\"userConfig.sort_folders_first\"\n\t\t\t\t@update:checked=\"setConfig('sort_folders_first', $event)\">\n\t\t\t\t{{ t('files', 'Sort folders before files') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch data-cy-files-settings-setting=\"show_hidden\"\n\t\t\t\t:checked=\"userConfig.show_hidden\"\n\t\t\t\t@update:checked=\"setConfig('show_hidden', $event)\">\n\t\t\t\t{{ t('files', 'Show hidden files') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch data-cy-files-settings-setting=\"crop_image_previews\"\n\t\t\t\t:checked=\"userConfig.crop_image_previews\"\n\t\t\t\t@update:checked=\"setConfig('crop_image_previews', $event)\">\n\t\t\t\t{{ t('files', 'Crop image previews') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch v-if=\"enableGridView\"\n\t\t\t\tdata-cy-files-settings-setting=\"grid_view\"\n\t\t\t\t:checked=\"userConfig.grid_view\"\n\t\t\t\t@update:checked=\"setConfig('grid_view', $event)\">\n\t\t\t\t{{ t('files', 'Enable the grid view') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch data-cy-files-settings-setting=\"folder_tree\"\n\t\t\t\t:checked=\"userConfig.folder_tree\"\n\t\t\t\t@update:checked=\"setConfig('folder_tree', $event)\">\n\t\t\t\t{{ t('files', 'Enable folder tree') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcAppSettingsSection>\n\n\t\t<!-- Settings API-->\n\t\t<NcAppSettingsSection v-if=\"settings.length !== 0\"\n\t\t\tid=\"more-settings\"\n\t\t\t:name=\"t('files', 'Additional settings')\">\n\t\t\t<template v-for=\"setting in settings\">\n\t\t\t\t<Setting :key=\"setting.name\" :el=\"setting.el\" />\n\t\t\t</template>\n\t\t</NcAppSettingsSection>\n\n\t\t<!-- Webdav URL-->\n\t\t<NcAppSettingsSection id=\"webdav\" :name=\"t('files', 'WebDAV')\">\n\t\t\t<NcInputField id=\"webdav-url-input\"\n\t\t\t\t:label=\"t('files', 'WebDAV URL')\"\n\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t:success=\"webdavUrlCopied\"\n\t\t\t\t:trailing-button-label=\"t('files', 'Copy to clipboard')\"\n\t\t\t\t:value=\"webdavUrl\"\n\t\t\t\treadonly=\"readonly\"\n\t\t\t\ttype=\"url\"\n\t\t\t\t@focus=\"$event.target.select()\"\n\t\t\t\t@trailing-button-click=\"copyCloudId\">\n\t\t\t\t<template #trailing-button-icon>\n\t\t\t\t\t<Clipboard :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcInputField>\n\t\t\t<em>\n\t\t\t\t<a class=\"setting-link\"\n\t\t\t\t\t:href=\"webdavDocs\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\trel=\"noreferrer noopener\">\n\t\t\t\t\t{{ t('files', 'Use this address to access your Files via WebDAV') }} ↗\n\t\t\t\t</a>\n\t\t\t</em>\n\t\t\t<br>\n\t\t\t<em>\n\t\t\t\t<a class=\"setting-link\" :href=\"appPasswordUrl\">\n\t\t\t\t\t{{ t('files', 'If you have enabled 2FA, you must create and use a new app password by clicking here.') }} ↗\n\t\t\t\t</a>\n\t\t\t</em>\n\t\t</NcAppSettingsSection>\n\t</NcAppSettingsDialog>\n</template>\n\n<script>\nimport NcAppSettingsDialog from '@nextcloud/vue/dist/Components/NcAppSettingsDialog.js'\nimport NcAppSettingsSection from '@nextcloud/vue/dist/Components/NcAppSettingsSection.js'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport Clipboard from 'vue-material-design-icons/ContentCopy.vue'\nimport NcInputField from '@nextcloud/vue/dist/Components/NcInputField.js'\nimport Setting from '../components/Setting.vue'\n\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { translate } from '@nextcloud/l10n'\nimport { loadState } from '@nextcloud/initial-state'\nimport { useUserConfigStore } from '../store/userconfig.ts'\n\nexport default {\n\tname: 'Settings',\n\tcomponents: {\n\t\tClipboard,\n\t\tNcAppSettingsDialog,\n\t\tNcAppSettingsSection,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcInputField,\n\t\tSetting,\n\t},\n\n\tprops: {\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tsetup() {\n\t\tconst userConfigStore = useUserConfigStore()\n\t\treturn {\n\t\t\tuserConfigStore,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// Settings API\n\t\t\tsettings: window.OCA?.Files?.Settings?.settings || [],\n\n\t\t\t// Webdav infos\n\t\t\twebdavUrl: generateRemoteUrl('dav/files/' + encodeURIComponent(getCurrentUser()?.uid)),\n\t\t\twebdavDocs: 'https://docs.nextcloud.com/server/stable/go.php?to=user-webdav',\n\t\t\tappPasswordUrl: generateUrl('/settings/user/security#generate-app-token-section'),\n\t\t\twebdavUrlCopied: false,\n\t\t\tenableGridView: (loadState('core', 'config', [])['enable_non-accessible_features'] ?? true),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tuserConfig() {\n\t\t\treturn this.userConfigStore.userConfig\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\t// Update the settings API entries state\n\t\tthis.settings.forEach(setting => setting.open())\n\t},\n\n\tbeforeDestroy() {\n\t\t// Update the settings API entries state\n\t\tthis.settings.forEach(setting => setting.close())\n\t},\n\n\tmethods: {\n\t\tonClose() {\n\t\t\tthis.$emit('close')\n\t\t},\n\n\t\tsetConfig(key, value) {\n\t\t\tthis.userConfigStore.update(key, value)\n\t\t},\n\n\t\tasync copyCloudId() {\n\t\t\tdocument.querySelector('input#webdav-url-input').select()\n\n\t\t\tif (!navigator.clipboard) {\n\t\t\t\t// Clipboard API not available\n\t\t\t\tshowError(t('files', 'Clipboard is not available'))\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tawait navigator.clipboard.writeText(this.webdavUrl)\n\t\t\tthis.webdavUrlCopied = true\n\t\t\tshowSuccess(t('files', 'WebDAV URL copied to clipboard'))\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.webdavUrlCopied = false\n\t\t\t}, 5000)\n\t\t},\n\n\t\tt: translate,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.setting-link:hover {\n\ttext-decoration: underline;\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=style&index=0&id=23881b2c&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=style&index=0&id=23881b2c&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=23881b2c&scoped=true\"\nimport script from \"./Settings.vue?vue&type=script&lang=js\"\nexport * from \"./Settings.vue?vue&type=script&lang=js\"\nimport style0 from \"./Settings.vue?vue&type=style&index=0&id=23881b2c&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"23881b2c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('Fragment',_vm._l((_vm.currentViews),function(view){return _c('NcAppNavigationItem',{key:view.id,staticClass:\"files-navigation__item\",style:(_vm.style),attrs:{\"allow-collapse\":\"\",\"loading\":view.loading,\"data-cy-files-navigation-item\":view.id,\"exact\":_vm.useExactRouteMatching(view),\"icon\":view.iconClass,\"name\":view.name,\"open\":_vm.isExpanded(view),\"pinned\":view.sticky,\"to\":_vm.generateToNavigation(view)},on:{\"update:open\":(open) => _vm.onOpen(open, view)},scopedSlots:_vm._u([(view.icon)?{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"svg\":view.icon}})]},proxy:true}:null],null,true)},[_vm._v(\" \"),(view.loadChildViews && !view.loaded)?_c('li',{staticStyle:{\"display\":\"none\"}}):_vm._e(),_vm._v(\" \"),(_vm.hasChildViews(view))?_c('FilesNavigationItem',{attrs:{\"parent\":view,\"level\":_vm.level + 1,\"views\":_vm.filterView(_vm.views, _vm.parent.id)}}):_vm._e()],1)}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { getNavigation } from '@nextcloud/files';\nimport { subscribe } from '@nextcloud/event-bus';\nimport { onMounted, onUnmounted, shallowRef, triggerRef } from 'vue';\n/**\n * Composable to get the currently active files view from the files navigation\n * @param _loaded If set enforce a current view is loaded\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function useNavigation(_loaded) {\n const navigation = getNavigation();\n const views = shallowRef(navigation.views);\n const currentView = shallowRef(navigation.active);\n /**\n * Event listener to update the `currentView`\n * @param event The update event\n */\n function onUpdateActive(event) {\n currentView.value = event.detail;\n }\n /**\n * Event listener to update all registered views\n */\n function onUpdateViews() {\n views.value = navigation.views;\n triggerRef(views);\n }\n onMounted(() => {\n navigation.addEventListener('update', onUpdateViews);\n navigation.addEventListener('updateActive', onUpdateActive);\n subscribe('files:navigation:updated', onUpdateViews);\n });\n onUnmounted(() => {\n navigation.removeEventListener('update', onUpdateViews);\n navigation.removeEventListener('updateActive', onUpdateActive);\n });\n return {\n currentView,\n views,\n };\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\nimport { loadState } from '@nextcloud/initial-state';\nimport axios from '@nextcloud/axios';\nimport Vue from 'vue';\nconst viewConfig = loadState('files', 'viewConfigs', {});\nexport const useViewConfigStore = function (...args) {\n const store = defineStore('viewconfig', {\n state: () => ({\n viewConfig,\n }),\n getters: {\n getConfig: (state) => (view) => state.viewConfig[view] || {},\n getConfigs: (state) => () => state.viewConfig,\n },\n actions: {\n /**\n * Update the view config local store\n * @param view\n * @param key\n * @param value\n */\n onUpdate(view, key, value) {\n if (!this.viewConfig[view]) {\n Vue.set(this.viewConfig, view, {});\n }\n Vue.set(this.viewConfig[view], key, value);\n },\n /**\n * Update the view config local store AND on server side\n * @param view\n * @param key\n * @param value\n */\n async update(view, key, value) {\n axios.put(generateUrl('/apps/files/api/v1/views'), {\n value,\n view,\n key,\n });\n emit('files:viewconfig:updated', { view, key, value });\n },\n /**\n * Set the sorting key AND sort by ASC\n * The key param must be a valid key of a File object\n * If not found, will be searched within the File attributes\n * @param key Key to sort by\n * @param view View to set the sorting key for\n */\n setSortingBy(key = 'basename', view = 'files') {\n // Save new config\n this.update(view, 'sorting_mode', key);\n this.update(view, 'sorting_direction', 'asc');\n },\n /**\n * Toggle the sorting direction\n * @param view view to set the sorting order for\n */\n toggleSortingDirection(view = 'files') {\n const config = this.getConfig(view) || { sorting_direction: 'asc' };\n const newDirection = config.sorting_direction === 'asc' ? 'desc' : 'asc';\n // Save new config\n this.update(view, 'sorting_direction', newDirection);\n },\n },\n });\n const viewConfigStore = store(...args);\n // Make sure we only register the listeners once\n if (!viewConfigStore._initialized) {\n subscribe('files:viewconfig:updated', function ({ view, key, value }) {\n viewConfigStore.onUpdate(view, key, value);\n });\n viewConfigStore._initialized = true;\n }\n return viewConfigStore;\n};\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationItem.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationItem.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FilesNavigationItem.vue?vue&type=template&id=7a39a8a8\"\nimport script from \"./FilesNavigationItem.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesNavigationItem.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { FileListFilter } from '@nextcloud/files';\n/**\n * Simple file list filter controlled by the Navigation search box\n */\nexport class FilenameFilter extends FileListFilter {\n searchQuery = '';\n constructor() {\n super('files:filename', 5);\n subscribe('files:navigation:changed', () => this.updateQuery(''));\n }\n filter(nodes) {\n const queryParts = this.searchQuery.toLocaleLowerCase().split(' ').filter(Boolean);\n return nodes.filter((node) => {\n const displayname = node.displayname.toLocaleLowerCase();\n return queryParts.every((part) => displayname.includes(part));\n });\n }\n updateQuery(query) {\n query = (query || '').trim();\n // Only if the query is different we update the filter to prevent re-computing all nodes\n if (query !== this.searchQuery) {\n this.searchQuery = query;\n this.filterUpdated();\n const chips = [];\n if (query !== '') {\n chips.push({\n text: query,\n onclick: () => {\n this.updateQuery('');\n },\n });\n }\n this.updateChips(chips);\n // Emit the new query as it might have come not from the Navigation\n this.dispatchTypedEvent('update:query', new CustomEvent('update:query', { detail: query }));\n }\n }\n}\n","import { subscribe } from '@nextcloud/event-bus';\nimport { getFileListFilters } from '@nextcloud/files';\nimport { defineStore } from 'pinia';\nimport logger from '../logger';\nexport const useFiltersStore = defineStore('filters', {\n state: () => ({\n chips: {},\n filters: [],\n filtersChanged: false,\n }),\n getters: {\n /**\n * Currently active filter chips\n * @param state Internal state\n */\n activeChips(state) {\n return Object.values(state.chips).flat();\n },\n /**\n * Filters sorted by order\n * @param state Internal state\n */\n sortedFilters(state) {\n return state.filters.sort((a, b) => a.order - b.order);\n },\n /**\n * All filters that provide a UI for visual controlling the filter state\n */\n filtersWithUI() {\n return this.sortedFilters.filter((filter) => 'mount' in filter);\n },\n },\n actions: {\n addFilter(filter) {\n filter.addEventListener('update:chips', this.onFilterUpdateChips);\n filter.addEventListener('update:filter', this.onFilterUpdate);\n this.filters.push(filter);\n logger.debug('New file list filter registered', { id: filter.id });\n },\n removeFilter(filterId) {\n const index = this.filters.findIndex(({ id }) => id === filterId);\n if (index > -1) {\n const [filter] = this.filters.splice(index, 1);\n filter.removeEventListener('update:chips', this.onFilterUpdateChips);\n filter.removeEventListener('update:filter', this.onFilterUpdate);\n logger.debug('Files list filter unregistered', { id: filterId });\n }\n },\n onFilterUpdate() {\n this.filtersChanged = true;\n },\n onFilterUpdateChips(event) {\n const id = event.target.id;\n this.chips = { ...this.chips, [id]: [...event.detail] };\n logger.debug('File list filter chips updated', { filter: id, chips: event.detail });\n },\n init() {\n subscribe('files:filter:added', this.addFilter);\n subscribe('files:filter:removed', this.removeFilter);\n for (const filter of getFileListFilters()) {\n this.addFilter(filter);\n }\n },\n },\n});\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcAppNavigation',{staticClass:\"files-navigation\",attrs:{\"data-cy-files-navigation\":\"\",\"aria-label\":_vm.t('files', 'Files')},scopedSlots:_vm._u([{key:\"search\",fn:function(){return [_c('NcAppNavigationSearch',{attrs:{\"label\":_vm.t('files', 'Filter filenames…')},model:{value:(_vm.searchQuery),callback:function ($$v) {_vm.searchQuery=$$v},expression:\"searchQuery\"}})]},proxy:true},{key:\"default\",fn:function(){return [_c('NcAppNavigationList',{staticClass:\"files-navigation__list\",attrs:{\"aria-label\":_vm.t('files', 'Views')}},[_c('FilesNavigationItem',{attrs:{\"views\":_vm.viewMap}})],1),_vm._v(\" \"),_c('SettingsModal',{attrs:{\"open\":_vm.settingsOpened,\"data-cy-files-navigation-settings\":\"\"},on:{\"close\":_vm.onSettingsClose}})]},proxy:true},{key:\"footer\",fn:function(){return [_c('ul',{staticClass:\"app-navigation-entry__settings\"},[_c('NavigationQuota'),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"name\":_vm.t('files', 'Files settings'),\"data-cy-files-navigation-settings-button\":\"\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openSettings.apply(null, arguments)}}},[_c('IconCog',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"})],1)],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=ts\"","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { registerFileListFilter, unregisterFileListFilter } from '@nextcloud/files';\nimport { watchThrottled } from '@vueuse/core';\nimport { onMounted, onUnmounted, ref } from 'vue';\nimport { FilenameFilter } from '../filters/FilenameFilter';\n/**\n * This is for the `Navigation` component to provide a filename filter\n */\nexport function useFilenameFilter() {\n const searchQuery = ref('');\n const filenameFilter = new FilenameFilter();\n /**\n * Updating the search query ref from the filter\n * @param event The update:query event\n */\n function updateQuery(event) {\n if (event.type === 'update:query') {\n searchQuery.value = event.detail;\n event.stopPropagation();\n }\n }\n onMounted(() => {\n filenameFilter.addEventListener('update:query', updateQuery);\n registerFileListFilter(filenameFilter);\n });\n onUnmounted(() => {\n filenameFilter.removeEventListener('update:query', updateQuery);\n unregisterFileListFilter(filenameFilter.id);\n });\n // Update the query on the filter, but throttle to max. every 800ms\n // This will debounce the filter refresh\n watchThrottled(searchQuery, () => {\n filenameFilter.updateQuery(searchQuery.value);\n }, { throttle: 800 });\n return {\n searchQuery,\n };\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=008142f0&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=008142f0&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Navigation.vue?vue&type=template&id=008142f0&scoped=true\"\nimport script from \"./Navigation.vue?vue&type=script&lang=ts\"\nexport * from \"./Navigation.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Navigation.vue?vue&type=style&index=0&id=008142f0&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"008142f0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcAppContent',{attrs:{\"page-heading\":_vm.pageHeading,\"data-cy-files-content\":\"\"}},[_c('div',{staticClass:\"files-list__header\",class:{ 'files-list__header--public': _vm.isPublic }},[_c('BreadCrumbs',{attrs:{\"path\":_vm.directory},on:{\"reload\":_vm.fetchContent},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [(_vm.canShare && _vm.fileListWidth >= 512)?_c('NcButton',{staticClass:\"files-list__header-share-button\",class:{ 'files-list__header-share-button--shared': _vm.shareButtonType },attrs:{\"aria-label\":_vm.shareButtonLabel,\"title\":_vm.shareButtonLabel,\"type\":\"tertiary\"},on:{\"click\":_vm.openSharingSidebar},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.shareButtonType === _vm.ShareType.Link)?_c('LinkIcon'):_c('AccountPlusIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,4106306959)}):_vm._e(),_vm._v(\" \"),(!_vm.canUpload || _vm.isQuotaExceeded)?_c('NcButton',{staticClass:\"files-list__header-upload-button--disabled\",attrs:{\"aria-label\":_vm.cantUploadLabel,\"title\":_vm.cantUploadLabel,\"disabled\":true,\"type\":\"secondary\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('PlusIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,2953566425)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'New'))+\"\\n\\t\\t\\t\\t\")]):(_vm.currentFolder)?_c('UploadPicker',{staticClass:\"files-list__header-upload-button\",attrs:{\"allow-folders\":\"\",\"content\":_vm.getContent,\"destination\":_vm.currentFolder,\"forbidden-characters\":_vm.forbiddenCharacters,\"multiple\":\"\"},on:{\"failed\":_vm.onUploadFail,\"uploaded\":_vm.onUpload}}):_vm._e(),_vm._v(\" \"),_c('NcActions',{attrs:{\"inline\":1,\"force-name\":\"\"}},_vm._l((_vm.enabledFileListActions),function(action){return _c('NcActionButton',{key:action.id,attrs:{\"close-after-click\":\"\"},on:{\"click\":() => action.exec(_vm.currentView, _vm.dirContents, { folder: _vm.currentFolder })},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(action.displayName(_vm.currentView))+\"\\n\\t\\t\\t\\t\\t\")])}),1)]},proxy:true}])}),_vm._v(\" \"),(_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__refresh-icon\"}):_vm._e(),_vm._v(\" \"),(_vm.fileListWidth >= 512 && _vm.enableGridView)?_c('NcButton',{staticClass:\"files-list__header-grid-button\",attrs:{\"aria-label\":_vm.gridViewButtonLabel,\"title\":_vm.gridViewButtonLabel,\"type\":\"tertiary\"},on:{\"click\":_vm.toggleGridView},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.userConfig.grid_view)?_c('ListViewIcon'):_c('ViewGridIcon')]},proxy:true}],null,false,1682960703)}):_vm._e()],1),_vm._v(\" \"),(!_vm.loading && _vm.canUpload)?_c('DragAndDropNotice',{attrs:{\"current-folder\":_vm.currentFolder}}):_vm._e(),_vm._v(\" \"),(_vm.loading && !_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__loading-icon\",attrs:{\"size\":38,\"name\":_vm.t('files', 'Loading current folder')}}):(!_vm.loading && _vm.isEmptyDir)?[(_vm.error)?_c('NcEmptyContent',{attrs:{\"name\":_vm.error,\"data-cy-files-content-error\":\"\"},scopedSlots:_vm._u([{key:\"action\",fn:function(){return [_c('NcButton',{attrs:{\"type\":\"secondary\"},on:{\"click\":_vm.fetchContent},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconReload',{attrs:{\"size\":20}})]},proxy:true}],null,false,3448385010)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Retry'))+\"\\n\\t\\t\\t\\t\")])]},proxy:true},{key:\"icon\",fn:function(){return [_c('IconAlertCircleOutline')]},proxy:true}],null,false,2673163798)}):(_vm.currentView?.emptyView)?_c('div',{staticClass:\"files-list__empty-view-wrapper\"},[_c('div',{ref:\"customEmptyView\"})]):_c('NcEmptyContent',{attrs:{\"name\":_vm.currentView?.emptyTitle || _vm.t('files', 'No files in here'),\"description\":_vm.currentView?.emptyCaption || _vm.t('files', 'Upload some content or sync with your devices!'),\"data-cy-files-content-empty\":\"\"},scopedSlots:_vm._u([(_vm.directory !== '/')?{key:\"action\",fn:function(){return [(_vm.canUpload && !_vm.isQuotaExceeded)?_c('UploadPicker',{staticClass:\"files-list__header-upload-button\",attrs:{\"allow-folders\":\"\",\"content\":_vm.getContent,\"destination\":_vm.currentFolder,\"forbidden-characters\":_vm.forbiddenCharacters,\"multiple\":\"\"},on:{\"failed\":_vm.onUploadFail,\"uploaded\":_vm.onUpload}}):_c('NcButton',{attrs:{\"to\":_vm.toPreviousDir,\"type\":\"primary\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Go back'))+\"\\n\\t\\t\\t\\t\")])]},proxy:true}:null,{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"svg\":_vm.currentView.icon}})]},proxy:true}],null,true)})]:_c('FilesListVirtual',{ref:\"filesListVirtual\",attrs:{\"current-folder\":_vm.currentFolder,\"current-view\":_vm.currentView,\"nodes\":_vm.dirContentsSorted}})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon reload-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M2 12C2 16.97 6.03 21 11 21C13.39 21 15.68 20.06 17.4 18.4L15.9 16.9C14.63 18.25 12.86 19 11 19C4.76 19 1.64 11.46 6.05 7.05C10.46 2.64 18 5.77 18 12H15L19 16H19.1L23 12H20C20 7.03 15.97 3 11 3C6.03 3 2 7.03 2 12Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ReloadIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Reload.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Reload.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Reload.vue?vue&type=template&id=39a07256\"\nimport script from \"./Reload.vue?vue&type=script&lang=js\"\nexport * from \"./Reload.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon reload-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M2 12C2 16.97 6.03 21 11 21C13.39 21 15.68 20.06 17.4 18.4L15.9 16.9C14.63 18.25 12.86 19 11 19C4.76 19 1.64 11.46 6.05 7.05C10.46 2.64 18 5.77 18 12H15L19 16H19.1L23 12H20C20 7.03 15.97 3 11 3C6.03 3 2 7.03 2 12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon format-list-bulleted-square-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3,4H7V8H3V4M9,5V7H21V5H9M3,10H7V14H3V10M9,11V13H21V11H9M3,16H7V20H3V16M9,17V19H21V17H9\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"FormatListBulletedSquareIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulletedSquare.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulletedSquare.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FormatListBulletedSquare.vue?vue&type=template&id=64cece03\"\nimport script from \"./FormatListBulletedSquare.vue?vue&type=script&lang=js\"\nexport * from \"./FormatListBulletedSquare.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon format-list-bulleted-square-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3,4H7V8H3V4M9,5V7H21V5H9M3,10H7V14H3V10M9,11V13H21V11H9M3,16H7V20H3V16M9,17V19H21V17H9\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon account-plus-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"AccountPlusIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountPlus.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountPlus.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AccountPlus.vue?vue&type=template&id=53a26aa0\"\nimport script from \"./AccountPlus.vue?vue&type=script&lang=js\"\nexport * from \"./AccountPlus.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-plus-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ViewGrid.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ViewGrid.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon view-grid-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3,11H11V3H3M3,21H11V13H3M13,21H21V13H13M13,3V11H21V3\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ViewGridIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./ViewGrid.vue?vue&type=template&id=672ea5c8\"\nimport script from \"./ViewGrid.vue?vue&type=script&lang=js\"\nexport * from \"./ViewGrid.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon view-grid-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3,11H11V3H3M3,21H11V13H3M13,21H21V13H13M13,3V11H21V3\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Permission, FileAction } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport InformationSvg from '@mdi/svg/svg/information-variant.svg?raw';\nimport logger from '../logger.ts';\nexport const ACTION_DETAILS = 'details';\nexport const action = new FileAction({\n id: ACTION_DETAILS,\n displayName: () => t('files', 'Open details'),\n iconSvgInline: () => InformationSvg,\n // Sidebar currently supports user folder only, /files/USER\n enabled: (nodes) => {\n if (isPublicShare()) {\n return false;\n }\n // Only works on single node\n if (nodes.length !== 1) {\n return false;\n }\n if (!nodes[0]) {\n return false;\n }\n // Only work if the sidebar is available\n if (!window?.OCA?.Files?.Sidebar) {\n return false;\n }\n return (nodes[0].root?.startsWith('/files/') && nodes[0].permissions !== Permission.NONE) ?? false;\n },\n async exec(node, view, dir) {\n try {\n // Open sidebar and set active tab to sharing by default\n window.OCA.Files.Sidebar.setActiveTab('sharing');\n // TODO: migrate Sidebar to use a Node instead\n await window.OCA.Files.Sidebar.open(node.path);\n // Silently update current fileid\n window.OCP.Files.Router.goToRoute(null, { view: view.id, fileid: String(node.fileid) }, { ...window.OCP.Files.Router.query, dir }, true);\n return null;\n }\n catch (error) {\n logger.error('Error while opening sidebar', { error });\n return false;\n }\n },\n order: -50,\n});\n","import { onMounted, readonly, ref } from 'vue';\n/** The element we observe */\nlet element;\n/** The current width of the element */\nconst width = ref(0);\nconst observer = new ResizeObserver((elements) => {\n if (elements[0].contentBoxSize) {\n // use the newer `contentBoxSize` property if available\n width.value = elements[0].contentBoxSize[0].inlineSize;\n }\n else {\n // fall back to `contentRect`\n width.value = elements[0].contentRect.width;\n }\n});\n/**\n * Update the observed element if needed and reconfigure the observer\n */\nfunction updateObserver() {\n const el = document.querySelector('#app-content-vue') ?? document.body;\n if (el !== element) {\n // if already observing: stop observing the old element\n if (element) {\n observer.unobserve(element);\n }\n // observe the new element if needed\n observer.observe(el);\n element = el;\n }\n}\n/**\n * Get the reactive width of the file list\n */\nexport function useFileListWidth() {\n // Update the observer when the component is mounted (e.g. because this is the files app)\n onMounted(updateObserver);\n // Update the observer also in setup context, so we already have an initial value\n updateObserver();\n return readonly(width);\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { computed } from 'vue';\nimport { useRoute } from 'vue-router/composables';\n/**\n * Get information about the current route\n */\nexport function useRouteParameters() {\n const route = useRoute();\n /**\n * Get the path of the current active directory\n */\n const directory = computed(() => String(route.query.dir || '/')\n // Remove any trailing slash but leave root slash\n .replace(/^(.+)\\/$/, '$1'));\n /**\n * Get the current fileId used on the route\n */\n const fileId = computed(() => {\n const fileId = Number.parseInt(route.params.fileid ?? '0') || null;\n return Number.isNaN(fileId) ? null : fileId;\n });\n /**\n * State of `openFile` route param\n */\n const openFile = computed(\n // if `openfile` is set it is considered truthy, but allow to explicitly set it to 'false'\n () => 'openfile' in route.query && (typeof route.query.openfile !== 'string' || route.query.openfile.toLocaleLowerCase() !== 'false'));\n return {\n /** Path of currently open directory */\n directory,\n /** Current active fileId */\n fileId,\n /** Should the active node should be opened (`openFile` route param) */\n openFile,\n };\n}\n","/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\nimport { getCurrentInstance, effectScope, shallowReactive, onUnmounted, computed, unref } from 'vue';\n\n// dev only warn if no current instance\n\nfunction throwNoCurrentInstance (method) {\n if (!getCurrentInstance()) {\n throw new Error(\n (\"[vue-router]: Missing current instance. \" + method + \"() must be called inside <script setup> or setup().\")\n )\n }\n}\n\nfunction useRouter () {\n if (process.env.NODE_ENV !== 'production') {\n throwNoCurrentInstance('useRouter');\n }\n\n return getCurrentInstance().proxy.$root.$router\n}\n\nfunction useRoute () {\n if (process.env.NODE_ENV !== 'production') {\n throwNoCurrentInstance('useRoute');\n }\n\n var root = getCurrentInstance().proxy.$root;\n if (!root._$route) {\n var route = effectScope(true).run(function () { return shallowReactive(Object.assign({}, root.$router.currentRoute)); }\n );\n root._$route = route;\n\n root.$router.afterEach(function (to) {\n Object.assign(route, to);\n });\n }\n\n return root._$route\n}\n\nfunction onBeforeRouteUpdate (guard) {\n if (process.env.NODE_ENV !== 'production') {\n throwNoCurrentInstance('onBeforeRouteUpdate');\n }\n\n return useFilteredGuard(guard, isUpdateNavigation)\n}\nfunction isUpdateNavigation (to, from, depth) {\n var toMatched = to.matched;\n var fromMatched = from.matched;\n return (\n toMatched.length >= depth &&\n toMatched\n .slice(0, depth + 1)\n .every(function (record, i) { return record === fromMatched[i]; })\n )\n}\n\nfunction isLeaveNavigation (to, from, depth) {\n var toMatched = to.matched;\n var fromMatched = from.matched;\n return toMatched.length < depth || toMatched[depth] !== fromMatched[depth]\n}\n\nfunction onBeforeRouteLeave (guard) {\n if (process.env.NODE_ENV !== 'production') {\n throwNoCurrentInstance('onBeforeRouteLeave');\n }\n\n return useFilteredGuard(guard, isLeaveNavigation)\n}\n\nvar noop = function () {};\nfunction useFilteredGuard (guard, fn) {\n var instance = getCurrentInstance();\n var router = useRouter();\n\n var target = instance.proxy;\n // find the nearest RouterView to know the depth\n while (\n target &&\n target.$vnode &&\n target.$vnode.data &&\n target.$vnode.data.routerViewDepth == null\n ) {\n target = target.$parent;\n }\n\n var depth =\n target && target.$vnode && target.$vnode.data\n ? target.$vnode.data.routerViewDepth\n : null;\n\n if (depth != null) {\n var removeGuard = router.beforeEach(function (to, from, next) {\n return fn(to, from, depth) ? guard(to, from, next) : next()\n });\n\n onUnmounted(removeGuard);\n return removeGuard\n }\n\n return noop\n}\n\n/* */\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction includesParams (outer, inner) {\n var loop = function ( key ) {\n var innerValue = inner[key];\n var outerValue = outer[key];\n if (typeof innerValue === 'string') {\n if (innerValue !== outerValue) { return { v: false } }\n } else {\n if (\n !Array.isArray(outerValue) ||\n outerValue.length !== innerValue.length ||\n innerValue.some(function (value, i) { return value !== outerValue[i]; })\n ) {\n return { v: false }\n }\n }\n };\n\n for (var key in inner) {\n var returned = loop( key );\n\n if ( returned ) return returned.v;\n }\n\n return true\n}\n\n// helpers from vue router 4\n\nfunction isSameRouteLocationParamsValue (a, b) {\n return Array.isArray(a)\n ? isEquivalentArray(a, b)\n : Array.isArray(b)\n ? isEquivalentArray(b, a)\n : a === b\n}\n\nfunction isEquivalentArray (a, b) {\n return Array.isArray(b)\n ? a.length === b.length && a.every(function (value, i) { return value === b[i]; })\n : a.length === 1 && a[0] === b\n}\n\nfunction isSameRouteLocationParams (a, b) {\n if (Object.keys(a).length !== Object.keys(b).length) { return false }\n\n for (var key in a) {\n if (!isSameRouteLocationParamsValue(a[key], b[key])) { return false }\n }\n\n return true\n}\n\nfunction useLink (props) {\n if (process.env.NODE_ENV !== 'production') {\n throwNoCurrentInstance('useLink');\n }\n\n var router = useRouter();\n var currentRoute = useRoute();\n\n var resolvedRoute = computed(function () { return router.resolve(unref(props.to), currentRoute); });\n\n var activeRecordIndex = computed(function () {\n var route = resolvedRoute.value.route;\n var matched = route.matched;\n var length = matched.length;\n var routeMatched = matched[length - 1];\n var currentMatched = currentRoute.matched;\n if (!routeMatched || !currentMatched.length) { return -1 }\n var index = currentMatched.indexOf(routeMatched);\n if (index > -1) { return index }\n // possible parent record\n var parentRecord = currentMatched[currentMatched.length - 2];\n\n return (\n // we are dealing with nested routes\n length > 1 &&\n // if the parent and matched route have the same path, this link is\n // referring to the empty child. Or we currently are on a different\n // child of the same parent\n parentRecord && parentRecord === routeMatched.parent\n )\n });\n\n var isActive = computed(\n function () { return activeRecordIndex.value > -1 &&\n includesParams(currentRoute.params, resolvedRoute.value.route.params); }\n );\n var isExactActive = computed(\n function () { return activeRecordIndex.value > -1 &&\n activeRecordIndex.value === currentRoute.matched.length - 1 &&\n isSameRouteLocationParams(currentRoute.params, resolvedRoute.value.route.params); }\n );\n\n var navigate = function (e) {\n var href = resolvedRoute.value.route;\n if (guardEvent(e)) {\n return props.replace\n ? router.replace(href)\n : router.push(href)\n }\n return Promise.resolve()\n };\n\n return {\n href: computed(function () { return resolvedRoute.value.href; }),\n route: computed(function () { return resolvedRoute.value.route; }),\n isExactActive: isExactActive,\n isActive: isActive,\n navigate: navigate\n }\n}\n\nexport { isSameRouteLocationParams, onBeforeRouteLeave, onBeforeRouteUpdate, useLink, useRoute, useRouter };\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { davGetClient, davGetDefaultPropfind, davResultToNode, davRootPath } from '@nextcloud/files';\nexport const client = davGetClient();\nexport const fetchNode = async (node) => {\n const propfindPayload = davGetDefaultPropfind();\n const result = await client.stat(`${davRootPath}${node.path}`, {\n details: true,\n data: propfindPayload,\n });\n return davResultToNode(result.data);\n};\n","import { defineStore } from 'pinia';\nimport { dirname } from '@nextcloud/paths';\nimport { File, FileType, Folder, Node, getNavigation } from '@nextcloud/files';\nimport { subscribe } from '@nextcloud/event-bus';\nimport Vue from 'vue';\nimport logger from '../logger';\nimport { useFilesStore } from './files';\nexport const usePathsStore = function (...args) {\n const files = useFilesStore(...args);\n const store = defineStore('paths', {\n state: () => ({\n paths: {},\n }),\n getters: {\n getPath: (state) => {\n return (service, path) => {\n if (!state.paths[service]) {\n return undefined;\n }\n return state.paths[service][path];\n };\n },\n },\n actions: {\n addPath(payload) {\n // If it doesn't exists, init the service state\n if (!this.paths[payload.service]) {\n Vue.set(this.paths, payload.service, {});\n }\n // Now we can set the provided path\n Vue.set(this.paths[payload.service], payload.path, payload.source);\n },\n deletePath(service, path) {\n // skip if service does not exist\n if (!this.paths[service]) {\n return;\n }\n Vue.delete(this.paths[service], path);\n },\n onCreatedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (!node.fileid) {\n logger.error('Node has no fileid', { node });\n return;\n }\n // Only add path if it's a folder\n if (node.type === FileType.Folder) {\n this.addPath({\n service,\n path: node.path,\n source: node.source,\n });\n }\n // Update parent folder children if exists\n // If the folder is the root, get it and update it\n this.addNodeToParentChildren(node);\n },\n onDeletedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (node.type === FileType.Folder) {\n // Delete the path\n this.deletePath(service, node.path);\n }\n this.deleteNodeFromParentChildren(node);\n },\n onMovedNode({ node, oldSource }) {\n const service = getNavigation()?.active?.id || 'files';\n // Update the path of the node\n if (node.type === FileType.Folder) {\n // Delete the old path if it exists\n const oldPath = Object.entries(this.paths[service]).find(([, source]) => source === oldSource);\n if (oldPath?.[0]) {\n this.deletePath(service, oldPath[0]);\n }\n // Add the new path\n this.addPath({\n service,\n path: node.path,\n source: node.source,\n });\n }\n // Dummy simple clone of the renamed node from a previous state\n const oldNode = new File({ source: oldSource, owner: node.owner, mime: node.mime });\n this.deleteNodeFromParentChildren(oldNode);\n this.addNodeToParentChildren(node);\n },\n deleteNodeFromParentChildren(node) {\n const service = getNavigation()?.active?.id || 'files';\n // Update children of a root folder\n const parentSource = dirname(node.source);\n const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n if (folder) {\n // ensure sources are unique\n const children = new Set(folder._children ?? []);\n children.delete(node.source);\n Vue.set(folder, '_children', [...children.values()]);\n logger.debug('Children updated', { parent: folder, node, children: folder._children });\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n addNodeToParentChildren(node) {\n const service = getNavigation()?.active?.id || 'files';\n // Update children of a root folder\n const parentSource = dirname(node.source);\n const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n if (folder) {\n // ensure sources are unique\n const children = new Set(folder._children ?? []);\n children.add(node.source);\n Vue.set(folder, '_children', [...children.values()]);\n logger.debug('Children updated', { parent: folder, node, children: folder._children });\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n },\n });\n const pathsStore = store(...args);\n // Make sure we only register the listeners once\n if (!pathsStore._initialized) {\n subscribe('files:node:created', pathsStore.onCreatedNode);\n subscribe('files:node:deleted', pathsStore.onDeletedNode);\n subscribe('files:node:moved', pathsStore.onMovedNode);\n pathsStore._initialized = true;\n }\n return pathsStore;\n};\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport { subscribe } from '@nextcloud/event-bus';\nimport logger from '../logger';\nimport Vue from 'vue';\nimport { fetchNode } from '../services/WebdavClient.ts';\nimport { usePathsStore } from './paths.ts';\nexport const useFilesStore = function (...args) {\n const store = defineStore('files', {\n state: () => ({\n files: {},\n roots: {},\n }),\n getters: {\n /**\n * Get a file or folder by its source\n * @param state\n */\n getNode: (state) => (source) => state.files[source],\n /**\n * Get a list of files or folders by their IDs\n * Note: does not return undefined values\n * @param state\n */\n getNodes: (state) => (sources) => sources\n .map(source => state.files[source])\n .filter(Boolean),\n /**\n * Get files or folders by their file ID\n * Multiple nodes can have the same file ID but different sources\n * (e.g. in a shared context)\n * @param state\n */\n getNodesById: (state) => (fileId) => Object.values(state.files).filter(node => node.fileid === fileId),\n /**\n * Get the root folder of a service\n * @param state\n */\n getRoot: (state) => (service) => state.roots[service],\n },\n actions: {\n /**\n * Get cached nodes within a given path\n *\n * @param service The service (files view)\n * @param path The path relative within the service\n * @return Array of cached nodes within the path\n */\n getNodesByPath(service, path) {\n const pathsStore = usePathsStore();\n let folder;\n // Get the containing folder from path store\n if (!path || path === '/') {\n folder = this.getRoot(service);\n }\n else {\n const source = pathsStore.getPath(service, path);\n if (source) {\n folder = this.getNode(source);\n }\n }\n // If we found a cache entry and the cache entry was already loaded (has children) then use it\n return (folder?._children ?? [])\n .map((source) => this.getNode(source))\n .filter(Boolean);\n },\n updateNodes(nodes) {\n // Update the store all at once\n const files = nodes.reduce((acc, node) => {\n if (!node.fileid) {\n logger.error('Trying to update/set a node without fileid', { node });\n return acc;\n }\n acc[node.source] = node;\n return acc;\n }, {});\n Vue.set(this, 'files', { ...this.files, ...files });\n },\n deleteNodes(nodes) {\n nodes.forEach(node => {\n if (node.source) {\n Vue.delete(this.files, node.source);\n }\n });\n },\n setRoot({ service, root }) {\n Vue.set(this.roots, service, root);\n },\n onDeletedNode(node) {\n this.deleteNodes([node]);\n },\n onCreatedNode(node) {\n this.updateNodes([node]);\n },\n onMovedNode({ node, oldSource }) {\n if (!node.fileid) {\n logger.error('Trying to update/set a node without fileid', { node });\n return;\n }\n // Update the path of the node\n Vue.delete(this.files, oldSource);\n this.updateNodes([node]);\n },\n async onUpdatedNode(node) {\n if (!node.fileid) {\n logger.error('Trying to update/set a node without fileid', { node });\n return;\n }\n // If we have multiple nodes with the same file ID, we need to update all of them\n const nodes = this.getNodesById(node.fileid);\n if (nodes.length > 1) {\n await Promise.all(nodes.map(fetchNode)).then(this.updateNodes);\n logger.debug(nodes.length + ' nodes updated in store', { fileid: node.fileid });\n return;\n }\n // If we have only one node with the file ID, we can update it directly\n if (node.source === nodes[0].source) {\n this.updateNodes([node]);\n return;\n }\n // Otherwise, it means we receive an event for a node that is not in the store\n fetchNode(node).then(n => this.updateNodes([n]));\n },\n },\n });\n const fileStore = store(...args);\n // Make sure we only register the listeners once\n if (!fileStore._initialized) {\n subscribe('files:node:created', fileStore.onCreatedNode);\n subscribe('files:node:deleted', fileStore.onDeletedNode);\n subscribe('files:node:updated', fileStore.onUpdatedNode);\n subscribe('files:node:moved', fileStore.onMovedNode);\n fileStore._initialized = true;\n }\n return fileStore;\n};\n","import { defineStore } from 'pinia';\nimport Vue from 'vue';\nexport const useSelectionStore = defineStore('selection', {\n state: () => ({\n selected: [],\n lastSelection: [],\n lastSelectedIndex: null,\n }),\n actions: {\n /**\n * Set the selection of fileIds\n * @param selection\n */\n set(selection = []) {\n Vue.set(this, 'selected', [...new Set(selection)]);\n },\n /**\n * Set the last selected index\n * @param lastSelectedIndex\n */\n setLastIndex(lastSelectedIndex = null) {\n // Update the last selection if we provided a new selection starting point\n Vue.set(this, 'lastSelection', lastSelectedIndex ? this.selected : []);\n Vue.set(this, 'lastSelectedIndex', lastSelectedIndex);\n },\n /**\n * Reset the selection\n */\n reset() {\n Vue.set(this, 'selected', []);\n Vue.set(this, 'lastSelection', []);\n Vue.set(this, 'lastSelectedIndex', null);\n },\n },\n});\n","import { defineStore } from 'pinia';\nimport { getUploader } from '@nextcloud/upload';\nlet uploader;\nexport const useUploaderStore = function (...args) {\n // Only init on runtime\n uploader = getUploader();\n const store = defineStore('uploader', {\n state: () => ({\n queue: uploader.queue,\n }),\n });\n return store(...args);\n};\n","import { emit } from '@nextcloud/event-bus';\nimport { Folder, Node, davGetClient, davGetDefaultPropfind, davResultToNode } from '@nextcloud/files';\nimport { openConflictPicker } from '@nextcloud/upload';\nimport { showError, showInfo } from '@nextcloud/dialogs';\nimport { translate as t } from '@nextcloud/l10n';\nimport logger from '../logger.ts';\n/**\n * This represents a Directory in the file tree\n * We extend the File class to better handling uploading\n * and stay as close as possible as the Filesystem API.\n * This also allow us to hijack the size or lastModified\n * properties to compute them dynamically.\n */\nexport class Directory extends File {\n /* eslint-disable no-use-before-define */\n _contents;\n constructor(name, contents = []) {\n super([], name, { type: 'httpd/unix-directory' });\n this._contents = contents;\n }\n set contents(contents) {\n this._contents = contents;\n }\n get contents() {\n return this._contents;\n }\n get size() {\n return this._computeDirectorySize(this);\n }\n get lastModified() {\n if (this._contents.length === 0) {\n return Date.now();\n }\n return this._computeDirectoryMtime(this);\n }\n /**\n * Get the last modification time of a file tree\n * This is not perfect, but will get us a pretty good approximation\n * @param directory the directory to traverse\n */\n _computeDirectoryMtime(directory) {\n return directory.contents.reduce((acc, file) => {\n return file.lastModified > acc\n // If the file is a directory, the lastModified will\n // also return the results of its _computeDirectoryMtime method\n // Fancy recursion, huh?\n ? file.lastModified\n : acc;\n }, 0);\n }\n /**\n * Get the size of a file tree\n * @param directory the directory to traverse\n */\n _computeDirectorySize(directory) {\n return directory.contents.reduce((acc, entry) => {\n // If the file is a directory, the size will\n // also return the results of its _computeDirectorySize method\n // Fancy recursion, huh?\n return acc + entry.size;\n }, 0);\n }\n}\n/**\n * Traverse a file tree using the Filesystem API\n * @param entry the entry to traverse\n */\nexport const traverseTree = async (entry) => {\n // Handle file\n if (entry.isFile) {\n return new Promise((resolve, reject) => {\n entry.file(resolve, reject);\n });\n }\n // Handle directory\n logger.debug('Handling recursive file tree', { entry: entry.name });\n const directory = entry;\n const entries = await readDirectory(directory);\n const contents = (await Promise.all(entries.map(traverseTree))).flat();\n return new Directory(directory.name, contents);\n};\n/**\n * Read a directory using Filesystem API\n * @param directory the directory to read\n */\nconst readDirectory = (directory) => {\n const dirReader = directory.createReader();\n return new Promise((resolve, reject) => {\n const entries = [];\n const getEntries = () => {\n dirReader.readEntries((results) => {\n if (results.length) {\n entries.push(...results);\n getEntries();\n }\n else {\n resolve(entries);\n }\n }, (error) => {\n reject(error);\n });\n };\n getEntries();\n });\n};\nexport const createDirectoryIfNotExists = async (absolutePath) => {\n const davClient = davGetClient();\n const dirExists = await davClient.exists(absolutePath);\n if (!dirExists) {\n logger.debug('Directory does not exist, creating it', { absolutePath });\n await davClient.createDirectory(absolutePath, { recursive: true });\n const stat = await davClient.stat(absolutePath, { details: true, data: davGetDefaultPropfind() });\n emit('files:node:created', davResultToNode(stat.data));\n }\n};\nexport const resolveConflict = async (files, destination, contents) => {\n try {\n // List all conflicting files\n const conflicts = files.filter((file) => {\n return contents.find((node) => node.basename === (file instanceof File ? file.name : file.basename));\n }).filter(Boolean);\n // List of incoming files that are NOT in conflict\n const uploads = files.filter((file) => {\n return !conflicts.includes(file);\n });\n // Let the user choose what to do with the conflicting files\n const { selected, renamed } = await openConflictPicker(destination.path, conflicts, contents);\n logger.debug('Conflict resolution', { uploads, selected, renamed });\n // If the user selected nothing, we cancel the upload\n if (selected.length === 0 && renamed.length === 0) {\n // User skipped\n showInfo(t('files', 'Conflicts resolution skipped'));\n logger.info('User skipped the conflict resolution');\n return [];\n }\n // Update the list of files to upload\n return [...uploads, ...selected, ...renamed];\n }\n catch (error) {\n console.error(error);\n // User cancelled\n showError(t('files', 'Upload cancelled'));\n logger.error('User cancelled the upload');\n }\n return [];\n};\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Permission } from '@nextcloud/files';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport PQueue from 'p-queue';\nimport { loadState } from '@nextcloud/initial-state';\nconst sharePermissions = loadState('files_sharing', 'sharePermissions', Permission.NONE);\n// This is the processing queue. We only want to allow 3 concurrent requests\nlet queue;\n// Maximum number of concurrent operations\nconst MAX_CONCURRENCY = 5;\n/**\n * Get the processing queue\n */\nexport const getQueue = () => {\n if (!queue) {\n queue = new PQueue({ concurrency: MAX_CONCURRENCY });\n }\n return queue;\n};\nexport var MoveCopyAction;\n(function (MoveCopyAction) {\n MoveCopyAction[\"MOVE\"] = \"Move\";\n MoveCopyAction[\"COPY\"] = \"Copy\";\n MoveCopyAction[\"MOVE_OR_COPY\"] = \"move-or-copy\";\n})(MoveCopyAction || (MoveCopyAction = {}));\nexport const canMove = (nodes) => {\n const minPermission = nodes.reduce((min, node) => Math.min(min, node.permissions), Permission.ALL);\n return Boolean(minPermission & Permission.DELETE);\n};\nexport const canDownload = (nodes) => {\n return nodes.every(node => {\n const shareAttributes = JSON.parse(node.attributes?.['share-attributes'] ?? '[]');\n return !shareAttributes.some(attribute => attribute.scope === 'permissions' && attribute.value === false && attribute.key === 'download');\n });\n};\nexport const canCopy = (nodes) => {\n // a shared file cannot be copied if the download is disabled\n if (!canDownload(nodes)) {\n return false;\n }\n // it cannot be copied if the user has only view permissions\n if (nodes.some((node) => node.permissions === Permission.NONE)) {\n return false;\n }\n // on public shares all files have the same permission so copy is only possible if write permission is granted\n if (isPublicShare()) {\n return Boolean(sharePermissions & Permission.CREATE);\n }\n // otherwise permission is granted\n return true;\n};\n","import { davGetDefaultPropfind, davResultToNode, davRootPath } from '@nextcloud/files';\nimport { CancelablePromise } from 'cancelable-promise';\nimport { join } from 'path';\nimport { client } from './WebdavClient.ts';\nimport logger from '../logger.ts';\n/**\n * Slim wrapper over `@nextcloud/files` `davResultToNode` to allow using the function with `Array.map`\n * @param stat The result returned by the webdav library\n */\nexport const resultToNode = (stat) => davResultToNode(stat);\nexport const getContents = (path = '/') => {\n path = join(davRootPath, path);\n const controller = new AbortController();\n const propfindPayload = davGetDefaultPropfind();\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n onCancel(() => controller.abort());\n try {\n const contentsResponse = await client.getDirectoryContents(path, {\n details: true,\n data: propfindPayload,\n includeSelf: true,\n signal: controller.signal,\n });\n const root = contentsResponse.data[0];\n const contents = contentsResponse.data.slice(1);\n if (root.filename !== path && `${root.filename}/` !== path) {\n logger.debug(`Exepected \"${path}\" but got filename \"${root.filename}\" instead.`);\n throw new Error('Root node does not match requested path');\n }\n resolve({\n folder: resultToNode(root),\n contents: contents.map((result) => {\n try {\n return resultToNode(result);\n }\n catch (error) {\n logger.error(`Invalid node detected '${result.basename}'`, { error });\n return null;\n }\n }).filter(Boolean),\n });\n }\n catch (error) {\n reject(error);\n }\n });\n};\n","import { isAxiosError } from '@nextcloud/axios';\nimport { FilePickerClosed, getFilePickerBuilder, showError, showInfo, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs';\nimport { emit } from '@nextcloud/event-bus';\nimport { FileAction, FileType, NodeStatus, davGetClient, davRootPath, davResultToNode, davGetDefaultPropfind, getUniqueName, Permission } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport { openConflictPicker, hasConflict } from '@nextcloud/upload';\nimport { basename, join } from 'path';\nimport Vue from 'vue';\nimport CopyIconSvg from '@mdi/svg/svg/folder-multiple.svg?raw';\nimport FolderMoveSvg from '@mdi/svg/svg/folder-move.svg?raw';\nimport { MoveCopyAction, canCopy, canMove, getQueue } from './moveOrCopyActionUtils';\nimport { getContents } from '../services/Files';\nimport logger from '../logger';\n/**\n * Return the action that is possible for the given nodes\n * @param {Node[]} nodes The nodes to check against\n * @return {MoveCopyAction} The action that is possible for the given nodes\n */\nconst getActionForNodes = (nodes) => {\n if (canMove(nodes)) {\n if (canCopy(nodes)) {\n return MoveCopyAction.MOVE_OR_COPY;\n }\n return MoveCopyAction.MOVE;\n }\n // Assuming we can copy as the enabled checks for copy permissions\n return MoveCopyAction.COPY;\n};\n/**\n * Create a loading notification toast\n * @param mode The move or copy mode\n * @param source Name of the node that is copied / moved\n * @param destination Destination path\n * @return {() => void} Function to hide the notification\n */\nfunction createLoadingNotification(mode, source, destination) {\n const text = mode === MoveCopyAction.MOVE ? t('files', 'Moving \"{source}\" to \"{destination}\" …', { source, destination }) : t('files', 'Copying \"{source}\" to \"{destination}\" …', { source, destination });\n let toast;\n toast = showInfo(`<span class=\"icon icon-loading-small toast-loading-icon\"></span> ${text}`, {\n isHTML: true,\n timeout: TOAST_PERMANENT_TIMEOUT,\n onRemove: () => { toast?.hideToast(); toast = undefined; },\n });\n return () => toast && toast.hideToast();\n}\n/**\n * Handle the copy/move of a node to a destination\n * This can be imported and used by other scripts/components on server\n * @param {Node} node The node to copy/move\n * @param {Folder} destination The destination to copy/move the node to\n * @param {MoveCopyAction} method The method to use for the copy/move\n * @param {boolean} overwrite Whether to overwrite the destination if it exists\n * @return {Promise<void>} A promise that resolves when the copy/move is done\n */\nexport const handleCopyMoveNodeTo = async (node, destination, method, overwrite = false) => {\n if (!destination) {\n return;\n }\n if (destination.type !== FileType.Folder) {\n throw new Error(t('files', 'Destination is not a folder'));\n }\n // Do not allow to MOVE a node to the same folder it is already located\n if (method === MoveCopyAction.MOVE && node.dirname === destination.path) {\n throw new Error(t('files', 'This file/folder is already in that directory'));\n }\n /**\n * Example:\n * - node: /foo/bar/file.txt -> path = /foo/bar/file.txt, destination: /foo\n * Allow move of /foo does not start with /foo/bar/file.txt so allow\n * - node: /foo , destination: /foo/bar\n * Do not allow as it would copy foo within itself\n * - node: /foo/bar.txt, destination: /foo\n * Allow copy a file to the same directory\n * - node: \"/foo/bar\", destination: \"/foo/bar 1\"\n * Allow to move or copy but we need to check with trailing / otherwise it would report false positive\n */\n if (`${destination.path}/`.startsWith(`${node.path}/`)) {\n throw new Error(t('files', 'You cannot move a file/folder onto itself or into a subfolder of itself'));\n }\n // Set loading state\n Vue.set(node, 'status', NodeStatus.LOADING);\n const actionFinished = createLoadingNotification(method, node.basename, destination.path);\n const queue = getQueue();\n return await queue.add(async () => {\n const copySuffix = (index) => {\n if (index === 1) {\n return t('files', '(copy)'); // TRANSLATORS: Mark a file as a copy of another file\n }\n return t('files', '(copy %n)', undefined, index); // TRANSLATORS: Meaning it is the n'th copy of a file\n };\n try {\n const client = davGetClient();\n const currentPath = join(davRootPath, node.path);\n const destinationPath = join(davRootPath, destination.path);\n if (method === MoveCopyAction.COPY) {\n let target = node.basename;\n // If we do not allow overwriting then find an unique name\n if (!overwrite) {\n const otherNodes = await client.getDirectoryContents(destinationPath);\n target = getUniqueName(node.basename, otherNodes.map((n) => n.basename), {\n suffix: copySuffix,\n ignoreFileExtension: node.type === FileType.Folder,\n });\n }\n await client.copyFile(currentPath, join(destinationPath, target));\n // If the node is copied into current directory the view needs to be updated\n if (node.dirname === destination.path) {\n const { data } = await client.stat(join(destinationPath, target), {\n details: true,\n data: davGetDefaultPropfind(),\n });\n emit('files:node:created', davResultToNode(data));\n }\n }\n else {\n // show conflict file popup if we do not allow overwriting\n if (!overwrite) {\n const otherNodes = await getContents(destination.path);\n if (hasConflict([node], otherNodes.contents)) {\n try {\n // Let the user choose what to do with the conflicting files\n const { selected, renamed } = await openConflictPicker(destination.path, [node], otherNodes.contents);\n // two empty arrays: either only old files or conflict skipped -> no action required\n if (!selected.length && !renamed.length) {\n return;\n }\n }\n catch (error) {\n // User cancelled\n showError(t('files', 'Move cancelled'));\n return;\n }\n }\n }\n // getting here means either no conflict, file was renamed to keep both files\n // in a conflict, or the selected file was chosen to be kept during the conflict\n await client.moveFile(currentPath, join(destinationPath, node.basename));\n // Delete the node as it will be fetched again\n // when navigating to the destination folder\n emit('files:node:deleted', node);\n }\n }\n catch (error) {\n if (isAxiosError(error)) {\n if (error.response?.status === 412) {\n throw new Error(t('files', 'A file or folder with that name already exists in this folder'));\n }\n else if (error.response?.status === 423) {\n throw new Error(t('files', 'The files are locked'));\n }\n else if (error.response?.status === 404) {\n throw new Error(t('files', 'The file does not exist anymore'));\n }\n else if (error.message) {\n throw new Error(error.message);\n }\n }\n logger.debug(error);\n throw new Error();\n }\n finally {\n Vue.set(node, 'status', '');\n actionFinished();\n }\n });\n};\n/**\n * Open a file picker for the given action\n * @param action The action to open the file picker for\n * @param dir The directory to start the file picker in\n * @param nodes The nodes to move/copy\n * @return The picked destination or false if cancelled by user\n */\nasync function openFilePickerForAction(action, dir = '/', nodes) {\n const { resolve, reject, promise } = Promise.withResolvers();\n const fileIDs = nodes.map(node => node.fileid).filter(Boolean);\n const filePicker = getFilePickerBuilder(t('files', 'Choose destination'))\n .allowDirectories(true)\n .setFilter((n) => {\n // We don't want to show the current nodes in the file picker\n return !fileIDs.includes(n.fileid);\n })\n .setMimeTypeFilter([])\n .setMultiSelect(false)\n .startAt(dir)\n .setButtonFactory((selection, path) => {\n const buttons = [];\n const target = basename(path);\n const dirnames = nodes.map(node => node.dirname);\n const paths = nodes.map(node => node.path);\n if (action === MoveCopyAction.COPY || action === MoveCopyAction.MOVE_OR_COPY) {\n buttons.push({\n label: target ? t('files', 'Copy to {target}', { target }, undefined, { escape: false, sanitize: false }) : t('files', 'Copy'),\n type: 'primary',\n icon: CopyIconSvg,\n disabled: selection.some((node) => (node.permissions & Permission.CREATE) === 0),\n async callback(destination) {\n resolve({\n destination: destination[0],\n action: MoveCopyAction.COPY,\n });\n },\n });\n }\n // Invalid MOVE targets (but valid copy targets)\n if (dirnames.includes(path)) {\n // This file/folder is already in that directory\n return buttons;\n }\n if (paths.includes(path)) {\n // You cannot move a file/folder onto itself\n return buttons;\n }\n if (action === MoveCopyAction.MOVE || action === MoveCopyAction.MOVE_OR_COPY) {\n buttons.push({\n label: target ? t('files', 'Move to {target}', { target }, undefined, { escape: false, sanitize: false }) : t('files', 'Move'),\n type: action === MoveCopyAction.MOVE ? 'primary' : 'secondary',\n icon: FolderMoveSvg,\n async callback(destination) {\n resolve({\n destination: destination[0],\n action: MoveCopyAction.MOVE,\n });\n },\n });\n }\n return buttons;\n })\n .build();\n filePicker.pick()\n .catch((error) => {\n logger.debug(error);\n if (error instanceof FilePickerClosed) {\n resolve(false);\n }\n else {\n reject(new Error(t('files', 'Move or copy operation failed')));\n }\n });\n return promise;\n}\nexport const action = new FileAction({\n id: 'move-copy',\n displayName(nodes) {\n switch (getActionForNodes(nodes)) {\n case MoveCopyAction.MOVE:\n return t('files', 'Move');\n case MoveCopyAction.COPY:\n return t('files', 'Copy');\n case MoveCopyAction.MOVE_OR_COPY:\n return t('files', 'Move or copy');\n }\n },\n iconSvgInline: () => FolderMoveSvg,\n enabled(nodes, view) {\n // We can not copy or move in single file shares\n if (view.id === 'public-file-share') {\n return false;\n }\n // We only support moving/copying files within the user folder\n if (!nodes.every(node => node.root?.startsWith('/files/'))) {\n return false;\n }\n return nodes.length > 0 && (canMove(nodes) || canCopy(nodes));\n },\n async exec(node, view, dir) {\n const action = getActionForNodes([node]);\n let result;\n try {\n result = await openFilePickerForAction(action, dir, [node]);\n }\n catch (e) {\n logger.error(e);\n return false;\n }\n if (result === false) {\n showInfo(t('files', 'Cancelled move or copy of \"{filename}\".', { filename: node.displayname }));\n return null;\n }\n try {\n await handleCopyMoveNodeTo(node, result.destination, result.action);\n return true;\n }\n catch (error) {\n if (error instanceof Error && !!error.message) {\n showError(error.message);\n // Silent action as we handle the toast\n return null;\n }\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n const action = getActionForNodes(nodes);\n const result = await openFilePickerForAction(action, dir, nodes);\n // Handle cancellation silently\n if (result === false) {\n showInfo(nodes.length === 1\n ? t('files', 'Cancelled move or copy of \"{filename}\".', { filename: nodes[0].displayname })\n : t('files', 'Cancelled move or copy operation'));\n return nodes.map(() => null);\n }\n const promises = nodes.map(async (node) => {\n try {\n await handleCopyMoveNodeTo(node, result.destination, result.action);\n return true;\n }\n catch (error) {\n logger.error(`Failed to ${result.action} node`, { node, error });\n return false;\n }\n });\n // We need to keep the selection on error!\n // So we do not return null, and for batch action\n // we let the front handle the error.\n return await Promise.all(promises);\n },\n order: 15,\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Folder, Node, NodeStatus, davRootPath } from '@nextcloud/files';\nimport { getUploader, hasConflict } from '@nextcloud/upload';\nimport { join } from 'path';\nimport { joinPaths } from '@nextcloud/paths';\nimport { showError, showInfo, showSuccess, showWarning } from '@nextcloud/dialogs';\nimport { translate as t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nimport { Directory, traverseTree, resolveConflict, createDirectoryIfNotExists } from './DropServiceUtils';\nimport { handleCopyMoveNodeTo } from '../actions/moveOrCopyAction';\nimport { MoveCopyAction } from '../actions/moveOrCopyActionUtils';\nimport logger from '../logger.ts';\n/**\n * This function converts a list of DataTransferItems to a file tree.\n * It uses the Filesystem API if available, otherwise it falls back to the File API.\n * The File API will NOT be available if the browser is not in a secure context (e.g. HTTP).\n * ⚠️ When using this method, you need to use it as fast as possible, as the DataTransferItems\n * will be cleared after the first access to the props of one of the entries.\n *\n * @param items the list of DataTransferItems\n */\nexport const dataTransferToFileTree = async (items) => {\n // Check if the browser supports the Filesystem API\n // We need to cache the entries to prevent Blink engine bug that clears\n // the list (`data.items`) after first access props of one of the entries\n const entries = items\n .filter((item) => {\n if (item.kind !== 'file') {\n logger.debug('Skipping dropped item', { kind: item.kind, type: item.type });\n return false;\n }\n return true;\n }).map((item) => {\n // MDN recommends to try both, as it might be renamed in the future\n return item?.getAsEntry?.()\n ?? item?.webkitGetAsEntry?.()\n ?? item;\n });\n let warned = false;\n const fileTree = new Directory('root');\n // Traverse the file tree\n for (const entry of entries) {\n // Handle browser issues if Filesystem API is not available. Fallback to File API\n if (entry instanceof DataTransferItem) {\n logger.warn('Could not get FilesystemEntry of item, falling back to file');\n const file = entry.getAsFile();\n if (file === null) {\n logger.warn('Could not process DataTransferItem', { type: entry.type, kind: entry.kind });\n showError(t('files', 'One of the dropped files could not be processed'));\n continue;\n }\n // Warn the user that the browser does not support the Filesystem API\n // we therefore cannot upload directories recursively.\n if (file.type === 'httpd/unix-directory' || !file.type) {\n if (!warned) {\n logger.warn('Browser does not support Filesystem API. Directories will not be uploaded');\n showWarning(t('files', 'Your browser does not support the Filesystem API. Directories will not be uploaded'));\n warned = true;\n }\n continue;\n }\n fileTree.contents.push(file);\n continue;\n }\n // Use Filesystem API\n try {\n fileTree.contents.push(await traverseTree(entry));\n }\n catch (error) {\n // Do not throw, as we want to continue with the other files\n logger.error('Error while traversing file tree', { error });\n }\n }\n return fileTree;\n};\nexport const onDropExternalFiles = async (root, destination, contents) => {\n const uploader = getUploader();\n // Check for conflicts on root elements\n if (await hasConflict(root.contents, contents)) {\n root.contents = await resolveConflict(root.contents, destination, contents);\n }\n if (root.contents.length === 0) {\n logger.info('No files to upload', { root });\n showInfo(t('files', 'No files to upload'));\n return [];\n }\n // Let's process the files\n logger.debug(`Uploading files to ${destination.path}`, { root, contents: root.contents });\n const queue = [];\n const uploadDirectoryContents = async (directory, path) => {\n for (const file of directory.contents) {\n // This is the relative path to the resource\n // from the current uploader destination\n const relativePath = join(path, file.name);\n // If the file is a directory, we need to create it first\n // then browse its tree and upload its contents.\n if (file instanceof Directory) {\n const absolutePath = joinPaths(davRootPath, destination.path, relativePath);\n try {\n console.debug('Processing directory', { relativePath });\n await createDirectoryIfNotExists(absolutePath);\n await uploadDirectoryContents(file, relativePath);\n }\n catch (error) {\n showError(t('files', 'Unable to create the directory {directory}', { directory: file.name }));\n logger.error('', { error, absolutePath, directory: file });\n }\n continue;\n }\n // If we've reached a file, we can upload it\n logger.debug('Uploading file to ' + join(destination.path, relativePath), { file });\n // Overriding the root to avoid changing the current uploader context\n queue.push(uploader.upload(relativePath, file, destination.source));\n }\n };\n // Pause the uploader to prevent it from starting\n // while we compute the queue\n uploader.pause();\n // Upload the files. Using '/' as the starting point\n // as we already adjusted the uploader destination\n await uploadDirectoryContents(root, '/');\n uploader.start();\n // Wait for all promises to settle\n const results = await Promise.allSettled(queue);\n // Check for errors\n const errors = results.filter(result => result.status === 'rejected');\n if (errors.length > 0) {\n logger.error('Error while uploading files', { errors });\n showError(t('files', 'Some files could not be uploaded'));\n return [];\n }\n logger.debug('Files uploaded successfully');\n showSuccess(t('files', 'Files uploaded successfully'));\n return Promise.all(queue);\n};\nexport const onDropInternalFiles = async (nodes, destination, contents, isCopy = false) => {\n const queue = [];\n // Check for conflicts on root elements\n if (await hasConflict(nodes, contents)) {\n nodes = await resolveConflict(nodes, destination, contents);\n }\n if (nodes.length === 0) {\n logger.info('No files to process', { nodes });\n showInfo(t('files', 'No files to process'));\n return;\n }\n for (const node of nodes) {\n Vue.set(node, 'status', NodeStatus.LOADING);\n queue.push(handleCopyMoveNodeTo(node, destination, isCopy ? MoveCopyAction.COPY : MoveCopyAction.MOVE, true));\n }\n // Wait for all promises to settle\n const results = await Promise.allSettled(queue);\n nodes.forEach(node => Vue.set(node, 'status', undefined));\n // Check for errors\n const errors = results.filter(result => result.status === 'rejected');\n if (errors.length > 0) {\n logger.error('Error while copying or moving files', { errors });\n showError(isCopy ? t('files', 'Some files could not be copied') : t('files', 'Some files could not be moved'));\n return;\n }\n logger.debug('Files copy/move successful');\n showSuccess(isCopy ? t('files', 'Files copied successfully') : t('files', 'Files moved successfully'));\n};\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nexport const useDragAndDropStore = defineStore('dragging', {\n state: () => ({\n dragging: [],\n }),\n actions: {\n /**\n * Set the selection of fileIds\n * @param selection\n */\n set(selection = []) {\n Vue.set(this, 'dragging', selection);\n },\n /**\n * Reset the selection\n */\n reset() {\n Vue.set(this, 'dragging', []);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcBreadcrumbs',{staticClass:\"files-list__breadcrumbs\",class:{ 'files-list__breadcrumbs--with-progress': _vm.wrapUploadProgressBar },attrs:{\"data-cy-files-content-breadcrumbs\":\"\",\"aria-label\":_vm.t('files', 'Current directory path')},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"actions\")]},proxy:true}],null,true)},_vm._l((_vm.sections),function(section,index){return _c('NcBreadcrumb',_vm._b({key:section.dir,attrs:{\"dir\":\"auto\",\"to\":section.to,\"force-icon-text\":index === 0 && _vm.fileListWidth >= 486,\"title\":_vm.titleForSection(index, section),\"aria-description\":_vm.ariaForSection(section)},on:{\"drop\":function($event){return _vm.onDrop($event, section.dir)}},nativeOn:{\"click\":function($event){return _vm.onClick(section.to)},\"dragover\":function($event){return _vm.onDragOver($event, section.dir)}},scopedSlots:_vm._u([(index === 0)?{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"size\":20,\"svg\":_vm.viewIcon}})]},proxy:true}:null],null,true)},'NcBreadcrumb',section,false))}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=61601fd4&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=61601fd4&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BreadCrumbs.vue?vue&type=template&id=61601fd4&scoped=true\"\nimport script from \"./BreadCrumbs.vue?vue&type=script&lang=ts\"\nexport * from \"./BreadCrumbs.vue?vue&type=script&lang=ts\"\nimport style0 from \"./BreadCrumbs.vue?vue&type=style&index=0&id=61601fd4&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"61601fd4\",\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { FileType } from '@nextcloud/files';\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n';\n/**\n * Extract dir and name from file path\n *\n * @param {string} path the full path\n * @return {string[]} [dirPath, fileName]\n */\nexport const extractFilePaths = function (path) {\n const pathSections = path.split('/');\n const fileName = pathSections[pathSections.length - 1];\n const dirPath = pathSections.slice(0, pathSections.length - 1).join('/');\n return [dirPath, fileName];\n};\n/**\n * Generate a translated summary of an array of nodes\n * @param {Node[]} nodes the nodes to summarize\n * @return {string}\n */\nexport const getSummaryFor = (nodes) => {\n const fileCount = nodes.filter(node => node.type === FileType.File).length;\n const folderCount = nodes.filter(node => node.type === FileType.Folder).length;\n if (fileCount === 0) {\n return n('files', '{folderCount} folder', '{folderCount} folders', folderCount, { folderCount });\n }\n else if (folderCount === 0) {\n return n('files', '{fileCount} file', '{fileCount} files', fileCount, { fileCount });\n }\n if (fileCount === 1) {\n return n('files', '1 file and {folderCount} folder', '1 file and {folderCount} folders', folderCount, { folderCount });\n }\n if (folderCount === 1) {\n return n('files', '{fileCount} file and 1 folder', '{fileCount} files and 1 folder', fileCount, { fileCount });\n }\n return t('files', '{fileCount} files and {folderCount} folders', { fileCount, folderCount });\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',_vm._g({staticClass:\"files-list__row\",class:{\n\t\t'files-list__row--dragover': _vm.dragover,\n\t\t'files-list__row--loading': _vm.isLoading,\n\t\t'files-list__row--active': _vm.isActive,\n\t},attrs:{\"data-cy-files-list-row\":\"\",\"data-cy-files-list-row-fileid\":_vm.fileid,\"data-cy-files-list-row-name\":_vm.source.basename,\"draggable\":_vm.canDrag}},_vm.rowListeners),[(_vm.isFailedSource)?_c('span',{staticClass:\"files-list__row--failed\"}):_vm._e(),_vm._v(\" \"),_c('FileEntryCheckbox',{attrs:{\"fileid\":_vm.fileid,\"is-loading\":_vm.isLoading,\"nodes\":_vm.nodes,\"source\":_vm.source}}),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\",attrs:{\"data-cy-files-list-row-name\":\"\"}},[_c('FileEntryPreview',{ref:\"preview\",attrs:{\"source\":_vm.source,\"dragover\":_vm.dragover},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}}),_vm._v(\" \"),_c('FileEntryName',{ref:\"name\",attrs:{\"basename\":_vm.basename,\"extension\":_vm.extension,\"nodes\":_vm.nodes,\"source\":_vm.source},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}})],1),_vm._v(\" \"),_c('FileEntryActions',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isRenamingSmallScreen),expression:\"!isRenamingSmallScreen\"}],ref:\"actions\",class:`files-list__row-actions-${_vm.uniqueId}`,attrs:{\"loading\":_vm.loading,\"opened\":_vm.openedMenu,\"source\":_vm.source},on:{\"update:loading\":function($event){_vm.loading=$event},\"update:opened\":function($event){_vm.openedMenu=$event}}}),_vm._v(\" \"),(!_vm.compact && _vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__row-size\",style:(_vm.sizeOpacity),attrs:{\"data-cy-files-list-row-size\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('span',[_vm._v(_vm._s(_vm.size))])]):_vm._e(),_vm._v(\" \"),(!_vm.compact && _vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__row-mtime\",style:(_vm.mtimeOpacity),attrs:{\"data-cy-files-list-row-mtime\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[(_vm.mtime)?_c('NcDateTime',{attrs:{\"timestamp\":_vm.mtime,\"ignore-seconds\":true}}):_c('span',[_vm._v(_vm._s(_vm.t('files', 'Unknown date')))])],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('td',{key:column.id,staticClass:\"files-list__row-column-custom\",class:`files-list__row-${_vm.currentView.id}-${column.id}`,attrs:{\"data-cy-files-list-row-column-custom\":column.id},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('CustomElementRender',{attrs:{\"current-view\":_vm.currentView,\"render\":column.render,\"source\":_vm.source}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nexport const useActionsMenuStore = defineStore('actionsmenu', {\n state: () => ({\n opened: null,\n }),\n});\n","import axios, { isAxiosError } from '@nextcloud/axios';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { NodeStatus } from '@nextcloud/files';\nimport { DialogBuilder } from '@nextcloud/dialogs';\nimport { t } from '@nextcloud/l10n';\nimport { basename, dirname, extname } from 'path';\nimport { defineStore } from 'pinia';\nimport logger from '../logger';\nimport Vue from 'vue';\nimport IconCancel from '@mdi/svg/svg/cancel.svg?raw';\nimport IconCheck from '@mdi/svg/svg/check.svg?raw';\nlet isDialogVisible = false;\nconst showWarningDialog = (oldExtension, newExtension) => {\n if (isDialogVisible) {\n return Promise.resolve(false);\n }\n isDialogVisible = true;\n let message;\n if (!oldExtension && newExtension) {\n message = t('files', 'Adding the file extension \"{new}\" may render the file unreadable.', { new: newExtension });\n }\n else if (!newExtension) {\n message = t('files', 'Removing the file extension \"{old}\" may render the file unreadable.', { old: oldExtension });\n }\n else {\n message = t('files', 'Changing the file extension from \"{old}\" to \"{new}\" may render the file unreadable.', { old: oldExtension, new: newExtension });\n }\n return new Promise((resolve) => {\n const dialog = new DialogBuilder()\n .setName(t('files', 'Change file extension'))\n .setText(message)\n .setButtons([\n {\n label: t('files', 'Keep {oldextension}', { oldextension: oldExtension }),\n icon: IconCancel,\n type: 'secondary',\n callback: () => {\n isDialogVisible = false;\n resolve(false);\n },\n },\n {\n label: newExtension.length ? t('files', 'Use {newextension}', { newextension: newExtension }) : t('files', 'Remove extension'),\n icon: IconCheck,\n type: 'primary',\n callback: () => {\n isDialogVisible = false;\n resolve(true);\n },\n },\n ])\n .build();\n dialog.show().then(() => {\n dialog.hide();\n });\n });\n};\nexport const useRenamingStore = function (...args) {\n const store = defineStore('renaming', {\n state: () => ({\n renamingNode: undefined,\n newName: '',\n }),\n actions: {\n /**\n * Execute the renaming.\n * This will rename the node set as `renamingNode` to the configured new name `newName`.\n * @return true if success, false if skipped (e.g. new and old name are the same)\n * @throws Error if renaming fails, details are set in the error message\n */\n async rename() {\n if (this.renamingNode === undefined) {\n throw new Error('No node is currently being renamed');\n }\n const newName = this.newName.trim?.() || '';\n const oldName = this.renamingNode.basename;\n const oldEncodedSource = this.renamingNode.encodedSource;\n // Check for extension change\n const oldExtension = extname(oldName);\n const newExtension = extname(newName);\n if (oldExtension !== newExtension) {\n const proceed = await showWarningDialog(oldExtension, newExtension);\n if (!proceed) {\n return false;\n }\n }\n if (oldName === newName) {\n return false;\n }\n const node = this.renamingNode;\n Vue.set(node, 'status', NodeStatus.LOADING);\n try {\n // rename the node\n this.renamingNode.rename(newName);\n logger.debug('Moving file to', { destination: this.renamingNode.encodedSource, oldEncodedSource });\n // create MOVE request\n await axios({\n method: 'MOVE',\n url: oldEncodedSource,\n headers: {\n Destination: this.renamingNode.encodedSource,\n Overwrite: 'F',\n },\n });\n // Success 🎉\n emit('files:node:updated', this.renamingNode);\n emit('files:node:renamed', this.renamingNode);\n emit('files:node:moved', {\n node: this.renamingNode,\n oldSource: `${dirname(this.renamingNode.source)}/${oldName}`,\n });\n this.$reset();\n return true;\n }\n catch (error) {\n logger.error('Error while renaming file', { error });\n // Rename back as it failed\n this.renamingNode.rename(oldName);\n if (isAxiosError(error)) {\n // TODO: 409 means current folder does not exist, redirect ?\n if (error?.response?.status === 404) {\n throw new Error(t('files', 'Could not rename \"{oldName}\", it does not exist any more', { oldName }));\n }\n else if (error?.response?.status === 412) {\n throw new Error(t('files', 'The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name.', {\n newName,\n dir: basename(this.renamingNode.dirname),\n }));\n }\n }\n // Unknown error\n throw new Error(t('files', 'Could not rename \"{oldName}\"', { oldName }));\n }\n finally {\n Vue.set(node, 'status', undefined);\n }\n },\n },\n });\n const renamingStore = store(...args);\n // Make sure we only register the listeners once\n if (!renamingStore._initialized) {\n subscribe('files:node:rename', function (node) {\n renamingStore.renamingNode = node;\n renamingStore.newName = node.basename;\n });\n renamingStore._initialized = true;\n }\n return renamingStore;\n};\n","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon file-multiple-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M15,7H20.5L15,1.5V7M8,0H16L22,6V18A2,2 0 0,1 20,20H8C6.89,20 6,19.1 6,18V2A2,2 0 0,1 8,0M4,4V22H20V24H4A2,2 0 0,1 2,22V4H4Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"FileMultipleIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileMultiple.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileMultiple.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FileMultiple.vue?vue&type=template&id=15fca808\"\nimport script from \"./FileMultiple.vue?vue&type=script&lang=js\"\nexport * from \"./FileMultiple.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon file-multiple-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,7H20.5L15,1.5V7M8,0H16L22,6V18A2,2 0 0,1 20,20H8C6.89,20 6,19.1 6,18V2A2,2 0 0,1 8,0M4,4V22H20V24H4A2,2 0 0,1 2,22V4H4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list-drag-image\"},[_c('span',{staticClass:\"files-list-drag-image__icon\"},[_c('span',{ref:\"previewImg\"}),_vm._v(\" \"),(_vm.isSingleFolder)?_c('FolderIcon'):_c('FileMultipleIcon')],1),_vm._v(\" \"),_c('span',{staticClass:\"files-list-drag-image__name\"},[_vm._v(_vm._s(_vm.name))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=style&index=0&id=01562099&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=style&index=0&id=01562099&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DragAndDropPreview.vue?vue&type=template&id=01562099\"\nimport script from \"./DragAndDropPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./DragAndDropPreview.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DragAndDropPreview.vue?vue&type=style&index=0&id=01562099&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import DragAndDropPreview from '../components/DragAndDropPreview.vue';\nimport Vue from 'vue';\nconst Preview = Vue.extend(DragAndDropPreview);\nlet preview;\nexport const getDragAndDropPreview = async (nodes) => {\n return new Promise((resolve) => {\n if (!preview) {\n preview = new Preview().$mount();\n document.body.appendChild(preview.$el);\n }\n preview.update(nodes);\n preview.$on('loaded', () => {\n resolve(preview.$el);\n preview.$off('loaded');\n });\n });\n};\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { showError } from '@nextcloud/dialogs';\nimport { FileType, Permission, Folder, File as NcFile, NodeStatus, Node, getFileActions } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport { generateUrl } from '@nextcloud/router';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport { vOnClickOutside } from '@vueuse/components';\nimport { extname } from 'path';\nimport Vue, { computed, defineComponent } from 'vue';\nimport { action as sidebarAction } from '../actions/sidebarAction.ts';\nimport { getDragAndDropPreview } from '../utils/dragUtils.ts';\nimport { hashCode } from '../utils/hashUtils.ts';\nimport { dataTransferToFileTree, onDropExternalFiles, onDropInternalFiles } from '../services/DropService.ts';\nimport logger from '../logger.ts';\nimport { isDownloadable } from '../utils/permissions.ts';\nVue.directive('onClickOutside', vOnClickOutside);\nconst actions = getFileActions();\nexport default defineComponent({\n props: {\n source: {\n type: [Folder, NcFile, Node],\n required: true,\n },\n nodes: {\n type: Array,\n required: true,\n },\n filesListWidth: {\n type: Number,\n default: 0,\n },\n isMtimeAvailable: {\n type: Boolean,\n default: false,\n },\n compact: {\n type: Boolean,\n default: false,\n },\n },\n provide() {\n return {\n defaultFileAction: computed(() => this.defaultFileAction),\n enabledFileActions: computed(() => this.enabledFileActions),\n };\n },\n data() {\n return {\n loading: '',\n dragover: false,\n gridMode: false,\n };\n },\n computed: {\n fileid() {\n return this.source.fileid ?? 0;\n },\n uniqueId() {\n return hashCode(this.source.source);\n },\n isLoading() {\n return this.source.status === NodeStatus.LOADING || this.loading !== '';\n },\n /**\n * The display name of the current node\n * Either the nodes filename or a custom display name (e.g. for shares)\n */\n displayName() {\n // basename fallback needed for apps using old `@nextcloud/files` prior 3.6.0\n return this.source.displayname || this.source.basename;\n },\n /**\n * The display name without extension\n */\n basename() {\n if (this.extension === '') {\n return this.displayName;\n }\n return this.displayName.slice(0, 0 - this.extension.length);\n },\n /**\n * The extension of the file\n */\n extension() {\n if (this.source.type === FileType.Folder) {\n return '';\n }\n return extname(this.displayName);\n },\n draggingFiles() {\n return this.draggingStore.dragging;\n },\n selectedFiles() {\n return this.selectionStore.selected;\n },\n isSelected() {\n return this.selectedFiles.includes(this.source.source);\n },\n isRenaming() {\n return this.renamingStore.renamingNode === this.source;\n },\n isRenamingSmallScreen() {\n return this.isRenaming && this.filesListWidth < 512;\n },\n isActive() {\n return String(this.fileid) === String(this.currentFileId);\n },\n /**\n * Check if the source is in a failed state after an API request\n */\n isFailedSource() {\n return this.source.status === NodeStatus.FAILED;\n },\n canDrag() {\n if (this.isRenaming) {\n return false;\n }\n const canDrag = (node) => {\n return (node?.permissions & Permission.UPDATE) !== 0;\n };\n // If we're dragging a selection, we need to check all files\n if (this.selectedFiles.length > 0) {\n const nodes = this.selectedFiles.map(source => this.filesStore.getNode(source));\n return nodes.every(canDrag);\n }\n return canDrag(this.source);\n },\n canDrop() {\n if (this.source.type !== FileType.Folder) {\n return false;\n }\n // If the current folder is also being dragged, we can't drop it on itself\n if (this.draggingFiles.includes(this.source.source)) {\n return false;\n }\n return (this.source.permissions & Permission.CREATE) !== 0;\n },\n openedMenu: {\n get() {\n return this.actionsMenuStore.opened === this.uniqueId.toString();\n },\n set(opened) {\n this.actionsMenuStore.opened = opened ? this.uniqueId.toString() : null;\n },\n },\n mtimeOpacity() {\n const maxOpacityTime = 31 * 24 * 60 * 60 * 1000; // 31 days\n const mtime = this.source.mtime?.getTime?.();\n if (!mtime) {\n return {};\n }\n // 1 = today, 0 = 31 days ago\n const ratio = Math.round(Math.min(100, 100 * (maxOpacityTime - (Date.now() - mtime)) / maxOpacityTime));\n if (ratio < 0) {\n return {};\n }\n return {\n color: `color-mix(in srgb, var(--color-main-text) ${ratio}%, var(--color-text-maxcontrast))`,\n };\n },\n /**\n * Sorted actions that are enabled for this node\n */\n enabledFileActions() {\n if (this.source.status === NodeStatus.FAILED) {\n return [];\n }\n return actions\n .filter(action => !action.enabled || action.enabled([this.source], this.currentView))\n .sort((a, b) => (a.order || 0) - (b.order || 0));\n },\n defaultFileAction() {\n return this.enabledFileActions.find((action) => action.default !== undefined);\n },\n },\n watch: {\n /**\n * When the source changes, reset the preview\n * and fetch the new one.\n * @param a\n * @param b\n */\n source(a, b) {\n if (a.source !== b.source) {\n this.resetState();\n }\n },\n openedMenu() {\n if (this.openedMenu === false) {\n // TODO: This timeout can be removed once `close` event only triggers after the transition\n // ref: https://github.com/nextcloud-libraries/nextcloud-vue/pull/6065\n window.setTimeout(() => {\n if (this.openedMenu) {\n // was reopened while the animation run\n return;\n }\n // Reset any right menu position potentially set\n const root = document.getElementById('app-content-vue');\n if (root !== null) {\n root.style.removeProperty('--mouse-pos-x');\n root.style.removeProperty('--mouse-pos-y');\n }\n }, 300);\n }\n },\n },\n beforeDestroy() {\n this.resetState();\n },\n methods: {\n resetState() {\n // Reset loading state\n this.loading = '';\n // Reset the preview state\n this.$refs?.preview?.reset?.();\n // Close menu\n this.openedMenu = false;\n },\n // Open the actions menu on right click\n onRightClick(event) {\n // If already opened, fallback to default browser\n if (this.openedMenu) {\n return;\n }\n // The grid mode is compact enough to not care about\n // the actions menu mouse position\n if (!this.gridMode) {\n // Actions menu is contained within the app content\n const root = this.$el?.closest('main.app-content');\n const contentRect = root.getBoundingClientRect();\n // Using Math.min/max to prevent the menu from going out of the AppContent\n // 200 = max width of the menu\n root.style.setProperty('--mouse-pos-x', Math.max(0, event.clientX - contentRect.left - 200) + 'px');\n root.style.setProperty('--mouse-pos-y', Math.max(0, event.clientY - contentRect.top) + 'px');\n }\n else {\n // Reset any right menu position potentially set\n const root = this.$el?.closest('main.app-content');\n root.style.removeProperty('--mouse-pos-x');\n root.style.removeProperty('--mouse-pos-y');\n }\n // If the clicked row is in the selection, open global menu\n const isMoreThanOneSelected = this.selectedFiles.length > 1;\n this.actionsMenuStore.opened = this.isSelected && isMoreThanOneSelected ? 'global' : this.uniqueId.toString();\n // Prevent any browser defaults\n event.preventDefault();\n event.stopPropagation();\n },\n execDefaultAction(event) {\n // Ignore click if we are renaming\n if (this.isRenaming) {\n return;\n }\n // Ignore right click (button & 2) and any auxillary button expect mouse-wheel (button & 4)\n if (Boolean(event.button & 2) || event.button > 4) {\n return;\n }\n // if ctrl+click / cmd+click (MacOS uses the meta key) or middle mouse button (button & 4), open in new tab\n // also if there is no default action use this as a fallback\n const metaKeyPressed = event.ctrlKey || event.metaKey || Boolean(event.button & 4);\n if (metaKeyPressed || !this.defaultFileAction) {\n // If no download permission, then we can not allow to download (direct link) the files\n if (isPublicShare() && !isDownloadable(this.source)) {\n return;\n }\n const url = isPublicShare()\n ? this.source.encodedSource\n : generateUrl('/f/{fileId}', { fileId: this.fileid });\n event.preventDefault();\n event.stopPropagation();\n window.open(url, metaKeyPressed ? '_self' : undefined);\n return;\n }\n // every special case handled so just execute the default action\n event.preventDefault();\n event.stopPropagation();\n // Execute the first default action if any\n this.defaultFileAction.exec(this.source, this.currentView, this.currentDir);\n },\n openDetailsIfAvailable(event) {\n event.preventDefault();\n event.stopPropagation();\n if (sidebarAction?.enabled?.([this.source], this.currentView)) {\n sidebarAction.exec(this.source, this.currentView, this.currentDir);\n }\n },\n onDragOver(event) {\n this.dragover = this.canDrop;\n if (!this.canDrop) {\n event.dataTransfer.dropEffect = 'none';\n return;\n }\n // Handle copy/move drag and drop\n if (event.ctrlKey) {\n event.dataTransfer.dropEffect = 'copy';\n }\n else {\n event.dataTransfer.dropEffect = 'move';\n }\n },\n onDragLeave(event) {\n // Counter bubbling, make sure we're ending the drag\n // only when we're leaving the current element\n const currentTarget = event.currentTarget;\n if (currentTarget?.contains(event.relatedTarget)) {\n return;\n }\n this.dragover = false;\n },\n async onDragStart(event) {\n event.stopPropagation();\n if (!this.canDrag || !this.fileid) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n logger.debug('Drag started', { event });\n // Make sure that we're not dragging a file like the preview\n event.dataTransfer?.clearData?.();\n // Reset any renaming\n this.renamingStore.$reset();\n // Dragging set of files, if we're dragging a file\n // that is already selected, we use the entire selection\n if (this.selectedFiles.includes(this.source.source)) {\n this.draggingStore.set(this.selectedFiles);\n }\n else {\n this.draggingStore.set([this.source.source]);\n }\n const nodes = this.draggingStore.dragging\n .map(source => this.filesStore.getNode(source));\n const image = await getDragAndDropPreview(nodes);\n event.dataTransfer?.setDragImage(image, -10, -10);\n },\n onDragEnd() {\n this.draggingStore.reset();\n this.dragover = false;\n logger.debug('Drag ended');\n },\n async onDrop(event) {\n // skip if native drop like text drag and drop from files names\n if (!this.draggingFiles && !event.dataTransfer?.items?.length) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n // Caching the selection\n const selection = this.draggingFiles;\n const items = [...event.dataTransfer?.items || []];\n // We need to process the dataTransfer ASAP before the\n // browser clears it. This is why we cache the items too.\n const fileTree = await dataTransferToFileTree(items);\n // We might not have the target directory fetched yet\n const contents = await this.currentView?.getContents(this.source.path);\n const folder = contents?.folder;\n if (!folder) {\n showError(this.t('files', 'Target folder does not exist any more'));\n return;\n }\n // If another button is pressed, cancel it. This\n // allows cancelling the drag with the right click.\n if (!this.canDrop || event.button) {\n return;\n }\n const isCopy = event.ctrlKey;\n this.dragover = false;\n logger.debug('Dropped', { event, folder, selection, fileTree });\n // Check whether we're uploading files\n if (fileTree.contents.length > 0) {\n await onDropExternalFiles(fileTree, folder, contents.contents);\n return;\n }\n // Else we're moving/copying files\n const nodes = selection.map(source => this.filesStore.getNode(source));\n await onDropInternalFiles(nodes, folder, contents.contents, isCopy);\n // Reset selection after we dropped the files\n // if the dropped files are within the selection\n if (selection.some(source => this.selectedFiles.includes(source))) {\n logger.debug('Dropped selection, resetting select store...');\n this.selectionStore.reset();\n }\n },\n t,\n },\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * Simple non-secure hashing function similar to Java's `hashCode`\n * @param str The string to hash\n * @return {number} a non secure hash of the string\n */\nexport const hashCode = function (str) {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash = ((hash << 5) - hash + str.charCodeAt(i)) | 0;\n }\n return (hash >>> 0);\n};\n","import { Permission } from '@nextcloud/files';\n/**\n * Check permissions on the node if it can be downloaded\n * @param node The node to check\n * @return True if downloadable, false otherwise\n */\nexport function isDownloadable(node) {\n if ((node.permissions & Permission.READ) === 0) {\n return false;\n }\n // If the mount type is a share, ensure it got download permissions.\n if (node.attributes['share-attributes']) {\n const shareAttributes = JSON.parse(node.attributes['share-attributes'] || '[]');\n const downloadAttribute = shareAttributes.find(({ scope, key }) => scope === 'permissions' && key === 'download');\n if (downloadAttribute !== undefined) {\n return downloadAttribute.value === true;\n }\n }\n return true;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomElementRender.vue?vue&type=template&id=7b30c709\"\nimport script from \"./CustomElementRender.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomElementRender.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('td',{staticClass:\"files-list__row-actions\",attrs:{\"data-cy-files-list-row-actions\":\"\"}},[_vm._l((_vm.enabledRenderActions),function(action){return _c('CustomElementRender',{key:action.id,staticClass:\"files-list__row-action--inline\",class:'files-list__row-action-' + action.id,attrs:{\"current-view\":_vm.currentView,\"render\":action.renderInline,\"source\":_vm.source}})}),_vm._v(\" \"),_c('NcActions',{ref:\"actionsMenu\",attrs:{\"boundaries-element\":_vm.getBoundariesElement,\"container\":_vm.getBoundariesElement,\"force-name\":true,\"type\":\"tertiary\",\"force-menu\":_vm.enabledInlineActions.length === 0 /* forceMenu only if no inline actions */,\"inline\":_vm.enabledInlineActions.length,\"open\":_vm.openedMenu},on:{\"update:open\":function($event){_vm.openedMenu=$event},\"close\":function($event){_vm.openedSubmenu = null}}},[_vm._l((_vm.enabledMenuActions),function(action){return _c('NcActionButton',{key:action.id,ref:`action-${action.id}`,refInFor:true,class:{\n\t\t\t\t[`files-list__row-action-${action.id}`]: true,\n\t\t\t\t[`files-list__row-action--menu`]: _vm.isMenu(action.id)\n\t\t\t},attrs:{\"close-after-click\":!_vm.isMenu(action.id),\"data-cy-files-list-row-action\":action.id,\"is-menu\":_vm.isMenu(action.id),\"aria-label\":action.title?.([_vm.source], _vm.currentView),\"title\":action.title?.([_vm.source], _vm.currentView)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline([_vm.source], _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.mountType === 'shared' && action.id === 'sharing-status' ? '' : _vm.actionDisplayName(action))+\"\\n\\t\\t\")])}),_vm._v(\" \"),(_vm.openedSubmenu && _vm.enabledSubmenuActions[_vm.openedSubmenu?.id])?[_c('NcActionButton',{staticClass:\"files-list__row-action-back\",on:{\"click\":function($event){return _vm.onBackToMenuClick(_vm.openedSubmenu)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowLeftIcon')]},proxy:true}],null,false,3001860362)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(_vm.openedSubmenu))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.enabledSubmenuActions[_vm.openedSubmenu?.id]),function(action){return _c('NcActionButton',{key:action.id,staticClass:\"files-list__row-action--submenu\",class:`files-list__row-action-${action.id}`,attrs:{\"close-after-click\":\"\",\"data-cy-files-list-row-action\":action.id,\"title\":action.title?.([_vm.source], _vm.currentView)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline([_vm.source], _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\\t\")])})]:_vm._e()],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon arrow-left-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ArrowLeftIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ArrowLeft.vue?vue&type=template&id=16833c02\"\nimport script from \"./ArrowLeft.vue?vue&type=script&lang=js\"\nexport * from \"./ArrowLeft.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon arrow-left-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=0&id=1d682792&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=0&id=1d682792&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=1&id=1d682792&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=1&id=1d682792&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntryActions.vue?vue&type=template&id=1d682792&scoped=true\"\nimport script from \"./FileEntryActions.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryActions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FileEntryActions.vue?vue&type=style&index=0&id=1d682792&prod&lang=scss\"\nimport style1 from \"./FileEntryActions.vue?vue&type=style&index=1&id=1d682792&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d682792\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryCheckbox.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryCheckbox.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('td',{staticClass:\"files-list__row-checkbox\",on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.resetSelection.apply(null, arguments)}}},[(_vm.isLoading)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.loadingLabel}}):_c('NcCheckboxRadioSwitch',{attrs:{\"aria-label\":_vm.ariaLabel,\"checked\":_vm.isSelected,\"data-cy-files-list-row-checkbox\":\"\"},on:{\"update:checked\":_vm.onSelectionChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\n/**\n * Observe various events and save the current\n * special keys states. Useful for checking the\n * current status of a key when executing a method.\n * @param {...any} args\n */\nexport const useKeyboardStore = function (...args) {\n const store = defineStore('keyboard', {\n state: () => ({\n altKey: false,\n ctrlKey: false,\n metaKey: false,\n shiftKey: false,\n }),\n actions: {\n onEvent(event) {\n if (!event) {\n event = window.event;\n }\n Vue.set(this, 'altKey', !!event.altKey);\n Vue.set(this, 'ctrlKey', !!event.ctrlKey);\n Vue.set(this, 'metaKey', !!event.metaKey);\n Vue.set(this, 'shiftKey', !!event.shiftKey);\n },\n },\n });\n const keyboardStore = store(...args);\n // Make sure we only register the listeners once\n if (!keyboardStore._initialized) {\n window.addEventListener('keydown', keyboardStore.onEvent);\n window.addEventListener('keyup', keyboardStore.onEvent);\n window.addEventListener('mousemove', keyboardStore.onEvent);\n keyboardStore._initialized = true;\n }\n return keyboardStore;\n};\n","import { render, staticRenderFns } from \"./FileEntryCheckbox.vue?vue&type=template&id=ecdbc20a\"\nimport script from \"./FileEntryCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryCheckbox.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.isRenaming)?_c('form',{directives:[{name:\"on-click-outside\",rawName:\"v-on-click-outside\",value:(_vm.onRename),expression:\"onRename\"}],ref:\"renameForm\",staticClass:\"files-list__row-rename\",attrs:{\"aria-label\":_vm.t('files', 'Rename file')},on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onRename.apply(null, arguments)}}},[_c('NcTextField',{ref:\"renameInput\",attrs:{\"label\":_vm.renameLabel,\"autofocus\":true,\"minlength\":1,\"required\":true,\"value\":_vm.newName,\"enterkeyhint\":\"done\"},on:{\"update:value\":function($event){_vm.newName=$event},\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.stopRenaming.apply(null, arguments)}}})],1):_c(_vm.linkTo.is,_vm._b({ref:\"basename\",tag:\"component\",staticClass:\"files-list__row-name-link\",attrs:{\"aria-hidden\":_vm.isRenaming,\"data-cy-files-list-row-name-link\":\"\"}},'component',_vm.linkTo.params,false),[_c('span',{staticClass:\"files-list__row-name-text\",attrs:{\"dir\":\"auto\"}},[_c('span',{staticClass:\"files-list__row-name-\",domProps:{\"textContent\":_vm._s(_vm.basename)}}),_vm._v(\" \"),_c('span',{staticClass:\"files-list__row-name-ext\",domProps:{\"textContent\":_vm._s(_vm.extension)}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { InvalidFilenameError, InvalidFilenameErrorReason, validateFilename } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\n/**\n * Get the validity of a filename (empty if valid).\n * This can be used for `setCustomValidity` on input elements\n * @param name The filename\n * @param escape Escape the matched string in the error (only set when used in HTML)\n */\nexport function getFilenameValidity(name, escape = false) {\n if (name.trim() === '') {\n return t('files', 'Filename must not be empty.');\n }\n try {\n validateFilename(name);\n return '';\n }\n catch (error) {\n if (!(error instanceof InvalidFilenameError)) {\n throw error;\n }\n switch (error.reason) {\n case InvalidFilenameErrorReason.Character:\n return t('files', '\"{char}\" is not allowed inside a filename.', { char: error.segment }, undefined, { escape });\n case InvalidFilenameErrorReason.ReservedName:\n return t('files', '\"{segment}\" is a reserved name and not allowed for filenames.', { segment: error.segment }, undefined, { escape: false });\n case InvalidFilenameErrorReason.Extension:\n if (error.segment.match(/\\.[a-z]/i)) {\n return t('files', '\"{extension}\" is not an allowed filetype.', { extension: error.segment }, undefined, { escape: false });\n }\n return t('files', 'Filenames must not end with \"{extension}\".', { extension: error.segment }, undefined, { escape: false });\n default:\n return t('files', 'Invalid filename.');\n }\n }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=style&index=0&id=ce4c1580&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=style&index=0&id=ce4c1580&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntryName.vue?vue&type=template&id=ce4c1580&scoped=true\"\nimport script from \"./FileEntryName.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryName.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FileEntryName.vue?vue&type=style&index=0&id=ce4c1580&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ce4c1580\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"files-list__row-icon\"},[(_vm.source.type === 'folder')?[(_vm.dragover)?_vm._m(0):[_vm._m(1),_vm._v(\" \"),(_vm.folderOverlay)?_c(_vm.folderOverlay,{tag:\"OverlayIcon\",staticClass:\"files-list__row-icon-overlay\"}):_vm._e()]]:(_vm.previewUrl)?_c('span',{staticClass:\"files-list__row-icon-preview-container\"},[(_vm.hasBlurhash && (_vm.backgroundFailed === true || !_vm.backgroundLoaded))?_c('canvas',{ref:\"canvas\",staticClass:\"files-list__row-icon-blurhash\",attrs:{\"aria-hidden\":\"true\"}}):_vm._e(),_vm._v(\" \"),(_vm.backgroundFailed !== true)?_c('img',{ref:\"previewImg\",staticClass:\"files-list__row-icon-preview\",class:{'files-list__row-icon-preview--loaded': _vm.backgroundFailed === false},attrs:{\"alt\":\"\",\"loading\":\"lazy\",\"src\":_vm.previewUrl},on:{\"error\":_vm.onBackgroundError,\"load\":_vm.onBackgroundLoad}}):_vm._e()]):_vm._m(2),_vm._v(\" \"),(_vm.isFavorite)?_c('span',{staticClass:\"files-list__row-icon-favorite\"},[_vm._m(3)],1):_vm._e(),_vm._v(\" \"),(_vm.fileOverlay)?_c(_vm.fileOverlay,{tag:\"OverlayIcon\",staticClass:\"files-list__row-icon-overlay files-list__row-icon-overlay--file\"}):_vm._e()],2)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FolderOpenIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FolderIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FileIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FavoriteIcon')\n}]\n\nexport { render, staticRenderFns }","var q=[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"I\",\"J\",\"K\",\"L\",\"M\",\"N\",\"O\",\"P\",\"Q\",\"R\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\",\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\",\"k\",\"l\",\"m\",\"n\",\"o\",\"p\",\"q\",\"r\",\"s\",\"t\",\"u\",\"v\",\"w\",\"x\",\"y\",\"z\",\"#\",\"$\",\"%\",\"*\",\"+\",\",\",\"-\",\".\",\":\",\";\",\"=\",\"?\",\"@\",\"[\",\"]\",\"^\",\"_\",\"{\",\"|\",\"}\",\"~\"],x=t=>{let e=0;for(let r=0;r<t.length;r++){let n=t[r],l=q.indexOf(n);e=e*83+l}return e},p=(t,e)=>{var r=\"\";for(let n=1;n<=e;n++){let l=Math.floor(t)/Math.pow(83,e-n)%83;r+=q[Math.floor(l)]}return r};var f=t=>{let e=t/255;return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},h=t=>{let e=Math.max(0,Math.min(1,t));return e<=.0031308?Math.trunc(e*12.92*255+.5):Math.trunc((1.055*Math.pow(e,.4166666666666667)-.055)*255+.5)},F=t=>t<0?-1:1,M=(t,e)=>F(t)*Math.pow(Math.abs(t),e);var d=class extends Error{constructor(e){super(e),this.name=\"ValidationError\",this.message=e}};var C=t=>{if(!t||t.length<6)throw new d(\"The blurhash string must be at least 6 characters\");let e=x(t[0]),r=Math.floor(e/9)+1,n=e%9+1;if(t.length!==4+2*n*r)throw new d(`blurhash length mismatch: length is ${t.length} but it should be ${4+2*n*r}`)},N=t=>{try{C(t)}catch(e){return{result:!1,errorReason:e.message}}return{result:!0}},z=t=>{let e=t>>16,r=t>>8&255,n=t&255;return[f(e),f(r),f(n)]},L=(t,e)=>{let r=Math.floor(t/361),n=Math.floor(t/19)%19,l=t%19;return[M((r-9)/9,2)*e,M((n-9)/9,2)*e,M((l-9)/9,2)*e]},U=(t,e,r,n)=>{C(t),n=n|1;let l=x(t[0]),m=Math.floor(l/9)+1,b=l%9+1,i=(x(t[1])+1)/166,u=new Array(b*m);for(let o=0;o<u.length;o++)if(o===0){let a=x(t.substring(2,6));u[o]=z(a)}else{let a=x(t.substring(4+o*2,6+o*2));u[o]=L(a,i*n)}let c=e*4,s=new Uint8ClampedArray(c*r);for(let o=0;o<r;o++)for(let a=0;a<e;a++){let y=0,B=0,R=0;for(let w=0;w<m;w++)for(let P=0;P<b;P++){let G=Math.cos(Math.PI*a*P/e)*Math.cos(Math.PI*o*w/r),T=u[P+w*b];y+=T[0]*G,B+=T[1]*G,R+=T[2]*G}let V=h(y),I=h(B),E=h(R);s[4*a+0+o*c]=V,s[4*a+1+o*c]=I,s[4*a+2+o*c]=E,s[4*a+3+o*c]=255}return s},j=U;var A=4,D=(t,e,r,n)=>{let l=0,m=0,b=0,g=e*A;for(let u=0;u<e;u++){let c=A*u;for(let s=0;s<r;s++){let o=c+s*g,a=n(u,s);l+=a*f(t[o]),m+=a*f(t[o+1]),b+=a*f(t[o+2])}}let i=1/(e*r);return[l*i,m*i,b*i]},$=t=>{let e=h(t[0]),r=h(t[1]),n=h(t[2]);return(e<<16)+(r<<8)+n},H=(t,e)=>{let r=Math.floor(Math.max(0,Math.min(18,Math.floor(M(t[0]/e,.5)*9+9.5)))),n=Math.floor(Math.max(0,Math.min(18,Math.floor(M(t[1]/e,.5)*9+9.5)))),l=Math.floor(Math.max(0,Math.min(18,Math.floor(M(t[2]/e,.5)*9+9.5))));return r*19*19+n*19+l},O=(t,e,r,n,l)=>{if(n<1||n>9||l<1||l>9)throw new d(\"BlurHash must have between 1 and 9 components\");if(e*r*4!==t.length)throw new d(\"Width and height must match the pixels array\");let m=[];for(let s=0;s<l;s++)for(let o=0;o<n;o++){let a=o==0&&s==0?1:2,y=D(t,e,r,(B,R)=>a*Math.cos(Math.PI*o*B/e)*Math.cos(Math.PI*s*R/r));m.push(y)}let b=m[0],g=m.slice(1),i=\"\",u=n-1+(l-1)*9;i+=p(u,1);let c;if(g.length>0){let s=Math.max(...g.map(a=>Math.max(...a))),o=Math.floor(Math.max(0,Math.min(82,Math.floor(s*166-.5))));c=(o+1)/166,i+=p(o,1)}else c=1,i+=p(0,1);return i+=p($(b),4),g.forEach(s=>{i+=p(H(s,c),2)}),i},S=O;export{d as ValidationError,j as decode,S as encode,N as isBlurhashValid};\n//# sourceMappingURL=index.js.map","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon file-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"FileIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./File.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./File.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./File.vue?vue&type=template&id=0f6b0bb0\"\nimport script from \"./File.vue?vue&type=script&lang=js\"\nexport * from \"./File.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon file-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderOpen.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderOpen.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon folder-open-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"FolderOpenIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./FolderOpen.vue?vue&type=template&id=ae0c5fc0\"\nimport script from \"./FolderOpen.vue?vue&type=script&lang=js\"\nexport * from \"./FolderOpen.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-open-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Key.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Key.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon key-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M7 14C5.9 14 5 13.1 5 12S5.9 10 7 10 9 10.9 9 12 8.1 14 7 14M12.6 10C11.8 7.7 9.6 6 7 6C3.7 6 1 8.7 1 12S3.7 18 7 18C9.6 18 11.8 16.3 12.6 14H16V18H20V14H23V10H12.6Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"KeyIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Key.vue?vue&type=template&id=499b3412\"\nimport script from \"./Key.vue?vue&type=script&lang=js\"\nexport * from \"./Key.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon key-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7 14C5.9 14 5 13.1 5 12S5.9 10 7 10 9 10.9 9 12 8.1 14 7 14M12.6 10C11.8 7.7 9.6 6 7 6C3.7 6 1 8.7 1 12S3.7 18 7 18C9.6 18 11.8 16.3 12.6 14H16V18H20V14H23V10H12.6Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Network.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Network.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon network-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"NetworkIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Network.vue?vue&type=template&id=7bf2ec80\"\nimport script from \"./Network.vue?vue&type=script&lang=js\"\nexport * from \"./Network.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon network-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon tag-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"TagIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Tag.vue?vue&type=template&id=356230e0\"\nimport script from \"./Tag.vue?vue&type=script&lang=js\"\nexport * from \"./Tag.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon tag-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon play-circle-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"PlayCircleIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./PlayCircle.vue?vue&type=template&id=3cc1493c\"\nimport script from \"./PlayCircle.vue?vue&type=script&lang=js\"\nexport * from \"./PlayCircle.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon play-circle-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectivesIcon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectivesIcon.vue?vue&type=script&lang=js\"","<!--\n - SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n -->\n<template>\n\t<span :aria-hidden=\"!title\"\n\t\t:aria-label=\"title\"\n\t\tclass=\"material-design-icon collectives-icon\"\n\t\trole=\"img\"\n\t\tv-bind=\"$attrs\"\n\t\t@click=\"$emit('click', $event)\">\n\t\t<svg :fill=\"fillColor\"\n\t\t\tclass=\"material-design-icon__svg\"\n\t\t\t:width=\"size\"\n\t\t\t:height=\"size\"\n\t\t\tviewBox=\"0 0 16 16\">\n\t\t\t<path d=\"M2.9,8.8c0-1.2,0.4-2.4,1.2-3.3L0.3,6c-0.2,0-0.3,0.3-0.1,0.4l2.7,2.6C2.9,9,2.9,8.9,2.9,8.8z\" />\n\t\t\t<path d=\"M8,3.7c0.7,0,1.3,0.1,1.9,0.4L8.2,0.6c-0.1-0.2-0.3-0.2-0.4,0L6.1,4C6.7,3.8,7.3,3.7,8,3.7z\" />\n\t\t\t<path d=\"M3.7,11.5L3,15.2c0,0.2,0.2,0.4,0.4,0.3l3.3-1.7C5.4,13.4,4.4,12.6,3.7,11.5z\" />\n\t\t\t<path d=\"M15.7,6l-3.7-0.5c0.7,0.9,1.2,2,1.2,3.3c0,0.1,0,0.2,0,0.3l2.7-2.6C15.9,6.3,15.9,6.1,15.7,6z\" />\n\t\t\t<path d=\"M12.3,11.5c-0.7,1.1-1.8,1.9-3,2.2l3.3,1.7c0.2,0.1,0.4-0.1,0.4-0.3L12.3,11.5z\" />\n\t\t\t<path d=\"M9.6,10.1c-0.4,0.5-1,0.8-1.6,0.8c-1.1,0-2-0.9-2.1-2C5.9,7.7,6.8,6.7,8,6.7c0.6,0,1.1,0.3,1.5,0.7 c0.1,0.1,0.1,0.1,0.2,0.1h1.4c0.2,0,0.4-0.2,0.3-0.5c-0.7-1.3-2.1-2.2-3.8-2.1C5.8,5,4.3,6.6,4.1,8.5C4,10.8,5.8,12.7,8,12.7 c1.6,0,2.9-0.9,3.5-2.3c0.1-0.2-0.1-0.4-0.3-0.4H9.9C9.8,10,9.7,10,9.6,10.1z\" />\n\t\t</svg>\n\t</span>\n</template>\n\n<script>\nexport default {\n\tname: 'CollectivesIcon',\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tfillColor: {\n\t\t\ttype: String,\n\t\t\tdefault: 'currentColor',\n\t\t},\n\t\tsize: {\n\t\t\ttype: Number,\n\t\t\tdefault: 24,\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./CollectivesIcon.vue?vue&type=template&id=43528c7c\"\nimport script from \"./CollectivesIcon.vue?vue&type=script&lang=js\"\nexport * from \"./CollectivesIcon.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon collectives-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 16 16\"}},[_c('path',{attrs:{\"d\":\"M2.9,8.8c0-1.2,0.4-2.4,1.2-3.3L0.3,6c-0.2,0-0.3,0.3-0.1,0.4l2.7,2.6C2.9,9,2.9,8.9,2.9,8.8z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M8,3.7c0.7,0,1.3,0.1,1.9,0.4L8.2,0.6c-0.1-0.2-0.3-0.2-0.4,0L6.1,4C6.7,3.8,7.3,3.7,8,3.7z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M3.7,11.5L3,15.2c0,0.2,0.2,0.4,0.4,0.3l3.3-1.7C5.4,13.4,4.4,12.6,3.7,11.5z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M15.7,6l-3.7-0.5c0.7,0.9,1.2,2,1.2,3.3c0,0.1,0,0.2,0,0.3l2.7-2.6C15.9,6.3,15.9,6.1,15.7,6z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M12.3,11.5c-0.7,1.1-1.8,1.9-3,2.2l3.3,1.7c0.2,0.1,0.4-0.1,0.4-0.3L12.3,11.5z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M9.6,10.1c-0.4,0.5-1,0.8-1.6,0.8c-1.1,0-2-0.9-2.1-2C5.9,7.7,6.8,6.7,8,6.7c0.6,0,1.1,0.3,1.5,0.7 c0.1,0.1,0.1,0.1,0.2,0.1h1.4c0.2,0,0.4-0.2,0.3-0.5c-0.7-1.3-2.1-2.2-3.8-2.1C5.8,5,4.3,6.6,4.1,8.5C4,10.8,5.8,12.7,8,12.7 c1.6,0,2.9-0.9,3.5-2.3c0.1-0.2-0.1-0.4-0.3-0.4H9.9C9.8,10,9.7,10,9.6,10.1z\"}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcIconSvgWrapper',{staticClass:\"favorite-marker-icon\",attrs:{\"name\":_vm.t('files', 'Favorite'),\"svg\":_vm.StarSvg}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=style&index=0&id=f2d0cf6e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=style&index=0&id=f2d0cf6e&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FavoriteIcon.vue?vue&type=template&id=f2d0cf6e&scoped=true\"\nimport script from \"./FavoriteIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./FavoriteIcon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FavoriteIcon.vue?vue&type=style&index=0&id=f2d0cf6e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f2d0cf6e\",\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Node, registerDavProperty } from '@nextcloud/files';\n/**\n *\n */\nexport function initLivePhotos() {\n registerDavProperty('nc:metadata-files-live-photo', { nc: 'http://nextcloud.org/ns' });\n}\n/**\n * @param {Node} node - The node\n */\nexport function isLivePhoto(node) {\n return node.attributes['metadata-files-live-photo'] !== undefined;\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryPreview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryPreview.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntryPreview.vue?vue&type=template&id=d02c9e3e\"\nimport script from \"./FileEntryPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryPreview.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntry.vue?vue&type=template&id=9d5f84c6\"\nimport script from \"./FileEntry.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntry.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryGrid.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryGrid.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"files-list__row\",class:{'files-list__row--active': _vm.isActive, 'files-list__row--dragover': _vm.dragover, 'files-list__row--loading': _vm.isLoading},attrs:{\"data-cy-files-list-row\":\"\",\"data-cy-files-list-row-fileid\":_vm.fileid,\"data-cy-files-list-row-name\":_vm.source.basename,\"draggable\":_vm.canDrag},on:{\"contextmenu\":_vm.onRightClick,\"dragover\":_vm.onDragOver,\"dragleave\":_vm.onDragLeave,\"dragstart\":_vm.onDragStart,\"dragend\":_vm.onDragEnd,\"drop\":_vm.onDrop}},[(_vm.isFailedSource)?_c('span',{staticClass:\"files-list__row--failed\"}):_vm._e(),_vm._v(\" \"),_c('FileEntryCheckbox',{attrs:{\"fileid\":_vm.fileid,\"is-loading\":_vm.isLoading,\"nodes\":_vm.nodes,\"source\":_vm.source}}),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\",attrs:{\"data-cy-files-list-row-name\":\"\"}},[_c('FileEntryPreview',{ref:\"preview\",attrs:{\"dragover\":_vm.dragover,\"grid-mode\":true,\"source\":_vm.source},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}}),_vm._v(\" \"),_c('FileEntryName',{ref:\"name\",attrs:{\"basename\":_vm.basename,\"extension\":_vm.extension,\"grid-mode\":true,\"nodes\":_vm.nodes,\"source\":_vm.source},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}})],1),_vm._v(\" \"),(!_vm.compact && _vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__row-mtime\",style:(_vm.mtimeOpacity),attrs:{\"data-cy-files-list-row-mtime\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[(_vm.source.mtime)?_c('NcDateTime',{attrs:{\"timestamp\":_vm.source.mtime,\"ignore-seconds\":true}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('FileEntryActions',{ref:\"actions\",class:`files-list__row-actions-${_vm.uniqueId}`,attrs:{\"grid-mode\":true,\"loading\":_vm.loading,\"opened\":_vm.openedMenu,\"source\":_vm.source},on:{\"update:loading\":function($event){_vm.loading=$event},\"update:opened\":function($event){_vm.openedMenu=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FileEntryGrid.vue?vue&type=template&id=04b0dc5e\"\nimport script from \"./FileEntryGrid.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryGrid.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.enabled),expression:\"enabled\"}],class:`files-list__header-${_vm.header.id}`},[_c('span',{ref:\"mount\"})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesListHeader.vue?vue&type=template&id=33e2173e\"\nimport script from \"./FilesListHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListHeader.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',[_c('th',{staticClass:\"files-list__row-checkbox\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('files', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\"},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.summary))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-size\"},[_c('span',[_vm._v(_vm._s(_vm.totalSize))])]):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-mtime\"}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column)},[_c('span',[_vm._v(_vm._s(column.summary?.(_vm.nodes, _vm.currentView)))])])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=style&index=0&id=4c69fc7c&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=style&index=0&id=4c69fc7c&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableFooter.vue?vue&type=template&id=4c69fc7c&scoped=true\"\nimport script from \"./FilesListTableFooter.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableFooter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableFooter.vue?vue&type=style&index=0&id=4c69fc7c&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c69fc7c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"files-list__row-head\"},[_c('th',{staticClass:\"files-list__column files-list__row-checkbox\",on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.resetSelection.apply(null, arguments)}}},[_c('NcCheckboxRadioSwitch',_vm._b({attrs:{\"data-cy-files-list-selection-checkbox\":\"\"},on:{\"update:checked\":_vm.onToggleAll}},'NcCheckboxRadioSwitch',_vm.selectAllBind,false))],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__column files-list__row-name files-list__column--sortable\",attrs:{\"aria-sort\":_vm.ariaSortForMode('basename')}},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Name'),\"mode\":\"basename\"}})],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-size\",class:{ 'files-list__column--sortable': _vm.isSizeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('size')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Size'),\"mode\":\"size\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-mtime\",class:{ 'files-list__column--sortable': _vm.isMtimeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('mtime')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Modified'),\"mode\":\"mtime\"}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column),attrs:{\"aria-sort\":_vm.ariaSortForMode(column.id)}},[(!!column.sort)?_c('FilesListTableHeaderButton',{attrs:{\"name\":column.title,\"mode\":column.id}}):_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(column.title)+\"\\n\\t\\t\")])],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Vue from 'vue';\nimport { mapState } from 'pinia';\nimport { useViewConfigStore } from '../store/viewConfig';\nimport { Navigation, View } from '@nextcloud/files';\nexport default Vue.extend({\n computed: {\n ...mapState(useViewConfigStore, ['getConfig', 'setSortingBy', 'toggleSortingDirection']),\n currentView() {\n return this.$navigation.active;\n },\n /**\n * Get the sorting mode for the current view\n */\n sortingMode() {\n return this.getConfig(this.currentView.id)?.sorting_mode\n || this.currentView?.defaultSortKey\n || 'basename';\n },\n /**\n * Get the sorting direction for the current view\n */\n isAscSorting() {\n const sortingDirection = this.getConfig(this.currentView.id)?.sorting_direction;\n return sortingDirection !== 'desc';\n },\n },\n methods: {\n toggleSortBy(key) {\n // If we're already sorting by this key, flip the direction\n if (this.sortingMode === key) {\n this.toggleSortingDirection(this.currentView.id);\n return;\n }\n // else sort ASC by this new key\n this.setSortingBy(key, this.currentView.id);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcButton',{class:['files-list__column-sort-button', {\n\t\t'files-list__column-sort-button--active': _vm.sortingMode === _vm.mode,\n\t\t'files-list__column-sort-button--size': _vm.sortingMode === 'size',\n\t}],attrs:{\"alignment\":_vm.mode === 'size' ? 'end' : 'start-reverse',\"type\":\"tertiary\",\"title\":_vm.name},on:{\"click\":function($event){return _vm.toggleSortBy(_vm.mode)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.sortingMode !== _vm.mode || _vm.isAscSorting)?_c('MenuUp',{staticClass:\"files-list__column-sort-button-icon\"}):_c('MenuDown',{staticClass:\"files-list__column-sort-button-icon\"})]},proxy:true}])},[_vm._v(\" \"),_c('span',{staticClass:\"files-list__column-sort-button-text\"},[_vm._v(_vm._s(_vm.name))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=6d7680f0&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=6d7680f0&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeaderButton.vue?vue&type=template&id=6d7680f0&scoped=true\"\nimport script from \"./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=6d7680f0&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d7680f0\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=style&index=0&id=4daa9603&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=style&index=0&id=4daa9603&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeader.vue?vue&type=template&id=4daa9603&scoped=true\"\nimport script from \"./FilesListTableHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeader.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeader.vue?vue&type=style&index=0&id=4daa9603&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4daa9603\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list\",attrs:{\"data-cy-files-list\":\"\"}},[_c('div',{ref:\"before\",staticClass:\"files-list__before\"},[_vm._t(\"before\")],2),_vm._v(\" \"),_c('div',{staticClass:\"files-list__filters\"},[_vm._t(\"filters\")],2),_vm._v(\" \"),(!!_vm.$scopedSlots['header-overlay'])?_c('div',{staticClass:\"files-list__thead-overlay\"},[_vm._t(\"header-overlay\")],2):_vm._e(),_vm._v(\" \"),_c('table',{staticClass:\"files-list__table\",class:{ 'files-list__table--with-thead-overlay': !!_vm.$scopedSlots['header-overlay'] }},[(_vm.caption)?_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.caption)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('thead',{ref:\"thead\",staticClass:\"files-list__thead\",attrs:{\"data-cy-files-list-thead\":\"\"}},[_vm._t(\"header\")],2),_vm._v(\" \"),_c('tbody',{staticClass:\"files-list__tbody\",class:_vm.gridMode ? 'files-list__tbody--grid' : 'files-list__tbody--list',style:(_vm.tbodyStyle),attrs:{\"data-cy-files-list-tbody\":\"\"}},_vm._l((_vm.renderedItems),function({key, item},i){return _c(_vm.dataComponent,_vm._b({key:key,tag:\"component\",attrs:{\"source\":item,\"index\":i}},'component',_vm.extraProps,false))}),1),_vm._v(\" \"),_c('tfoot',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isReady),expression:\"isReady\"}],staticClass:\"files-list__tfoot\",attrs:{\"data-cy-files-list-tfoot\":\"\"}},[_vm._t(\"footer\")],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VirtualList.vue?vue&type=template&id=e96cc0ac\"\nimport script from \"./VirtualList.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualList.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list__column files-list__row-actions-batch\",attrs:{\"data-cy-files-list-selection-actions\":\"\"}},[_c('NcActions',{ref:\"actionsMenu\",attrs:{\"container\":\"#app-content-vue\",\"disabled\":!!_vm.loading || _vm.areSomeNodesLoading,\"force-name\":true,\"inline\":_vm.inlineActions,\"menu-name\":_vm.inlineActions <= 1 ? _vm.t('files', 'Actions') : null,\"open\":_vm.openedMenu},on:{\"update:open\":function($event){_vm.openedMenu=$event}}},_vm._l((_vm.enabledActions),function(action){return _c('NcActionButton',{key:action.id,class:'files-list__row-actions-batch-' + action.id,attrs:{\"aria-label\":action.displayName(_vm.nodes, _vm.currentView) + ' ' + _vm.t('files', '(selected)') /** TRANSLATORS: Selected like 'selected files and folders' */,\"data-cy-files-list-selection-action\":action.id},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.nodes, _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(action.displayName(_vm.nodes, _vm.currentView))+\"\\n\\t\\t\")])}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=6c741170&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=6c741170&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeaderActions.vue?vue&type=template&id=6c741170&scoped=true\"\nimport script from \"./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=6c741170&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6c741170\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"file-list-filters\"},[_c('div',{staticClass:\"file-list-filters__filter\",attrs:{\"data-cy-files-filters\":\"\"}},_vm._l((_setup.visualFilters),function(filter){return _c('span',{key:filter.id,ref:\"filterElements\",refInFor:true})}),0),_vm._v(\" \"),(_setup.activeChips.length > 0)?_c('ul',{staticClass:\"file-list-filters__active\",attrs:{\"aria-label\":_setup.t('files', 'Active filters')}},_vm._l((_setup.activeChips),function(chip,index){return _c('li',{key:index},[_c(_setup.NcChip,{attrs:{\"aria-label-close\":_setup.t('files', 'Remove filter'),\"icon-svg\":chip.icon,\"text\":chip.text},on:{\"close\":chip.onclick},scopedSlots:_vm._u([(chip.user)?{key:\"icon\",fn:function(){return [_c(_setup.NcAvatar,{attrs:{\"disable-menu\":\"\",\"show-user-status\":false,\"size\":24,\"user\":chip.user}})]},proxy:true}:null],null,true)})],1)}),0):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=style&index=0&id=bd0c8440&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=style&index=0&id=bd0c8440&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileListFilters.vue?vue&type=template&id=bd0c8440&scoped=true\"\nimport script from \"./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FileListFilters.vue?vue&type=style&index=0&id=bd0c8440&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bd0c8440\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('VirtualList',{ref:\"table\",attrs:{\"data-component\":_vm.userConfig.grid_view ? _vm.FileEntryGrid : _vm.FileEntry,\"data-key\":'source',\"data-sources\":_vm.nodes,\"grid-mode\":_vm.userConfig.grid_view,\"extra-props\":{\n\t\tisMtimeAvailable: _vm.isMtimeAvailable,\n\t\tisSizeAvailable: _vm.isSizeAvailable,\n\t\tnodes: _vm.nodes,\n\t\tfileListWidth: _vm.fileListWidth,\n\t},\"scroll-to-index\":_vm.scrollToIndex,\"caption\":_vm.caption},scopedSlots:_vm._u([{key:\"filters\",fn:function(){return [_c('FileListFilters')]},proxy:true},(!_vm.isNoneSelected)?{key:\"header-overlay\",fn:function(){return [_c('span',{staticClass:\"files-list__selected\"},[_vm._v(_vm._s(_vm.t('files', '{count} selected', { count: _vm.selectedNodes.length })))]),_vm._v(\" \"),_c('FilesListTableHeaderActions',{attrs:{\"current-view\":_vm.currentView,\"selected-nodes\":_vm.selectedNodes}})]},proxy:true}:null,{key:\"before\",fn:function(){return _vm._l((_vm.sortedHeaders),function(header){return _c('FilesListHeader',{key:header.id,attrs:{\"current-folder\":_vm.currentFolder,\"current-view\":_vm.currentView,\"header\":header}})})},proxy:true},{key:\"header\",fn:function(){return [_c('FilesListTableHeader',{ref:\"thead\",attrs:{\"files-list-width\":_vm.fileListWidth,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes}})]},proxy:true},{key:\"footer\",fn:function(){return [_c('FilesListTableFooter',{attrs:{\"current-view\":_vm.currentView,\"files-list-width\":_vm.fileListWidth,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes,\"summary\":_vm.summary}})]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=2c0fe312&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=2c0fe312&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=1&id=2c0fe312&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=1&id=2c0fe312&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListVirtual.vue?vue&type=template&id=2c0fe312&scoped=true\"\nimport script from \"./FilesListVirtual.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListVirtual.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListVirtual.vue?vue&type=style&index=0&id=2c0fe312&prod&scoped=true&lang=scss\"\nimport style1 from \"./FilesListVirtual.vue?vue&type=style&index=1&id=2c0fe312&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2c0fe312\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./TrayArrowDown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./TrayArrowDown.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon tray-arrow-down-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 15L17.55 9.54L16.13 8.13L13 11.25V2H11V11.25L7.88 8.13L6.46 9.55L12 15Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"TrayArrowDownIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./TrayArrowDown.vue?vue&type=template&id=5dbf2618\"\nimport script from \"./TrayArrowDown.vue?vue&type=script&lang=js\"\nexport * from \"./TrayArrowDown.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon tray-arrow-down-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 15L17.55 9.54L16.13 8.13L13 11.25V2H11V11.25L7.88 8.13L6.46 9.55L12 15Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.dragover),expression:\"dragover\"}],staticClass:\"files-list__drag-drop-notice\",attrs:{\"data-cy-files-drag-drop-area\":\"\"},on:{\"drop\":_vm.onDrop}},[_c('div',{staticClass:\"files-list__drag-drop-notice-wrapper\"},[(_vm.canUpload && !_vm.isQuotaExceeded)?[_c('TrayArrowDownIcon',{attrs:{\"size\":48}}),_vm._v(\" \"),_c('h3',{staticClass:\"files-list-drag-drop-notice__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Drag and drop files here to upload'))+\"\\n\\t\\t\\t\")])]:[_c('h3',{staticClass:\"files-list-drag-drop-notice__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.cantUploadLabel)+\"\\n\\t\\t\\t\")])]],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=style&index=0&id=48abd828&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=style&index=0&id=48abd828&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DragAndDropNotice.vue?vue&type=template&id=48abd828&scoped=true\"\nimport script from \"./DragAndDropNotice.vue?vue&type=script&lang=ts\"\nexport * from \"./DragAndDropNotice.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DragAndDropNotice.vue?vue&type=style&index=0&id=48abd828&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"48abd828\",\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { t } from '@nextcloud/l10n';\n/**\n * Whether error is a WebDAVClientError\n * @param error - Any exception\n * @return {boolean} - Whether error is a WebDAVClientError\n */\nfunction isWebDAVClientError(error) {\n return error instanceof Error && 'status' in error && 'response' in error;\n}\n/**\n * Get a localized error message from webdav request\n * @param error - An exception from webdav request\n * @return {string} Localized error message for end user\n */\nexport function humanizeWebDAVError(error) {\n if (error instanceof Error) {\n if (isWebDAVClientError(error)) {\n const status = error.status || error.response?.status || 0;\n if ([400, 404, 405].includes(status)) {\n return t('files', 'Folder not found');\n }\n else if (status === 403) {\n return t('files', 'This operation is forbidden');\n }\n else if (status === 500) {\n return t('files', 'This directory is unavailable, please check the logs or contact the administrator');\n }\n else if (status === 503) {\n return t('files', 'Storage is temporarily not available');\n }\n }\n return t('files', 'Unexpected error: {error}', { error: error.message });\n }\n return t('files', 'Unknown error');\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=53e05d31&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=53e05d31&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesList.vue?vue&type=template&id=53e05d31&scoped=true\"\nimport script from \"./FilesList.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesList.vue?vue&type=style&index=0&id=53e05d31&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"53e05d31\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesApp.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesApp.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FilesApp.vue?vue&type=template&id=43ffc6ca\"\nimport script from \"./FilesApp.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesApp.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { getNavigation } from '@nextcloud/files';\nimport { PiniaVuePlugin } from 'pinia';\nimport Vue from 'vue';\nimport { pinia } from './store/index.ts';\nimport router from './router/router';\nimport RouterService from './services/RouterService';\nimport SettingsModel from './models/Setting.js';\nimport SettingsService from './services/Settings.js';\nimport FilesApp from './FilesApp.vue';\n__webpack_nonce__ = getCSPNonce();\n// Init private and public Files namespace\nwindow.OCA.Files = window.OCA.Files ?? {};\nwindow.OCP.Files = window.OCP.Files ?? {};\n// Expose router\nif (!window.OCP.Files.Router) {\n const Router = new RouterService(router);\n Object.assign(window.OCP.Files, { Router });\n}\n// Init Pinia store\nVue.use(PiniaVuePlugin);\n// Init Navigation Service\n// This only works with Vue 2 - with Vue 3 this will not modify the source but return just a observer\nconst Navigation = Vue.observable(getNavigation());\nVue.prototype.$navigation = Navigation;\n// Init Files App Settings Service\nconst Settings = new SettingsService();\nObject.assign(window.OCA.Files, { Settings });\nObject.assign(window.OCA.Files.Settings, { Setting: SettingsModel });\nconst FilesAppVue = Vue.extend(FilesApp);\nnew FilesAppVue({\n router: window.OCP.Files.Router._router,\n pinia,\n}).$mount('#content');\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default class Settings {\n\n\t_settings\n\n\tconstructor() {\n\t\tthis._settings = []\n\t\tconsole.debug('OCA.Files.Settings initialized')\n\t}\n\n\t/**\n\t * Register a new setting\n\t *\n\t * @since 19.0.0\n\t * @param {OCA.Files.Settings.Setting} view element to add to settings\n\t * @return {boolean} whether registering was successful\n\t */\n\tregister(view) {\n\t\tif (this._settings.filter(e => e.name === view.name).length > 0) {\n\t\t\tconsole.error('A setting with the same name is already registered')\n\t\t\treturn false\n\t\t}\n\t\tthis._settings.push(view)\n\t\treturn true\n\t}\n\n\t/**\n\t * All settings elements\n\t *\n\t * @return {OCA.Files.Settings.Setting[]} All currently registered settings\n\t */\n\tget settings() {\n\t\treturn this._settings\n\t}\n\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default class Setting {\n\n\t_close\n\t_el\n\t_name\n\t_open\n\n\t/**\n\t * Create a new files app setting\n\t *\n\t * @since 19.0.0\n\t * @param {string} name the name of this setting\n\t * @param {object} component the component\n\t * @param {Function} component.el function that returns an unmounted dom element to be added\n\t * @param {Function} [component.open] callback for when setting is added\n\t * @param {Function} [component.close] callback for when setting is closed\n\t */\n\tconstructor(name, { el, open, close }) {\n\t\tthis._name = name\n\t\tthis._el = el\n\t\tthis._open = open\n\t\tthis._close = close\n\n\t\tif (typeof this._open !== 'function') {\n\t\t\tthis._open = () => {}\n\t\t}\n\n\t\tif (typeof this._close !== 'function') {\n\t\t\tthis._close = () => {}\n\t\t}\n\t}\n\n\tget name() {\n\t\treturn this._name\n\t}\n\n\tget el() {\n\t\treturn this._el\n\t}\n\n\tget open() {\n\t\treturn this._open\n\t}\n\n\tget close() {\n\t\treturn this._close\n\t}\n\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__breadcrumbs[data-v-61601fd4]{flex:1 1 100% !important;width:100%;height:100%;margin-block:0;margin-inline:10px;min-width:0}.files-list__breadcrumbs[data-v-61601fd4] a{cursor:pointer !important}.files-list__breadcrumbs--with-progress[data-v-61601fd4]{flex-direction:column !important;align-items:flex-start !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/BreadCrumbs.vue\"],\"names\":[],\"mappings\":\"AACA,0CAEC,wBAAA,CACA,UAAA,CACA,WAAA,CACA,cAAA,CACA,kBAAA,CACA,WAAA,CAGC,6CACC,yBAAA,CAIF,yDACC,gCAAA,CACA,iCAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__drag-drop-notice[data-v-48abd828]{display:flex;align-items:center;justify-content:center;width:100%;min-height:113px;margin:0;user-select:none;color:var(--color-text-maxcontrast);background-color:var(--color-main-background);border-color:#000}.files-list__drag-drop-notice h3[data-v-48abd828]{margin-inline-start:16px;color:inherit}.files-list__drag-drop-notice-wrapper[data-v-48abd828]{display:flex;align-items:center;justify-content:center;height:15vh;max-height:70%;padding:0 5vw;border:2px var(--color-border-dark) dashed;border-radius:var(--border-radius-large)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/DragAndDropNotice.vue\"],\"names\":[],\"mappings\":\"AACA,+CACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CAEA,gBAAA,CACA,QAAA,CACA,gBAAA,CACA,mCAAA,CACA,6CAAA,CACA,iBAAA,CAEA,kDACC,wBAAA,CACA,aAAA,CAGD,uDACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,WAAA,CACA,cAAA,CACA,aAAA,CACA,0CAAA,CACA,wCAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list-drag-image{position:absolute;top:-9999px;inset-inline-start:-9999px;display:flex;overflow:hidden;align-items:center;height:44px;padding:6px 12px;background:var(--color-main-background)}.files-list-drag-image__icon,.files-list-drag-image .files-list__row-icon{display:flex;overflow:hidden;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--border-radius)}.files-list-drag-image__icon{overflow:visible;margin-inline-end:12px}.files-list-drag-image__icon img{max-width:100%;max-height:100%}.files-list-drag-image__icon .material-design-icon{color:var(--color-text-maxcontrast)}.files-list-drag-image__icon .material-design-icon.folder-icon{color:var(--color-primary-element)}.files-list-drag-image__icon>span{display:flex}.files-list-drag-image__icon>span .files-list__row-icon+.files-list__row-icon{margin-top:6px;margin-inline-start:-26px}.files-list-drag-image__icon>span .files-list__row-icon+.files-list__row-icon+.files-list__row-icon{margin-top:12px}.files-list-drag-image__icon>span:not(:empty)+*{display:none}.files-list-drag-image__name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/DragAndDropPreview.vue\"],\"names\":[],\"mappings\":\"AAIA,uBACC,iBAAA,CACA,WAAA,CACA,0BAAA,CACA,YAAA,CACA,eAAA,CACA,kBAAA,CACA,WAAA,CACA,gBAAA,CACA,uCAAA,CAEA,0EAEC,YAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,kCAAA,CAGD,6BACC,gBAAA,CACA,sBAAA,CAEA,iCACC,cAAA,CACA,eAAA,CAGD,mDACC,mCAAA,CACA,+DACC,kCAAA,CAKF,kCACC,YAAA,CAGA,8EACC,cA9CU,CA+CV,yBAAA,CACA,oGACC,eAAA,CAKF,gDACC,YAAA,CAKH,6BACC,eAAA,CACA,kBAAA,CACA,sBAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.favorite-marker-icon[data-v-f2d0cf6e]{color:var(--color-favorite);min-width:unset !important;min-height:unset !important}.favorite-marker-icon[data-v-f2d0cf6e] svg{width:26px !important;height:26px !important;max-width:unset !important;max-height:unset !important}.favorite-marker-icon[data-v-f2d0cf6e] svg path{stroke:var(--color-main-background);stroke-width:8px;stroke-linejoin:round;paint-order:stroke}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FavoriteIcon.vue\"],\"names\":[],\"mappings\":\"AACA,uCACC,2BAAA,CAEA,0BAAA,CACG,2BAAA,CAGF,4CAEC,qBAAA,CACA,sBAAA,CAGA,0BAAA,CACA,2BAAA,CAGA,iDACC,mCAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `main.app-content[style*=mouse-pos-x] .v-popper__popper{transform:translate3d(var(--mouse-pos-x), var(--mouse-pos-y), 0px) !important}main.app-content[style*=mouse-pos-x] .v-popper__popper[data-popper-placement=top]{transform:translate3d(var(--mouse-pos-x), calc(var(--mouse-pos-y) - 50vh + 34px), 0px) !important}main.app-content[style*=mouse-pos-x] .v-popper__popper .v-popper__arrow-container{display:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue\"],\"names\":[],\"mappings\":\"AAGA,uDACC,6EAAA,CAGA,kFAEC,iGAAA,CAGD,kFACC,YAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `[data-v-1d682792] .button-vue--icon-and-text .button-vue__text{color:var(--color-primary-element)}[data-v-1d682792] .button-vue--icon-and-text .button-vue__icon{color:var(--color-primary-element)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue\"],\"names\":[],\"mappings\":\"AAEC,+DACC,kCAAA,CAED,+DACC,kCAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `button.files-list__row-name-link[data-v-ce4c1580]{background-color:unset;border:none;font-weight:normal}button.files-list__row-name-link[data-v-ce4c1580]:active{background-color:unset !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryName.vue\"],\"names\":[],\"mappings\":\"AACA,kDACC,sBAAA,CACA,WAAA,CACA,kBAAA,CAEA,yDAEC,iCAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.file-list-filters[data-v-bd0c8440]{display:flex;flex-direction:column;gap:var(--default-grid-baseline);height:100%;width:100%}.file-list-filters__filter[data-v-bd0c8440]{display:flex;align-items:start;justify-content:start;gap:calc(var(--default-grid-baseline, 4px)*2)}.file-list-filters__filter>*[data-v-bd0c8440]{flex:0 1 fit-content}.file-list-filters__active[data-v-bd0c8440]{display:flex;flex-direction:row;gap:calc(var(--default-grid-baseline, 4px)*2)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileListFilters.vue\"],\"names\":[],\"mappings\":\"AACA,oCACC,YAAA,CACA,qBAAA,CACA,gCAAA,CACA,WAAA,CACA,UAAA,CAEA,4CACC,YAAA,CACA,iBAAA,CACA,qBAAA,CACA,6CAAA,CAEA,8CACC,oBAAA,CAIF,4CACC,YAAA,CACA,kBAAA,CACA,6CAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `tr[data-v-4c69fc7c]{margin-bottom:max(25vh,var(--body-container-margin));border-top:1px solid var(--color-border);background-color:rgba(0,0,0,0) !important;border-bottom:none !important}tr td[data-v-4c69fc7c]{user-select:none;color:var(--color-text-maxcontrast) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableFooter.vue\"],\"names\":[],\"mappings\":\"AAEA,oBACC,oDAAA,CACA,wCAAA,CAEA,yCAAA,CACA,6BAAA,CAEA,uBACC,gBAAA,CAEA,8CAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__column[data-v-4daa9603]{user-select:none;color:var(--color-text-maxcontrast) !important}.files-list__column--sortable[data-v-4daa9603]{cursor:pointer}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeader.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,gBAAA,CAEA,8CAAA,CAEA,+CACC,cAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__row-actions-batch[data-v-6c741170]{flex:1 1 100% !important;max-width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeaderActions.vue\"],\"names\":[],\"mappings\":\"AACA,gDACC,wBAAA,CACA,cAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__column-sort-button[data-v-6d7680f0]{margin:0 calc(var(--button-padding, var(--cell-margin))*-1);min-width:calc(100% - 3*var(--cell-margin)) !important}.files-list__column-sort-button-text[data-v-6d7680f0]{color:var(--color-text-maxcontrast);font-weight:normal}.files-list__column-sort-button-icon[data-v-6d7680f0]{color:var(--color-text-maxcontrast);opacity:0;transition:opacity var(--animation-quick);inset-inline-start:-10px}.files-list__column-sort-button--size .files-list__column-sort-button-icon[data-v-6d7680f0]{inset-inline-start:10px}.files-list__column-sort-button--active .files-list__column-sort-button-icon[data-v-6d7680f0],.files-list__column-sort-button:hover .files-list__column-sort-button-icon[data-v-6d7680f0],.files-list__column-sort-button:focus .files-list__column-sort-button-icon[data-v-6d7680f0],.files-list__column-sort-button:active .files-list__column-sort-button-icon[data-v-6d7680f0]{opacity:1}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeaderButton.vue\"],\"names\":[],\"mappings\":\"AACA,iDAEC,2DAAA,CACA,sDAAA,CAEA,sDACC,mCAAA,CACA,kBAAA,CAGD,sDACC,mCAAA,CACA,SAAA,CACA,yCAAA,CACA,wBAAA,CAGD,4FACC,uBAAA,CAGD,mXAIC,SAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list[data-v-2c0fe312]{--row-height: 55px;--cell-margin: 14px;--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);--checkbox-size: 24px;--clickable-area: var(--default-clickable-area);--icon-preview-size: 32px;--fixed-block-start-position: var(--default-clickable-area);overflow:auto;height:100%;will-change:scroll-position}.files-list[data-v-2c0fe312]:has(.file-list-filters__active){--fixed-block-start-position: calc(var(--default-clickable-area) + var(--default-grid-baseline) + var(--clickable-area-small))}.files-list[data-v-2c0fe312] tbody{will-change:padding;contain:layout paint style;display:flex;flex-direction:column;width:100%;position:relative}.files-list[data-v-2c0fe312] tbody tr{contain:strict}.files-list[data-v-2c0fe312] tbody tr:hover,.files-list[data-v-2c0fe312] tbody tr:focus{background-color:var(--color-background-dark)}.files-list[data-v-2c0fe312] .files-list__before{display:flex;flex-direction:column}.files-list[data-v-2c0fe312] .files-list__selected{padding-inline-end:12px;white-space:nowrap}.files-list[data-v-2c0fe312] .files-list__table{display:block}.files-list[data-v-2c0fe312] .files-list__table.files-list__table--with-thead-overlay{margin-block-start:calc(-1*var(--row-height))}.files-list[data-v-2c0fe312] .files-list__filters{position:sticky;top:0;background-color:var(--color-main-background);z-index:10;padding-inline:var(--row-height) var(--default-grid-baseline, 4px);height:var(--fixed-block-start-position);width:100%}.files-list[data-v-2c0fe312] .files-list__thead-overlay{position:sticky;top:var(--fixed-block-start-position);margin-inline-start:var(--row-height);z-index:20;display:flex;align-items:center;background-color:var(--color-main-background);border-block-end:1px solid var(--color-border);height:var(--row-height)}.files-list[data-v-2c0fe312] .files-list__thead,.files-list[data-v-2c0fe312] .files-list__tfoot{display:flex;flex-direction:column;width:100%;background-color:var(--color-main-background)}.files-list[data-v-2c0fe312] .files-list__thead{position:sticky;z-index:10;top:var(--fixed-block-start-position)}.files-list[data-v-2c0fe312] tr{position:relative;display:flex;align-items:center;width:100%;border-block-end:1px solid var(--color-border);box-sizing:border-box;user-select:none;height:var(--row-height)}.files-list[data-v-2c0fe312] td,.files-list[data-v-2c0fe312] th{display:flex;align-items:center;flex:0 0 auto;justify-content:start;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}.files-list[data-v-2c0fe312] td span,.files-list[data-v-2c0fe312] th span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list[data-v-2c0fe312] .files-list__row--failed{position:absolute;display:block;top:0;inset-inline:0;bottom:0;opacity:.1;z-index:-1;background:var(--color-error)}.files-list[data-v-2c0fe312] .files-list__row-checkbox{justify-content:center}.files-list[data-v-2c0fe312] .files-list__row-checkbox .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list[data-v-2c0fe312] .files-list__row-checkbox .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list[data-v-2c0fe312] .files-list__row-checkbox .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list[data-v-2c0fe312] .files-list__row:hover,.files-list[data-v-2c0fe312] .files-list__row:focus,.files-list[data-v-2c0fe312] .files-list__row:active,.files-list[data-v-2c0fe312] .files-list__row--active,.files-list[data-v-2c0fe312] .files-list__row--dragover{background-color:var(--color-background-hover);--color-text-maxcontrast: var(--color-main-text)}.files-list[data-v-2c0fe312] .files-list__row:hover>*,.files-list[data-v-2c0fe312] .files-list__row:focus>*,.files-list[data-v-2c0fe312] .files-list__row:active>*,.files-list[data-v-2c0fe312] .files-list__row--active>*,.files-list[data-v-2c0fe312] .files-list__row--dragover>*{--color-border: var(--color-border-dark)}.files-list[data-v-2c0fe312] .files-list__row:hover .favorite-marker-icon svg path,.files-list[data-v-2c0fe312] .files-list__row:focus .favorite-marker-icon svg path,.files-list[data-v-2c0fe312] .files-list__row:active .favorite-marker-icon svg path,.files-list[data-v-2c0fe312] .files-list__row--active .favorite-marker-icon svg path,.files-list[data-v-2c0fe312] .files-list__row--dragover .favorite-marker-icon svg path{stroke:var(--color-background-hover)}.files-list[data-v-2c0fe312] .files-list__row--dragover *{pointer-events:none}.files-list[data-v-2c0fe312] .files-list__row-icon{position:relative;display:flex;overflow:visible;align-items:center;flex:0 0 var(--icon-preview-size);justify-content:center;width:var(--icon-preview-size);height:100%;margin-inline-end:var(--checkbox-padding);color:var(--color-primary-element)}.files-list[data-v-2c0fe312] .files-list__row-icon *{cursor:pointer}.files-list[data-v-2c0fe312] .files-list__row-icon>span{justify-content:flex-start}.files-list[data-v-2c0fe312] .files-list__row-icon>span:not(.files-list__row-icon-favorite) svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list[data-v-2c0fe312] .files-list__row-icon>span.folder-icon,.files-list[data-v-2c0fe312] .files-list__row-icon>span.folder-open-icon{margin:-3px}.files-list[data-v-2c0fe312] .files-list__row-icon>span.folder-icon svg,.files-list[data-v-2c0fe312] .files-list__row-icon>span.folder-open-icon svg{width:calc(var(--icon-preview-size) + 6px);height:calc(var(--icon-preview-size) + 6px)}.files-list[data-v-2c0fe312] .files-list__row-icon-preview-container{position:relative;overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius)}.files-list[data-v-2c0fe312] .files-list__row-icon-blurhash{position:absolute;inset-block-start:0;inset-inline-start:0;height:100%;width:100%;object-fit:cover}.files-list[data-v-2c0fe312] .files-list__row-icon-preview{object-fit:contain;object-position:center;height:100%;width:100%}.files-list[data-v-2c0fe312] .files-list__row-icon-preview:not(.files-list__row-icon-preview--loaded){background:var(--color-loading-dark)}.files-list[data-v-2c0fe312] .files-list__row-icon-favorite{position:absolute;top:0px;inset-inline-end:-10px}.files-list[data-v-2c0fe312] .files-list__row-icon-overlay{position:absolute;max-height:calc(var(--icon-preview-size)*.5);max-width:calc(var(--icon-preview-size)*.5);color:var(--color-primary-element-text);margin-block-start:2px}.files-list[data-v-2c0fe312] .files-list__row-icon-overlay--file{color:var(--color-main-text);background:var(--color-main-background);border-radius:100%}.files-list[data-v-2c0fe312] .files-list__row-name{overflow:hidden;flex:1 1 auto}.files-list[data-v-2c0fe312] .files-list__row-name button.files-list__row-name-link{display:flex;align-items:center;text-align:start;width:100%;height:100%;min-width:0;margin:0;padding:0}.files-list[data-v-2c0fe312] .files-list__row-name button.files-list__row-name-link:focus-visible{outline:none !important}.files-list[data-v-2c0fe312] .files-list__row-name button.files-list__row-name-link:focus .files-list__row-name-text{outline:var(--border-width-input-focused) solid var(--color-main-text) !important;border-radius:var(--border-radius-element)}.files-list[data-v-2c0fe312] .files-list__row-name button.files-list__row-name-link:focus:not(:focus-visible) .files-list__row-name-text{outline:none !important}.files-list[data-v-2c0fe312] .files-list__row-name .files-list__row-name-text{color:var(--color-main-text);padding:var(--default-grid-baseline) calc(2*var(--default-grid-baseline));padding-inline-start:-10px;display:inline-flex}.files-list[data-v-2c0fe312] .files-list__row-name .files-list__row-name-ext{color:var(--color-text-maxcontrast);overflow:visible}.files-list[data-v-2c0fe312] .files-list__row-rename{width:100%;max-width:600px}.files-list[data-v-2c0fe312] .files-list__row-rename input{width:100%;margin-inline-start:-8px;padding:2px 6px;border-width:2px}.files-list[data-v-2c0fe312] .files-list__row-rename input:invalid{border-color:var(--color-error);color:red}.files-list[data-v-2c0fe312] .files-list__row-actions{width:auto}.files-list[data-v-2c0fe312] .files-list__row-actions~td,.files-list[data-v-2c0fe312] .files-list__row-actions~th{margin:0 var(--cell-margin)}.files-list[data-v-2c0fe312] .files-list__row-actions button .button-vue__text{font-weight:normal}.files-list[data-v-2c0fe312] .files-list__row-action--inline{margin-inline-end:7px}.files-list[data-v-2c0fe312] .files-list__row-mtime,.files-list[data-v-2c0fe312] .files-list__row-size{color:var(--color-text-maxcontrast)}.files-list[data-v-2c0fe312] .files-list__row-size{width:calc(var(--row-height)*1.5);justify-content:flex-end}.files-list[data-v-2c0fe312] .files-list__row-mtime{width:calc(var(--row-height)*2)}.files-list[data-v-2c0fe312] .files-list__row-column-custom{width:calc(var(--row-height)*2)}@media screen and (max-width: 512px){.files-list[data-v-2c0fe312] .files-list__filters{padding-inline:var(--default-grid-baseline, 4px)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"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\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `tbody.files-list__tbody.files-list__tbody--grid{--half-clickable-area: calc(var(--clickable-area) / 2);--item-padding: 16px;--icon-preview-size: 166px;--name-height: 32px;--mtime-height: 16px;--row-width: calc(var(--icon-preview-size) + var(--item-padding) * 2);--row-height: calc(var(--icon-preview-size) + var(--name-height) + var(--mtime-height) + var(--item-padding) * 2);--checkbox-padding: 0px;display:grid;grid-template-columns:repeat(auto-fill, var(--row-width));align-content:center;align-items:center;justify-content:space-around;justify-items:center}tbody.files-list__tbody.files-list__tbody--grid tr{display:flex;flex-direction:column;width:var(--row-width);height:var(--row-height);border:none;border-radius:var(--border-radius-large);padding:var(--item-padding)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-checkbox{position:absolute;z-index:9;top:calc(var(--item-padding)/2);inset-inline-start:calc(var(--item-padding)/2);overflow:hidden;--checkbox-container-size: 44px;width:var(--checkbox-container-size);height:var(--checkbox-container-size)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-checkbox .checkbox-radio-switch__content::after{content:\"\";width:16px;height:16px;position:absolute;inset-inline-start:50%;margin-inline-start:-8px;z-index:-1;background:var(--color-main-background)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-icon-favorite{position:absolute;top:0;inset-inline-end:0;display:flex;align-items:center;justify-content:center;width:var(--clickable-area);height:var(--clickable-area)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-name{display:flex;flex-direction:column;width:var(--icon-preview-size);height:calc(var(--icon-preview-size) + var(--name-height));overflow:visible}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-name span.files-list__row-icon{width:var(--icon-preview-size);height:var(--icon-preview-size)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-name .files-list__row-name-text{margin:0;margin-inline-start:-4px;padding:0px 4px}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-mtime{width:var(--icon-preview-size);height:var(--mtime-height);font-size:calc(var(--default-font-size) - 4px)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-actions{position:absolute;inset-inline-end:calc(var(--half-clickable-area)/2);inset-block-end:calc(var(--mtime-height)/2);width:var(--clickable-area);height:var(--clickable-area)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"AAEA,gDACC,sDAAA,CACA,oBAAA,CACA,0BAAA,CACA,mBAAA,CACA,oBAAA,CACA,qEAAA,CACA,iHAAA,CACA,uBAAA,CACA,YAAA,CACA,yDAAA,CAEA,oBAAA,CACA,kBAAA,CACA,4BAAA,CACA,oBAAA,CAEA,mDACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,wBAAA,CACA,WAAA,CACA,wCAAA,CACA,2BAAA,CAID,0EACC,iBAAA,CACA,SAAA,CACA,+BAAA,CACA,8CAAA,CACA,eAAA,CACA,+BAAA,CACA,oCAAA,CACA,qCAAA,CAGA,iHACC,UAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,sBAAA,CACA,wBAAA,CACA,UAAA,CACA,uCAAA,CAKF,+EACC,iBAAA,CACA,KAAA,CACA,kBAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,2BAAA,CACA,4BAAA,CAGD,sEACC,YAAA,CACA,qBAAA,CACA,8BAAA,CACA,0DAAA,CAEA,gBAAA,CAEA,gGACC,8BAAA,CACA,+BAAA,CAGD,iGACC,QAAA,CAEA,wBAAA,CACA,eAAA,CAIF,uEACC,8BAAA,CACA,0BAAA,CACA,8CAAA,CAGD,yEACC,iBAAA,CACA,mDAAA,CACA,2CAAA,CACA,2BAAA,CACA,4BAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-navigation-entry__settings-quota[data-v-6ed9379e]{--app-navigation-quota-margin: calc((var(--default-clickable-area) - 24px) / 2)}.app-navigation-entry__settings-quota--not-unlimited[data-v-6ed9379e] .app-navigation-entry__name{line-height:1;margin-top:var(--app-navigation-quota-margin)}.app-navigation-entry__settings-quota progress[data-v-6ed9379e]{position:absolute;bottom:var(--app-navigation-quota-margin);margin-inline-start:var(--default-clickable-area);width:calc(100% - 1.5*var(--default-clickable-area))}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/NavigationQuota.vue\"],\"names\":[],\"mappings\":\"AAEA,uDAEC,+EAAA,CAEA,kGACC,aAAA,CACA,6CAAA,CAGD,gEACC,iBAAA,CACA,yCAAA,CACA,iDAAA,CACA,oDAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.toast-loading-icon{margin-inline-start:-4px;min-width:26px}.app-content[data-v-53e05d31]{display:flex;overflow:hidden;flex-direction:column;max-height:100%;position:relative !important}.files-list__header[data-v-53e05d31]{display:flex;align-items:center;flex:0 0;max-width:100%;margin-block:var(--app-navigation-padding, 4px);margin-inline:calc(var(--default-clickable-area, 44px) + 2*var(--app-navigation-padding, 4px)) var(--app-navigation-padding, 4px)}.files-list__header--public[data-v-53e05d31]{margin-inline:0 var(--app-navigation-padding, 4px)}.files-list__header>*[data-v-53e05d31]{flex:0 0}.files-list__header-share-button[data-v-53e05d31]{color:var(--color-text-maxcontrast) !important}.files-list__header-share-button--shared[data-v-53e05d31]{color:var(--color-main-text) !important}.files-list__empty-view-wrapper[data-v-53e05d31]{display:flex;height:100%}.files-list__refresh-icon[data-v-53e05d31]{flex:0 0 var(--default-clickable-area);width:var(--default-clickable-area);height:var(--default-clickable-area)}.files-list__loading-icon[data-v-53e05d31]{margin:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesList.vue\"],\"names\":[],\"mappings\":\"AACA,oBAEC,wBAAA,CAEA,cAAA,CAGD,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CACA,4BAAA,CAIA,qCACC,YAAA,CACA,kBAAA,CAEA,QAAA,CACA,cAAA,CAEA,+CAAA,CACA,iIAAA,CAEA,6CAEC,kDAAA,CAGD,uCAGC,QAAA,CAGD,kDACC,8CAAA,CAEA,0DACC,uCAAA,CAKH,iDACC,YAAA,CACA,WAAA,CAGD,2CACC,sCAAA,CACA,mCAAA,CACA,oCAAA,CAGD,2CACC,WAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-navigation[data-v-008142f0] .app-navigation-entry.active .button-vue.icon-collapse:not(:hover){color:var(--color-primary-element-text)}.app-navigation>ul.app-navigation__list[data-v-008142f0]{padding-bottom:var(--default-grid-baseline, 4px)}.app-navigation-entry__settings[data-v-008142f0]{height:auto !important;overflow:hidden !important;padding-top:0 !important;flex:0 0 auto}.files-navigation__list[data-v-008142f0]{height:100%}.files-navigation[data-v-008142f0] .app-navigation__content > ul.app-navigation__list{will-change:scroll-position}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Navigation.vue\"],\"names\":[],\"mappings\":\"AAEC,oGACC,uCAAA,CAGD,yDAEC,gDAAA,CAIF,iDACC,sBAAA,CACA,0BAAA,CACA,wBAAA,CAEA,aAAA,CAIA,yCACC,WAAA,CAGD,sFACC,2BAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.setting-link[data-v-23881b2c]:hover{text-decoration:underline}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Settings.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,yBAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import { o as logger } from \"./chunks/dav-DxfiR0wZ.mjs\";\nimport { q, F, s, N, t, P, c, l, m, n, a, g, p, b, r, d, h, f, k, j, e, i } from \"./chunks/dav-DxfiR0wZ.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"path\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nvar NewMenuEntryCategory = /* @__PURE__ */ ((NewMenuEntryCategory2) => {\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"UploadFromDevice\"] = 0] = \"UploadFromDevice\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"CreateNew\"] = 1] = \"CreateNew\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"Other\"] = 2] = \"Other\";\n return NewMenuEntryCategory2;\n})(NewMenuEntryCategory || {});\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n entry.category = entry.category ?? 1;\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(context) {\n if (context) {\n return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex((entry) => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass) || !entry.handler) {\n throw new Error(\"Invalid entry\");\n }\n if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n throw new Error(\"Invalid id or displayName property\");\n }\n if (entry.iconClass && typeof entry.iconClass !== \"string\" || entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n throw new Error(\"Invalid icon provided\");\n }\n if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (typeof entry.handler !== \"function\") {\n throw new Error(\"Invalid handler property\");\n }\n if (\"order\" in entry && typeof entry.order !== \"number\") {\n throw new Error(\"Invalid order property\");\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error(\"Duplicate entry\");\n }\n }\n}\nconst getNewFileMenu = function() {\n if (typeof window._nc_newfilemenu === \"undefined\") {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug(\"NewFileMenu initialized\");\n }\n return window._nc_newfilemenu;\n};\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n throw new Error(\"Invalid execBatch function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error(\"Invalid default\");\n }\n if (\"inline\" in action && typeof action.inline !== \"function\") {\n throw new Error(\"Invalid inline function\");\n }\n if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n throw new Error(\"Invalid renderInline function\");\n }\n }\n}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n if (window._nc_fileactions.find((search) => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nvar InvalidFilenameErrorReason = /* @__PURE__ */ ((InvalidFilenameErrorReason2) => {\n InvalidFilenameErrorReason2[\"ReservedName\"] = \"reserved name\";\n InvalidFilenameErrorReason2[\"Character\"] = \"character\";\n InvalidFilenameErrorReason2[\"Extension\"] = \"extension\";\n return InvalidFilenameErrorReason2;\n})(InvalidFilenameErrorReason || {});\nclass InvalidFilenameError extends Error {\n constructor(options) {\n super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n }\n /**\n * The filename that was validated\n */\n get filename() {\n return this.cause.filename;\n }\n /**\n * Reason why the validation failed\n */\n get reason() {\n return this.cause.reason;\n }\n /**\n * Part of the filename that caused this error\n */\n get segment() {\n return this.cause.segment;\n }\n}\nfunction validateFilename(filename) {\n const capabilities = getCapabilities().files;\n const forbiddenCharacters = capabilities.forbidden_filename_characters ?? window._oc_config?.forbidden_filenames_characters ?? [\"/\", \"\\\\\"];\n for (const character of forbiddenCharacters) {\n if (filename.includes(character)) {\n throw new InvalidFilenameError({ segment: character, reason: \"character\", filename });\n }\n }\n filename = filename.toLocaleLowerCase();\n const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n if (forbiddenFilenames.includes(filename)) {\n throw new InvalidFilenameError({\n filename,\n segment: filename,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const endOfBasename = filename.indexOf(\".\", 1);\n const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n if (forbiddenFilenameBasenames.includes(basename2)) {\n throw new InvalidFilenameError({\n filename,\n segment: basename2,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [\".part\", \".filepart\"];\n for (const extension of forbiddenFilenameExtensions) {\n if (filename.length > extension.length && filename.endsWith(extension)) {\n throw new InvalidFilenameError({ segment: extension, reason: \"extension\", filename });\n }\n }\n}\nfunction isFilenameValid(filename) {\n try {\n validateFilename(filename);\n return true;\n } catch (error) {\n if (error instanceof InvalidFilenameError) {\n return false;\n }\n throw error;\n }\n}\nfunction getUniqueName(name, otherNames, options) {\n const opts = {\n suffix: (n2) => `(${n2})`,\n ignoreFileExtension: false,\n ...options\n };\n let newName = name;\n let i2 = 1;\n while (otherNames.includes(newName)) {\n const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n const base = basename(name, ext);\n newName = `${base} ${opts.suffix(i2++)}${ext}`;\n }\n return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n binaryPrefixes = binaryPrefixes && !base1000;\n if (typeof size === \"string\") {\n size = Number(size);\n }\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n } else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n try {\n value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch (e2) {\n return null;\n }\n const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (match === null || match[1] === \".\" || match[1] === \"\") {\n return null;\n }\n const bytesArray = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n };\n const decimalString = `${match[1]}`;\n const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n if (value instanceof Date) {\n return value.toISOString();\n }\n return String(value);\n}\nfunction orderBy(collection, identifiers2, orders) {\n identifiers2 = identifiers2 ?? [(value) => value];\n orders = orders ?? [];\n const sorting = identifiers2.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n const collator = Intl.Collator(\n [getLanguage(), getCanonicalLocale()],\n {\n // handle 10 as ten and not as one-zero\n numeric: true,\n usage: \"sort\"\n }\n );\n return [...collection].sort((a2, b2) => {\n for (const [index, identifier] of identifiers2.entries()) {\n const value = collator.compare(stringify(identifier(a2)), stringify(identifier(b2)));\n if (value !== 0) {\n return value * sorting[index];\n }\n }\n return 0;\n });\n}\nvar FilesSortingMode = /* @__PURE__ */ ((FilesSortingMode2) => {\n FilesSortingMode2[\"Name\"] = \"basename\";\n FilesSortingMode2[\"Modified\"] = \"mtime\";\n FilesSortingMode2[\"Size\"] = \"size\";\n return FilesSortingMode2;\n})(FilesSortingMode || {});\nfunction sortNodes(nodes, options = {}) {\n const sortingOptions = {\n // Default to sort by name\n sortingMode: \"basename\",\n // Default to sort ascending\n sortingOrder: \"asc\",\n ...options\n };\n const basename2 = (name) => name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n const identifiers2 = [\n // 1: Sort favorites first if enabled\n ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n // 2: Sort folders first if sorting by name\n ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n // 3: Use sorting mode if NOT basename (to be able to use display name too)\n ...sortingOptions.sortingMode !== \"basename\" ? [(v) => v[sortingOptions.sortingMode]] : [],\n // 4: Use display name if available, fallback to name\n (v) => basename2(v.displayname || v.attributes?.displayname || v.basename),\n // 5: Finally, use basename if all previous sorting methods failed\n (v) => v.basename\n ];\n const orders = [\n // (for 1): always sort favorites before normal files\n ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n // (for 2): always sort folders before files\n ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n ...sortingOptions.sortingMode === \"mtime\" ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n // (also for 3 so make sure not to conflict with 2 and 3)\n ...sortingOptions.sortingMode !== \"mtime\" && sortingOptions.sortingMode !== \"basename\" ? [sortingOptions.sortingOrder] : [],\n // for 4: use configured sorting direction\n sortingOptions.sortingOrder,\n // for 5: use configured sorting direction\n sortingOptions.sortingOrder\n ];\n return orderBy(nodes, identifiers2, orders);\n}\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\n */\n remove(id) {\n const index = this._views.findIndex((view) => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst isValidColumn = function(column) {\n if (!column.id || typeof column.id !== \"string\") {\n throw new Error(\"A column id is required\");\n }\n if (!column.title || typeof column.title !== \"string\") {\n throw new Error(\"A column title is required\");\n }\n if (!column.render || typeof column.render !== \"function\") {\n throw new Error(\"A render function is required\");\n }\n if (column.sort && typeof column.sort !== \"function\") {\n throw new Error(\"Column sortFunction must be a function\");\n }\n if (column.summary && typeof column.summary !== \"function\") {\n throw new Error(\"Column summary must be a function\");\n }\n return true;\n};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar validator$2 = {};\nvar util$3 = {};\n(function(exports) {\n const nameStartChar = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n const nameChar = nameStartChar + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n const nameRegexp = \"[\" + nameStartChar + \"][\" + nameChar + \"]*\";\n const regexName = new RegExp(\"^\" + nameRegexp + \"$\");\n const getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n };\n const isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === \"undefined\");\n };\n exports.isExist = function(v) {\n return typeof v !== \"undefined\";\n };\n exports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n };\n exports.merge = function(target, a2, arrayMode) {\n if (a2) {\n const keys = Object.keys(a2);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n if (arrayMode === \"strict\") {\n target[keys[i2]] = [a2[keys[i2]]];\n } else {\n target[keys[i2]] = a2[keys[i2]];\n }\n }\n }\n };\n exports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return \"\";\n }\n };\n exports.isName = isName;\n exports.getAllMatches = getAllMatches;\n exports.nameRegexp = nameRegexp;\n})(util$3);\nconst util$2 = util$3;\nconst defaultOptions$2 = {\n allowBooleanAttributes: false,\n //A tag can have attributes without any value\n unpairedTags: []\n};\nvalidator$2.validate = function(xmlData, options) {\n options = Object.assign({}, defaultOptions$2, options);\n const tags = [];\n let tagFound = false;\n let reachedRoot = false;\n if (xmlData[0] === \"\\uFEFF\") {\n xmlData = xmlData.substr(1);\n }\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && xmlData[i2 + 1] === \"?\") {\n i2 += 2;\n i2 = readPI(xmlData, i2);\n if (i2.err) return i2;\n } else if (xmlData[i2] === \"<\") {\n let tagStartPos = i2;\n i2++;\n if (xmlData[i2] === \"!\") {\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i2] === \"/\") {\n closingTag = true;\n i2++;\n }\n let tagName = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== \">\" && xmlData[i2] !== \" \" && xmlData[i2] !== \"\t\" && xmlData[i2] !== \"\\n\" && xmlData[i2] !== \"\\r\"; i2++) {\n tagName += xmlData[i2];\n }\n tagName = tagName.trim();\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substring(0, tagName.length - 1);\n i2--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject(\"InvalidTag\", msg, getLineNumberForPosition(xmlData, i2));\n }\n const result = readAttributeStr(xmlData, i2);\n if (result === false) {\n return getErrorObject(\"InvalidAttr\", \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i2));\n }\n let attrStr = result.value;\n i2 = result.index;\n if (attrStr[attrStr.length - 1] === \"/\") {\n const attrStrStart = i2 - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n } else {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i2));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject(\n \"InvalidTag\",\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos)\n );\n }\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i2 - attrStr.length + isValid.err.line));\n }\n if (reachedRoot === true) {\n return getErrorObject(\"InvalidXml\", \"Multiple possible root nodes found.\", getLineNumberForPosition(xmlData, i2));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) ;\n else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n for (i2++; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"!\") {\n i2++;\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else if (xmlData[i2 + 1] === \"?\") {\n i2 = readPI(xmlData, ++i2);\n if (i2.err) return i2;\n } else {\n break;\n }\n } else if (xmlData[i2] === \"&\") {\n const afterAmp = validateAmpersand(xmlData, i2);\n if (afterAmp == -1)\n return getErrorObject(\"InvalidChar\", \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i2));\n i2 = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i2])) {\n return getErrorObject(\"InvalidXml\", \"Extra text at the end\", getLineNumberForPosition(xmlData, i2));\n }\n }\n }\n if (xmlData[i2] === \"<\") {\n i2--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i2])) {\n continue;\n }\n return getErrorObject(\"InvalidChar\", \"char '\" + xmlData[i2] + \"' is not expected.\", getLineNumberForPosition(xmlData, i2));\n }\n }\n if (!tagFound) {\n return getErrorObject(\"InvalidXml\", \"Start tag expected.\", 1);\n } else if (tags.length == 1) {\n return getErrorObject(\"InvalidTag\", \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject(\"InvalidXml\", \"Invalid '\" + JSON.stringify(tags.map((t3) => t3.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n }\n return true;\n};\nfunction isWhiteSpace(char) {\n return char === \" \" || char === \"\t\" || char === \"\\n\" || char === \"\\r\";\n}\nfunction readPI(xmlData, i2) {\n const start = i2;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] == \"?\" || xmlData[i2] == \" \") {\n const tagname = xmlData.substr(start, i2 - start);\n if (i2 > 5 && tagname === \"xml\") {\n return getErrorObject(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", getLineNumberForPosition(xmlData, i2));\n } else if (xmlData[i2] == \"?\" && xmlData[i2 + 1] == \">\") {\n i2++;\n break;\n } else {\n continue;\n }\n }\n }\n return i2;\n}\nfunction readCommentAndCDATA(xmlData, i2) {\n if (xmlData.length > i2 + 5 && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \"-\") {\n for (i2 += 3; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"-\" && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n } else if (xmlData.length > i2 + 8 && xmlData[i2 + 1] === \"D\" && xmlData[i2 + 2] === \"O\" && xmlData[i2 + 3] === \"C\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"Y\" && xmlData[i2 + 6] === \"P\" && xmlData[i2 + 7] === \"E\") {\n let angleBracketsCount = 1;\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n angleBracketsCount++;\n } else if (xmlData[i2] === \">\") {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (xmlData.length > i2 + 9 && xmlData[i2 + 1] === \"[\" && xmlData[i2 + 2] === \"C\" && xmlData[i2 + 3] === \"D\" && xmlData[i2 + 4] === \"A\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"A\" && xmlData[i2 + 7] === \"[\") {\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"]\" && xmlData[i2 + 1] === \"]\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n }\n return i2;\n}\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\nfunction readAttributeStr(xmlData, i2) {\n let attrStr = \"\";\n let startChar = \"\";\n let tagClosed = false;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === doubleQuote || xmlData[i2] === singleQuote) {\n if (startChar === \"\") {\n startChar = xmlData[i2];\n } else if (startChar !== xmlData[i2]) ;\n else {\n startChar = \"\";\n }\n } else if (xmlData[i2] === \">\") {\n if (startChar === \"\") {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i2];\n }\n if (startChar !== \"\") {\n return false;\n }\n return {\n value: attrStr,\n index: i2,\n tagClosed\n };\n}\nconst validAttrStrRegxp = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\nfunction validateAttributeString(attrStr, options) {\n const matches = util$2.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n for (let i2 = 0; i2 < matches.length; i2++) {\n if (matches[i2][1].length === 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] !== void 0 && matches[i2][4] === void 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' is without value.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] === void 0 && !options.allowBooleanAttributes) {\n return getErrorObject(\"InvalidAttr\", \"boolean attribute '\" + matches[i2][2] + \"' is not allowed.\", getPositionFromMatch(matches[i2]));\n }\n const attrName = matches[i2][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i2]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n attrNames[attrName] = 1;\n } else {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i2]));\n }\n }\n return true;\n}\nfunction validateNumberAmpersand(xmlData, i2) {\n let re2 = /\\d/;\n if (xmlData[i2] === \"x\") {\n i2++;\n re2 = /[\\da-fA-F]/;\n }\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \";\")\n return i2;\n if (!xmlData[i2].match(re2))\n break;\n }\n return -1;\n}\nfunction validateAmpersand(xmlData, i2) {\n i2++;\n if (xmlData[i2] === \";\")\n return -1;\n if (xmlData[i2] === \"#\") {\n i2++;\n return validateNumberAmpersand(xmlData, i2);\n }\n let count = 0;\n for (; i2 < xmlData.length; i2++, count++) {\n if (xmlData[i2].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i2] === \";\")\n break;\n return -1;\n }\n return i2;\n}\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col\n }\n };\n}\nfunction validateAttrName(attrName) {\n return util$2.isName(attrName);\n}\nfunction validateTagName(tagname) {\n return util$2.isName(tagname);\n}\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\nvar OptionsBuilder = {};\nconst defaultOptions$1 = {\n preserveOrder: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n removeNSPrefix: false,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true,\n //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val2) {\n return val2;\n },\n attributeValueProcessor: function(attrName, val2) {\n return val2;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs) {\n return tagName;\n }\n // skipEmptyListItem: false\n};\nconst buildOptions$1 = function(options) {\n return Object.assign({}, defaultOptions$1, options);\n};\nOptionsBuilder.buildOptions = buildOptions$1;\nOptionsBuilder.defaultOptions = defaultOptions$1;\nclass XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = [];\n this[\":@\"] = {};\n }\n add(key, val2) {\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val2 });\n }\n addChild(node) {\n if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n }\n}\nvar xmlNode$1 = XmlNode;\nconst util$1 = util$3;\nfunction readDocType$1(xmlData, i2) {\n const entities = {};\n if (xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"C\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"Y\" && xmlData[i2 + 7] === \"P\" && xmlData[i2 + 8] === \"E\") {\n i2 = i2 + 9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && !comment) {\n if (hasBody && isEntity(xmlData, i2)) {\n i2 += 7;\n [entityName, val, i2] = readEntityExp(xmlData, i2 + 1);\n if (val.indexOf(\"&\") === -1)\n entities[validateEntityName(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n };\n } else if (hasBody && isElement(xmlData, i2)) i2 += 8;\n else if (hasBody && isAttlist(xmlData, i2)) i2 += 8;\n else if (hasBody && isNotation(xmlData, i2)) i2 += 9;\n else if (isComment) comment = true;\n else throw new Error(\"Invalid DOCTYPE\");\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i2] === \">\") {\n if (comment) {\n if (xmlData[i2 - 1] === \"-\" && xmlData[i2 - 2] === \"-\") {\n comment = false;\n angleBracketsCount--;\n }\n } else {\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n } else if (xmlData[i2] === \"[\") {\n hasBody = true;\n } else {\n exp += xmlData[i2];\n }\n }\n if (angleBracketsCount !== 0) {\n throw new Error(`Unclosed DOCTYPE`);\n }\n } else {\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return { entities, i: i2 };\n}\nfunction readEntityExp(xmlData, i2) {\n let entityName2 = \"\";\n for (; i2 < xmlData.length && (xmlData[i2] !== \"'\" && xmlData[i2] !== '\"'); i2++) {\n entityName2 += xmlData[i2];\n }\n entityName2 = entityName2.trim();\n if (entityName2.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n const startChar = xmlData[i2++];\n let val2 = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== startChar; i2++) {\n val2 += xmlData[i2];\n }\n return [entityName2, val2, i2];\n}\nfunction isComment(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"-\" && xmlData[i2 + 3] === \"-\") return true;\n return false;\n}\nfunction isEntity(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"N\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"I\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"Y\") return true;\n return false;\n}\nfunction isElement(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"L\" && xmlData[i2 + 4] === \"E\" && xmlData[i2 + 5] === \"M\" && xmlData[i2 + 6] === \"E\" && xmlData[i2 + 7] === \"N\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n}\nfunction isAttlist(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"A\" && xmlData[i2 + 3] === \"T\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"L\" && xmlData[i2 + 6] === \"I\" && xmlData[i2 + 7] === \"S\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n}\nfunction isNotation(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"N\" && xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"A\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"I\" && xmlData[i2 + 8] === \"O\" && xmlData[i2 + 9] === \"N\") return true;\n return false;\n}\nfunction validateEntityName(name) {\n if (util$1.isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\nvar DocTypeReader = readDocType$1;\nconst hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\nconst consider = {\n hex: true,\n leadingZeros: true,\n decimalPoint: \".\",\n eNotation: true\n //skipLike: /regex/\n};\nfunction toNumber$1(str, options = {}) {\n options = Object.assign({}, consider, options);\n if (!str || typeof str !== \"string\") return str;\n let trimmedStr = str.trim();\n if (options.skipLike !== void 0 && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n } else {\n const match = numRegex.exec(trimmedStr);\n if (match) {\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]);\n const eNotation = match[4] || match[6];\n if (!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str;\n else if (!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str;\n else {\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if (numStr.search(/[eE]/) !== -1) {\n if (options.eNotation) return num;\n else return str;\n } else if (eNotation) {\n if (options.eNotation) return num;\n else return str;\n } else if (trimmedStr.indexOf(\".\") !== -1) {\n if (numStr === \"0\" && numTrimmedByZeros === \"\") return num;\n else if (numStr === numTrimmedByZeros) return num;\n else if (sign && numStr === \"-\" + numTrimmedByZeros) return num;\n else return str;\n }\n if (leadingZeros) {\n if (numTrimmedByZeros === numStr) return num;\n else if (sign + numTrimmedByZeros === numStr) return num;\n else return str;\n }\n if (trimmedStr === numStr) return num;\n else if (trimmedStr === sign + numStr) return num;\n return str;\n }\n } else {\n return str;\n }\n }\n}\nfunction trimZeros(numStr) {\n if (numStr && numStr.indexOf(\".\") !== -1) {\n numStr = numStr.replace(/0+$/, \"\");\n if (numStr === \".\") numStr = \"0\";\n else if (numStr[0] === \".\") numStr = \"0\" + numStr;\n else if (numStr[numStr.length - 1] === \".\") numStr = numStr.substr(0, numStr.length - 1);\n return numStr;\n }\n return numStr;\n}\nvar strnum = toNumber$1;\nfunction getIgnoreAttributesFn$2(ignoreAttributes2) {\n if (typeof ignoreAttributes2 === \"function\") {\n return ignoreAttributes2;\n }\n if (Array.isArray(ignoreAttributes2)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes2) {\n if (typeof pattern === \"string\" && attrName === pattern) {\n return true;\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true;\n }\n }\n };\n }\n return () => false;\n}\nvar ignoreAttributes = getIgnoreAttributesFn$2;\nconst util = util$3;\nconst xmlNode = xmlNode$1;\nconst readDocType = DocTypeReader;\nconst toNumber = strnum;\nconst getIgnoreAttributesFn$1 = ignoreAttributes;\nlet OrderedObjParser$1 = class OrderedObjParser {\n constructor(options) {\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n \"quot\": { regex: /&(quot|#34|#x22);/g, val: '\"' }\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 16)) }\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue$1;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn$1(this.options.ignoreAttributes);\n }\n};\nfunction addExternalEntities(externalEntities) {\n const entKeys = Object.keys(externalEntities);\n for (let i2 = 0; i2 < entKeys.length; i2++) {\n const ent = entKeys[i2];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\" + ent + \";\", \"g\"),\n val: externalEntities[ent]\n };\n }\n}\nfunction parseTextData(val2, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val2 !== void 0) {\n if (this.options.trimValues && !dontTrim) {\n val2 = val2.trim();\n }\n if (val2.length > 0) {\n if (!escapeEntities) val2 = this.replaceEntitiesValue(val2);\n const newval = this.options.tagValueProcessor(tagName, val2, jPath, hasAttributes, isLeafNode);\n if (newval === null || newval === void 0) {\n return val2;\n } else if (typeof newval !== typeof val2 || newval !== val2) {\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val2, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val2.trim();\n if (trimmedVal === val2) {\n return parseValue(val2, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val2;\n }\n }\n }\n }\n}\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(\":\");\n const prefix = tagname.charAt(0) === \"/\" ? \"/\" : \"\";\n if (tags[0] === \"xmlns\") {\n return \"\";\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\nconst attrsRegx = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === \"string\") {\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length;\n const attrs = {};\n for (let i2 = 0; i2 < len; i2++) {\n const attrName = this.resolveNameSpace(matches[i2][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue;\n }\n let oldVal = matches[i2][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if (aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== void 0) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if (newVal === null || newVal === void 0) {\n attrs[aName] = oldVal;\n } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n attrs[aName] = newVal;\n } else {\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n}\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\");\n const xmlObj = new xmlNode(\"!xml\");\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n const ch = xmlData[i2];\n if (ch === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, \"Closing Tag is not closed.\");\n let tagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (this.options.removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n }\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode) {\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\") + 1);\n if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n throw new Error(`Unpaired tag can not be used as closing tag: </${tagName}>`);\n }\n let propIndex = 0;\n if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n propIndex = jPath.lastIndexOf(\".\", jPath.lastIndexOf(\".\") - 1);\n this.tagsNodeStack.pop();\n } else {\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n currentNode = this.tagsNodeStack.pop();\n textData = \"\";\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n let tagData = readTagExp(xmlData, i2, false, \"?>\");\n if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if (this.options.ignoreDeclaration && tagData.tagName === \"?xml\" || this.options.ignorePiTags) ;\n else {\n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n }\n i2 = tagData.closeIndex + 1;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const endIndex = findClosingIndex(xmlData, \"-->\", i2 + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const comment = xmlData.substring(i2 + 4, endIndex - 2);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n }\n i2 = endIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"!D\") {\n const result = readDocType(xmlData, i2);\n this.docTypeEntities = result.entities;\n i2 = result.i;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i2 + 9, closeIndex);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n let val2 = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if (val2 == void 0) val2 = \"\";\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val2);\n }\n i2 = closeIndex + 2;\n } else {\n let result = readTagExp(xmlData, i2, this.options.removeNSPrefix);\n let tagName = result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode && textData) {\n if (currentNode.tagname !== \"!xml\") {\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n const lastTag = currentNode;\n if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if (tagName !== xmlObj.tagname) {\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i2 = result.closeIndex;\n } else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n i2 = result.closeIndex;\n } else {\n const result2 = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if (!result2) throw new Error(`Unexpected end of ${rawTagName}`);\n i2 = result2.i;\n tagContent = result2.tagContent;\n }\n const childNode = new xmlNode(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if (tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n this.addChild(currentNode, childNode, jPath);\n } else {\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n const childNode = new xmlNode(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n } else {\n const childNode = new xmlNode(tagName);\n this.tagsNodeStack.push(currentNode);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n currentNode = childNode;\n }\n textData = \"\";\n i2 = closeIndex;\n }\n }\n } else {\n textData += xmlData[i2];\n }\n }\n return xmlObj.child;\n};\nfunction addChild(currentNode, childNode, jPath) {\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"]);\n if (result === false) ;\n else if (typeof result === \"string\") {\n childNode.tagname = result;\n currentNode.addChild(childNode);\n } else {\n currentNode.addChild(childNode);\n }\n}\nconst replaceEntitiesValue$1 = function(val2) {\n if (this.options.processEntities) {\n for (let entityName2 in this.docTypeEntities) {\n const entity = this.docTypeEntities[entityName2];\n val2 = val2.replace(entity.regx, entity.val);\n }\n for (let entityName2 in this.lastEntities) {\n const entity = this.lastEntities[entityName2];\n val2 = val2.replace(entity.regex, entity.val);\n }\n if (this.options.htmlEntities) {\n for (let entityName2 in this.htmlEntities) {\n const entity = this.htmlEntities[entityName2];\n val2 = val2.replace(entity.regex, entity.val);\n }\n }\n val2 = val2.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return val2;\n};\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) {\n if (isLeafNode === void 0) isLeafNode = Object.keys(currentNode.child).length === 0;\n textData = this.parseTextData(\n textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode\n );\n if (textData !== void 0 && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\nfunction isItStopNode(stopNodes, jPath, currentTagName) {\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if (allNodesExp === stopNodeExp || jPath === stopNodeExp) return true;\n }\n return false;\n}\nfunction tagExpWithClosingIndex(xmlData, i2, closingChar = \">\") {\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i2; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index\n };\n }\n } else {\n return {\n data: tagExp,\n index\n };\n }\n } else if (ch === \"\t\") {\n ch = \" \";\n }\n tagExp += ch;\n }\n}\nfunction findClosingIndex(xmlData, str, i2, errMsg) {\n const closingIndex = xmlData.indexOf(str, i2);\n if (closingIndex === -1) {\n throw new Error(errMsg);\n } else {\n return closingIndex + str.length - 1;\n }\n}\nfunction readTagExp(xmlData, i2, removeNSPrefix, closingChar = \">\") {\n const result = tagExpWithClosingIndex(xmlData, i2 + 1, closingChar);\n if (!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n return {\n tagName,\n tagExp,\n closeIndex,\n attrExpPresent,\n rawTagName\n };\n}\nfunction readStopNodeData(xmlData, tagName, i2) {\n const startIndex = i2;\n let openTagCount = 1;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (closeTagName === tagName) {\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i2),\n i: closeIndex\n };\n }\n }\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n const closeIndex = findClosingIndex(xmlData, \"?>\", i2 + 1, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const closeIndex = findClosingIndex(xmlData, \"-->\", i2 + 3, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"StopNode is not closed.\") - 2;\n i2 = closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i2, \">\");\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n openTagCount++;\n }\n i2 = tagData.closeIndex;\n }\n }\n }\n }\n}\nfunction parseValue(val2, shouldParse, options) {\n if (shouldParse && typeof val2 === \"string\") {\n const newval = val2.trim();\n if (newval === \"true\") return true;\n else if (newval === \"false\") return false;\n else return toNumber(val2, options);\n } else {\n if (util.isExist(val2)) {\n return val2;\n } else {\n return \"\";\n }\n }\n}\nvar OrderedObjParser_1 = OrderedObjParser$1;\nvar node2json = {};\nfunction prettify$1(node, options) {\n return compress(node, options);\n}\nfunction compress(arr, options, jPath) {\n let text;\n const compressedObj = {};\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const property = propName$1(tagObj);\n let newJpath = \"\";\n if (jPath === void 0) newJpath = property;\n else newJpath = jPath + \".\" + property;\n if (property === options.textNodeName) {\n if (text === void 0) text = tagObj[property];\n else text += \"\" + tagObj[property];\n } else if (property === void 0) {\n continue;\n } else if (tagObj[property]) {\n let val2 = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val2, options);\n if (tagObj[\":@\"]) {\n assignAttributes(val2, tagObj[\":@\"], newJpath, options);\n } else if (Object.keys(val2).length === 1 && val2[options.textNodeName] !== void 0 && !options.alwaysCreateTextNode) {\n val2 = val2[options.textNodeName];\n } else if (Object.keys(val2).length === 0) {\n if (options.alwaysCreateTextNode) val2[options.textNodeName] = \"\";\n else val2 = \"\";\n }\n if (compressedObj[property] !== void 0 && compressedObj.hasOwnProperty(property)) {\n if (!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [compressedObj[property]];\n }\n compressedObj[property].push(val2);\n } else {\n if (options.isArray(property, newJpath, isLeaf)) {\n compressedObj[property] = [val2];\n } else {\n compressedObj[property] = val2;\n }\n }\n }\n }\n if (typeof text === \"string\") {\n if (text.length > 0) compressedObj[options.textNodeName] = text;\n } else if (text !== void 0) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\nfunction propName$1(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (key !== \":@\") return key;\n }\n}\nfunction assignAttributes(obj, attrMap, jpath, options) {\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n const atrrName = keys[i2];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [attrMap[atrrName]];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\nfunction isLeafTag(obj, options) {\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n if (propCount === 0) {\n return true;\n }\n if (propCount === 1 && (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)) {\n return true;\n }\n return false;\n}\nnode2json.prettify = prettify$1;\nconst { buildOptions } = OptionsBuilder;\nconst OrderedObjParser2 = OrderedObjParser_1;\nconst { prettify } = node2json;\nconst validator$1 = validator$2;\nlet XMLParser$1 = class XMLParser {\n constructor(options) {\n this.externalEntities = {};\n this.options = buildOptions(options);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData, validationOption) {\n if (typeof xmlData === \"string\") ;\n else if (xmlData.toString) {\n xmlData = xmlData.toString();\n } else {\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n }\n if (validationOption) {\n if (validationOption === true) validationOption = {};\n const result = validator$1.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`);\n }\n }\n const orderedObjParser = new OrderedObjParser2(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if (this.options.preserveOrder || orderedResult === void 0) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value) {\n if (value.indexOf(\"&\") !== -1) {\n throw new Error(\"Entity value can't have '&'\");\n } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '&#xD;'\");\n } else if (value === \"&\") {\n throw new Error(\"An entity with value '&' is not permitted\");\n } else {\n this.externalEntities[key] = value;\n }\n }\n};\nvar XMLParser_1 = XMLParser$1;\nconst EOL = \"\\n\";\nfunction toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const tagName = propName(tagObj);\n if (tagName === void 0) continue;\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName;\n else newJPath = `${jPath}.${tagName}`;\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += `<![CDATA[${tagObj[tagName][0][options.textNodeName]}]]>`;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + `<!--${tagObj[tagName][0][options.textNodeName]}-->`;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr2 = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\";\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr2}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}</${tagName}>`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"</\"))) {\n xmlStr += indentation + options.indentBy + tagValue + indentation;\n } else {\n xmlStr += tagValue;\n }\n xmlStr += `</${tagName}>`;\n }\n isPreviousElementTag = true;\n }\n return xmlStr;\n}\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n}\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i2 = 0; i2 < options.entities.length; i2++) {\n const entity = options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nvar orderedJs2Xml = toXml;\nconst buildFromOrderedJs = orderedJs2Xml;\nconst getIgnoreAttributesFn = ignoreAttributes;\nconst defaultOptions = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: \" \",\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a2) {\n return a2;\n },\n attributeValueProcessor: function(attrName, a2) {\n return a2;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&amp;\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \"&gt;\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"&lt;\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"&apos;\" },\n { regex: new RegExp('\"', \"g\"), val: \"&quot;\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function() {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n this.processTextOrObjNode = processTextOrObjNode;\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = \">\\n\";\n this.newLine = \"\\n\";\n } else {\n this.indentate = function() {\n return \"\";\n };\n this.tagEndChar = \">\";\n this.newLine = \"\";\n }\n}\nBuilder.prototype.build = function(jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n };\n }\n return this.j2x(jObj, 0, []).val;\n }\n};\nBuilder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = \"\";\n let val2 = \"\";\n const jPath = ajPath.join(\".\");\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === \"undefined\") {\n if (this.isAttribute(key)) {\n val2 += \"\";\n }\n } else if (jObj[key] === null) {\n if (this.isAttribute(key)) {\n val2 += \"\";\n } else if (key[0] === \"?\") {\n val2 += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n } else {\n val2 += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n }\n } else if (jObj[key] instanceof Date) {\n val2 += this.buildTextValNode(jObj[key], key, \"\", level);\n } else if (typeof jObj[key] !== \"object\") {\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, \"\" + jObj[key]);\n } else if (!attr) {\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, \"\" + jObj[key]);\n val2 += this.replaceEntitiesValue(newval);\n } else {\n val2 += this.buildTextValNode(jObj[key], key, \"\", level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j2 = 0; j2 < arrLen; j2++) {\n const item = jObj[key][j2];\n if (typeof item === \"undefined\") ;\n else if (item === null) {\n if (key[0] === \"?\") val2 += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n else val2 += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n } else if (typeof item === \"object\") {\n if (this.options.oneListGroup) {\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr;\n }\n } else {\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath);\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, \"\", level);\n }\n }\n }\n if (this.options.oneListGroup) {\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val2 += listTagVal;\n } else {\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j2 = 0; j2 < L; j2++) {\n attrStr += this.buildAttrPairStr(Ks[j2], \"\" + jObj[key][Ks[j2]]);\n }\n } else {\n val2 += this.processTextOrObjNode(jObj[key], key, level, ajPath);\n }\n }\n }\n return { attrStr, val: val2 };\n};\nBuilder.prototype.buildAttrPairStr = function(attrName, val2) {\n val2 = this.options.attributeValueProcessor(attrName, \"\" + val2);\n val2 = this.replaceEntitiesValue(val2);\n if (this.options.suppressBooleanAttributes && val2 === \"true\") {\n return \" \" + attrName;\n } else return \" \" + attrName + '=\"' + val2 + '\"';\n};\nfunction processTextOrObjNode(object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== void 0 && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\nBuilder.prototype.buildObjectNode = function(val2, key, attrStr, level) {\n if (val2 === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n else {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n let tagEndExp = \"</\" + key + this.tagEndChar;\n let piClosingChar = \"\";\n if (key[0] === \"?\") {\n piClosingChar = \"?\";\n tagEndExp = \"\";\n }\n if ((attrStr || attrStr === \"\") && val2.indexOf(\"<\") === -1) {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + \">\" + val2 + tagEndExp;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `<!--${val2}-->` + this.newLine;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + this.tagEndChar + val2 + this.indentate(level) + tagEndExp;\n }\n }\n};\nBuilder.prototype.closeTag = function(key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) {\n if (!this.options.suppressUnpairedNode) closeTag = \"/\";\n } else if (this.options.suppressEmptyNode) {\n closeTag = \"/\";\n } else {\n closeTag = `></${key}`;\n }\n return closeTag;\n};\nBuilder.prototype.buildTextValNode = function(val2, key, attrStr, level) {\n if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {\n return this.indentate(level) + `<![CDATA[${val2}]]>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `<!--${val2}-->` + this.newLine;\n } else if (key[0] === \"?\") {\n return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n } else {\n let textValue = this.options.tagValueProcessor(key, val2);\n textValue = this.replaceEntitiesValue(textValue);\n if (textValue === \"\") {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + \">\" + textValue + \"</\" + key + this.tagEndChar;\n }\n }\n};\nBuilder.prototype.replaceEntitiesValue = function(textValue) {\n if (textValue && textValue.length > 0 && this.options.processEntities) {\n for (let i2 = 0; i2 < this.options.entities.length; i2++) {\n const entity = this.options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n};\nfunction indentate(level) {\n return this.options.indentBy.repeat(level);\n}\nfunction isAttribute(name) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n}\nvar json2xml = Builder;\nconst validator = validator$2;\nconst XMLParser2 = XMLParser_1;\nconst XMLBuilder = json2xml;\nvar fxp = {\n XMLParser: XMLParser2,\n XMLValidator: validator,\n XMLBuilder\n};\nfunction isSvg(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n }\n string = string.trim();\n if (string.length === 0) {\n return false;\n }\n if (fxp.XMLValidator.validate(string) !== true) {\n return false;\n }\n let jsonObject;\n const parser = new fxp.XMLParser();\n try {\n jsonObject = parser.parse(string);\n } catch {\n return false;\n }\n if (!jsonObject) {\n return false;\n }\n if (!Object.keys(jsonObject).some((x) => x.toLowerCase() === \"svg\")) {\n return false;\n }\n return true;\n}\nclass View {\n _view;\n constructor(view) {\n isValidView(view);\n this._view = view;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(icon) {\n this._view.icon = icon;\n }\n get order() {\n return this._view.order;\n }\n set order(order) {\n this._view.order = order;\n }\n get params() {\n return this._view.params;\n }\n set params(params) {\n this._view.params = params;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(expanded) {\n this._view.expanded = expanded;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n get loadChildViews() {\n return this._view.loadChildViews;\n }\n}\nconst isValidView = function(view) {\n if (!view.id || typeof view.id !== \"string\") {\n throw new Error(\"View id is required and must be a string\");\n }\n if (!view.name || typeof view.name !== \"string\") {\n throw new Error(\"View name is required and must be a string\");\n }\n if (\"caption\" in view && typeof view.caption !== \"string\") {\n throw new Error(\"View caption must be a string\");\n }\n if (!view.getContents || typeof view.getContents !== \"function\") {\n throw new Error(\"View getContents is required and must be a function\");\n }\n if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n throw new Error(\"View icon is required and must be a valid svg string\");\n }\n if (\"order\" in view && typeof view.order !== \"number\") {\n throw new Error(\"View order must be a number\");\n }\n if (view.columns) {\n view.columns.forEach((column) => {\n if (!(column instanceof Column)) {\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }\n });\n }\n if (view.emptyView && typeof view.emptyView !== \"function\") {\n throw new Error(\"View emptyView must be a function\");\n }\n if (view.parent && typeof view.parent !== \"string\") {\n throw new Error(\"View parent must be a string\");\n }\n if (\"sticky\" in view && typeof view.sticky !== \"boolean\") {\n throw new Error(\"View sticky must be a boolean\");\n }\n if (\"expanded\" in view && typeof view.expanded !== \"boolean\") {\n throw new Error(\"View expanded must be a boolean\");\n }\n if (view.defaultSortKey && typeof view.defaultSortKey !== \"string\") {\n throw new Error(\"View defaultSortKey must be a string\");\n }\n if (view.loadChildViews && typeof view.loadChildViews !== \"function\") {\n throw new Error(\"View loadChildViews must be a function\");\n }\n return true;\n};\nconst debug$1 = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n};\nvar debug_1 = debug$1;\nconst SEMVER_SPEC_VERSION = \"2.0.0\";\nconst MAX_LENGTH$1 = 256;\nconst MAX_SAFE_INTEGER$1 = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n9007199254740991;\nconst MAX_SAFE_COMPONENT_LENGTH = 16;\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH$1 - 6;\nconst RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n];\nvar constants = {\n MAX_LENGTH: MAX_LENGTH$1,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n};\nvar re$1 = { exports: {} };\n(function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH: MAX_SAFE_COMPONENT_LENGTH2,\n MAX_SAFE_BUILD_LENGTH: MAX_SAFE_BUILD_LENGTH2,\n MAX_LENGTH: MAX_LENGTH2\n } = constants;\n const debug2 = debug_1;\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const t3 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH2],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH2]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug2(name, index, value);\n t3[name] = index;\n src[index] = value;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t3.NUMERICIDENTIFIER]})\\\\.(${src[t3.NUMERICIDENTIFIER]})\\\\.(${src[t3.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t3.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t3.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t3.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t3.NUMERICIDENTIFIER]}|${src[t3.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t3.NUMERICIDENTIFIERLOOSE]}|${src[t3.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t3.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t3.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t3.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t3.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t3.BUILDIDENTIFIER]}(?:\\\\.${src[t3.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t3.MAINVERSION]}${src[t3.PRERELEASE]}?${src[t3.BUILD]}?`);\n createToken(\"FULL\", `^${src[t3.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t3.MAINVERSIONLOOSE]}${src[t3.PRERELEASELOOSE]}?${src[t3.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t3.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t3.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t3.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t3.XRANGEIDENTIFIER]})(?:\\\\.(${src[t3.XRANGEIDENTIFIER]})(?:\\\\.(${src[t3.XRANGEIDENTIFIER]})(?:${src[t3.PRERELEASE]})?${src[t3.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t3.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t3.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t3.XRANGEIDENTIFIERLOOSE]})(?:${src[t3.PRERELEASELOOSE]})?${src[t3.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t3.GTLT]}\\\\s*${src[t3.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t3.GTLT]}\\\\s*${src[t3.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH2}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH2}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH2}}))?`);\n createToken(\"COERCE\", `${src[t3.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t3.COERCEPLAIN] + `(?:${src[t3.PRERELEASE]})?(?:${src[t3.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t3.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t3.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t3.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t3.LONETILDE]}${src[t3.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t3.LONETILDE]}${src[t3.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t3.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t3.LONECARET]}${src[t3.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t3.LONECARET]}${src[t3.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t3.GTLT]}\\\\s*(${src[t3.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t3.GTLT]}\\\\s*(${src[t3.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t3.GTLT]}\\\\s*(${src[t3.LOOSEPLAIN]}|${src[t3.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t3.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t3.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t3.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t3.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n})(re$1, re$1.exports);\nvar reExports = re$1.exports;\nconst looseOption = Object.freeze({ loose: true });\nconst emptyOpts = Object.freeze({});\nconst parseOptions$1 = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n};\nvar parseOptions_1 = parseOptions$1;\nconst numeric = /^[0-9]+$/;\nconst compareIdentifiers$1 = (a2, b2) => {\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n};\nconst rcompareIdentifiers = (a2, b2) => compareIdentifiers$1(b2, a2);\nvar identifiers = {\n compareIdentifiers: compareIdentifiers$1,\n rcompareIdentifiers\n};\nconst debug = debug_1;\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = constants;\nconst { safeRe: re, t: t2 } = reExports;\nconst parseOptions = parseOptions_1;\nconst { compareIdentifiers } = identifiers;\nlet SemVer$2 = class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m2 = version.trim().match(options.loose ? re[t2.LOOSE] : re[t2.FULL]);\n if (!m2) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m2[1];\n this.minor = +m2[2];\n this.patch = +m2[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m2[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m2[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m2[5] ? m2[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i2 = 0;\n do {\n const a2 = this.prerelease[i2];\n const b2 = other.prerelease[i2];\n debug(\"prerelease compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i2 = 0;\n do {\n const a2 = this.build[i2];\n const b2 = other.build[i2];\n debug(\"build compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i2 = this.prerelease.length;\n while (--i2 >= 0) {\n if (typeof this.prerelease[i2] === \"number\") {\n this.prerelease[i2]++;\n i2 = -2;\n }\n }\n if (i2 === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n};\nvar semver = SemVer$2;\nconst SemVer$1 = semver;\nconst parse$1 = (version, options, throwErrors = false) => {\n if (version instanceof SemVer$1) {\n return version;\n }\n try {\n return new SemVer$1(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n};\nvar parse_1 = parse$1;\nconst parse = parse_1;\nconst valid = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n};\nvar valid_1 = valid;\nconst valid$1 = /* @__PURE__ */ getDefaultExportFromCjs(valid_1);\nconst SemVer2 = semver;\nconst major = (a2, loose) => new SemVer2(a2, loose).major;\nvar major_1 = major;\nconst major$1 = /* @__PURE__ */ getDefaultExportFromCjs(major_1);\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid$1(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major$1(bus2.getVersion()) !== major$1(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, event) {\n this.bus.emit(name, event);\n }\n}\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h2) => h2 !== handler)\n );\n }\n emit(name, event) {\n (this.handlers.get(name) || []).forEach((h2) => {\n try {\n h2(event);\n } catch (e2) {\n console.error(\"could not invoke event listener\", e2);\n }\n });\n }\n}\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, event) {\n getBus().emit(name, event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nconst addNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\nconst removeNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\nconst getNewFileMenuEntries = function(context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context).sort((a2, b2) => {\n if (a2.order !== void 0 && b2.order !== void 0 && a2.order !== b2.order) {\n return a2.order - b2.order;\n }\n return a2.displayName.localeCompare(b2.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n });\n};\nexport {\n Column,\n DefaultType,\n q as File,\n FileAction,\n FileListAction,\n FileListFilter,\n F as FileType,\n FilesSortingMode,\n s as Folder,\n Header,\n InvalidFilenameError,\n InvalidFilenameErrorReason,\n Navigation,\n NewMenuEntryCategory,\n N as Node,\n t as NodeStatus,\n P as Permission,\n View,\n addNewFileMenuEntry,\n c as davGetClient,\n l as davGetDefaultPropfind,\n m as davGetFavoritesReport,\n n as davGetRecentSearch,\n a as davGetRemoteURL,\n g as davGetRootPath,\n p as davParsePermissions,\n b as davRemoteURL,\n r as davResultToNode,\n d as davRootPath,\n h as defaultDavNamespaces,\n f as defaultDavProperties,\n formatFileSize,\n k as getDavNameSpaces,\n j as getDavProperties,\n e as getFavoriteNodes,\n getFileActions,\n getFileListActions,\n getFileListFilters,\n getFileListHeaders,\n getNavigation,\n getNewFileMenuEntries,\n getUniqueName,\n isFilenameValid,\n orderBy,\n parseFileSize,\n i as registerDavProperty,\n registerFileAction,\n registerFileListAction,\n registerFileListFilter,\n registerFileListHeaders,\n removeNewFileMenuEntry,\n sortNodes,\n unregisterFileListFilter,\n validateFilename\n};\n","import '../assets/index-7UBhRcxV.css';\nimport { isPublicShare } from \"@nextcloud/sharing/public\";\nimport Vue, { defineAsyncComponent } from \"vue\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport { Folder, Permission, davRootPath, FileType, davGetClient, davRemoteURL, validateFilename, InvalidFilenameError, getUniqueName, NewMenuEntryCategory, getNewFileMenuEntries } from \"@nextcloud/files\";\nimport { basename, encodePath } from \"@nextcloud/paths\";\nimport { normalize } from \"path\";\nimport axios, { isCancel } from \"@nextcloud/axios\";\nimport PCancelable from \"p-cancelable\";\nimport PQueue from \"p-queue\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport axiosRetry, { exponentialDelay } from \"axios-retry\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport makeEta from \"simple-eta\";\nimport NcActionButton from \"@nextcloud/vue/dist/Components/NcActionButton.js\";\nimport NcActionCaption from \"@nextcloud/vue/dist/Components/NcActionCaption.js\";\nimport NcActionSeparator from \"@nextcloud/vue/dist/Components/NcActionSeparator.js\";\nimport NcActions from \"@nextcloud/vue/dist/Components/NcActions.js\";\nimport NcButton from \"@nextcloud/vue/dist/Components/NcButton.js\";\nimport NcIconSvgWrapper from \"@nextcloud/vue/dist/Components/NcIconSvgWrapper.js\";\nimport NcProgressBar from \"@nextcloud/vue/dist/Components/NcProgressBar.js\";\nimport { spawnDialog, showInfo, showWarning } from \"@nextcloud/dialogs\";\naxiosRetry(axios, { retries: 0 });\nconst uploadData = async function(url, uploadData2, signal, onUploadProgress = () => {\n}, destinationFile = void 0, headers = {}, retries = 5) {\n let data;\n if (uploadData2 instanceof Blob) {\n data = uploadData2;\n } else {\n data = await uploadData2();\n }\n if (destinationFile) {\n headers.Destination = destinationFile;\n }\n if (!headers[\"Content-Type\"]) {\n headers[\"Content-Type\"] = \"application/octet-stream\";\n }\n return await axios.request({\n method: \"PUT\",\n url,\n data,\n signal,\n onUploadProgress,\n headers,\n \"axios-retry\": {\n retries,\n retryDelay: (retryCount, error) => exponentialDelay(retryCount, error, 1e3)\n }\n });\n};\nconst getChunk = function(file, start, length) {\n if (start === 0 && file.size <= length) {\n return Promise.resolve(new Blob([file], { type: file.type || \"application/octet-stream\" }));\n }\n return Promise.resolve(new Blob([file.slice(start, start + length)], { type: \"application/octet-stream\" }));\n};\nconst initChunkWorkspace = async function(destinationFile = void 0, retries = 5) {\n const chunksWorkspace = generateRemoteUrl(`dav/uploads/${getCurrentUser()?.uid}`);\n const hash = [...Array(16)].map(() => Math.floor(Math.random() * 16).toString(16)).join(\"\");\n const tempWorkspace = `web-file-upload-${hash}`;\n const url = `${chunksWorkspace}/${tempWorkspace}`;\n const headers = destinationFile ? { Destination: destinationFile } : void 0;\n await axios.request({\n method: \"MKCOL\",\n url,\n headers,\n \"axios-retry\": {\n retries,\n retryDelay: (retryCount, error) => exponentialDelay(retryCount, error, 1e3)\n }\n });\n return url;\n};\nconst getMaxChunksSize = function(fileSize = void 0) {\n const maxChunkSize = window.OC?.appConfig?.files?.max_chunk_size;\n if (maxChunkSize <= 0) {\n return 0;\n }\n if (!Number(maxChunkSize)) {\n return 10 * 1024 * 1024;\n }\n const minimumChunkSize = Math.max(Number(maxChunkSize), 5 * 1024 * 1024);\n if (fileSize === void 0) {\n return minimumChunkSize;\n }\n return Math.max(minimumChunkSize, Math.ceil(fileSize / 1e4));\n};\nvar Status$1 = /* @__PURE__ */ ((Status2) => {\n Status2[Status2[\"INITIALIZED\"] = 0] = \"INITIALIZED\";\n Status2[Status2[\"UPLOADING\"] = 1] = \"UPLOADING\";\n Status2[Status2[\"ASSEMBLING\"] = 2] = \"ASSEMBLING\";\n Status2[Status2[\"FINISHED\"] = 3] = \"FINISHED\";\n Status2[Status2[\"CANCELLED\"] = 4] = \"CANCELLED\";\n Status2[Status2[\"FAILED\"] = 5] = \"FAILED\";\n return Status2;\n})(Status$1 || {});\nclass Upload {\n _source;\n _file;\n _isChunked;\n _chunks;\n _size;\n _uploaded = 0;\n _startTime = 0;\n _status = 0;\n _controller;\n _response = null;\n constructor(source, chunked = false, size, file) {\n const chunks = Math.min(getMaxChunksSize() > 0 ? Math.ceil(size / getMaxChunksSize()) : 1, 1e4);\n this._source = source;\n this._isChunked = chunked && getMaxChunksSize() > 0 && chunks > 1;\n this._chunks = this._isChunked ? chunks : 1;\n this._size = size;\n this._file = file;\n this._controller = new AbortController();\n }\n get source() {\n return this._source;\n }\n get file() {\n return this._file;\n }\n get isChunked() {\n return this._isChunked;\n }\n get chunks() {\n return this._chunks;\n }\n get size() {\n return this._size;\n }\n get startTime() {\n return this._startTime;\n }\n set response(response) {\n this._response = response;\n }\n get response() {\n return this._response;\n }\n get uploaded() {\n return this._uploaded;\n }\n /**\n * Update the uploaded bytes of this upload\n */\n set uploaded(length) {\n if (length >= this._size) {\n this._status = this._isChunked ? 2 : 3;\n this._uploaded = this._size;\n return;\n }\n this._status = 1;\n this._uploaded = length;\n if (this._startTime === 0) {\n this._startTime = (/* @__PURE__ */ new Date()).getTime();\n }\n }\n get status() {\n return this._status;\n }\n /**\n * Update this upload status\n */\n set status(status) {\n this._status = status;\n }\n /**\n * Returns the axios cancel token source\n */\n get signal() {\n return this._controller.signal;\n }\n /**\n * Cancel any ongoing requests linked to this upload\n */\n cancel() {\n this._controller.abort();\n this._status = 4;\n }\n}\nconst isFileSystemDirectoryEntry = (o) => \"FileSystemDirectoryEntry\" in window && o instanceof FileSystemDirectoryEntry;\nconst isFileSystemFileEntry = (o) => \"FileSystemFileEntry\" in window && o instanceof FileSystemFileEntry;\nconst isFileSystemEntry = (o) => \"FileSystemEntry\" in window && o instanceof FileSystemEntry;\nclass Directory extends File {\n _originalName;\n _path;\n _children;\n constructor(path) {\n super([], basename(path), { type: \"httpd/unix-directory\", lastModified: 0 });\n this._children = /* @__PURE__ */ new Map();\n this._originalName = basename(path);\n this._path = path;\n }\n get size() {\n return this.children.reduce((sum, file) => sum + file.size, 0);\n }\n get lastModified() {\n return this.children.reduce((latest, file) => Math.max(latest, file.lastModified), 0);\n }\n // We need this to keep track of renamed files\n get originalName() {\n return this._originalName;\n }\n get children() {\n return Array.from(this._children.values());\n }\n get webkitRelativePath() {\n return this._path;\n }\n getChild(name) {\n return this._children.get(name) ?? null;\n }\n /**\n * Add multiple children at once\n * @param files The files to add\n */\n async addChildren(files) {\n for (const file of files) {\n await this.addChild(file);\n }\n }\n /**\n * Add a child to the directory.\n * If it is a nested child the parents will be created if not already exist.\n * @param file The child to add\n */\n async addChild(file) {\n const rootPath = this._path && `${this._path}/`;\n if (isFileSystemFileEntry(file)) {\n file = await new Promise((resolve, reject) => file.file(resolve, reject));\n } else if (isFileSystemDirectoryEntry(file)) {\n const reader = file.createReader();\n const entries = await new Promise((resolve, reject) => reader.readEntries(resolve, reject));\n const child = new Directory(`${rootPath}${file.name}`);\n await child.addChildren(entries);\n this._children.set(file.name, child);\n return;\n }\n file = file;\n const filePath = file.webkitRelativePath ?? file.name;\n if (!filePath.includes(\"/\")) {\n this._children.set(file.name, file);\n } else {\n if (!filePath.startsWith(this._path)) {\n throw new Error(`File ${filePath} is not a child of ${this._path}`);\n }\n const relPath = filePath.slice(rootPath.length);\n const name = basename(relPath);\n if (name === relPath) {\n this._children.set(name, file);\n } else {\n const base = relPath.slice(0, relPath.indexOf(\"/\"));\n if (this._children.has(base)) {\n await this._children.get(base).addChild(file);\n } else {\n const child = new Directory(`${rootPath}${base}`);\n await child.addChild(file);\n this._children.set(base, child);\n }\n }\n }\n }\n}\nconst gtBuilder = getGettextBuilder().detectLocale();\n[{ \"locale\": \"af\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Afrikaans (https://www.transifex.com/nextcloud/teams/64236/af/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"af\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Afrikaans (https://www.transifex.com/nextcloud/teams/64236/af/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: af\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ar\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"abusaud, 2024\", \"Language-Team\": \"Arabic (https://app.transifex.com/nextcloud/teams/64236/ar/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ar\", \"Plural-Forms\": \"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nAli <alimahwer@yahoo.com>, 2024\\nabusaud, 2024\\n\" }, \"msgstr\": [\"Last-Translator: abusaud, 2024\\nLanguage-Team: Arabic (https://app.transifex.com/nextcloud/teams/64236/ar/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ar\\nPlural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" هو اسم ممنوع لملف أو مجلد.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" هو نوع ممنوع أن يكون لملف.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" هو غير مسموح به في اسم ملف أو مجلد.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ملف متعارض\", \"{count} ملف متعارض\", \"{count} ملفان متعارضان\", \"{count} ملف متعارض\", \"{count} ملفات متعارضة\", \"{count} ملفات متعارضة\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} ملف متعارض في {dirname}\", \"{count} ملف متعارض في {dirname}\", \"{count} ملفان متعارضان في {dirname}\", \"{count} ملف متعارض في {dirname}\", \"{count} ملفات متعارضة في {dirname}\", \"{count} ملفات متعارضة في {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} ثانية متبقية\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} متبقية\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"بضع ثوانٍ متبقية\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"إلغاء\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"إلغِ العملية بالكامل\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"إلغاء عمليات رفع الملفات\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"إستمر\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"إنشاء جديد\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"تقدير الوقت المتبقي\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"الإصدار الحالي\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['غير مسموح ان ينتهي اسم الملف بـ \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"إذا اخترت الاحتفاظ بالنسختين فسيتم إلحاق رقم عداد آخر اسم الملف الوارد.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"اسم ملف غير صحيح\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"تاريخ آخر تعديل غير معروف\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"جديد\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"اسم ملف جديد\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"نسخة جديدة\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"مُجمَّد\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"معاينة الصورة\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"تغيير التسمية\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"حدِّد كل صناديق الخيارات\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"حدِّد كل الملفات الموجودة\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"حدِّد كل الملفات الجديدة\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"تخطِّي\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"حجم غير معلوم\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"رفع الملفات\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"رفع ملفات\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"رفع مجلدات\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"الرفع من جهاز \"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"تمّ إلغاء عملية رفع الملفات\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"تمّ تجاوز الرفع\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['رفع \"{folder}\" تمّ تجاوزه'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"تقدُّم الرفع \"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"عند تحديد مجلد وارد، أي ملفات متعارضة بداخله ستتم الكتابة فوقها.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"عند تحديد مجلد وارد، ستتم كتابة المحتوى في المجلد الموجود و سيتم تنفيذ حل التعارض بشكل تعاوُدي.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"أيُّ الملفات ترغب في الإبقاء عليها؟\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"يمكنك إمّا تغيير اسم الملف، أو تجاوزه، أو إلغاء العملية برُمَّتها.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"يجب أن تختار نسخة واحدة على الأقل من كل ملف للاستمرار.\"] } } } } }, { \"locale\": \"ast\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"enolp <enolp@softastur.org>, 2023\", \"Language-Team\": \"Asturian (https://app.transifex.com/nextcloud/teams/64236/ast/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ast\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nenolp <enolp@softastur.org>, 2023\\n\" }, \"msgstr\": [\"Last-Translator: enolp <enolp@softastur.org>, 2023\\nLanguage-Team: Asturian (https://app.transifex.com/nextcloud/teams/64236/ast/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ast\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ficheru en coflictu\", \"{count} ficheros en coflictu\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} ficheru en coflictu en {dirname}\", \"{count} ficheros en coflictu en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Queden {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Tiempu que queda: {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"queden unos segundos\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Encaboxar les xubes\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Siguir\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando'l tiempu que falta\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión esistente\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"Si seleiciones dambes versiones, el ficheru copiáu va tener un númberu amestáu al so nome.\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"La data de la última modificación ye desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevu\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versión nueva\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en posa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar la imaxe\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Marcar toles caxelles\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleicionar tolos ficheros esistentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleicionar tolos ficheros nuevos\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Saltar esti ficheru\", \"Saltar {count} ficheros\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamañu desconocíu\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"Encaboxóse la xuba\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Xubir ficheros\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Xuba en cursu\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué ficheros quies caltener?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Tienes de seleicionar polo menos una versión de cada ficheru pa siguir.\"] } } } } }, { \"locale\": \"az\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Rashad Aliyev <microphprashad@gmail.com>, 2023\", \"Language-Team\": \"Azerbaijani (https://app.transifex.com/nextcloud/teams/64236/az/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"az\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nRashad Aliyev <microphprashad@gmail.com>, 2023\\n\" }, \"msgstr\": [\"Last-Translator: Rashad Aliyev <microphprashad@gmail.com>, 2023\\nLanguage-Team: Azerbaijani (https://app.transifex.com/nextcloud/teams/64236/az/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: az\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saniyə qalıb\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} qalıb\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir neçə saniyə qalıb\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Əlavə et\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yükləməni imtina et\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Təxmini qalan vaxt\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauzadadır\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Faylları yüklə\"] } } } } }, { \"locale\": \"be\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Belarusian (https://www.transifex.com/nextcloud/teams/64236/be/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"be\", \"Plural-Forms\": \"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Belarusian (https://www.transifex.com/nextcloud/teams/64236/be/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: be\\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bg\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bulgarian (Bulgaria) (https://www.transifex.com/nextcloud/teams/64236/bg_BG/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bg_BG\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bulgarian (Bulgaria) (https://www.transifex.com/nextcloud/teams/64236/bg_BG/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bg_BG\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bn_BD\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bengali (Bangladesh) (https://www.transifex.com/nextcloud/teams/64236/bn_BD/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bn_BD\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bengali (Bangladesh) (https://www.transifex.com/nextcloud/teams/64236/bn_BD/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bn_BD\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"br\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"br\", \"Plural-Forms\": \"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: br\\nPlural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bs\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bosnian (https://www.transifex.com/nextcloud/teams/64236/bs/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bs\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bosnian (https://www.transifex.com/nextcloud/teams/64236/bs/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bs\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ca\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Toni Hermoso Pulido <toniher@softcatala.cat>, 2022\", \"Language-Team\": \"Catalan (https://www.transifex.com/nextcloud/teams/64236/ca/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ca\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nMarc Riera <marcriera@softcatala.org>, 2022\\nToni Hermoso Pulido <toniher@softcatala.cat>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Toni Hermoso Pulido <toniher@softcatala.cat>, 2022\\nLanguage-Team: Catalan (https://www.transifex.com/nextcloud/teams/64236/ca/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ca\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Queden {seconds} segons\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"Queden {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"Queden uns segons\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Afegeix\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancel·la les pujades\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"S'està estimant el temps restant\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"En pausa\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Puja els fitxers\"] } } } } }, { \"locale\": \"cs\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Pavel Borecki <pavel.borecki@gmail.com>, 2024\", \"Language-Team\": \"Czech (Czech Republic) (https://app.transifex.com/nextcloud/teams/64236/cs_CZ/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"cs_CZ\", \"Plural-Forms\": \"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMichal Šmahel <ceskyDJ@seznam.cz>, 2024\\nMartin Hankovec, 2024\\nAppukonrad <appukonrad@gmail.com>, 2024\\nPavel Borecki <pavel.borecki@gmail.com>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2024\\nLanguage-Team: Czech (Czech Republic) (https://app.transifex.com/nextcloud/teams/64236/cs_CZ/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: cs_CZ\\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}“ není povoleno použít jako název souboru či složky.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}“ není povoleného typu souboru.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}“ není povoleno použít v rámci názvu souboru či složky.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} kolize souborů\", \"{count} kolize souborů\", \"{count} kolizí souborů\", \"{count} kolize souborů\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} kolize souboru v {dirname}\", \"{count} kolize souboru v {dirname}\", \"{count} kolizí souborů v {dirname}\", \"{count} kolize souboru v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"zbývá {seconds}\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"zbývá {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"zbývá několik sekund\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Zrušit\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušit celou operaci\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Zrušit nahrávání\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovat\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Vytvořit nový\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"odhaduje se zbývající čas\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existující verze\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Názvy souborů nemohou končit na „{segment}“.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Pokud vyberete obě verze, příchozí soubor bude mít ke jménu přidánu číslici.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Neplatný název souboru\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Neznámé datum poslední úpravy\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nové\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nový název souboru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nová verze\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pozastaveno\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Náhled obrázku\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Přejmenovat\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Označit všechny zaškrtávací kolonky\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrat veškeré stávající soubory\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrat veškeré nové soubory\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Přeskočit\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Přeskočit tento soubor\", \"Přeskočit {count} soubory\", \"Přeskočit {count} souborů\", \"Přeskočit {count} soubory\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznámá velikost\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Nahrát\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Nahrát soubory\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Nahrát složky\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Nahrát ze zařízení\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nahrávání bylo zrušeno\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nahrání bylo přeskočeno\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Nahrání „{folder}“ bylo přeskočeno\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Postup v nahrávání\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Po výběru příchozí složky budou rovněž přepsány všechny v ní obsažené konfliktní soubory\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Když je vybrána příchozí složka, obsah je zapsán do existující složky a je provedeno rekurzivní řešení kolizí.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Které soubory si přejete ponechat?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Soubor je možné buď přejmenovat, přeskočit nebo celou operaci zrušit.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby bylo možné pokračovat, je třeba vybrat alespoň jednu verzi od každého souboru.\"] } } } } }, { \"locale\": \"cy_GB\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Welsh (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/cy_GB/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"cy_GB\", \"Plural-Forms\": \"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Welsh (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/cy_GB/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: cy_GB\\nPlural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"da\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Martin Bonde <Martin@maboni.dk>, 2024\", \"Language-Team\": \"Danish (https://app.transifex.com/nextcloud/teams/64236/da/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"da\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nRasmus Rosendahl-Kaa, 2024\\nMartin Bonde <Martin@maboni.dk>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Martin Bonde <Martin@maboni.dk>, 2024\\nLanguage-Team: Danish (https://app.transifex.com/nextcloud/teams/64236/da/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: da\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er et forbudt fil- eller mappenavn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er en forbudt filtype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ikke tilladt i et fil- eller mappenavn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fil konflikt\", \"{count} filer i konflikt\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fil konflikt i {dirname}\", \"{count} filer i konflikt i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{sekunder} sekunder tilbage\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tilbage\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"et par sekunder tilbage\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuller\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annuller hele handlingen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annuller uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsæt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Opret ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimering af resterende tid\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Eksisterende version\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnavne må ikke slutte med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du vælger begge versioner, vil den indkommende fil have et nummer tilføjet til sit navn.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ugyldigt filnavn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Sidste modifikationsdato ukendt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nyt filnavn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauset\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forhåndsvisning af billede\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Omdøb\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vælg alle felter\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vælg alle eksisterende filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vælg alle nye filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Spring over\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Spring denne fil over\", \"Spring {count} filer over\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukendt størrelse\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Upload mapper\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Upload fra enhed\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload er blevet annulleret\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload er blevet sprunget over\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload af \"{folder}\" er blevet sprunget over'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Upload fremskridt\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en indgående mappe er valgt, vil alle modstridende filer i den også blive overskrevet.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en indkommende mappe er valgt, vil dens indhold blive skrevet ind i den eksisterende mappe og en rekursiv konfliktløsning udføres.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer ønsker du at beholde?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan enten omdøbe filen, springe denne fil over eller annullere hele handlingen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du skal vælge mindst én version af hver fil for at fortsætte.\"] } } } } }, { \"locale\": \"de\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Andy Scherzinger <info@andy-scherzinger.de>, 2024\", \"Language-Team\": \"German (https://app.transifex.com/nextcloud/teams/64236/de/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"de\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMario Siegmann <mario_siegmann@web.de>, 2024\\nMartin Wilichowski, 2024\\nAndy Scherzinger <info@andy-scherzinger.de>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Andy Scherzinger <info@andy-scherzinger.de>, 2024\\nLanguage-Team: German (https://app.transifex.com/nextcloud/teams/64236/de/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: de\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ist ein verbotener Datei- oder Ordnername.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ist ein verbotener Dateityp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ist in einem Datei- oder Ordnernamen nicht zulässig.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} Datei-Konflikt\", \"{count} Datei-Konflikte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} Datei-Konflikt in {dirname}\", \"{count} Datei-Konflikte in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} Sekunden verbleiben\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} verbleibend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ein paar Sekunden verbleiben\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hochladen abbrechen\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Neu erstellen\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Geschätzte verbleibende Zeit\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dateinamen dürfen nicht mit \"{segment}\" enden.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn du beide Versionen auswählst, wird der eingehenden Datei eine Nummer zum Namen hinzugefügt.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ungültiger Dateiname\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Neuer Dateiname\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Pausiert\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vorschaubild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Umbenennen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Überspringen\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Diese Datei überspringen\", \"{count} Dateien überspringen\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unbekannte Größe\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Hochladen\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dateien hochladen\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ordner hochladen\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Vom Gerät hochladen\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Das Hochladen wurde abgebrochen\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Das Hochladen wurde übersprungen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Das Hochladen von \"{folder}\" wurde übersprungen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fortschritt beim Hochladen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden alle darin enthaltenen Konfliktdateien ebenfalls überschrieben.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien möchtest du behalten?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kannst die Datei entweder umbenennen, diese Datei überspringen oder den gesamten Vorgang abbrechen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du musst mindestens eine Version jeder Datei auswählen, um fortzufahren.\"] } } } } }, { \"locale\": \"de_DE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Mark Ziegler <mark.ziegler@rakekniven.de>, 2024\", \"Language-Team\": \"German (Germany) (https://app.transifex.com/nextcloud/teams/64236/de_DE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"de_DE\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMario Siegmann <mario_siegmann@web.de>, 2024\\nMark Ziegler <mark.ziegler@rakekniven.de>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Mark Ziegler <mark.ziegler@rakekniven.de>, 2024\\nLanguage-Team: German (Germany) (https://app.transifex.com/nextcloud/teams/64236/de_DE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: de_DE\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ist ein verbotener Datei- oder Ordnername.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ist ein verbotener Dateityp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ist in einem Datei- oder Ordnernamen nicht zulässig.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} Datei-Konflikt\", \"{count} Datei-Konflikte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} Datei-Konflikt in {dirname}\", \"{count} Datei-Konflikte in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} Sekunden verbleiben\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} verbleibend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ein paar Sekunden verbleiben\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hochladen abbrechen\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Neu erstellen\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Berechne verbleibende Zeit\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dateinamen dürfen nicht mit \"{segment}\" enden.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn Sie beide Versionen auswählen, wird der eingehenden Datei eine Nummer zum Namen hinzugefügt.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ungültiger Dateiname\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Neuer Dateiname\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Pausiert\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vorschaubild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Umbenennen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Überspringen\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} Datei überspringen\", \"{count} Dateien überspringen\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unbekannte Größe\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Hochladen\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dateien hochladen\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ordner hochladen\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Vom Gerät hochladen\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Das Hochladen wurde abgebrochen\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Das Hochladen wurde übersprungen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Das Hochladen von \"{folder}\" wurde übersprungen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fortschritt beim Hochladen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden alle darin enthaltenen Konfliktdateien ebenfalls überschrieben.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien möchten Sie behalten?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Sie können die Datei entweder umbenennen, diese Datei überspringen oder den gesamten Vorgang abbrechen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Sie müssen mindestens eine Version jeder Datei auswählen, um fortzufahren.\"] } } } } }, { \"locale\": \"el\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Nik Pap, 2022\", \"Language-Team\": \"Greek (https://www.transifex.com/nextcloud/teams/64236/el/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"el\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nNik Pap, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Nik Pap, 2022\\nLanguage-Team: Greek (https://www.transifex.com/nextcloud/teams/64236/el/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: el\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"απομένουν {seconds} δευτερόλεπτα\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"απομένουν {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"απομένουν λίγα δευτερόλεπτα\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Προσθήκη\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Ακύρωση μεταφορτώσεων\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"εκτίμηση του χρόνου που απομένει\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"σε παύση\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Μεταφόρτωση αρχείων\"] } } } } }, { \"locale\": \"en_GB\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Andi Chandler <andi@gowling.com>, 2024\", \"Language-Team\": \"English (United Kingdom) (https://app.transifex.com/nextcloud/teams/64236/en_GB/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"en_GB\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nAndi Chandler <andi@gowling.com>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Andi Chandler <andi@gowling.com>, 2024\\nLanguage-Team: English (United Kingdom) (https://app.transifex.com/nextcloud/teams/64236/en_GB/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: en_GB\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" is a forbidden file or folder name.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" is a forbidden file type.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" is not allowed inside a file or folder name.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file conflict\", \"{count} files conflict\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file conflict in {dirname}\", \"{count} file conflicts in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} seconds left\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} left\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"a few seconds left\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel the entire operation\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancel uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continue\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Create new\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimating time left\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existing version\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filenames must not end with \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"If you select both versions, the incoming file will have a number added to its name.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Invalid filename\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Last modified date unknown\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"New\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"New filename\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"New version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"paused\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Preview image\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Rename\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Select all checkboxes\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Select all existing files\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Select all new files\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Skip\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Skip this file\", \"Skip {count} files\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unknown size\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload files\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Upload folders\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Upload from device\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload has been cancelled\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload has been skipped\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload of \"{folder}\" has been skipped'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Upload progress\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"When an incoming folder is selected, any conflicting files within it will also be overwritten.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Which files do you want to keep?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"You can either rename the file, skip this file or cancel the whole operation.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"You need to select at least one version of each file to continue.\"] } } } } }, { \"locale\": \"eo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"eo\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: eo\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Julio C. Ortega, 2024\", \"Language-Team\": \"Spanish (https://app.transifex.com/nextcloud/teams/64236/es/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nFranciscoFJ <dev-ooo@satel-sa.com>, 2024\\nJulio C. Ortega, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Julio C. Ortega, 2024\\nLanguage-Team: Spanish (https://app.transifex.com/nextcloud/teams/64236/es/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{filename}\" contains invalid characters, how do you want to continue?': { \"msgid\": '\"{filename}\" contains invalid characters, how do you want to continue?', \"msgstr\": ['\"{filename}\" contiene caracteres inválidos, ¿cómo desea continuar?'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} conflictos de archivo\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicto de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan unos segundos\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, el archivo entrante le será agregado un número a su nombre.\"] }, \"Invalid file name\": { \"msgid\": \"Invalid file name\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Última fecha de modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Saltar\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Saltar este archivo\", \"Saltar {count} archivos\", \"Saltar {count} archivos\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Subir carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Subir desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La subida ha sido cancelada\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la subida\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier de los archivos en conflictos también serán sobre-escritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido es escrito en la carpeta existente y se realizará una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué archivos desea conservar?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_419\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"ALEJANDRO CASTRO, 2022\", \"Language-Team\": \"Spanish (Latin America) (https://www.transifex.com/nextcloud/teams/64236/es_419/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_419\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nALEJANDRO CASTRO, 2022\\n\" }, \"msgstr\": [\"Last-Translator: ALEJANDRO CASTRO, 2022\\nLanguage-Team: Spanish (Latin America) (https://www.transifex.com/nextcloud/teams/64236/es_419/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_419\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{tiempo} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan pocos segundos\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"agregar\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] } } } } }, { \"locale\": \"es_AR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Matías Campo Hoet <matiascampo@gmail.com>, 2024\", \"Language-Team\": \"Spanish (Argentina) (https://app.transifex.com/nextcloud/teams/64236/es_AR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_AR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMatías Campo Hoet <matiascampo@gmail.com>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Matías Campo Hoet <matiascampo@gmail.com>, 2024\\nLanguage-Team: Spanish (Argentina) (https://app.transifex.com/nextcloud/teams/64236/es_AR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_AR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{filename}\" contains invalid characters, how do you want to continue?': { \"msgid\": '\"{filename}\" contains invalid characters, how do you want to continue?', \"msgstr\": ['\"{filename}\" contiene caracteres inválidos, ¿cómo desea continuar?'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} conflictos de archivo\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicto de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan unos segundos\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, se agregará un número al nombre del archivo entrante.\"] }, \"Invalid file name\": { \"msgid\": \"Invalid file name\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Fecha de última modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vista previa de imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir este archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Cargar archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Cargar carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Cargar desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Carga cancelada\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la carga\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier archivo en conflicto dentro de la misma también serán sobreescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido se escribe en la carpeta existente y se realiza una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué archivos desea conservar?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_CL\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Chile) (https://www.transifex.com/nextcloud/teams/64236/es_CL/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CL\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Chile) (https://www.transifex.com/nextcloud/teams/64236/es_CL/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CL\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_CO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Colombia) (https://www.transifex.com/nextcloud/teams/64236/es_CO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CO\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Colombia) (https://www.transifex.com/nextcloud/teams/64236/es_CO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CO\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_CR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Costa Rica) (https://www.transifex.com/nextcloud/teams/64236/es_CR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Costa Rica) (https://www.transifex.com/nextcloud/teams/64236/es_CR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_DO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Dominican Republic) (https://www.transifex.com/nextcloud/teams/64236/es_DO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_DO\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Dominican Republic) (https://www.transifex.com/nextcloud/teams/64236/es_DO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_DO\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_EC\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Ecuador) (https://www.transifex.com/nextcloud/teams/64236/es_EC/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_EC\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Ecuador) (https://www.transifex.com/nextcloud/teams/64236/es_EC/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_EC\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_GT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Guatemala) (https://www.transifex.com/nextcloud/teams/64236/es_GT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_GT\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Guatemala) (https://www.transifex.com/nextcloud/teams/64236/es_GT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_GT\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_HN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Honduras) (https://www.transifex.com/nextcloud/teams/64236/es_HN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_HN\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Honduras) (https://www.transifex.com/nextcloud/teams/64236/es_HN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_HN\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_MX\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Jehu Marcos Herrera Puentes, 2024\", \"Language-Team\": \"Spanish (Mexico) (https://app.transifex.com/nextcloud/teams/64236/es_MX/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_MX\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJehu Marcos Herrera Puentes, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Jehu Marcos Herrera Puentes, 2024\\nLanguage-Team: Spanish (Mexico) (https://app.transifex.com/nextcloud/teams/64236/es_MX/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_MX\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{filename}\" contains invalid characters, how do you want to continue?': { \"msgid\": '\"{filename}\" contains invalid characters, how do you want to continue?', \"msgstr\": ['\"{filename}\" contiene caracteres inválidos, ¿Cómo desea continuar?'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} archivos en conflicto\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} archivo en conflicto en {dirname}\", \"{count} archivos en conflicto en {dirname}\", \"{count} archivo en conflicto en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{tiempo} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan pocos segundos\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, se agregará un número al nombre del archivo entrante.\"] }, \"Invalid file name\": { \"msgid\": \"Invalid file name\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Fecha de última modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir este archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Subir carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Subir desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La subida ha sido cancelada\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la subida\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier archivo en conflicto dentro de la misma también será sobrescrito.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido se escribe en la carpeta existente y se realiza una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Cuáles archivos desea conservar?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_NI\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Nicaragua) (https://www.transifex.com/nextcloud/teams/64236/es_NI/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_NI\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Nicaragua) (https://www.transifex.com/nextcloud/teams/64236/es_NI/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_NI\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PA\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Panama) (https://www.transifex.com/nextcloud/teams/64236/es_PA/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PA\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Panama) (https://www.transifex.com/nextcloud/teams/64236/es_PA/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PA\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Peru) (https://www.transifex.com/nextcloud/teams/64236/es_PE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PE\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Peru) (https://www.transifex.com/nextcloud/teams/64236/es_PE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PE\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Puerto Rico) (https://www.transifex.com/nextcloud/teams/64236/es_PR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Puerto Rico) (https://www.transifex.com/nextcloud/teams/64236/es_PR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Paraguay) (https://www.transifex.com/nextcloud/teams/64236/es_PY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PY\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Paraguay) (https://www.transifex.com/nextcloud/teams/64236/es_PY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PY\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_SV\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (El Salvador) (https://www.transifex.com/nextcloud/teams/64236/es_SV/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_SV\", \"Plural-Forms\": \"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (El Salvador) (https://www.transifex.com/nextcloud/teams/64236/es_SV/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_SV\\nPlural-Forms: nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_UY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Uruguay) (https://www.transifex.com/nextcloud/teams/64236/es_UY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_UY\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Uruguay) (https://www.transifex.com/nextcloud/teams/64236/es_UY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_UY\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"et_EE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Taavo Roos, 2023\", \"Language-Team\": \"Estonian (Estonia) (https://app.transifex.com/nextcloud/teams/64236/et_EE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"et_EE\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nMait R, 2022\\nTaavo Roos, 2023\\n\" }, \"msgstr\": [\"Last-Translator: Taavo Roos, 2023\\nLanguage-Team: Estonian (Estonia) (https://app.transifex.com/nextcloud/teams/64236/et_EE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: et_EE\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} jäänud sekundid\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} aega jäänud\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"jäänud mõni sekund\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Lisa\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Tühista üleslaadimine\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"hinnanguline järelejäänud aeg\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausil\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Lae failid üles\"] } } } } }, { \"locale\": \"eu\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Unai Tolosa Pontesta <utolosa002@gmail.com>, 2022\", \"Language-Team\": \"Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"eu\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nUnai Tolosa Pontesta <utolosa002@gmail.com>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Unai Tolosa Pontesta <utolosa002@gmail.com>, 2022\\nLanguage-Team: Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: eu\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundo geratzen dira\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} geratzen da\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"segundo batzuk geratzen dira\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Gehitu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Ezeztatu igoerak\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"kalkulatutako geratzen den denbora\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"geldituta\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Igo fitxategiak\"] } } } } }, { \"locale\": \"fa\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Fatemeh Komeily, 2023\", \"Language-Team\": \"Persian (https://app.transifex.com/nextcloud/teams/64236/fa/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fa\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nFatemeh Komeily, 2023\\n\" }, \"msgstr\": [\"Last-Translator: Fatemeh Komeily, 2023\\nLanguage-Team: Persian (https://app.transifex.com/nextcloud/teams/64236/fa/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fa\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"ثانیه های باقی مانده\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"باقی مانده\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"چند ثانیه مانده\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"اضافه کردن\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"کنسل کردن فایل های اپلود شده\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"تخمین زمان باقی مانده\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"مکث کردن\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"بارگذاری فایل ها\"] } } } } }, { \"locale\": \"fi\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"teemue, 2024\", \"Language-Team\": \"Finnish (Finland) (https://app.transifex.com/nextcloud/teams/64236/fi_FI/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fi_FI\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJiri Grönroos <jiri.gronroos@iki.fi>, 2024\\nthingumy, 2024\\nteemue, 2024\\n\" }, \"msgstr\": [\"Last-Translator: teemue, 2024\\nLanguage-Team: Finnish (Finland) (https://app.transifex.com/nextcloud/teams/64236/fi_FI/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fi_FI\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" on kielletty tiedoston tai hakemiston nimi.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" on kielletty tiedostotyyppi.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ei ole sallittu tiedoston tai hakemiston nimessä.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} tiedoston ristiriita\", \"{count} tiedoston ristiriita\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} tiedoston ristiriita kansiossa {dirname}\", \"{count} tiedoston ristiriita kansiossa {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekuntia jäljellä\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} jäljellä\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"muutama sekunti jäljellä\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Peruuta\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Peruuta koko toimenpide\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Peruuta lähetykset\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Jatka\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Luo uusi\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"arvioidaan jäljellä olevaa aikaa\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Olemassa oleva versio\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Tiedoston nimi ei saa päättyä \"{segment}\"'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jos valitset molemmat versiot, saapuvan tiedoston nimeen lisätään numero.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Kielletty/väärä tiedoston nimi\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Viimeisin muokkauspäivä on tuntematon\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Uusi\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Uusi tiedostonimi\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Uusi versio\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"keskeytetty\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Esikatsele kuva\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Nimeä uudelleen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Valitse kaikki valintaruudut\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Valitse kaikki olemassa olevat tiedostot\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Valitse kaikki uudet tiedostot\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ohita\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ohita tämä tiedosto\", \"Ohita {count} tiedostoa\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tuntematon koko\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Lähetä\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Lähetä tiedostoja\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Lähetä kansioita\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Lähetä laitteelta\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Lähetys on peruttu\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Lähetys on ohitettu\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Hakemiston \"{folder}\" lähetys on ohitettu'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Lähetyksen edistyminen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Valittuasi saapuvien kansion, kaikki ristiriitaiset tiedostot kansiossa ylikirjoitetaan.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Valittuasi saapuvien kansion, sisältö kirjoitetaan olemassaolevaan kansioon ja suoritetaan rekursiivinen ristiriitojen poisto.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Mitkä tiedostot haluat säilyttää?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Voit joko nimetä tiedoston uudelleen, ohittaa tämän tiedoston tai peruuttaa koko toiminnon.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Sinun täytyy valita vähintään yksi versio jokaisesta tiedostosta jatkaaksesi.\"] } } } } }, { \"locale\": \"fo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Faroese (https://www.transifex.com/nextcloud/teams/64236/fo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fo\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Faroese (https://www.transifex.com/nextcloud/teams/64236/fo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fo\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"fr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Arnaud Cazenave, 2024\", \"Language-Team\": \"French (https://app.transifex.com/nextcloud/teams/64236/fr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fr\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nBenoit Pruneau, 2024\\njed boulahya, 2024\\nJérôme HERBINET, 2024\\nArnaud Cazenave, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Arnaud Cazenave, 2024\\nLanguage-Team: French (https://app.transifex.com/nextcloud/teams/64236/fr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fr\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" est un nom de fichier ou de dossier interdit.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" est un type de fichier interdit.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`\"{segment}\" n'est pas autorisé dans le nom d'un fichier ou d'un dossier.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fichier en conflit\", \"{count} fichiers en conflit\", \"{count} fichiers en conflit\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fichier en conflit dans {dirname}\", \"{count} fichiers en conflit dans {dirname}\", \"{count} fichiers en conflit dans {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} secondes restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restant\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quelques secondes restantes\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuler\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annuler l'opération entière\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annuler les téléversements\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuer\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Créer un nouveau\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimation du temps restant\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Version existante\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Le nom des fichiers ne doit pas finir par \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si vous sélectionnez les deux versions, le nouveau fichier aura un nombre ajouté à son nom.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nom de fichier invalide\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Date de la dernière modification est inconnue\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nouveau\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nouveau nom de fichier\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nouvelle version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pause\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Aperçu de l'image\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renommer\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Sélectionner toutes les cases à cocher\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Sélectionner tous les fichiers existants\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Sélectionner tous les nouveaux fichiers\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ignorer\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ignorer ce fichier\", \"Ignorer {count} fichiers\", \"Ignorer {count} fichiers\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Taille inconnue\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Téléverser\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Téléverser des fichiers\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Téléverser des dossiers\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Téléverser depuis l'appareil\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Le téléversement a été annulé\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Le téléversement a été ignoré\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Le téléversement de \"{folder}\" a été ignoré'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progression du téléversement\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Lorsqu'un dossier entrant est sélectionné, tous les fichiers en conflit qu'il contient seront également écrasés.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Lorsqu'un dossier entrant est sélectionné, le contenu est ajouté dans le dossier existant et une résolution récursive des conflits est effectuée.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quels fichiers souhaitez-vous conserver ?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Vous pouvez soit renommer le fichier, soit ignorer le fichier soit annuler toute l'opération.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Vous devez sélectionner au moins une version de chaque fichier pour continuer.\"] } } } } }, { \"locale\": \"ga\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Aindriú Mac Giolla Eoin, 2024\", \"Language-Team\": \"Irish (https://app.transifex.com/nextcloud/teams/64236/ga/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ga\", \"Plural-Forms\": \"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nAindriú Mac Giolla Eoin, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Aindriú Mac Giolla Eoin, 2024\\nLanguage-Team: Irish (https://app.transifex.com/nextcloud/teams/64236/ga/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ga\\nPlural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['Is ainm toirmiscthe comhaid nó fillteáin é \"{segment}\".'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Is cineál comhaid toirmiscthe é \"{segment}\".'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`Ní cheadaítear \"{segment}\" taobh istigh d'ainm comhaid nó fillteáin.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} coimhlint comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} coimhlint comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} soicind fágtha\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} fágtha\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"cúpla soicind fágtha\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cealaigh\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cealaigh an oibríocht iomlán\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cealaigh uaslódálacha\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Leanúint ar aghaidh\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Cruthaigh nua\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ag déanamh meastachán ar an am atá fágtha\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Leagan láithreach \"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Níor cheart go gcríochnaíonn comhaid chomhad le \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Má roghnaíonn tú an dá leagan, cuirfear uimhir leis an ainm a thagann isteach.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ainm comhaid neamhbhailí\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Dáta modhnaithe is déanaí anaithnid\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nua\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ainm comhaid nua\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Leagan nua\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"sos\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Íomhá réamhamharc\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Athainmnigh\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Roghnaigh gach ticbhosca\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Roghnaigh gach comhad atá ann cheana féin\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Roghnaigh gach comhad nua\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Scipeáil\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Léim an comhad seo\", \"Léim ar {count} comhad\", \"Léim ar {count} comhad\", \"Léim ar {count} comhad\", \"Léim ar {count} comhad\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Méid anaithnid\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Uaslódáil\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Uaslódáil comhaid\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Uaslódáil fillteáin\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Íosluchtaigh ó ghléas\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Cuireadh an t-uaslódáil ar ceal\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Léiríodh an uaslódáil\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Léiríodh an uaslódáil \"{folder}\".'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uaslódáil dul chun cinn\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, déanfar aon chomhad contrártha laistigh de a fhorscríobh freisin.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, scríobhtar an t-ábhar isteach san fhillteán atá ann cheana agus déantar réiteach coinbhleachta athchúrsach.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Cé na comhaid ar mhaith leat a choinneáil?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Is féidir leat an comhad a athainmniú, scipeáil an comhad seo nó an oibríocht iomlán a chealú.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ní mór duit leagan amháin ar a laghad de gach comhad a roghnú chun leanúint ar aghaidh.\"] } } } } }, { \"locale\": \"gd\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Gaelic, Scottish (https://www.transifex.com/nextcloud/teams/64236/gd/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"gd\", \"Plural-Forms\": \"nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Gaelic, Scottish (https://www.transifex.com/nextcloud/teams/64236/gd/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: gd\\nPlural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"gl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Miguel Anxo Bouzada <mbouzada@gmail.com>, 2024\", \"Language-Team\": \"Galician (https://app.transifex.com/nextcloud/teams/64236/gl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"gl\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMiguel Anxo Bouzada <mbouzada@gmail.com>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Miguel Anxo Bouzada <mbouzada@gmail.com>, 2024\\nLanguage-Team: Galician (https://app.transifex.com/nextcloud/teams/64236/gl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: gl\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"«{segment}» é un nome vedado para un ficheiro ou cartafol.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"«{segment}» é un tipo de ficheiro vedado.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"«{segment}» non está permitido dentro dun nome de ficheiro ou cartafol.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflito de ficheiros\", \"{count} conflitos de ficheiros\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflito de ficheiros en {dirname}\", \"{count} conflitos de ficheiros en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"faltan {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"falta {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"faltan uns segundos\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancela toda a operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar envíos\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear un novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"calculando canto tempo falta\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Os nomes de ficheiros non deben rematar con «{segment}».\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selecciona ambas as versións, o ficheiro entrante terá un número engadido ao seu nome.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"O nome de ficheiro non é válido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificación descoñecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nova\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de ficheiro\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"detido\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vista previa da imaxe\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Marcar todas as caixas de selección\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos os ficheiros existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos os ficheiros novos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omita este ficheiro\", \"Omitir {count} ficheiros\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño descoñecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Enviar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Enviar ficheiros\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Enviar cartafoles\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Enviar dende o dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O envío foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O envío foi omitido\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"O envío de «{folder}» foi omitido\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso do envío\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, tamén se sobrescribirán os ficheiros en conflito dentro del.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, o contido escríbese no cartafol existente e lévase a cabo unha resolución recursiva de conflitos.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Que ficheiros quere conservar?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Pode cambiar o nome do ficheiro, omitir este ficheiro ou cancelar toda a operación.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar polo menos unha versión de cada ficheiro para continuar.\"] } } } } }, { \"locale\": \"he\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"he\", \"Plural-Forms\": \"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: he\\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hi_IN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Hindi (India) (https://www.transifex.com/nextcloud/teams/64236/hi_IN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hi_IN\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Hindi (India) (https://www.transifex.com/nextcloud/teams/64236/hi_IN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hi_IN\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Croatian (https://www.transifex.com/nextcloud/teams/64236/hr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hr\", \"Plural-Forms\": \"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Croatian (https://www.transifex.com/nextcloud/teams/64236/hr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hr\\nPlural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hsb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Upper Sorbian (https://www.transifex.com/nextcloud/teams/64236/hsb/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hsb\", \"Plural-Forms\": \"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Upper Sorbian (https://www.transifex.com/nextcloud/teams/64236/hsb/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hsb\\nPlural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hu\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Gyuris Gellért <jobel@ujevangelizacio.hu>, 2024\", \"Language-Team\": \"Hungarian (Hungary) (https://app.transifex.com/nextcloud/teams/64236/hu_HU/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hu_HU\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nGyuris Gellért <jobel@ujevangelizacio.hu>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Gyuris Gellért <jobel@ujevangelizacio.hu>, 2024\\nLanguage-Team: Hungarian (Hungary) (https://app.transifex.com/nextcloud/teams/64236/hu_HU/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hu_HU\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['Tiltott fájl- vagy mappanév: „{segment}\".'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Tiltott fájltípus: „{segment}\".'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Nem megengedett egy fájl- vagy mappanévben: „{segment}\".'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}fájlt érintő konfliktus\", \"{count} fájlt érintő konfliktus\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fájlt érintő konfliktus a mappában: {dirname}\", \"{count}fájlt érintő konfliktus a mappában: {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{} másodperc van hátra\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} van hátra\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"pár másodperc van hátra\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Mégse\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Teljes művelet megszakítása\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Feltöltések megszakítása\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Tovább\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Új létrehozása\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"hátralévő idő becslése\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Jelenlegi változat\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Fájlnevek nem végződhetnek erre: „{segment}”.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ha mindkét verziót kiválasztja, a bejövő fájl neve egy számmal egészül ki.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Érvénytelen fájlnév\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Utolsó módosítás dátuma ismeretlen\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Új\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Új fájlnév\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Új verzió\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"szüneteltetve\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Kép előnézete\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Átnevezés\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Minden jelölőnégyzet kijelölése\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Minden jelenlegi fájl kijelölése\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Minden új fájl kijelölése\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Kihagyás\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ezen fájl kihagyása\", \"{count}fájl kihagyása\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ismeretlen méret\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Feltöltés\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Fájlok feltöltése\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Mappák feltöltése\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Feltöltés eszközről\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Feltöltés meg lett szakítva\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Feltöltés át lett ugorva\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"„{folder}” feltöltése át lett ugorva\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Feltöltési folyamat\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ha egy bejövő mappa van kiválasztva, a mappában lévő ütköző fájlok is felülírásra kerülnek.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ha egy bejövő mappa van kiválasztva, a tartalom a meglévő mappába íródik és rekurzív konfliktusfeloldás történik.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Mely fájlokat kívánja megtartani?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Átnevezheti a fájlt, kihagyhatja ezt a fájlt, vagy törölheti az egész műveletet.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"A folytatáshoz minden fájlból legalább egy verziót ki kell választani.\"] } } } } }, { \"locale\": \"hy\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Armenian (https://www.transifex.com/nextcloud/teams/64236/hy/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hy\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Armenian (https://www.transifex.com/nextcloud/teams/64236/hy/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hy\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ia\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Interlingua (https://www.transifex.com/nextcloud/teams/64236/ia/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ia\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Interlingua (https://www.transifex.com/nextcloud/teams/64236/ia/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ia\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"id\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Linerly <linerly@proton.me>, 2023\", \"Language-Team\": \"Indonesian (https://app.transifex.com/nextcloud/teams/64236/id/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"id\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJohn Molakvoæ <skjnldsv@protonmail.com>, 2023\\nEmpty Slot Filler, 2023\\nLinerly <linerly@proton.me>, 2023\\n\" }, \"msgstr\": [\"Last-Translator: Linerly <linerly@proton.me>, 2023\\nLanguage-Team: Indonesian (https://app.transifex.com/nextcloud/teams/64236/id/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: id\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} berkas berkonflik\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} berkas berkonflik dalam {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} detik tersisa\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tersisa\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"tinggal sebentar lagi\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Batalkan unggahan\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Lanjutkan\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"memperkirakan waktu yang tersisa\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versi yang ada\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"Jika Anda memilih kedua versi, nama berkas yang disalin akan ditambahi angka.\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Tanggal perubahan terakhir tidak diketahui\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versi baru\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"dijeda\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Gambar pratinjau\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Pilih semua kotak centang\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Pilih semua berkas yang ada\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Pilih semua berkas baru\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Lewati {count} berkas\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukuran tidak diketahui\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"Unggahan dibatalkan\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Unggah berkas\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Berkas mana yang Anda ingin tetap simpan?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Anda harus memilih setidaknya satu versi dari masing-masing berkas untuk melanjutkan.\"] } } } } }, { \"locale\": \"ig\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Igbo (https://www.transifex.com/nextcloud/teams/64236/ig/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ig\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Igbo (https://www.transifex.com/nextcloud/teams/64236/ig/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ig\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"is\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Sveinn í Felli <sv1@fellsnet.is>, 2023\", \"Language-Team\": \"Icelandic (https://app.transifex.com/nextcloud/teams/64236/is/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"is\", \"Plural-Forms\": \"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nSveinn í Felli <sv1@fellsnet.is>, 2023\\n\" }, \"msgstr\": [\"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>, 2023\\nLanguage-Team: Icelandic (https://app.transifex.com/nextcloud/teams/64236/is/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: is\\nPlural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} árekstur skráa\", \"{count} árekstrar skráa\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} árekstur skráa í {dirname}\", \"{count} árekstrar skráa í {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekúndur eftir\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} eftir\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"nokkrar sekúndur eftir\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hætta við innsendingar\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Halda áfram\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"áætla tíma sem eftir er\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Fyrirliggjandi útgáfa\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"Ef þú velur báðar útgáfur, þá mun verða bætt tölustaf aftan við heiti afrituðu skrárinnar.\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Síðasta breytingadagsetning er óþekkt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nýtt\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ný útgáfa\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"í bið\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forskoðun myndar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Velja gátreiti\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Velja allar fyrirliggjandi skrár\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Velja allar nýjar skrár\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Sleppa þessari skrá\", \"Sleppa {count} skrám\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Óþekkt stærð\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"Hætt við innsendingu\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Senda inn skrár\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvaða skrám vilt þú vilt halda eftir?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Þú verður að velja að minnsta kosti eina útgáfu af hverri skrá til að halda áfram.\"] } } } } }, { \"locale\": \"it\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"albanobattistella <albanobattistella@gmail.com>, 2024\", \"Language-Team\": \"Italian (https://app.transifex.com/nextcloud/teams/64236/it/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"it\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nFrancesco Sercia, 2024\\nalbanobattistella <albanobattistella@gmail.com>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: albanobattistella <albanobattistella@gmail.com>, 2024\\nLanguage-Team: Italian (https://app.transifex.com/nextcloud/teams/64236/it/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: it\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" è un nome di file o cartella proibito.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\"è un tipo di file proibito.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`\"{segment}\" non è consentito all'interno di un nome di file o cartella.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file in conflitto\", \"{count} file in conflitto\", \"{count} file in conflitto\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file in conflitto in {dirname}\", \"{count} file in conflitto in {dirname}\", \"{count} file in conflitto in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} secondi rimanenti \"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} rimanente\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"alcuni secondi rimanenti\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annulla\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annulla l'intera operazione\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annulla i caricamenti\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continua\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crea nuovo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"calcolo il tempo rimanente\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versione esistente\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['I nomi dei file non devono terminare con \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selezioni entrambe le versioni, nel nome del file copiato verrà aggiunto un numero \"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome file non valido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Ultima modifica sconosciuta\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuovo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nuovo nome file\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nuova versione\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Anteprima immagine\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Rinomina\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleziona tutte le caselle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleziona tutti i file esistenti\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleziona tutti i nuovi file\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Salta\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Salta questo file\", \"Salta {count} file\", \"Salta {count} file\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Dimensione sconosciuta\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Caricamento\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Carica i file\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Carica cartelle\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Carica dal dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Caricamento annullato\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Il caricamento è stato saltato\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Il caricamento di \"{folder}\" è stato saltato'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progresso del caricamento\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, anche tutti i file in conflitto al suo interno verranno sovrascritti.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, il contenuto viene scritto nella cartella esistente e viene eseguita una risoluzione ricorsiva dei conflitti.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quali file vuoi mantenere?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"È possibile rinominare il file, ignorarlo o annullare l'intera operazione.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Devi selezionare almeno una versione di ogni file per continuare\"] } } } } }, { \"locale\": \"ja\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"kshimohata, 2024\", \"Language-Team\": \"Japanese (Japan) (https://app.transifex.com/nextcloud/teams/64236/ja_JP/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ja_JP\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nkojima.imamura, 2024\\nTakafumi AKAMATSU, 2024\\ndevi, 2024\\nkshimohata, 2024\\n\" }, \"msgstr\": [\"Last-Translator: kshimohata, 2024\\nLanguage-Team: Japanese (Japan) (https://app.transifex.com/nextcloud/teams/64236/ja_JP/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ja_JP\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" は禁止されているファイルまたはフォルダ名です。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" は禁止されているファイルタイプです。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['ファイルまたはフォルダ名に \"{segment}\" を含めることはできません。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ファイル数の競合\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} で {count} 個のファイルが競合しています\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"残り {seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"残り {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"残り数秒\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"キャンセル\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"すべての操作をキャンセルする\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"アップロードをキャンセル\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"続ける\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"新規作成\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"概算残り時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既存バージョン\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['ファイル名の末尾に \"{segment}\" を付けることはできません。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"両方のバージョンを選択した場合、受信ファイルの名前に数字が追加されます。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"無効なファイル名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最終更新日不明\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新規作成\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新しいファイル名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新しいバージョン\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"一時停止中\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"プレビュー画像\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"名前を変更\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"すべて選択\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"すべての既存ファイルを選択\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"すべての新規ファイルを選択\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"スキップ\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} 個のファイルをスキップする\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"サイズ不明\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"アップロード\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"ファイルをアップロード\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"フォルダのアップロード\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"デバイスからのアップロード\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"アップロードはキャンセルされました\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"アップロードがスキップされました\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" のアップロードがスキップされました'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"アップロード進行状況\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"受信フォルダが選択されると、その中の競合するファイルもすべて上書きされます。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"受信フォルダが選択されると、その内容は既存のフォルダに書き込まれ、再帰的な競合解決が行われます。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"どのファイルを保持しますか?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"ファイル名を変更するか、このファイルをスキップするか、操作全体をキャンセルすることができます。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"続行するには、各ファイルの少なくとも1つのバージョンを選択する必要があります。\"] } } } } }, { \"locale\": \"ka\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Georgian (https://www.transifex.com/nextcloud/teams/64236/ka/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ka\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Georgian (https://www.transifex.com/nextcloud/teams/64236/ka/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ka\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ka_GE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Georgian (Georgia) (https://www.transifex.com/nextcloud/teams/64236/ka_GE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ka_GE\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Georgian (Georgia) (https://www.transifex.com/nextcloud/teams/64236/ka_GE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ka_GE\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"kab\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"ZiriSut, 2023\", \"Language-Team\": \"Kabyle (https://app.transifex.com/nextcloud/teams/64236/kab/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kab\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nZiriSut, 2023\\n\" }, \"msgstr\": [\"Last-Translator: ZiriSut, 2023\\nLanguage-Team: Kabyle (https://app.transifex.com/nextcloud/teams/64236/kab/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kab\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} tesdatin i d-yeqqimen\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} i d-yeqqimen\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"qqiment-d kra n tesdatin kan\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Rnu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Sefsex asali\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"asizel n wakud i d-yeqqimen\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"yeḥbes\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Sali-d ifuyla\"] } } } } }, { \"locale\": \"kk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Kazakh (https://www.transifex.com/nextcloud/teams/64236/kk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kk\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Kazakh (https://www.transifex.com/nextcloud/teams/64236/kk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kk\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"km\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Khmer (https://www.transifex.com/nextcloud/teams/64236/km/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"km\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Khmer (https://www.transifex.com/nextcloud/teams/64236/km/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: km\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"kn\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Kannada (https://www.transifex.com/nextcloud/teams/64236/kn/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kn\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Kannada (https://www.transifex.com/nextcloud/teams/64236/kn/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kn\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ko\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"이상오, 2024\", \"Language-Team\": \"Korean (https://app.transifex.com/nextcloud/teams/64236/ko/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ko\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\n이상오, 2024\\n\" }, \"msgstr\": [\"Last-Translator: 이상오, 2024\\nLanguage-Team: Korean (https://app.transifex.com/nextcloud/teams/64236/ko/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ko\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{filename}\" contains invalid characters, how do you want to continue?': { \"msgid\": '\"{filename}\" contains invalid characters, how do you want to continue?', \"msgstr\": ['\"{filename}\"에 유효하지 않은 문자가 있습니다, 계속하시겠습니까?'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}개의 파일이 충돌함\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname}에서 {count}개의 파일이 충돌함\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds}초 남음\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} 남음\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"곧 완료\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"취소\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"전체 작업을 취소\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"업로드 취소\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"확인\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"새로 만들기\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"남은 시간 계산\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"현재 버전\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"두 파일을 모두 선택하면, 들어오는 파일의 이름에 번호가 추가됩니다.\"] }, \"Invalid file name\": { \"msgid\": \"Invalid file name\", \"msgstr\": [\"잘못된 파일 이름\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"최근 수정일 알 수 없음\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"새로 만들기\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"새 버전\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"일시정지됨\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"미리보기 이미지\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"이름 바꾸기\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"모든 체크박스 선택\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"기존 파일을 모두 선택\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"새로운 파일을 모두 선택\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"건너뛰기\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count}개의 파일 넘기기\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"크기를 알 수 없음\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"파일 업로드\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"폴더 업로드\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"장치에서 업로드\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"업로드가 취소되었습니다.\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"업로드 진행도\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"들어오는 폴더를 선택했다면, 충돌하는 내부 파일들은 덮어쓰기 됩니다.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"들어오는 폴더를 선택했다면 내용물이 그 기존 폴더 안에 작성되고, 전체적으로 충돌 해결을 수행합니다.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"어떤 파일을 보존하시겠습니까?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"계속하기 위해서는 한 파일에 최소 하나의 버전을 선택해야 합니다.\"] } } } } }, { \"locale\": \"la\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Latin (https://www.transifex.com/nextcloud/teams/64236/la/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"la\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Latin (https://www.transifex.com/nextcloud/teams/64236/la/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: la\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Luxembourgish (https://www.transifex.com/nextcloud/teams/64236/lb/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lb\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Luxembourgish (https://www.transifex.com/nextcloud/teams/64236/lb/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lb\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Lao (https://www.transifex.com/nextcloud/teams/64236/lo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lo\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Lao (https://www.transifex.com/nextcloud/teams/64236/lo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lo\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lt_LT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lt_LT\", \"Plural-Forms\": \"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lt_LT\\nPlural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lv\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Latvian (https://www.transifex.com/nextcloud/teams/64236/lv/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lv\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Latvian (https://www.transifex.com/nextcloud/teams/64236/lv/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lv\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"mk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Сашко Тодоров <sasetodorov@gmail.com>, 2022\", \"Language-Team\": \"Macedonian (https://www.transifex.com/nextcloud/teams/64236/mk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mk\", \"Plural-Forms\": \"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nСашко Тодоров <sasetodorov@gmail.com>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Сашко Тодоров <sasetodorov@gmail.com>, 2022\\nLanguage-Team: Macedonian (https://www.transifex.com/nextcloud/teams/64236/mk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mk\\nPlural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"преостануваат {seconds} секунди\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"преостанува {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"уште неколку секунди\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Додади\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Прекини прикачување\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"приближно преостанато време\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"паузирано\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Прикачување датотеки\"] } } } } }, { \"locale\": \"mn\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"BATKHUYAG Ganbold, 2023\", \"Language-Team\": \"Mongolian (https://app.transifex.com/nextcloud/teams/64236/mn/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mn\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nBATKHUYAG Ganbold, 2023\\n\" }, \"msgstr\": [\"Last-Translator: BATKHUYAG Ganbold, 2023\\nLanguage-Team: Mongolian (https://app.transifex.com/nextcloud/teams/64236/mn/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mn\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} секунд үлдсэн\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} үлдсэн\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"хэдхэн секунд үлдсэн\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Нэмэх\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Илгээлтийг цуцлах\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Үлдсэн хугацааг тооцоолж байна\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"түр зогсоосон\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Файл илгээх\"] } } } } }, { \"locale\": \"mr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Marathi (https://www.transifex.com/nextcloud/teams/64236/mr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mr\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Marathi (https://www.transifex.com/nextcloud/teams/64236/mr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mr\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ms_MY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Malay (Malaysia) (https://www.transifex.com/nextcloud/teams/64236/ms_MY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ms_MY\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Malay (Malaysia) (https://www.transifex.com/nextcloud/teams/64236/ms_MY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ms_MY\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"my\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"my\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: my\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"nb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Roger Knutsen, 2024\", \"Language-Team\": \"Norwegian Bokmål (Norway) (https://app.transifex.com/nextcloud/teams/64236/nb_NO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nb_NO\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nRoger Knutsen, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Roger Knutsen, 2024\\nLanguage-Team: Norwegian Bokmål (Norway) (https://app.transifex.com/nextcloud/teams/64236/nb_NO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nb_NO\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er et forbudt fil- eller mappenavn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er en forbudt filtype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ikke tillatt i et fil- eller mappenavn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file conflict\", \"{count} filkonflikter\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file conflict in {dirname}\", \"{count} filkonflikter i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunder igjen\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} igjen\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"noen få sekunder igjen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hele operasjonen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Avbryt opplastninger\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsett\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Opprett ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Estimerer tid igjen\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Gjeldende versjon\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnavn må ikke slutte med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du velger begge versjonene, vil den innkommende filen ha et nummer lagt til navnet.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ugyldig filnavn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Siste gang redigert ukjent\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nytt filnavn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny versjon\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauset\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forhåndsvis bilde\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Omdøp\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Velg alle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Velg alle eksisterende filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Velg alle nye filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Hopp over\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Skip this file\", \"Hopp over {count} filer\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukjent størrelse\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Last opp filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Last opp mapper\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Last opp fra enhet\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Opplastingen er kansellert\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Opplastingen er hoppet over\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Opplasting av \"{folder}\" er hoppet over'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fremdrift, opplasting\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en innkommende mappe velges, blir eventuelle motstridende filer i den også overskrevet.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en innkommende mappe velges, skrives innholdet inn i den eksisterende mappen, og en rekursiv konfliktløsning utføres.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer vil du beholde?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan enten gi nytt navn til filen, hoppe over denne filen eller avbryte hele operasjonen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du må velge minst en versjon av hver fil for å fortsette.\"] } } } } }, { \"locale\": \"ne\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Nepali (https://www.transifex.com/nextcloud/teams/64236/ne/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ne\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Nepali (https://www.transifex.com/nextcloud/teams/64236/ne/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ne\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"nl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Rico <rico-schwab@hotmail.com>, 2023\", \"Language-Team\": \"Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nl\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nRico <rico-schwab@hotmail.com>, 2023\\n\" }, \"msgstr\": [\"Last-Translator: Rico <rico-schwab@hotmail.com>, 2023\\nLanguage-Team: Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nl\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Nog {seconds} seconden\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{seconds} over\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"Nog een paar seconden\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Voeg toe\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Uploads annuleren\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Schatting van de resterende tijd\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Gepauzeerd\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload bestanden\"] } } } } }, { \"locale\": \"nn_NO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Norwegian Nynorsk (Norway) (https://www.transifex.com/nextcloud/teams/64236/nn_NO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nn_NO\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Norwegian Nynorsk (Norway) (https://www.transifex.com/nextcloud/teams/64236/nn_NO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nn_NO\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"oc\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"oc\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: oc\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"pl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Piotr Strębski <strebski@gmail.com>, 2024\", \"Language-Team\": \"Polish (https://app.transifex.com/nextcloud/teams/64236/pl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pl\", \"Plural-Forms\": \"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nPiotr Strębski <strebski@gmail.com>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Piotr Strębski <strebski@gmail.com>, 2024\\nLanguage-Team: Polish (https://app.transifex.com/nextcloud/teams/64236/pl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pl\\nPlural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}” to zabroniona nazwa pliku lub folderu.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}” jest zabronionym typem pliku.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"Znak „{segment}” nie jest dozwolony w nazwie pliku lub folderu.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"konflikt 1 pliku\", \"{count} konfliktów plików\", \"{count} konfliktów plików\", \"{count} konfliktów plików\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} konfliktowy plik w {dirname}\", \"{count} konfliktowych plików w {dirname}\", \"{count} konfliktowych plików w {dirname}\", \"{count} konfliktowych plików w {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Pozostało {seconds} sekund\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Pozostało {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"Pozostało kilka sekund\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Anuluj\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Anuluj całą operację\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Anuluj wysyłanie\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Kontynuuj\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Utwórz nowe\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Szacowanie pozostałego czasu\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Istniejąca wersja\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Nazwy plików nie mogą kończyć się na „{segment}”.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jeśli wybierzesz obie wersje, do nazwy pliku przychodzącego zostanie dodany numer.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nieprawidłowa nazwa pliku\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Nieznana data ostatniej modyfikacji\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nowy\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nowa nazwa pliku\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nowa wersja\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Wstrzymane\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Podgląd obrazu\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Zmiana nazwy\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Zaznacz wszystkie pola wyboru\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Zaznacz wszystkie istniejące pliki\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Zaznacz wszystkie nowe pliki\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Pomiń\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Pomiń 1 plik\", \"Pomiń {count} plików\", \"Pomiń {count} plików\", \"Pomiń {count} plików\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Nieznany rozmiar\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Prześlij\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Wyślij pliki\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Prześlij foldery\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Prześlij z urządzenia\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Przesyłanie zostało anulowane\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Przesyłanie zostało pominięte\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Przesyłanie „{folder}” zostało pominięte\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Postęp wysyłania\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Po wybraniu folderu przychodzącego wszelkie znajdujące się w nim pliki powodujące konflikt również zostaną nadpisane.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Po wybraniu folderu przychodzącego zawartość jest zapisywana w istniejącym folderze i przeprowadzane jest rekursywne rozwiązywanie konfliktów.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Które pliki chcesz zachować?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Możesz zmienić nazwę pliku, pominąć ten plik lub anulować całą operację.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby kontynuować, musisz wybrać co najmniej jedną wersję każdego pliku.\"] } } } } }, { \"locale\": \"ps\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Pashto (https://www.transifex.com/nextcloud/teams/64236/ps/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ps\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Pashto (https://www.transifex.com/nextcloud/teams/64236/ps/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ps\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"pt_BR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Paulo Schopf, 2024\", \"Language-Team\": \"Portuguese (Brazil) (https://app.transifex.com/nextcloud/teams/64236/pt_BR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pt_BR\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nLeonardo Colman Lopes <leonardo.dev@colman.com.br>, 2024\\nRodrigo Sottomaior Macedo <sottomaiormacedotec@sottomaiormacedo.tech>, 2024\\nPaulo Schopf, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Paulo Schopf, 2024\\nLanguage-Team: Portuguese (Brazil) (https://app.transifex.com/nextcloud/teams/64236/pt_BR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pt_BR\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" é um nome de arquivo ou pasta proibido.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" é um tipo de arquivo proibido.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" não é permitido dentro de um nome de arquivo ou pasta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} arquivos em conflito\", \"{count} arquivos em conflito\", \"{count} arquivos em conflito\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflitos de arquivo em {dirname}\", \"{count} conflitos de arquivo em {dirname}\", \"{count} conflitos de arquivo em {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"alguns segundos restantes\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar a operação inteira\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Criar novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Os nomes dos arquivos não devem terminar com \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se você selecionar ambas as versões, o arquivo recebido terá um número adicionado ao seu nome.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome de arquivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de arquivo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Visualizar imagem\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Marque todas as caixas de seleção\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecione todos os arquivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecione todos os novos arquivos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Pular\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ignorar {count} arquivos\", \"Ignorar {count} arquivos\", \"Ignorar {count} arquivos\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamanho desconhecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Enviar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Enviar arquivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Enviar pastas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Carregar do dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O upload foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O upload foi pulado\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['O upload de \"{folder}\" foi ignorado'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Envio em progresso\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quando uma pasta é selecionada, quaisquer arquivos dentro dela também serão sobrescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando uma pasta de entrada é selecionada, o conteúdo é gravado na pasta existente e uma resolução de conflito recursiva é executada.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais arquivos você deseja manter?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Você pode renomear o arquivo, pular este arquivo ou cancelar toda a operação.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Você precisa selecionar pelo menos uma versão de cada arquivo para continuar.\"] } } } } }, { \"locale\": \"pt_PT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Manuela Silva <mmsrs@sky.com>, 2022\", \"Language-Team\": \"Portuguese (Portugal) (https://www.transifex.com/nextcloud/teams/64236/pt_PT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pt_PT\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nManuela Silva <mmsrs@sky.com>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Manuela Silva <mmsrs@sky.com>, 2022\\nLanguage-Team: Portuguese (Portugal) (https://www.transifex.com/nextcloud/teams/64236/pt_PT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pt_PT\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"faltam {seconds} segundo(s)\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"faltam {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"faltam uns segundos\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Adicionar\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar envios\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"tempo em falta estimado\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Enviar ficheiros\"] } } } } }, { \"locale\": \"ro\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Mădălin Vasiliu <contact@madalinvasiliu.com>, 2022\", \"Language-Team\": \"Romanian (https://www.transifex.com/nextcloud/teams/64236/ro/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ro\", \"Plural-Forms\": \"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nMădălin Vasiliu <contact@madalinvasiliu.com>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Mădălin Vasiliu <contact@madalinvasiliu.com>, 2022\\nLanguage-Team: Romanian (https://www.transifex.com/nextcloud/teams/64236/ro/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ro\\nPlural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} secunde rămase\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} rămas\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"câteva secunde rămase\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Adaugă\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Anulați încărcările\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimarea timpului rămas\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pus pe pauză\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Încarcă fișiere\"] } } } } }, { \"locale\": \"ru\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Roman Stepanov, 2024\", \"Language-Team\": \"Russian (https://app.transifex.com/nextcloud/teams/64236/ru/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ru\", \"Plural-Forms\": \"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nAlex <kekcuha@gmail.com>, 2024\\nВлад, 2024\\nAlex <fedotov22091982@gmail.com>, 2024\\nRoman Stepanov, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Roman Stepanov, 2024\\nLanguage-Team: Russian (https://app.transifex.com/nextcloud/teams/64236/ru/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ru\\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"{segment} — это запрещенное имя файла или папки.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"{segment}— это запрещенный тип файла.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"{segment}не допускается в имени файла или папки.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"конфликт {count} файла\", \"конфликт {count} файлов\", \"конфликт {count} файлов\", \"конфликт {count} файлов\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"конфликт {count} файла в {dirname}\", \"конфликт {count} файлов в {dirname}\", \"конфликт {count} файлов в {dirname}\", \"конфликт {count} файлов в {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"осталось {seconds} секунд\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"осталось {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"осталось несколько секунд\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Отмена\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Отменить всю операцию целиком\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Отменить загрузки\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продолжить\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Создать новое\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"оценка оставшегося времени\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Текущая версия\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Имена файлов не должны заканчиваться на {segment}\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Если вы выберете обе версии, к имени входящего файла будет добавлен номер.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Неверное имя файла\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата последнего изменения неизвестна\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Новый\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Новое имя файла\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Новая версия\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"приостановлено\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Предварительный просмотр\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Переименовать\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Установить все флажки\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Выбрать все существующие файлы\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Выбрать все новые файлы\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Пропуск\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Пропустить файл\", \"Пропустить {count} файла\", \"Пропустить {count} файлов\", \"Пропустить {count} файлов\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Неизвестный размер\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Загрузить\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Загрузка файлов\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Загрузка папок\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Загрузка с устройства\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Загрузка была отменена\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Загрузка была пропущена\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Загрузка {folder}была пропущена\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Состояние передачи на сервер\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Когда выбрана входящая папка, все конфликтующие файлы в ней также будут перезаписаны.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Когда выбрана входящая папка, содержимое записывается в существующую папку и выполняется рекурсивное разрешение конфликтов.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Какие файлы вы хотите сохранить?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Вы можете переименовать файл, пропустить этот файл или отменить всю операцию.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Для продолжения вам нужно выбрать по крайней мере одну версию каждого файла.\"] } } } } }, { \"locale\": \"sc\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Sardinian (https://www.transifex.com/nextcloud/teams/64236/sc/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sc\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Sardinian (https://www.transifex.com/nextcloud/teams/64236/sc/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sc\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"si\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"si\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: si\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Slovak (Slovakia) (https://www.transifex.com/nextcloud/teams/64236/sk_SK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sk_SK\", \"Plural-Forms\": \"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Slovak (Slovakia) (https://www.transifex.com/nextcloud/teams/64236/sk_SK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sk_SK\\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Simon Bogina, 2024\", \"Language-Team\": \"Slovenian (https://app.transifex.com/nextcloud/teams/64236/sl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sl\", \"Plural-Forms\": \"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJan Kraljič <jan.kraljic@patware.eu>, 2024\\nSimon Bogina, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Simon Bogina, 2024\\nLanguage-Team: Slovenian (https://app.transifex.com/nextcloud/teams/64236/sl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sl\\nPlural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" je prepovedano ime datoteka ali mape.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" je prepovedan tip datoteke.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ni dovoljeno v imenu datoteke ali mape.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"1{count} datoteka je v konfliktu\", \"1{count} datoteki sta v konfiktu\", \"1{count} datotek je v konfliktu\", \"{count} datotek je v konfliktu\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} datoteka je v konfiktu v {dirname}\", \"{count} datoteki sta v konfiktu v {dirname}\", \"{count} datotek je v konfiktu v {dirname}\", \"{count} konfliktov datotek v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"še {seconds} sekund\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"še {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"še nekaj sekund\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Prekliči\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Prekliči celotni postopek\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Prekliči pošiljanje\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Nadaljuj\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Ustvari nov\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ocenjujem čas do konca\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Obstoječa različica\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Imena datotek se ne smejo končati s \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Če izberete obe različici, bo imenu dohodne datoteke na koncu dodana številka.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nepravilno ime datoteke\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum zadnje spremembe neznan\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nov\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo ime datoteke\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova različica\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"v premoru\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Predogled slike\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Preimenuj\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Izberi vsa potrditvena polja\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Označi vse obstoječe datoteke\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Označi vse nove datoteke\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Preskoči\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Preskoči datoteko\", \"Preskoči {count} datoteki\", \"Preskoči {count} datotek\", \"Preskoči {count} datotek\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznana velikost\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Naloži\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Naloži datoteke\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Naloži mape\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Naloži iz naprave\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nalaganje je bilo preklicano\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nalaganje je bilo preskočeno\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Nalaganje \"{folder}\" je bilo preskočeno'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Napredek nalaganja\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ko je izbrana dohodna mapa, bodo vse datototeke v konfliktu znotraj nje prepisane.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ko je izbrana dohodna mapa, je vsebina vpisana v obstoječo mapo in je izvedeno rekurzivno reševanje konfliktov.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Katere datoteke želite obdržati?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Datoteko lahko preimenujete, preskočite ali prekličete celo operacijo.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Izbrati morate vsaj eno različico vsake datoteke da nadaljujete.\"] } } } } }, { \"locale\": \"sq\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sq\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sq\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Иван Пешић, 2024\", \"Language-Team\": \"Serbian (https://app.transifex.com/nextcloud/teams/64236/sr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sr\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nИван Пешић, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Иван Пешић, 2024\\nLanguage-Team: Serbian (https://app.transifex.com/nextcloud/teams/64236/sr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sr\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}” је забрањено име фајла или фолдера.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}” је забрањен тип фајла.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}” није дозвољено унутар имена фајла или фолдера.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} фајл конфликт\", \"{count} фајл конфликта\", \"{count} фајл конфликта\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} фајл конфликт у {dirname}\", \"{count} фајл конфликта у {dirname}\", \"{count} фајл конфликта у {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"преостало је {seconds} секунди\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} преостало\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"преостало је неколико секунди\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Отказује комплетну операцију\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Обустави отпремања\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Настави\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Креирај ново\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"процена преосталог времена\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Постојећа верзија\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Имена фајлова не смеју да се завршавају на „{segment}”.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ако изаберете обе верзије, на име долазног фајла ће се додати број.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Неисправно име фајла\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Није познат датум последње измене\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ново\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ново име фајла\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова верзија\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"паузирано\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Слика прегледа\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Промени име\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Штиклирај сва поља за штиклирање\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Изабери све постојеће фајлове\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Изабери све нове фајлове\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Прескочи\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Прескочи овај фајл\", \"Прескочи {count} фајла\", \"Прескочи {count} фајлова\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Непозната величина\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Отпреми\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Отпреми фајлове\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Отпреми фолдере\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Отпреми са уређаја\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Отпремање је отказано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Отпремање је прескочено\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Отпремање „{folder}”је прескочено\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Напредак отпремања\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Када се изабере долазни фолдер, сва имена фајлова са конфликтом унутар њега ће се такође преписати.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Када се изабере долазни фолдер, садржај се уписује у постојећи фолдер и извршава се рекурзивно разрешавање конфликата.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Које фајлове желите да задржите?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Можете или да промените име фајлу, прескочите овај фајл или откажете комплетну операцију.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Морате да изаберете барем једну верзију сваког фајла да наставите.\"] } } } } }, { \"locale\": \"sr@latin\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Serbian (Latin) (https://www.transifex.com/nextcloud/teams/64236/sr@latin/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sr@latin\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Serbian (Latin) (https://www.transifex.com/nextcloud/teams/64236/sr@latin/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sr@latin\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sv\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Magnus Höglund, 2024\", \"Language-Team\": \"Swedish (https://app.transifex.com/nextcloud/teams/64236/sv/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sv\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMagnus Höglund, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Magnus Höglund, 2024\\nLanguage-Team: Swedish (https://app.transifex.com/nextcloud/teams/64236/sv/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sv\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" är ett förbjudet fil- eller mappnamn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" är en förbjuden filtyp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" är inte tillåtet i ett fil- eller mappnamn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} filkonflikt\", \"{count} filkonflikter\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} filkonflikt i {dirname}\", \"{count} filkonflikter i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunder kvarstår\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} kvarstår\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"några sekunder kvar\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hela operationen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Avbryt uppladdningar\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsätt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Skapa ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"uppskattar kvarstående tid\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Nuvarande version\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnamn får inte sluta med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Om du väljer båda versionerna kommer den inkommande filen att läggas till ett nummer i namnet.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ogiltigt filnamn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Senaste ändringsdatum okänt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nytt filnamn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausad\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Förhandsgranska bild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Byt namn\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Markera alla kryssrutor\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Välj alla befintliga filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Välj alla nya filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Hoppa över\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Hoppa över denna fil\", \"Hoppa över {count} filer\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Okänd storlek\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Ladda upp\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Ladda upp filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ladda upp mappar\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Ladda upp från enhet\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Uppladdningen har avbrutits\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Uppladdningen har hoppats över\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Uppladdningen av \"{folder}\" har hoppats över'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uppladdningsförlopp\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"När en inkommande mapp väljs skrivs även alla konfliktande filer i den över.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"När en inkommande mapp väljs skrivs innehållet in i den befintliga mappen och en rekursiv konfliktlösning utförs.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Vilka filer vill du behålla?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan antingen byta namn på filen, hoppa över den här filen eller avbryta hela operationen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du måste välja minst en version av varje fil för att fortsätta.\"] } } } } }, { \"locale\": \"sw\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Swahili (https://www.transifex.com/nextcloud/teams/64236/sw/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sw\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Swahili (https://www.transifex.com/nextcloud/teams/64236/sw/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sw\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ta\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Tamil (https://www.transifex.com/nextcloud/teams/64236/ta/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ta\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Tamil (https://www.transifex.com/nextcloud/teams/64236/ta/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ta\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"th\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Phongpanot Phairat <ppnplus@protonmail.com>, 2022\", \"Language-Team\": \"Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"th_TH\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nPhongpanot Phairat <ppnplus@protonmail.com>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Phongpanot Phairat <ppnplus@protonmail.com>, 2022\\nLanguage-Team: Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: th_TH\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"เหลืออีก {seconds} วินาที\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"เหลืออีก {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"เหลืออีกไม่กี่วินาที\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"เพิ่ม\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"ยกเลิกการอัปโหลด\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"กำลังคำนวณเวลาที่เหลือ\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"หยุดชั่วคราว\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"อัปโหลดไฟล์\"] } } } } }, { \"locale\": \"tk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Turkmen (https://www.transifex.com/nextcloud/teams/64236/tk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"tk\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Turkmen (https://www.transifex.com/nextcloud/teams/64236/tk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: tk\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"tr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Kaya Zeren <kayazeren@gmail.com>, 2024\", \"Language-Team\": \"Turkish (https://app.transifex.com/nextcloud/teams/64236/tr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"tr\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nKaya Zeren <kayazeren@gmail.com>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Kaya Zeren <kayazeren@gmail.com>, 2024\\nLanguage-Team: Turkish (https://app.transifex.com/nextcloud/teams/64236/tr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: tr\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" dosya ya da klasör adına izin verilmiyor.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" dosya türüne izin verilmiyor.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Bir dosya ya da klasör adında \"{segment}\" ifadesine izin verilmiyor.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} dosya çakışması var\", \"{count} dosya çakışması var\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} klasöründe {count} dosya çakışması var\", \"{dirname} klasöründe {count} dosya çakışması var\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saniye kaldı\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} kaldı\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir kaç saniye kaldı\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"İptal\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Tüm işlemi iptal et\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yüklemeleri iptal et\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"İlerle\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Yeni ekle\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"öngörülen kalan süre\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Var olan sürüm\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dosya adları \"{segment}\" ile bitmemeli.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"İki sürümü de seçerseniz, gelen dosyanın adına bir sayı eklenir.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Dosya adı geçersiz\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Son değiştirilme tarihi bilinmiyor\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Yeni\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Yeni dosya adı\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Yeni sürüm\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"duraklatıldı\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Görsel ön izlemesi\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Yeniden adlandır\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Tüm kutuları işaretle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Tüm var olan dosyaları seç\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Tüm yeni dosyaları seç\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Atla\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Bu dosyayı atla\", \"{count} dosyayı atla\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Boyut bilinmiyor\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Yükle\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dosyaları yükle\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Klasörleri yükle\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Aygıttan yükle\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Yükleme iptal edildi\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Yükleme atlandı\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" klasörünün yüklenmesi atlandı'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Yükleme ilerlemesi\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Bir gelen klasör seçildiğinde, içindeki çakışan dosyaların da üzerine yazılır.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bir gelen klasörü seçildiğinde içerik var olan klasöre yazılır ve yinelemeli bir çakışma çözümü uygulanır.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hangi dosyaları tutmak istiyorsunuz?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Dosya adını değiştirebilir, bu dosyayı atlayabilir ya da tüm işlemi iptal edebilirsiniz.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"İlerlemek için her dosyanın en az bir sürümünü seçmelisiniz.\"] } } } } }, { \"locale\": \"ug\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Uyghur (https://www.transifex.com/nextcloud/teams/64236/ug/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ug\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Uyghur (https://www.transifex.com/nextcloud/teams/64236/ug/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ug\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"uk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"O St <oleksiy.stasevych@gmail.com>, 2024\", \"Language-Team\": \"Ukrainian (https://app.transifex.com/nextcloud/teams/64236/uk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"uk\", \"Plural-Forms\": \"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nO St <oleksiy.stasevych@gmail.com>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: O St <oleksiy.stasevych@gmail.com>, 2024\\nLanguage-Team: Ukrainian (https://app.transifex.com/nextcloud/teams/64236/uk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: uk\\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [`\"{segment}\" не є дозволеним ім'ям файлу або каталогу.`] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" не є дозволеним типом файлу.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" не дозволене сполучення символів в назві файлу або каталогу.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} конфліктний файл\", \"{count} конфліктних файли\", \"{count} конфліктних файлів\", \"{count} конфліктних файлів\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} конфліктний файл у каталозі {dirname}\", \"{count} конфліктних файли у каталозі {dirname}\", \"{count} конфліктних файлів у каталозі {dirname}\", \"{count} конфліктних файлів у каталозі {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Залишилося {seconds} секунд\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Залишилося {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"залишилося кілька секунд\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Скасувати\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Скасувати операцію повністю\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Скасувати завантаження\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продовжити\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Створити новий\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"оцінка часу, що залишився\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Присутня версія\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [`Ім'я файлів не можуть закінчуватися на \"{segment}\".`] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Якщо буде вибрано обидві версії, до імени вхідного файлу було додано цифру.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Недійсне ім'я файлу\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата останньої зміни невідома\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Нове\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Нове ім'я файлу\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова версія\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"призупинено\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Попередній перегляд\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Перейменувати\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Вибрати все\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Вибрати усі присутні файли\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Вибрати усі нові файли\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Пропустити\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Пропустити файл\", \"Пропустити {count} файли\", \"Пропустити {count} файлів\", \"Пропустити {count} файлів\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Невідомий розмір\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Завантажити\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Завантажити файли\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Завантажити каталоги\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Завантажити з пристрою\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Завантаження скасовано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Завантаження пропущено\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Завантаження \"{folder}\" пропущено'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Поступ завантаження\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Усі конфліктні файли у вибраному каталозі призначення буде перезаписано поверх.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Якщо буде вибрано вхідний каталог, вміст буде записано до наявного каталогу та вирішено конфлікти у відповідних файлах каталогу та підкаталогів.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Які файли залишити?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Ви можете або перейменувати цей файл, пропустити або скасувати дію з файлом.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Для продовження потрібно вибрати принаймні одну версію для кожного файлу.\"] } } } } }, { \"locale\": \"ur_PK\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Urdu (Pakistan) (https://www.transifex.com/nextcloud/teams/64236/ur_PK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ur_PK\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Urdu (Pakistan) (https://www.transifex.com/nextcloud/teams/64236/ur_PK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ur_PK\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"uz\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Uzbek (https://www.transifex.com/nextcloud/teams/64236/uz/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"uz\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Uzbek (https://www.transifex.com/nextcloud/teams/64236/uz/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: uz\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"vi\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Tung DangQuang, 2023\", \"Language-Team\": \"Vietnamese (https://app.transifex.com/nextcloud/teams/64236/vi/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"vi\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJohn Molakvoæ <skjnldsv@protonmail.com>, 2023\\nTung DangQuang, 2023\\n\" }, \"msgstr\": [\"Last-Translator: Tung DangQuang, 2023\\nLanguage-Team: Vietnamese (https://app.transifex.com/nextcloud/teams/64236/vi/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: vi\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} Tập tin xung đột\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} tập tin lỗi trong {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Còn {second} giây\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Còn lại {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"Còn lại một vài giây\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Huỷ tải lên\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Tiếp Tục\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Thời gian còn lại dự kiến\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Phiên Bản Hiện Tại\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"Nếu bạn chọn cả hai phiên bản, tệp được sao chép sẽ có thêm một số vào tên của nó.\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Ngày sửa dổi lần cuối không xác định\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Tạo Mới\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Phiên Bản Mới\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"đã tạm dừng\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Xem Trước Ảnh\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Chọn tất cả hộp checkbox\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Chọn tất cả các tập tin có sẵn\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Chọn tất cả các tập tin mới\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Bỏ Qua {count} tập tin\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Không rõ dung lượng\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"Dừng Tải Lên\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Tập tin tải lên\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Đang Tải Lên\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Bạn muốn giữ tập tin nào?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Bạn cần chọn ít nhất một phiên bản tập tin mới có thể tiếp tục\"] } } } } }, { \"locale\": \"zh_CN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Gloryandel, 2024\", \"Language-Team\": \"Chinese (China) (https://app.transifex.com/nextcloud/teams/64236/zh_CN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_CN\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nGloryandel, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Gloryandel, 2024\\nLanguage-Team: Chinese (China) (https://app.transifex.com/nextcloud/teams/64236/zh_CN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_CN\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" 是被禁止的文件名或文件夹名。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" 是被禁止的文件类型。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" 不允许包含在文件名或文件夹名中。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}文件冲突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"在{dirname}目录下有{count}个文件冲突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"剩余 {seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩余 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"还剩几秒\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整个操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上传\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"继续\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"新建\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估计剩余时间\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"服务端版本\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['文件名不得以 \"{segment}\" 结尾。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"如果同时选择两个版本,则上传文件的名称中将添加一个数字。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"无效文件名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"文件最后修改日期未知\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新建\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新文件名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"上传版本\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暂停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"图片预览\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"重命名\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"选择所有的选择框\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"保留所有服务端版本\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"保留所有上传版本\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"跳过\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"跳过{count}个文件\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"文件大小未知\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"上传\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上传文件\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"上传文件夹\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"从设备上传\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"上传已取消\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"上传已跳过\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['已跳过上传\"{folder}\"'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上传进度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"当选择上传文件夹时,其中任何冲突的文件也都会被覆盖。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"选择上传文件夹后,内容将写入现有文件夹,并递归执行冲突解决。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"你要保留哪些文件?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"您可以重命名文件、跳过此文件或取消整个操作。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"每个文件至少选择保留一个版本\"] } } } } }, { \"locale\": \"zh_HK\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Café Tango, 2024\", \"Language-Team\": \"Chinese (Hong Kong) (https://app.transifex.com/nextcloud/teams/64236/zh_HK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_HK\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nCafé Tango, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Café Tango, 2024\\nLanguage-Team: Chinese (Hong Kong) (https://app.transifex.com/nextcloud/teams/64236/zh_HK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_HK\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} 個檔案衝突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 中有 {count} 個檔案衝突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"剩餘 {seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩餘 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"還剩幾秒\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整個操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上傳\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"繼續\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估計剩餘時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既有版本\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"若您選取兩個版本,傳入檔案的名稱將會新增編號。\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最後修改日期不詳\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新增\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新版本 \"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暫停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"預覽圖片\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"選取所有核取方塊\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"選取所有既有檔案\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"選取所有新檔案\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"略過 {count} 個檔案\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"大小不詳\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"已取消上傳\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上傳檔案\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上傳進度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"選取傳入資料夾後,其中任何的衝突檔案都會被覆寫。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"選擇傳入資料夾後,內容將寫入現有資料夾並執行遞歸衝突解決。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"您想保留哪些檔案?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"您必須為每個檔案都至少選取一個版本以繼續。\"] } } } } }, { \"locale\": \"zh_TW\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"黃柏諺 <s8321414@gmail.com>, 2024\", \"Language-Team\": \"Chinese (Taiwan) (https://app.transifex.com/nextcloud/teams/64236/zh_TW/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_TW\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\n黃柏諺 <s8321414@gmail.com>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: 黃柏諺 <s8321414@gmail.com>, 2024\\nLanguage-Team: Chinese (Taiwan) (https://app.transifex.com/nextcloud/teams/64236/zh_TW/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_TW\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} 個檔案衝突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 中有 {count} 個檔案衝突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"剩餘 {seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩餘 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"還剩幾秒\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整個操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上傳\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"繼續\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估計剩餘時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既有版本\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"若您選取兩個版本,複製的檔案的名稱將會新增編號。\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最後修改日期未知\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新增\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新版本\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暫停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"預覽圖片\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"選取所有核取方塊\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"選取所有既有檔案\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"選取所有新檔案\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"略過 {count} 檔案\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"未知大小\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"已取消上傳\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上傳檔案\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上傳進度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"選取傳入資料夾後,其中任何的衝突檔案都會被覆寫。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"您想保留哪些檔案?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"您必須為每個檔案都至少選取一個版本以繼續。\"] } } } } }].map((data) => gtBuilder.addTranslation(data.locale, data.json));\nconst gt = gtBuilder.build();\nconst n = gt.ngettext.bind(gt);\nconst t = gt.gettext.bind(gt);\nconst logger = getLoggerBuilder().setApp(\"@nextcloud/upload\").detectUser().build();\nvar Status = /* @__PURE__ */ ((Status2) => {\n Status2[Status2[\"IDLE\"] = 0] = \"IDLE\";\n Status2[Status2[\"UPLOADING\"] = 1] = \"UPLOADING\";\n Status2[Status2[\"PAUSED\"] = 2] = \"PAUSED\";\n return Status2;\n})(Status || {});\nclass Uploader {\n // Initialized via setter in the constructor\n _destinationFolder;\n _isPublic;\n _customHeaders;\n // Global upload queue\n _uploadQueue = [];\n _jobQueue = new PQueue({\n // Maximum number of concurrent uploads\n // @ts-expect-error TS2339 Object has no defined properties\n concurrency: getCapabilities().files?.chunked_upload?.max_parallel_count ?? 5\n });\n _queueSize = 0;\n _queueProgress = 0;\n _queueStatus = 0;\n _notifiers = [];\n /**\n * Initialize uploader\n *\n * @param {boolean} isPublic are we in public mode ?\n * @param {Folder} destinationFolder the context folder to operate, relative to the root folder\n */\n constructor(isPublic = false, destinationFolder) {\n this._isPublic = isPublic;\n this._customHeaders = {};\n if (!destinationFolder) {\n const source = `${davRemoteURL}${davRootPath}`;\n let owner;\n if (isPublic) {\n owner = \"anonymous\";\n } else {\n const user = getCurrentUser()?.uid;\n if (!user) {\n throw new Error(\"User is not logged in\");\n }\n owner = user;\n }\n destinationFolder = new Folder({\n id: 0,\n owner,\n permissions: Permission.ALL,\n root: davRootPath,\n source\n });\n }\n this.destination = destinationFolder;\n this._jobQueue.addListener(\"idle\", () => this.reset());\n logger.debug(\"Upload workspace initialized\", {\n destination: this.destination,\n root: this.root,\n isPublic,\n maxChunksSize: getMaxChunksSize()\n });\n }\n /**\n * Get the upload destination path relative to the root folder\n */\n get destination() {\n return this._destinationFolder;\n }\n /**\n * Set the upload destination path relative to the root folder\n */\n set destination(folder) {\n if (!folder || folder.type !== FileType.Folder || !folder.source) {\n throw new Error(\"Invalid destination folder\");\n }\n logger.debug(\"Destination set\", { folder });\n this._destinationFolder = folder;\n }\n /**\n * Get the root folder\n */\n get root() {\n return this._destinationFolder.source;\n }\n /**\n * Get registered custom headers for uploads\n */\n get customHeaders() {\n return structuredClone(this._customHeaders);\n }\n /**\n * Set a custom header\n * @param name The header to set\n * @param value The string value\n */\n setCustomHeader(name, value = \"\") {\n this._customHeaders[name] = value;\n }\n /**\n * Unset a custom header\n * @param name The header to unset\n */\n deleteCustomerHeader(name) {\n delete this._customHeaders[name];\n }\n /**\n * Get the upload queue\n */\n get queue() {\n return this._uploadQueue;\n }\n reset() {\n this._uploadQueue.splice(0, this._uploadQueue.length);\n this._jobQueue.clear();\n this._queueSize = 0;\n this._queueProgress = 0;\n this._queueStatus = 0;\n }\n /**\n * Pause any ongoing upload(s)\n */\n pause() {\n this._jobQueue.pause();\n this._queueStatus = 2;\n }\n /**\n * Resume any pending upload(s)\n */\n start() {\n this._jobQueue.start();\n this._queueStatus = 1;\n this.updateStats();\n }\n /**\n * Get the upload queue stats\n */\n get info() {\n return {\n size: this._queueSize,\n progress: this._queueProgress,\n status: this._queueStatus\n };\n }\n updateStats() {\n const size = this._uploadQueue.map((upload2) => upload2.size).reduce((partialSum, a) => partialSum + a, 0);\n const uploaded = this._uploadQueue.map((upload2) => upload2.uploaded).reduce((partialSum, a) => partialSum + a, 0);\n this._queueSize = size;\n this._queueProgress = uploaded;\n if (this._queueStatus === 2) {\n return;\n }\n this._queueStatus = this._jobQueue.size > 0 ? 1 : 0;\n }\n addNotifier(notifier) {\n this._notifiers.push(notifier);\n }\n /**\n * Notify listeners of the upload completion\n * @param upload The upload that finished\n */\n _notifyAll(upload2) {\n for (const notifier of this._notifiers) {\n try {\n notifier(upload2);\n } catch (error) {\n logger.warn(\"Error in upload notifier\", { error, source: upload2.source });\n }\n }\n }\n /**\n * Uploads multiple files or folders while preserving the relative path (if available)\n * @param {string} destination The destination path relative to the root folder. e.g. /foo/bar (a file \"a.txt\" will be uploaded then to \"/foo/bar/a.txt\")\n * @param {Array<File|FileSystemEntry>} files The files and/or folders to upload\n * @param {Function} callback Callback that receives the nodes in the current folder and the current path to allow resolving conflicts, all nodes that are returned will be uploaded (if a folder does not exist it will be created)\n * @return Cancelable promise that resolves to an array of uploads\n *\n * @example\n * ```ts\n * // For example this is from handling the onchange event of an input[type=file]\n * async handleFiles(files: File[]) {\n * this.uploads = await this.uploader.batchUpload('uploads', files, this.handleConflicts)\n * }\n *\n * async handleConflicts(nodes: File[], currentPath: string) {\n * const conflicts = getConflicts(nodes, this.fetchContent(currentPath))\n * if (conflicts.length === 0) {\n * // No conflicts so upload all\n * return nodes\n * } else {\n * // Open the conflict picker to resolve conflicts\n * try {\n * const { selected, renamed } = await openConflictPicker(currentPath, conflicts, this.fetchContent(currentPath), { recursive: true })\n * return [...selected, ...renamed]\n * } catch (e) {\n * return false\n * }\n * }\n * }\n * ```\n */\n batchUpload(destination, files, callback) {\n if (!callback) {\n callback = async (files2) => files2;\n }\n return new PCancelable(async (resolve, reject, onCancel) => {\n const rootFolder = new Directory(\"\");\n await rootFolder.addChildren(files);\n const target = `${this.root.replace(/\\/$/, \"\")}/${destination.replace(/^\\//, \"\")}`;\n const upload2 = new Upload(target, false, 0, rootFolder);\n upload2.status = Status$1.UPLOADING;\n this._uploadQueue.push(upload2);\n logger.debug(\"Starting new batch upload\", { target });\n try {\n const client = davGetClient(this.root, this._customHeaders);\n const promise = this.uploadDirectory(destination, rootFolder, callback, client);\n onCancel(() => promise.cancel());\n const uploads = await promise;\n upload2.status = Status$1.FINISHED;\n resolve(uploads);\n } catch (error) {\n logger.error(\"Error in batch upload\", { error });\n upload2.status = Status$1.FAILED;\n reject(t(\"Upload has been cancelled\"));\n } finally {\n this._notifyAll(upload2);\n this.updateStats();\n }\n });\n }\n /**\n * Helper to create a directory wrapped inside an Upload class\n * @param destination Destination where to create the directory\n * @param directory The directory to create\n * @param client The cached WebDAV client\n */\n createDirectory(destination, directory, client) {\n const folderPath = normalize(`${destination}/${directory.name}`).replace(/\\/$/, \"\");\n const rootPath = `${this.root.replace(/\\/$/, \"\")}/${folderPath.replace(/^\\//, \"\")}`;\n if (!directory.name) {\n throw new Error(\"Can not create empty directory\");\n }\n const currentUpload = new Upload(rootPath, false, 0, directory);\n this._uploadQueue.push(currentUpload);\n return new PCancelable(async (resolve, reject, onCancel) => {\n const abort = new AbortController();\n onCancel(() => abort.abort());\n currentUpload.signal.addEventListener(\"abort\", () => reject(t(\"Upload has been cancelled\")));\n await this._jobQueue.add(async () => {\n currentUpload.status = Status$1.UPLOADING;\n try {\n await client.createDirectory(folderPath, { signal: abort.signal });\n resolve(currentUpload);\n } catch (error) {\n if (error && typeof error === \"object\" && \"status\" in error && error.status === 405) {\n currentUpload.status = Status$1.FINISHED;\n logger.debug(\"Directory already exists, writing into it\", { directory: directory.name });\n } else {\n currentUpload.status = Status$1.FAILED;\n reject(error);\n }\n } finally {\n this._notifyAll(currentUpload);\n this.updateStats();\n }\n });\n });\n }\n // Helper for uploading directories (recursively)\n uploadDirectory(destination, directory, callback, client) {\n const folderPath = normalize(`${destination}/${directory.name}`).replace(/\\/$/, \"\");\n return new PCancelable(async (resolve, reject, onCancel) => {\n const abort = new AbortController();\n onCancel(() => abort.abort());\n const selectedForUpload = await callback(directory.children, folderPath);\n if (selectedForUpload === false) {\n logger.debug(\"Upload canceled by user\", { directory });\n reject(t(\"Upload has been cancelled\"));\n return;\n } else if (selectedForUpload.length === 0 && directory.children.length > 0) {\n logger.debug(\"Skipping directory, as all files were skipped by user\", { directory });\n resolve([]);\n return;\n }\n const directories = [];\n const uploads = [];\n abort.signal.addEventListener(\"abort\", () => {\n directories.forEach((upload2) => upload2.cancel());\n uploads.forEach((upload2) => upload2.cancel());\n });\n logger.debug(\"Start directory upload\", { directory });\n try {\n if (directory.name) {\n uploads.push(this.createDirectory(destination, directory, client));\n await uploads.at(-1);\n }\n for (const node of selectedForUpload) {\n if (node instanceof Directory) {\n directories.push(this.uploadDirectory(folderPath, node, callback, client));\n } else {\n uploads.push(this.upload(`${folderPath}/${node.name}`, node));\n }\n }\n const resolvedUploads = await Promise.all(uploads);\n const resolvedDirectoryUploads = await Promise.all(directories);\n resolve([resolvedUploads, ...resolvedDirectoryUploads].flat());\n } catch (e) {\n abort.abort(e);\n reject(e);\n }\n });\n }\n /**\n * Upload a file to the given path\n * @param {string} destination the destination path relative to the root folder. e.g. /foo/bar.txt\n * @param {File|FileSystemFileEntry} fileHandle the file to upload\n * @param {string} root the root folder to upload to\n * @param retries number of retries\n */\n upload(destination, fileHandle, root, retries = 5) {\n root = root || this.root;\n const destinationPath = `${root.replace(/\\/$/, \"\")}/${destination.replace(/^\\//, \"\")}`;\n const { origin } = new URL(destinationPath);\n const encodedDestinationFile = origin + encodePath(destinationPath.slice(origin.length));\n logger.debug(`Uploading ${fileHandle.name} to ${encodedDestinationFile}`);\n const promise = new PCancelable(async (resolve, reject, onCancel) => {\n if (isFileSystemFileEntry(fileHandle)) {\n fileHandle = await new Promise((resolve2) => fileHandle.file(resolve2, reject));\n }\n const file = fileHandle;\n const maxChunkSize = getMaxChunksSize(\"size\" in file ? file.size : void 0);\n const disabledChunkUpload = this._isPublic || maxChunkSize === 0 || \"size\" in file && file.size < maxChunkSize;\n const upload2 = new Upload(destinationPath, !disabledChunkUpload, file.size, file);\n this._uploadQueue.push(upload2);\n this.updateStats();\n onCancel(upload2.cancel);\n if (!disabledChunkUpload) {\n logger.debug(\"Initializing chunked upload\", { file, upload: upload2 });\n const tempUrl = await initChunkWorkspace(encodedDestinationFile, retries);\n const chunksQueue = [];\n for (let chunk = 0; chunk < upload2.chunks; chunk++) {\n const bufferStart = chunk * maxChunkSize;\n const bufferEnd = Math.min(bufferStart + maxChunkSize, upload2.size);\n const blob = () => getChunk(file, bufferStart, maxChunkSize);\n const request = () => {\n return uploadData(\n `${tempUrl}/${chunk + 1}`,\n blob,\n upload2.signal,\n () => this.updateStats(),\n encodedDestinationFile,\n {\n ...this._customHeaders,\n \"X-OC-Mtime\": Math.floor(file.lastModified / 1e3),\n \"OC-Total-Length\": file.size,\n \"Content-Type\": \"application/octet-stream\"\n },\n retries\n ).then(() => {\n upload2.uploaded = upload2.uploaded + maxChunkSize;\n }).catch((error) => {\n if (error?.response?.status === 507) {\n logger.error(\"Upload failed, not enough space on the server or quota exceeded. Cancelling the remaining chunks\", { error, upload: upload2 });\n upload2.cancel();\n upload2.status = Status$1.FAILED;\n throw error;\n }\n if (!isCancel(error)) {\n logger.error(`Chunk ${chunk + 1} ${bufferStart} - ${bufferEnd} uploading failed`, { error, upload: upload2 });\n upload2.cancel();\n upload2.status = Status$1.FAILED;\n }\n throw error;\n });\n };\n chunksQueue.push(this._jobQueue.add(request));\n }\n try {\n await Promise.all(chunksQueue);\n this.updateStats();\n upload2.response = await axios.request({\n method: \"MOVE\",\n url: `${tempUrl}/.file`,\n headers: {\n ...this._customHeaders,\n \"X-OC-Mtime\": Math.floor(file.lastModified / 1e3),\n \"OC-Total-Length\": file.size,\n Destination: encodedDestinationFile\n }\n });\n this.updateStats();\n upload2.status = Status$1.FINISHED;\n logger.debug(`Successfully uploaded ${file.name}`, { file, upload: upload2 });\n resolve(upload2);\n } catch (error) {\n if (!isCancel(error)) {\n upload2.status = Status$1.FAILED;\n reject(\"Failed assembling the chunks together\");\n } else {\n upload2.status = Status$1.FAILED;\n reject(t(\"Upload has been cancelled\"));\n }\n axios.request({\n method: \"DELETE\",\n url: `${tempUrl}`\n });\n }\n this._notifyAll(upload2);\n } else {\n logger.debug(\"Initializing regular upload\", { file, upload: upload2 });\n const blob = await getChunk(file, 0, upload2.size);\n const request = async () => {\n try {\n upload2.response = await uploadData(\n encodedDestinationFile,\n blob,\n upload2.signal,\n (event) => {\n upload2.uploaded = upload2.uploaded + event.bytes;\n this.updateStats();\n },\n void 0,\n {\n ...this._customHeaders,\n \"X-OC-Mtime\": Math.floor(file.lastModified / 1e3),\n \"Content-Type\": file.type\n }\n );\n upload2.uploaded = upload2.size;\n this.updateStats();\n logger.debug(`Successfully uploaded ${file.name}`, { file, upload: upload2 });\n resolve(upload2);\n } catch (error) {\n if (isCancel(error)) {\n upload2.status = Status$1.FAILED;\n reject(t(\"Upload has been cancelled\"));\n return;\n }\n if (error?.response) {\n upload2.response = error.response;\n }\n upload2.status = Status$1.FAILED;\n logger.error(`Failed uploading ${file.name}`, { error, file, upload: upload2 });\n reject(\"Failed uploading the file\");\n }\n this._notifyAll(upload2);\n };\n this._jobQueue.add(request);\n this.updateStats();\n }\n return upload2;\n });\n return promise;\n }\n}\nfunction normalizeComponent(scriptExports, render6, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {\n var options = typeof scriptExports === \"function\" ? scriptExports.options : scriptExports;\n if (render6) {\n options.render = render6;\n options.staticRenderFns = staticRenderFns;\n options._compiled = true;\n }\n if (scopeId) {\n options._scopeId = \"data-v-\" + scopeId;\n }\n return {\n exports: scriptExports,\n options\n };\n}\nconst _sfc_main$4 = {\n name: \"CancelIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$4 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon cancel-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M12 4C10.1 4 8.4 4.6 7.1 5.7L18.3 16.9C19.3 15.5 20 13.8 20 12C20 7.6 16.4 4 12 4M16.9 18.3L5.7 7.1C4.6 8.4 4 10.1 4 12C4 16.4 7.6 20 12 20C13.9 20 15.6 19.4 16.9 18.3Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n null\n);\nconst IconCancel = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"FolderUploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon folder-upload-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst IconFolderUpload = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"PlusIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon plus-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst IconPlus = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"UploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon upload-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst IconUpload = __component__$1.exports;\nfunction showInvalidFilenameDialog(error) {\n const InvalidFilenameDialog = defineAsyncComponent(() => import(\"./InvalidFilenameDialog-DtcCk3Tc.mjs\"));\n const { promise, reject, resolve } = Promise.withResolvers();\n spawnDialog(\n InvalidFilenameDialog,\n {\n error,\n validateFilename\n },\n (...rest) => {\n const [{ skip, rename }] = rest;\n if (skip) {\n resolve(false);\n } else if (rename) {\n resolve(rename);\n } else {\n reject();\n }\n }\n );\n return promise;\n}\nfunction hasConflict(files, content) {\n return getConflicts(files, content).length > 0;\n}\nfunction getConflicts(files, content) {\n const contentNames = content.map((node) => node.basename);\n const conflicts = files.filter((node) => {\n const name = \"basename\" in node ? node.basename : node.name;\n return contentNames.indexOf(name) !== -1;\n });\n return conflicts;\n}\nfunction uploadConflictHandler(contentsCallback) {\n return async (nodes, path) => {\n try {\n const content = await contentsCallback(path).catch(() => []);\n const conflicts = getConflicts(nodes, content);\n if (conflicts.length > 0) {\n const { selected, renamed } = await openConflictPicker(path, conflicts, content, { recursive: true });\n nodes = [...selected, ...renamed];\n }\n const filesToUpload = [];\n for (const file of nodes) {\n try {\n validateFilename(file.name);\n filesToUpload.push(file);\n } catch (error) {\n if (!(error instanceof InvalidFilenameError)) {\n logger.error(`Unexpected error while validating ${file.name}`, { error });\n throw error;\n }\n let newName = await showInvalidFilenameDialog(error);\n if (newName !== false) {\n newName = getUniqueName(newName, nodes.map((node) => node.name));\n Object.defineProperty(file, \"name\", { value: newName });\n filesToUpload.push(file);\n }\n }\n }\n if (filesToUpload.length === 0 && nodes.length > 0) {\n const folder = basename(path);\n showInfo(\n folder ? t('Upload of \"{folder}\" has been skipped', { folder }) : t(\"Upload has been skipped\")\n );\n }\n return filesToUpload;\n } catch (error) {\n logger.debug(\"Upload has been cancelled\", { error });\n showWarning(t(\"Upload has been cancelled\"));\n return false;\n }\n };\n}\nconst _sfc_main = Vue.extend({\n name: \"UploadPicker\",\n components: {\n IconCancel,\n IconFolderUpload,\n IconPlus,\n IconUpload,\n NcActionButton,\n NcActionCaption,\n NcActionSeparator,\n NcActions,\n NcButton,\n NcIconSvgWrapper,\n NcProgressBar\n },\n props: {\n accept: {\n type: Array,\n default: null\n },\n disabled: {\n type: Boolean,\n default: false\n },\n multiple: {\n type: Boolean,\n default: false\n },\n /**\n * Allow to disable the \"new\"-menu for this UploadPicker instance\n * @default false\n */\n noMenu: {\n type: Boolean,\n default: false\n },\n destination: {\n type: Folder,\n default: void 0\n },\n allowFolders: {\n type: Boolean,\n default: false\n },\n /**\n * List of file present in the destination folder\n * It is also possible to provide a function that takes a relative path to the current directory and returns the content of it\n * Note: If a function is passed it should return the current base directory when no path or an empty is passed\n */\n content: {\n type: [Array, Function],\n default: () => []\n },\n /**\n * Overwrite forbidden characters (by default the capabilities of the server are used)\n * @deprecated Deprecated and will be removed in the next major version\n */\n forbiddenCharacters: {\n type: Array,\n default: () => []\n }\n },\n setup() {\n return {\n t,\n // non reactive data / properties\n progressTimeId: `nc-uploader-progress-${Math.random().toString(36).slice(7)}`\n };\n },\n data() {\n return {\n eta: null,\n timeLeft: \"\",\n newFileMenuEntries: [],\n uploadManager: getUploader()\n };\n },\n computed: {\n menuEntriesUpload() {\n return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.UploadFromDevice);\n },\n menuEntriesNew() {\n return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.CreateNew);\n },\n menuEntriesOther() {\n return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.Other);\n },\n /**\n * Check whether the current browser supports uploading directories\n * Hint: This does not check if the current connection supports this, as some browsers require a secure context!\n */\n canUploadFolders() {\n return this.allowFolders && \"webkitdirectory\" in document.createElement(\"input\");\n },\n totalQueueSize() {\n return this.uploadManager.info?.size || 0;\n },\n uploadedQueueSize() {\n return this.uploadManager.info?.progress || 0;\n },\n progress() {\n return Math.round(this.uploadedQueueSize / this.totalQueueSize * 100) || 0;\n },\n queue() {\n return this.uploadManager.queue;\n },\n hasFailure() {\n return this.queue?.filter((upload2) => upload2.status === Status$1.FAILED).length !== 0;\n },\n isUploading() {\n return this.queue?.length > 0;\n },\n isAssembling() {\n return this.queue?.filter((upload2) => upload2.status === Status$1.ASSEMBLING).length !== 0;\n },\n isPaused() {\n return this.uploadManager.info?.status === Status.PAUSED;\n },\n buttonLabel() {\n return this.noMenu ? t(\"Upload\") : t(\"New\");\n },\n // Hide the button text if we're uploading\n buttonName() {\n if (this.isUploading) {\n return void 0;\n }\n return this.buttonLabel;\n }\n },\n watch: {\n allowFolders: {\n immediate: true,\n handler() {\n if (typeof this.content !== \"function\" && this.allowFolders) {\n logger.error(\"[UploadPicker] Setting `allowFolders` is only allowed if `content` is a function\");\n }\n }\n },\n destination(destination) {\n this.setDestination(destination);\n },\n totalQueueSize(size) {\n this.eta = makeEta({ min: 0, max: size });\n this.updateStatus();\n },\n uploadedQueueSize(size) {\n this.eta?.report?.(size);\n this.updateStatus();\n },\n isPaused(isPaused) {\n if (isPaused) {\n this.$emit(\"paused\", this.queue);\n } else {\n this.$emit(\"resumed\", this.queue);\n }\n }\n },\n beforeMount() {\n if (this.destination) {\n this.setDestination(this.destination);\n }\n this.uploadManager.addNotifier(this.onUploadCompletion);\n logger.debug(\"UploadPicker initialised\");\n },\n methods: {\n /**\n * Handle clicking a new-menu entry\n * @param entry The entry that was clicked\n */\n async onClick(entry) {\n entry.handler(\n this.destination,\n await this.getContent().catch(() => [])\n );\n },\n /**\n * Trigger file picker\n * @param uploadFolders Upload folders\n */\n onTriggerPick(uploadFolders = false) {\n const input = this.$refs.input;\n if (this.canUploadFolders) {\n input.webkitdirectory = uploadFolders;\n }\n this.$nextTick(() => input.click());\n },\n /**\n * Helper for backwards compatibility that queries the content of the current directory\n * @param path The current path\n */\n async getContent(path) {\n return Array.isArray(this.content) ? this.content : await this.content(path);\n },\n /**\n * Start uploading\n */\n onPick() {\n const input = this.$refs.input;\n const files = input.files ? Array.from(input.files) : [];\n this.uploadManager.batchUpload(\"\", files, uploadConflictHandler(this.getContent)).catch((error) => logger.debug(\"Error while uploading\", { error })).finally(() => this.resetForm());\n },\n resetForm() {\n const form = this.$refs.form;\n form?.reset();\n },\n /**\n * Cancel ongoing queue\n */\n onCancel() {\n this.uploadManager.queue.forEach((upload2) => {\n upload2.cancel();\n });\n this.resetForm();\n },\n updateStatus() {\n if (this.isPaused) {\n this.timeLeft = t(\"paused\");\n return;\n }\n const estimate = Math.round(this.eta.estimate());\n if (estimate === Infinity) {\n this.timeLeft = t(\"estimating time left\");\n return;\n }\n if (estimate < 10) {\n this.timeLeft = t(\"a few seconds left\");\n return;\n }\n if (estimate > 60) {\n const date = /* @__PURE__ */ new Date(0);\n date.setSeconds(estimate);\n const time = date.toISOString().slice(11, 11 + 8);\n this.timeLeft = t(\"{time} left\", { time });\n return;\n }\n this.timeLeft = t(\"{seconds} seconds left\", { seconds: estimate });\n },\n setDestination(destination) {\n if (!this.destination) {\n logger.debug(\"Invalid destination\");\n return;\n }\n this.uploadManager.destination = destination;\n this.newFileMenuEntries = getNewFileMenuEntries(destination);\n },\n onUploadCompletion(upload2) {\n if (upload2.status === Status$1.FAILED) {\n this.$emit(\"failed\", upload2);\n } else {\n this.$emit(\"uploaded\", upload2);\n }\n }\n }\n});\nvar _sfc_render = function render5() {\n var _vm = this, _c = _vm._self._c;\n _vm._self._setupProxy;\n return _vm.destination ? _c(\"form\", { ref: \"form\", staticClass: \"upload-picker\", class: { \"upload-picker--uploading\": _vm.isUploading, \"upload-picker--paused\": _vm.isPaused }, attrs: { \"data-cy-upload-picker\": \"\" } }, [(_vm.noMenu || _vm.newFileMenuEntries.length === 0) && !_vm.canUploadFolders ? _c(\"NcButton\", { attrs: { \"disabled\": _vm.disabled, \"data-cy-upload-picker-add\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-file\", \"type\": \"secondary\" }, on: { \"click\": function($event) {\n return _vm.onTriggerPick();\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconPlus\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 1991456921) }, [_vm._v(\" \" + _vm._s(_vm.buttonName) + \" \")]) : _c(\"NcActions\", { attrs: { \"aria-label\": _vm.buttonLabel, \"menu-name\": _vm.buttonName, \"type\": \"secondary\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconPlus\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 1991456921) }, [_c(\"NcActionCaption\", { attrs: { \"name\": _vm.t(\"Upload from device\") } }), _c(\"NcActionButton\", { attrs: { \"data-cy-upload-picker-add\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-file\", \"close-after-click\": true }, on: { \"click\": function($event) {\n return _vm.onTriggerPick();\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconUpload\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 337456192) }, [_vm._v(\" \" + _vm._s(_vm.t(\"Upload files\")) + \" \")]), _vm.canUploadFolders ? _c(\"NcActionButton\", { attrs: { \"close-after-click\": \"\", \"data-cy-upload-picker-add-folders\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-folder\" }, on: { \"click\": function($event) {\n return _vm.onTriggerPick(true);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconFolderUpload\", { staticStyle: { \"color\": \"var(--color-primary-element)\" }, attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 1037549157) }, [_vm._v(\" \" + _vm._s(_vm.t(\"Upload folders\")) + \" \")]) : _vm._e(), !_vm.noMenu ? _vm._l(_vm.menuEntriesUpload, function(entry) {\n return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n return _vm.onClick(entry);\n } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n }) : _vm._e(), !_vm.noMenu && _vm.menuEntriesNew.length > 0 ? [_c(\"NcActionSeparator\"), _c(\"NcActionCaption\", { attrs: { \"name\": _vm.t(\"Create new\") } }), _vm._l(_vm.menuEntriesNew, function(entry) {\n return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n return _vm.onClick(entry);\n } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n })] : _vm._e(), !_vm.noMenu && _vm.menuEntriesOther.length > 0 ? [_c(\"NcActionSeparator\"), _vm._l(_vm.menuEntriesOther, function(entry) {\n return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n return _vm.onClick(entry);\n } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n })] : _vm._e()], 2), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.isUploading, expression: \"isUploading\" }], staticClass: \"upload-picker__progress\" }, [_c(\"NcProgressBar\", { attrs: { \"aria-label\": _vm.t(\"Upload progress\"), \"aria-describedby\": _vm.progressTimeId, \"error\": _vm.hasFailure, \"value\": _vm.progress, \"size\": \"medium\" } }), _c(\"p\", { attrs: { \"id\": _vm.progressTimeId } }, [_vm._v(\" \" + _vm._s(_vm.timeLeft) + \" \")])], 1), _vm.isUploading ? _c(\"NcButton\", { staticClass: \"upload-picker__cancel\", attrs: { \"type\": \"tertiary\", \"aria-label\": _vm.t(\"Cancel uploads\"), \"data-cy-upload-picker-cancel\": \"\" }, on: { \"click\": _vm.onCancel }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconCancel\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 3076329829) }) : _vm._e(), _c(\"input\", { ref: \"input\", staticClass: \"hidden-visually\", attrs: { \"accept\": _vm.accept?.join?.(\", \"), \"multiple\": _vm.multiple, \"data-cy-upload-picker-input\": \"\", \"type\": \"file\" }, on: { \"change\": _vm.onPick } })], 1) : _vm._e();\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"c5517ef8\"\n);\nconst UploadPicker = __component__.exports;\nfunction getUploader(isPublic = isPublicShare(), forceRecreate = false) {\n if (forceRecreate || window._nc_uploader === void 0) {\n window._nc_uploader = new Uploader(isPublic);\n }\n return window._nc_uploader;\n}\nfunction upload(destinationPath, file) {\n const uploader = getUploader();\n uploader.upload(destinationPath, file);\n return uploader;\n}\nasync function openConflictPicker(dirname, conflicts, content, options) {\n const ConflictPicker = defineAsyncComponent(() => import(\"./ConflictPicker-CAhCQs1P.mjs\"));\n return new Promise((resolve, reject) => {\n const picker = new Vue({\n name: \"ConflictPickerRoot\",\n render: (h) => h(ConflictPicker, {\n props: {\n dirname,\n conflicts,\n content,\n recursiveUpload: options?.recursive === true\n },\n on: {\n submit(results) {\n resolve(results);\n picker.$destroy();\n picker.$el?.parentNode?.removeChild(picker.$el);\n },\n cancel(error) {\n reject(error ?? new Error(\"Canceled\"));\n picker.$destroy();\n picker.$el?.parentNode?.removeChild(picker.$el);\n }\n }\n })\n });\n picker.$mount();\n document.body.appendChild(picker.$el);\n });\n}\nexport {\n Status$1 as S,\n UploadPicker as U,\n isFileSystemEntry as a,\n n as b,\n getConflicts as c,\n uploadConflictHandler as d,\n Upload as e,\n Uploader as f,\n getUploader as g,\n hasConflict as h,\n isFileSystemFileEntry as i,\n Status as j,\n logger as l,\n normalizeComponent as n,\n openConflictPicker as o,\n t,\n upload as u\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"5706\":\"3153330af47fc26a725a\",\"5828\":\"251f4c2fee5cd4300ac4\",\"6127\":\"da37b69cd9ee64a1836b\",\"6473\":\"29a59b355eab986be8fd\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2882;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2882: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(45943)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","pinia","createPinia","Vue","use","Router","originalPush","prototype","push","to","onComplete","onAbort","call","this","catch","err","mode","base","generateUrl","linkActiveClass","routes","path","redirect","name","params","view","props","stringifyQuery","query","result","queryString","stringify","replace","RouterService","constructor","router","_defineProperty","currentRoute","_router","goTo","arguments","length","undefined","goToRoute","emits","title","type","String","fillColor","default","size","Number","_vm","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","throttle","delay","callback","options","timeoutID","_ref","_ref$noTrailing","noTrailing","_ref$noLeading","noLeading","_ref$debounceMode","debounceMode","cancelled","lastExec","clearExistingTimeout","clearTimeout","wrapper","_len","arguments_","Array","_key","self","elapsed","Date","now","exec","apply","clear","setTimeout","cancel","_ref2$upcomingOnly","upcomingOnly","getLoggerBuilder","setApp","detectUser","build","components","ChartPie","NcAppNavigationItem","NcProgressBar","data","loadingStorageStats","storageStats","loadState","computed","storageStatsTitle","usedQuotaByte","formatFileSize","used","quotaByte","quota","t","storageStatsTooltip","relative","beforeMount","setInterval","throttleUpdateStorageStats","subscribe","mounted","free","showStorageFullWarning","methods","debounceUpdateStorageStats","_ref$atBegin","atBegin","event","updateStorageStats","response","axios","get","Error","error","logger","showError","translate","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","class","stopPropagation","preventDefault","slot","Math","min","el","Function","required","$el","appendChild","userConfig","show_hidden","crop_image_previews","sort_favorites_first","sort_folders_first","grid_view","useUserConfigStore","userConfigStore","defineStore","state","actions","onUpdate","key","value","update","put","emit","store","_initialized","Clipboard","NcAppSettingsDialog","NcAppSettingsSection","NcCheckboxRadioSwitch","NcInputField","Setting","open","Boolean","setup","settings","window","OCA","Files","Settings","webdavUrl","generateRemoteUrl","encodeURIComponent","getCurrentUser","uid","webdavDocs","appPasswordUrl","webdavUrlCopied","enableGridView","forEach","setting","beforeDestroy","close","onClose","setConfig","copyCloudId","document","querySelector","select","navigator","clipboard","writeText","showSuccess","folder_tree","_l","target","scopedSlots","_u","fn","proxy","useNavigation","_loaded","navigation","getNavigation","views","shallowRef","currentView","active","onUpdateActive","detail","onUpdateViews","triggerRef","onMounted","addEventListener","onUnmounted","removeEventListener","viewConfig","useViewConfigStore","getters","getConfig","getConfigs","setSortingBy","toggleSortingDirection","newDirection","sorting_direction","viewConfigStore","defineComponent","Fragment","NcIconSvgWrapper","parent","Object","level","currentViews","values","reduce","acc","filter","dir","startsWith","id","style","hasChildViews","useExactRouteMatching","generateToNavigation","isExpanded","expanded","onOpen","loadChildViews","filterView","viewMap","fromEntries","entries","viewId","_views","_setupProxy","loading","iconClass","sticky","icon","loaded","staticStyle","FilenameFilter","FileListFilter","super","updateQuery","nodes","queryParts","searchQuery","toLocaleLowerCase","split","node","displayname","every","part","includes","trim","filterUpdated","chips","text","onclick","updateChips","dispatchTypedEvent","CustomEvent","useFiltersStore","filters","filtersChanged","activeChips","flat","sortedFilters","sort","a","b","order","filtersWithUI","addFilter","onFilterUpdateChips","onFilterUpdate","debug","removeFilter","filterId","index","findIndex","splice","init","getFileListFilters","collator","Intl","Collator","getLanguage","getCanonicalLocale","numeric","usage","IconCog","FilesNavigationItem","NavigationQuota","NcAppNavigation","NcAppNavigationList","NcAppNavigationSearch","SettingsModal","filtersStore","ref","filenameFilter","registerFileListFilter","unregisterFileListFilter","watchThrottled","useFilenameFilter","settingsOpened","currentViewId","$route","map","compare","watch","newView","oldView","find","showView","created","loadExpandedViews","_ref2","viewConfigs","viewsToLoad","_ref3","config","_ref4","$navigation","Sidebar","setActive","openSettings","onSettingsClose","model","$$v","expression","action","FileAction","displayName","iconSvgInline","InformationSvg","enabled","isPublicShare","root","permissions","Permission","NONE","setActiveTab","OCP","fileid","element","width","observer","ResizeObserver","elements","contentBoxSize","inlineSize","contentRect","updateObserver","body","unobserve","observe","useFileListWidth","readonly","useRouteParameters","route","$root","_$route","run","assign","$router","afterEach","useRoute","directory","fileId","parseInt","isNaN","openFile","openfile","client","davGetClient","fetchNode","async","propfindPayload","davGetDefaultPropfind","stat","davRootPath","details","davResultToNode","usePathsStore","files","useFilesStore","pathsStore","paths","getPath","service","addPath","payload","source","deletePath","delete","onCreatedNode","FileType","Folder","addNodeToParentChildren","onDeletedNode","deleteNodeFromParentChildren","onMovedNode","oldSource","oldPath","oldNode","File","owner","mime","parentSource","dirname","folder","getRoot","getNode","children","Set","_children","add","fileStore","roots","getNodes","sources","getNodesById","getNodesByPath","updateNodes","deleteNodes","setRoot","onUpdatedNode","Promise","all","then","n","useSelectionStore","selected","lastSelection","lastSelectedIndex","set","selection","setLastIndex","reset","uploader","useUploaderStore","getUploader","queue","Directory","contents","_contents","_computeDirectorySize","lastModified","_computeDirectoryMtime","file","entry","traverseTree","isFile","resolve","reject","readDirectory","dirReader","createReader","getEntries","readEntries","results","createDirectoryIfNotExists","davClient","exists","absolutePath","createDirectory","recursive","resolveConflict","destination","conflicts","basename","uploads","renamed","openConflictPicker","showInfo","info","console","sharePermissions","getQueue","PQueue","concurrency","MoveCopyAction","canMove","minPermission","ALL","DELETE","canCopy","JSON","parse","attributes","some","attribute","scope","canDownload","CREATE","resultToNode","getContents","join","controller","AbortController","CancelablePromise","onCancel","abort","contentsResponse","getDirectoryContents","includeSelf","signal","slice","filename","getActionForNodes","MOVE_OR_COPY","MOVE","COPY","handleCopyMoveNodeTo","method","overwrite","NodeStatus","LOADING","actionFinished","toast","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","onRemove","hideToast","createLoadingNotification","copySuffix","currentPath","destinationPath","otherNodes","getUniqueName","suffix","ignoreFileExtension","copyFile","hasConflict","moveFile","isAxiosError","status","message","openFilePickerForAction","promise","withResolvers","fileIDs","getFilePickerBuilder","allowDirectories","setFilter","setMimeTypeFilter","setMultiSelect","startAt","setButtonFactory","buttons","dirnames","label","escape","sanitize","CopyIconSvg","disabled","FolderMoveSvg","pick","FilePickerClosed","e","execBatch","promises","dataTransferToFileTree","items","item","kind","getAsEntry","webkitGetAsEntry","warned","fileTree","DataTransferItem","warn","getAsFile","showWarning","onDropExternalFiles","uploadDirectoryContents","relativePath","joinPaths","upload","pause","start","errors","allSettled","onDropInternalFiles","isCopy","useDragAndDropStore","dragging","NcBreadcrumbs","NcBreadcrumb","draggingStore","filesStore","selectionStore","uploaderStore","fileListWidth","dirs","sections","getFileSourceFromPath","getNodeFromSource","exact","getDirDisplayName","getTo","disableDrop","isUploadInProgress","wrapUploadProgressBar","viewIcon","selectedFiles","draggingFiles","onClick","onDragOver","dataTransfer","ctrlKey","dropEffect","onDrop","canDrop","button","titleForSection","section","ariaForSection","_t","nativeOn","getSummaryFor","fileCount","folderCount","useActionsMenuStore","opened","isDialogVisible","useRenamingStore","renamingStore","renamingNode","newName","rename","oldName","oldEncodedSource","encodedSource","oldExtension","extname","newExtension","proceed","showWarningDialog","new","old","dialog","DialogBuilder","setName","setText","setButtons","oldextension","newextension","IconCheck","show","hide","url","headers","Destination","Overwrite","$reset","extend","FileMultipleIcon","FolderIcon","isSingleNode","isSingleFolder","summary","totalSize","total","$refs","previewImg","replaceChildren","preview","parentNode","cloneNode","$nextTick","Preview","DragAndDropPreview","directive","vOnClickOutside","getFileActions","NcFile","Node","filesListWidth","isMtimeAvailable","compact","provide","defaultFileAction","enabledFileActions","dragover","gridMode","uniqueId","str","hash","i","charCodeAt","hashCode","isLoading","extension","isSelected","isRenaming","isRenamingSmallScreen","isActive","currentFileId","isFailedSource","FAILED","canDrag","UPDATE","openedMenu","actionsMenuStore","toString","mtimeOpacity","maxOpacityTime","mtime","getTime","ratio","round","color","resetState","getElementById","removeProperty","onRightClick","closest","getBoundingClientRect","setProperty","max","clientX","left","clientY","top","isMoreThanOneSelected","execDefaultAction","metaKeyPressed","metaKey","READ","downloadAttribute","isDownloadable","currentDir","openDetailsIfAvailable","sidebarAction","onDragLeave","currentTarget","contains","relatedTarget","onDragStart","clearData","image","$mount","$on","$off","getDragAndDropPreview","setDragImage","onDragEnd","render","updateRootElement","ArrowLeftIcon","CustomElementRender","NcActionButton","NcActions","NcActionSeparator","NcLoadingIcon","inject","openedSubmenu","enabledInlineActions","inline","enabledRenderActions","renderInline","enabledMenuActions","DefaultType","HIDDEN","topActionsIds","enabledSubmenuActions","arr","getBoundariesElement","mountType","actionDisplayName","onActionClick","isSubmenu","$set","success","isMenu","onBackToMenuClick","menuAction","focus","refInFor","keyboardStore","altKey","shiftKey","onEvent","useKeyboardStore","ariaLabel","loadingLabel","onSelectionChange","newSelectedIndex","isAlreadySelected","end","filesToSelect","resetSelection","indexOf","_k","keyCode","getFilenameValidity","validateFilename","InvalidFilenameError","reason","InvalidFilenameErrorReason","Character","char","segment","ReservedName","Extension","match","NcTextField","renameLabel","linkTo","is","tabindex","immediate","handler","renaming","startRenaming","input","renameInput","validity","checkIfNodeExists","setCustomValidity","reportValidity","setSelectionRange","dispatchEvent","Event","stopRenaming","onRename","renameForm","checkValidity","nameContainer","directives","rawName","tag","domProps","q","x","r","f","pow","h","trunc","M","F","abs","d","z","L","floor","l","j","C","m","u","o","substring","c","s","Uint8ClampedArray","y","B","R","w","P","G","cos","PI","T","V","I","E","StarSvg","setAttribute","AccountGroupIcon","AccountPlusIcon","CollectivesIcon","FavoriteIcon","FileIcon","FolderOpenIcon","KeyIcon","LinkIcon","NetworkIcon","TagIcon","isPublic","publicSharingToken","getSharingToken","backgroundFailed","backgroundLoaded","isFavorite","favorite","cropPreviews","previewUrl","token","URL","location","origin","searchParams","etag","href","fileOverlay","PlayCircleIcon","folderOverlay","shareTypes","ShareType","Link","Email","hasBlurhash","canvas","drawBlurhash","src","onBackgroundLoad","onBackgroundError","height","pixels","decode","ctx","getContext","imageData","createImageData","putImageData","_m","FileEntryActions","FileEntryCheckbox","FileEntryName","FileEntryPreview","NcDateTime","mixins","FileEntryMixin","isSizeAvailable","rowListeners","dragstart","contextmenu","dragleave","dragend","drop","columns","sizeOpacity","getDate","crtime","mtimeTitle","moment","format","_g","column","inheritAttrs","header","currentFolder","updated","mount","View","classForColumn","mapState","sortingMode","sorting_mode","defaultSortKey","isAscSorting","sortingDirection","toggleSortBy","MenuDown","MenuUp","NcButton","filesSortingMixin","FilesListTableHeaderButton","selectAllBind","checked","isAllSelected","indeterminate","isSomeSelected","selectedNodes","isNoneSelected","ariaSortForMode","onToggleAll","dataComponent","dataKey","dataSources","extraProps","scrollToIndex","caption","beforeHeight","headerHeight","tableHeight","resizeObserver","isReady","bufferItems","columnCount","itemHeight","itemWidth","rowCount","ceil","startIndex","shownItems","renderedItems","oldItemsKeys","$_recycledPool","unusedKeys","keys","pop","random","substr","totalRowCount","tbodyStyle","isOverScrolled","lastIndex","hiddenAfterItems","paddingTop","paddingBottom","minHeight","scrollTo","oldColumnCount","before","thead","debounce","clientHeight","onScroll","passive","disconnect","targetRow","scrollTop","_onScrollHandle","requestAnimationFrame","topScroll","$scopedSlots","enabledActions","areSomeNodesLoading","inlineActions","selectionSources","failedSources","_defineComponent","__name","__props","filterStore","visualFilters","filterElements","watchEffect","__sfc","NcAvatar","NcChip","_setup","chip","user","FileListFilters","FilesListHeader","FilesListTableFooter","FilesListTableHeader","VirtualList","FilesListTableHeaderActions","FileEntry","FileEntryGrid","getFileListHeaders","openFileId","sortedHeaders","defaultCaption","scrollToFile","handleOpenFile","unselectFile","openSidebarForFile","unsubscribe","documentElement","clientWidth","defaultAction","at","isForeignFile","types","tableElement","table","tableTop","tableBottom","count","TrayArrowDownIcon","canUpload","isQuotaExceeded","cantUploadLabel","resetDragOver","mainContent","onContentDrop","lastUpload","findLast","UploadStatus","webkitRelativePath","isSharingEnabled","getCapabilities","files_sharing","BreadCrumbs","DragAndDropNotice","FilesListVirtual","ListViewIcon","NcAppContent","NcEmptyContent","PlusIcon","UploadPicker","ViewGridIcon","IconAlertCircleOutline","IconReload","forbiddenCharacters","dirContentsFiltered","getContent","normalizedPath","normalize","pageHeading","dirContents","dirContentsSorted","customColumn","reverse","sortNodes","sortFavoritesFirst","sortFoldersFirst","sortingOrder","isEmptyDir","isRefreshing","toPreviousDir","shareTypesAttributes","shareButtonLabel","shareButtonType","User","gridViewButtonLabel","canShare","SHARE","showCustomEmptyView","emptyView","enabledFileListActions","getFileListActions","toSorted","theming","productName","customEmptyView","fetchContent","newDir","oldDir","filesListVirtual","filterDirContent","onNodeDeleted","unmounted","fatal","isWebDAVClientError","humanizeWebDAVError","onUpload","onUploadFail","CANCELLED","doc","DOMParser","parseFromString","getElementsByTagName","textContent","openSharingSidebar","toggleGridView","click","emptyTitle","emptyCaption","NcContent","FilesList","Navigation","__webpack_nonce__","getCSPNonce","PiniaVuePlugin","observable","_settings","register","_name","_el","_open","_close","FilesApp","___CSS_LOADER_EXPORT___","module","NewMenuEntryCategory","NewMenuEntryCategory2","NewFileMenu","_entries","registerEntry","validateEntry","category","unregisterEntry","entryIndex","getEntryIndex","context","DefaultType2","_action","validateAction","destructive","_nc_fileactions","_nc_filelistactions","_nc_filelistheader","InvalidFilenameErrorReason2","cause","capabilities","forbidden_filename_characters","_oc_config","forbidden_filenames_characters","character","forbidden_filenames","endOfBasename","basename2","forbidden_filename_basenames","forbiddenFilenameExtensions","forbidden_filename_extensions","endsWith","otherNames","opts","n2","i2","ext","humanList","humanListBinary","skipSmallSizes","binaryPrefixes","base1000","log","readableFormat","relativeSize","toFixed","parseFloat","toLocaleString","toISOString","sortingOptions","collection","identifiers2","orders","sorting","_","a2","b2","identifier","orderBy","v","lastIndexOf","_currentView","search","remove","_nc_navigation","Column","_column","isValidColumn","getDefaultExportFromCjs","__esModule","hasOwnProperty","validator$2","util$3","exports","nameStartChar","nameRegexp","regexName","RegExp","isExist","isEmptyObject","obj","merge","arrayMode","len","getValue","isName","string","getAllMatches","regex","matches","allmatches","util$2","defaultOptions$2","allowBooleanAttributes","unpairedTags","isWhiteSpace","readPI","xmlData","tagname","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","angleBracketsCount","validate","tags","tagFound","reachedRoot","tagStartPos","closingTag","tagName","msg","readAttributeStr","attrStr","attrStrStart","isValid","validateAttributeString","code","line","tagClosed","otg","openPos","col","afterAmp","validateAmpersand","t3","doubleQuote","singleQuote","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","attrName","validateAttrName","re2","validateNumberAmpersand","lineNumber","lines","OptionsBuilder","defaultOptions$1","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","val2","attributeValueProcessor","stopNodes","alwaysCreateTextNode","isArray","commentPropName","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","jPath","buildOptions","defaultOptions","util$1","readEntityExp","entityName2","isComment","isEntity","isElement","isAttlist","isNotation","validateEntityName","hexRegex","numRegex","consider","decimalPoint","ignoreAttributes2","pattern","test","util","xmlNode","child","addChild","readDocType","entities","hasBody","comment","exp","entityName","val","regx","toNumber","trimmedStr","skipLike","sign","numTrimmedByZeros","numStr","num","getIgnoreAttributesFn$1","addExternalEntities","externalEntities","entKeys","ent","lastEntities","parseTextData","dontTrim","hasAttributes","isLeafNode","escapeEntities","replaceEntitiesValue","newval","parseValue","resolveNameSpace","prefix","charAt","attrsRegx","buildAttributesMap","ignoreAttributesFn","oldVal","aName","newVal","attrCollection","parseXml","xmlObj","currentNode","textData","closeIndex","findClosingIndex","colonIndex","saveTextToParentTag","lastTagName","propIndex","tagsNodeStack","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","docTypeEntities","rawTagName","lastTag","isItStopNode","tagContent","result2","readStopNodeData","replaceEntitiesValue$1","entity","ampEntity","currentTagName","allNodesExp","stopNodePath","stopNodeExp","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","trimStart","openTagCount","shouldParse","node2json","compress","compressedObj","tagObj","property","propName$1","newJpath","isLeaf","isLeafTag","assignAttributes","attrMap","jpath","atrrName","propCount","prettify","OrderedObjParser2","fromCharCode","validator$1","arrToStr","indentation","xmlStr","isPreviousElementTag","propName","newJPath","tagText","isStopNode","attStr2","attr_to_str","tempInd","piTextNodeName","newIdentation","indentBy","tagStart","tagValue","suppressUnpairedNode","suppressEmptyNode","attr","attrVal","suppressBooleanAttributes","textValue","buildFromOrderedJs","jArray","getIgnoreAttributesFn","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","ajPath","j2x","concat","buildTextValNode","buildObjectNode","repeat","jObj","arrayNodeName","buildAttrPairStr","arrLen","listTagVal","listTagAttr","j2","Ks","closeTag","tagEndExp","piClosingChar","fxp","XMLParser","validationOption","orderedObjParser","orderedResult","addEntity","XMLValidator","XMLBuilder","_view","isValidView","TypeError","jsonObject","parser","toLowerCase","isSvg","debug_1","process","env","NODE_DEBUG","args","constants","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","MAX_LENGTH$1","MAX_SAFE_INTEGER","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","re$1","MAX_SAFE_COMPONENT_LENGTH2","MAX_SAFE_BUILD_LENGTH2","MAX_LENGTH2","debug2","re","safeRe","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","COERCE","COERCEFULL","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","reExports","looseOption","freeze","loose","emptyOpts","compareIdentifiers$1","anum","bnum","identifiers","compareIdentifiers","rcompareIdentifiers","t2","parseOptions","semver","SemVer","version","includePrerelease","m2","LOOSE","FULL","raw","major","minor","patch","prerelease","other","compareMain","comparePre","compareBuild","inc","release","identifierBase","SemVer$1","valid$1","throwErrors","er","SemVer2","major$1","ProxyBus","bus","bus2","getVersion","SimpleBus","handlers","Map","h2","e2","Proxy","OC","_eventBus","_nc_event_bus","_nc_filelist_filters","has","getNewFileMenuEntries","_nc_newfilemenu","localeCompare","sensitivity","retries","uploadData","uploadData2","onUploadProgress","destinationFile","Blob","request","retryDelay","retryCount","getChunk","getMaxChunksSize","fileSize","maxChunkSize","appConfig","max_chunk_size","minimumChunkSize","Status$1","Status2","Upload","_source","_file","_isChunked","_chunks","_size","_uploaded","_startTime","_status","_controller","_response","chunked","chunks","isChunked","startTime","uploaded","isFileSystemFileEntry","FileSystemFileEntry","isFileSystemEntry","FileSystemEntry","_originalName","_path","sum","latest","originalName","from","getChild","addChildren","rootPath","FileSystemDirectoryEntry","reader","filePath","relPath","gtBuilder","detectLocale","addTranslation","locale","json","gt","ngettext","bind","gettext","Status","Uploader","_destinationFolder","_isPublic","_customHeaders","_uploadQueue","_jobQueue","chunked_upload","max_parallel_count","_queueSize","_queueProgress","_queueStatus","_notifiers","destinationFolder","addListener","maxChunksSize","customHeaders","structuredClone","setCustomHeader","deleteCustomerHeader","updateStats","progress","upload2","partialSum","addNotifier","notifier","_notifyAll","batchUpload","files2","rootFolder","UPLOADING","uploadDirectory","FINISHED","folderPath","currentUpload","selectedForUpload","directories","fileHandle","encodedDestinationFile","resolve2","disabledChunkUpload","blob","bytes","tempUrl","initChunkWorkspace","chunksQueue","chunk","bufferStart","bufferEnd","normalizeComponent","scriptExports","render6","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","_compiled","_scopeId","IconCancel","IconFolderUpload","IconPlus","IconUpload","showInvalidFilenameDialog","InvalidFilenameDialog","rest","skip","content","getConflicts","contentNames","NcActionCaption","accept","multiple","noMenu","allowFolders","progressTimeId","eta","timeLeft","newFileMenuEntries","uploadManager","menuEntriesUpload","UploadFromDevice","menuEntriesNew","CreateNew","menuEntriesOther","Other","canUploadFolders","createElement","totalQueueSize","uploadedQueueSize","hasFailure","isUploading","isAssembling","ASSEMBLING","isPaused","PAUSED","buttonLabel","buttonName","setDestination","updateStatus","report","onUploadCompletion","onTriggerPick","uploadFolders","webkitdirectory","onPick","contentsCallback","filesToUpload","defineProperty","finally","resetForm","form","estimate","Infinity","date","setSeconds","time","seconds","forceRecreate","_nc_uploader","ConflictPicker","picker","recursiveUpload","submit","$destroy","removeChild","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","O","chunkIds","priority","notFulfilled","fulfilled","getter","definition","enumerable","chunkId","g","globalThis","prop","done","script","needAttach","scripts","getAttribute","charset","nc","onScriptComplete","prev","onerror","onload","doneFns","head","Symbol","toStringTag","nmd","scriptUrl","importScripts","currentScript","toUpperCase","p","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"files-main.js?v=53b0245c45c3dd90bd3e","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/files/src/store/index.ts","webpack:///nextcloud/apps/files/src/router/router.ts","webpack:///nextcloud/apps/files/src/services/RouterService.ts","webpack:///nextcloud/apps/files/src/FilesApp.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Cog.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Cog.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Cog.vue?4d6d","webpack:///nextcloud/node_modules/vue-material-design-icons/Cog.vue?vue&type=template&id=209aff25","webpack:///nextcloud/node_modules/throttle-debounce/esm/index.js","webpack:///nextcloud/node_modules/vue-material-design-icons/ChartPie.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ChartPie.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/ChartPie.vue?421f","webpack:///nextcloud/node_modules/vue-material-design-icons/ChartPie.vue?vue&type=template&id=90a70766","webpack:///nextcloud/apps/files/src/logger.ts","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?e0b0","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?2966","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?08cb","webpack://nextcloud/./apps/files/src/views/Settings.vue?84f7","webpack:///nextcloud/apps/files/src/components/Setting.vue","webpack:///nextcloud/apps/files/src/components/Setting.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/files/src/components/Setting.vue?98ea","webpack://nextcloud/./apps/files/src/components/Setting.vue?8d57","webpack:///nextcloud/apps/files/src/store/userconfig.ts","webpack:///nextcloud/apps/files/src/views/Settings.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files/src/views/Settings.vue","webpack://nextcloud/./apps/files/src/views/Settings.vue?4fb0","webpack://nextcloud/./apps/files/src/views/Settings.vue?b81b","webpack:///nextcloud/apps/files/src/components/FilesNavigationItem.vue","webpack:///nextcloud/apps/files/src/composables/useNavigation.ts","webpack:///nextcloud/apps/files/src/store/viewConfig.ts","webpack:///nextcloud/apps/files/src/components/FilesNavigationItem.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesNavigationItem.vue?172f","webpack:///nextcloud/apps/files/src/filters/FilenameFilter.ts","webpack:///nextcloud/apps/files/src/store/filters.ts","webpack:///nextcloud/apps/files/src/views/Navigation.vue","webpack:///nextcloud/apps/files/src/views/Navigation.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/composables/useFilenameFilter.ts","webpack://nextcloud/./apps/files/src/views/Navigation.vue?13e6","webpack://nextcloud/./apps/files/src/views/Navigation.vue?74b9","webpack:///nextcloud/apps/files/src/views/FilesList.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Reload.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Reload.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Reload.vue?2e35","webpack:///nextcloud/node_modules/vue-material-design-icons/Reload.vue?vue&type=template&id=39a07256","webpack:///nextcloud/node_modules/vue-material-design-icons/FormatListBulletedSquare.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/FormatListBulletedSquare.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/FormatListBulletedSquare.vue?5dae","webpack:///nextcloud/node_modules/vue-material-design-icons/FormatListBulletedSquare.vue?vue&type=template&id=64cece03","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountPlus.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountPlus.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/AccountPlus.vue?2818","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountPlus.vue?vue&type=template&id=53a26aa0","webpack:///nextcloud/node_modules/vue-material-design-icons/ViewGrid.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/ViewGrid.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/ViewGrid.vue?4e55","webpack:///nextcloud/node_modules/vue-material-design-icons/ViewGrid.vue?vue&type=template&id=672ea5c8","webpack:///nextcloud/apps/files/src/actions/sidebarAction.ts","webpack:///nextcloud/apps/files/src/composables/useFileListWidth.ts","webpack:///nextcloud/apps/files/src/composables/useRouteParameters.ts","webpack:///nextcloud/node_modules/vue-router/composables.mjs","webpack:///nextcloud/apps/files/src/services/WebdavClient.ts","webpack:///nextcloud/apps/files/src/store/paths.ts","webpack:///nextcloud/apps/files/src/store/files.ts","webpack:///nextcloud/apps/files/src/store/selection.ts","webpack:///nextcloud/apps/files/src/store/uploader.ts","webpack:///nextcloud/apps/files/src/services/DropServiceUtils.ts","webpack:///nextcloud/apps/files/src/actions/moveOrCopyActionUtils.ts","webpack:///nextcloud/apps/files/src/services/Files.ts","webpack:///nextcloud/apps/files/src/actions/moveOrCopyAction.ts","webpack:///nextcloud/apps/files/src/services/DropService.ts","webpack:///nextcloud/apps/files/src/store/dragging.ts","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?f50f","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?d357","webpack:///nextcloud/apps/files/src/utils/fileUtils.ts","webpack:///nextcloud/apps/files/src/components/FileEntry.vue","webpack:///nextcloud/apps/files/src/store/actionsmenu.ts","webpack:///nextcloud/apps/files/src/store/renaming.ts","webpack:///nextcloud/node_modules/vue-material-design-icons/FileMultiple.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/FileMultiple.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/FileMultiple.vue?6e9d","webpack:///nextcloud/node_modules/vue-material-design-icons/FileMultiple.vue?vue&type=template&id=15fca808","webpack:///nextcloud/apps/files/src/components/DragAndDropPreview.vue","webpack:///nextcloud/apps/files/src/components/DragAndDropPreview.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/DragAndDropPreview.vue?dbe9","webpack://nextcloud/./apps/files/src/components/DragAndDropPreview.vue?36f6","webpack:///nextcloud/apps/files/src/utils/dragUtils.ts","webpack:///nextcloud/apps/files/src/components/FileEntryMixin.ts","webpack:///nextcloud/apps/files/src/utils/hashUtils.ts","webpack:///nextcloud/apps/files/src/utils/permissions.ts","webpack:///nextcloud/apps/files/src/components/CustomElementRender.vue","webpack:///nextcloud/apps/files/src/components/CustomElementRender.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/CustomElementRender.vue?5f5c","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryActions.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ArrowLeft.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ArrowLeft.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/ArrowLeft.vue?f857","webpack:///nextcloud/node_modules/vue-material-design-icons/ArrowLeft.vue?vue&type=template&id=16833c02","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryActions.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryActions.vue?4d16","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryActions.vue?016b","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryActions.vue?7b52","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryCheckbox.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryCheckbox.vue","webpack:///nextcloud/apps/files/src/store/keyboard.ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryCheckbox.vue?a18b","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryName.vue","webpack:///nextcloud/apps/files/src/utils/filenameValidity.ts","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryName.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryName.vue?ea94","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryName.vue?98a4","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryPreview.vue","webpack:///nextcloud/node_modules/blurhash/dist/esm/index.js","webpack:///nextcloud/node_modules/vue-material-design-icons/File.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/File.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/File.vue?245d","webpack:///nextcloud/node_modules/vue-material-design-icons/File.vue?vue&type=template&id=0f6b0bb0","webpack:///nextcloud/node_modules/vue-material-design-icons/FolderOpen.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/FolderOpen.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/FolderOpen.vue?6818","webpack:///nextcloud/node_modules/vue-material-design-icons/FolderOpen.vue?vue&type=template&id=ae0c5fc0","webpack:///nextcloud/node_modules/vue-material-design-icons/Key.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Key.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Key.vue?157c","webpack:///nextcloud/node_modules/vue-material-design-icons/Key.vue?vue&type=template&id=499b3412","webpack:///nextcloud/node_modules/vue-material-design-icons/Network.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Network.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Network.vue?11eb","webpack:///nextcloud/node_modules/vue-material-design-icons/Network.vue?vue&type=template&id=7bf2ec80","webpack:///nextcloud/node_modules/vue-material-design-icons/Tag.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Tag.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Tag.vue?6116","webpack:///nextcloud/node_modules/vue-material-design-icons/Tag.vue?vue&type=template&id=356230e0","webpack:///nextcloud/node_modules/vue-material-design-icons/PlayCircle.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/PlayCircle.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/PlayCircle.vue?0c26","webpack:///nextcloud/node_modules/vue-material-design-icons/PlayCircle.vue?vue&type=template&id=3cc1493c","webpack:///nextcloud/apps/files/src/components/FileEntry/CollectivesIcon.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files/src/components/FileEntry/CollectivesIcon.vue","webpack://nextcloud/./apps/files/src/components/FileEntry/CollectivesIcon.vue?1937","webpack://nextcloud/./apps/files/src/components/FileEntry/CollectivesIcon.vue?949d","webpack:///nextcloud/apps/files/src/components/FileEntry/FavoriteIcon.vue","webpack:///nextcloud/apps/files/src/components/FileEntry/FavoriteIcon.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FavoriteIcon.vue?f7c8","webpack://nextcloud/./apps/files/src/components/FileEntry/FavoriteIcon.vue?62c6","webpack:///nextcloud/apps/files/src/services/LivePhotos.ts","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryPreview.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryPreview.vue?8c1f","webpack:///nextcloud/apps/files/src/components/FileEntry.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry.vue?da7c","webpack:///nextcloud/apps/files/src/components/FileEntryGrid.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/FileEntryGrid.vue","webpack://nextcloud/./apps/files/src/components/FileEntryGrid.vue?bb8e","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue","webpack://nextcloud/./apps/files/src/components/FilesListHeader.vue?349b","webpack:///nextcloud/apps/files/src/components/FilesListTableFooter.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/FilesListTableFooter.vue","webpack://nextcloud/./apps/files/src/components/FilesListTableFooter.vue?8a94","webpack://nextcloud/./apps/files/src/components/FilesListTableFooter.vue?fa4c","webpack:///nextcloud/apps/files/src/components/FilesListTableHeader.vue","webpack:///nextcloud/apps/files/src/mixins/filesSorting.ts","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderButton.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderButton.vue","webpack://nextcloud/./apps/files/src/components/FilesListTableHeaderButton.vue?55b2","webpack://nextcloud/./apps/files/src/components/FilesListTableHeaderButton.vue?e364","webpack:///nextcloud/apps/files/src/components/FilesListTableHeader.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesListTableHeader.vue?c084","webpack://nextcloud/./apps/files/src/components/FilesListTableHeader.vue?b1c9","webpack:///nextcloud/apps/files/src/components/VirtualList.vue","webpack:///nextcloud/apps/files/src/components/VirtualList.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/VirtualList.vue?37fa","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderActions.vue","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderActions.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesListTableHeaderActions.vue?fd14","webpack://nextcloud/./apps/files/src/components/FilesListTableHeaderActions.vue?9494","webpack:///nextcloud/apps/files/src/components/FileListFilters.vue","webpack:///nextcloud/apps/files/src/components/FileListFilters.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FileListFilters.vue?eef0","webpack://nextcloud/./apps/files/src/components/FileListFilters.vue?ac4e","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?db6d","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?4001","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?3555","webpack:///nextcloud/node_modules/vue-material-design-icons/TrayArrowDown.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/TrayArrowDown.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/TrayArrowDown.vue?a897","webpack:///nextcloud/node_modules/vue-material-design-icons/TrayArrowDown.vue?vue&type=template&id=5dbf2618","webpack:///nextcloud/apps/files/src/components/DragAndDropNotice.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/DragAndDropNotice.vue","webpack://nextcloud/./apps/files/src/components/DragAndDropNotice.vue?0326","webpack://nextcloud/./apps/files/src/components/DragAndDropNotice.vue?a2e0","webpack:///nextcloud/apps/files/src/utils/davUtils.ts","webpack:///nextcloud/apps/files/src/views/FilesList.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/views/FilesList.vue?3dfd","webpack://nextcloud/./apps/files/src/views/FilesList.vue?1e5b","webpack:///nextcloud/apps/files/src/FilesApp.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/FilesApp.vue?597e","webpack:///nextcloud/apps/files/src/main.ts","webpack:///nextcloud/apps/files/src/services/Settings.js","webpack:///nextcloud/apps/files/src/models/Setting.js","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue?vue&type=style&index=0&id=61601fd4&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/DragAndDropNotice.vue?vue&type=style&index=0&id=48abd828&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/DragAndDropPreview.vue?vue&type=style&index=0&id=01562099&prod&lang=scss","webpack:///nextcloud/apps/files/src/components/FileEntry/FavoriteIcon.vue?vue&type=style&index=0&id=f2d0cf6e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryActions.vue?vue&type=style&index=0&id=1d682792&prod&lang=scss","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryActions.vue?vue&type=style&index=1&id=1d682792&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryName.vue?vue&type=style&index=0&id=ce4c1580&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FileListFilters.vue?vue&type=style&index=0&id=bd0c8440&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListTableFooter.vue?vue&type=style&index=0&id=4c69fc7c&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListTableHeader.vue?vue&type=style&index=0&id=4daa9603&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderActions.vue?vue&type=style&index=0&id=6c741170&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderButton.vue?vue&type=style&index=0&id=6d7680f0&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=style&index=0&id=76316b7f&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=style&index=1&id=76316b7f&prod&lang=scss","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue?vue&type=style&index=0&id=6ed9379e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/views/FilesList.vue?vue&type=style&index=0&id=0d5ddd73&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/views/Navigation.vue?vue&type=style&index=0&id=008142f0&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/views/Settings.vue?vue&type=style&index=0&id=23881b2c&prod&lang=scss&scoped=true","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/node_modules/@nextcloud/upload/dist/chunks/index-i9myasgp.mjs","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { createPinia } from 'pinia';\nexport const pinia = createPinia();\n","import { generateUrl } from '@nextcloud/router';\nimport queryString from 'query-string';\nimport Router from 'vue-router';\nimport Vue from 'vue';\nVue.use(Router);\n// Prevent router from throwing errors when we're already on the page we're trying to go to\nconst originalPush = Router.prototype.push;\nRouter.prototype.push = function push(to, onComplete, onAbort) {\n if (onComplete || onAbort)\n return originalPush.call(this, to, onComplete, onAbort);\n return originalPush.call(this, to).catch(err => err);\n};\nconst router = new Router({\n mode: 'history',\n // if index.php is in the url AND we got this far, then it's working:\n // let's keep using index.php in the url\n base: generateUrl('/apps/files'),\n linkActiveClass: 'active',\n routes: [\n {\n path: '/',\n // Pretending we're using the default view\n redirect: { name: 'filelist', params: { view: 'files' } },\n },\n {\n path: '/:view/:fileid(\\\\d+)?',\n name: 'filelist',\n props: true,\n },\n ],\n // Custom stringifyQuery to prevent encoding of slashes in the url\n stringifyQuery(query) {\n const result = queryString.stringify(query).replace(/%2F/gmi, '/');\n return result ? ('?' + result) : '';\n },\n});\nexport default router;\n","export default class RouterService {\n // typescript compiles this to `#router` to make it private even in JS,\n // but in TS it needs to be called without the visibility specifier\n router;\n constructor(router) {\n this.router = router;\n }\n get name() {\n return this.router.currentRoute.name;\n }\n get query() {\n return this.router.currentRoute.query || {};\n }\n get params() {\n return this.router.currentRoute.params || {};\n }\n /**\n * This is a protected getter only for internal use\n * @private\n */\n get _router() {\n return this.router;\n }\n /**\n * Trigger a route change on the files app\n *\n * @param path the url path, eg: '/trashbin?dir=/Deleted'\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goTo(path, replace = false) {\n return this.router.push({\n path,\n replace,\n });\n }\n /**\n * Trigger a route change on the files App\n *\n * @param name the route name\n * @param params the route parameters\n * @param query the url query parameters\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goToRoute(name, params, query, replace) {\n return this.router.push({\n name,\n query,\n params,\n replace,\n });\n }\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcContent',{attrs:{\"app-name\":\"files\"}},[(!_vm.isPublic)?_c('Navigation'):_vm._e(),_vm._v(\" \"),_c('FilesList',{attrs:{\"is-public\":_vm.isPublic}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon cog-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"CogIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Cog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Cog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Cog.vue?vue&type=template&id=209aff25\"\nimport script from \"./Cog.vue?vue&type=script&lang=js\"\nexport * from \"./Cog.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon cog-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n * are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n * as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n * one final time after the last throttled-function call. (After the throttled-function has not been called for\n * `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n * callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n * false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nfunction throttle (delay, callback, options) {\n var _ref = options || {},\n _ref$noTrailing = _ref.noTrailing,\n noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,\n _ref$noLeading = _ref.noLeading,\n noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,\n _ref$debounceMode = _ref.debounceMode,\n debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n var timeoutID;\n var cancelled = false;\n\n // Keep track of the last time `callback` was executed.\n var lastExec = 0;\n\n // Function to clear existing timeout\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n }\n\n // Function to cancel next exec\n function cancel(options) {\n var _ref2 = options || {},\n _ref2$upcomingOnly = _ref2.upcomingOnly,\n upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;\n clearExistingTimeout();\n cancelled = !upcomingOnly;\n }\n\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n var self = this;\n var elapsed = Date.now() - lastExec;\n if (cancelled) {\n return;\n }\n\n // Execute `callback` and update the `lastExec` timestamp.\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n function clear() {\n timeoutID = undefined;\n }\n if (!noLeading && debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`\n * and noLeading != true.\n */\n exec();\n }\n clearExistingTimeout();\n if (debounceMode === undefined && elapsed > delay) {\n if (noLeading) {\n /*\n * In throttle mode with noLeading, if `delay` time has\n * been exceeded, update `lastExec` and schedule `callback`\n * to execute after `delay` ms.\n */\n lastExec = Date.now();\n if (!noTrailing) {\n timeoutID = setTimeout(debounceMode ? clear : exec, delay);\n }\n } else {\n /*\n * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n }\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n wrapper.cancel = cancel;\n\n // Return the wrapper function.\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\nfunction debounce (delay, callback, options) {\n var _ref = options || {},\n _ref$atBegin = _ref.atBegin,\n atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;\n return throttle(delay, callback, {\n debounceMode: atBegin !== false\n });\n}\n\nexport { debounce, throttle };\n//# sourceMappingURL=index.js.map\n","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon chart-pie-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M11,2V22C5.9,21.5 2,17.2 2,12C2,6.8 5.9,2.5 11,2M13,2V11H22C21.5,6.2 17.8,2.5 13,2M13,13V22C17.7,21.5 21.5,17.8 22,13H13Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ChartPieIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPie.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPie.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ChartPie.vue?vue&type=template&id=90a70766\"\nimport script from \"./ChartPie.vue?vue&type=script&lang=js\"\nexport * from \"./ChartPie.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon chart-pie-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M11,2V22C5.9,21.5 2,17.2 2,12C2,6.8 5.9,2.5 11,2M13,2V11H22C21.5,6.2 17.8,2.5 13,2M13,13V22C17.7,21.5 21.5,17.8 22,13H13Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files')\n .detectUser()\n .build();\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js\"","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n -->\n<template>\n\t<NcAppNavigationItem v-if=\"storageStats\"\n\t\t:aria-description=\"t('files', 'Storage information')\"\n\t\t:class=\"{ 'app-navigation-entry__settings-quota--not-unlimited': storageStats.quota >= 0}\"\n\t\t:loading=\"loadingStorageStats\"\n\t\t:name=\"storageStatsTitle\"\n\t\t:title=\"storageStatsTooltip\"\n\t\tclass=\"app-navigation-entry__settings-quota\"\n\t\tdata-cy-files-navigation-settings-quota\n\t\t@click.stop.prevent=\"debounceUpdateStorageStats\">\n\t\t<ChartPie slot=\"icon\" :size=\"20\" />\n\n\t\t<!-- Progress bar -->\n\t\t<NcProgressBar v-if=\"storageStats.quota >= 0\"\n\t\t\tslot=\"extra\"\n\t\t\t:aria-label=\"t('files', 'Storage quota')\"\n\t\t\t:error=\"storageStats.relative > 80\"\n\t\t\t:value=\"Math.min(storageStats.relative, 100)\" />\n\t</NcAppNavigationItem>\n</template>\n\n<script>\nimport { debounce, throttle } from 'throttle-debounce'\nimport { formatFileSize } from '@nextcloud/files'\nimport { generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport { showError } from '@nextcloud/dialogs'\nimport { subscribe } from '@nextcloud/event-bus'\nimport { translate } from '@nextcloud/l10n'\nimport axios from '@nextcloud/axios'\n\nimport ChartPie from 'vue-material-design-icons/ChartPie.vue'\nimport NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js'\nimport NcProgressBar from '@nextcloud/vue/dist/Components/NcProgressBar.js'\n\nimport logger from '../logger.ts'\n\nexport default {\n\tname: 'NavigationQuota',\n\n\tcomponents: {\n\t\tChartPie,\n\t\tNcAppNavigationItem,\n\t\tNcProgressBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloadingStorageStats: false,\n\t\t\tstorageStats: loadState('files', 'storageStats', null),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tstorageStatsTitle() {\n\t\t\tconst usedQuotaByte = formatFileSize(this.storageStats?.used, false, false)\n\t\t\tconst quotaByte = formatFileSize(this.storageStats?.quota, false, false)\n\n\t\t\t// If no quota set\n\t\t\tif (this.storageStats?.quota < 0) {\n\t\t\t\treturn this.t('files', '{usedQuotaByte} used', { usedQuotaByte })\n\t\t\t}\n\n\t\t\treturn this.t('files', '{used} of {quota} used', {\n\t\t\t\tused: usedQuotaByte,\n\t\t\t\tquota: quotaByte,\n\t\t\t})\n\t\t},\n\t\tstorageStatsTooltip() {\n\t\t\tif (!this.storageStats.relative) {\n\t\t\t\treturn ''\n\t\t\t}\n\n\t\t\treturn this.t('files', '{relative}% used', this.storageStats)\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\t/**\n\t\t * Update storage stats every minute\n\t\t * TODO: remove when all views are migrated to Vue\n\t\t */\n\t\tsetInterval(this.throttleUpdateStorageStats, 60 * 1000)\n\n\t\tsubscribe('files:node:created', this.throttleUpdateStorageStats)\n\t\tsubscribe('files:node:deleted', this.throttleUpdateStorageStats)\n\t\tsubscribe('files:node:moved', this.throttleUpdateStorageStats)\n\t\tsubscribe('files:node:updated', this.throttleUpdateStorageStats)\n\t},\n\n\tmounted() {\n\t\t// If the user has a quota set, warn if the available account storage is <=0\n\t\t//\n\t\t// NOTE: This doesn't catch situations where actual *server*\n\t\t// disk (non-quota) space is low, but those should probably\n\t\t// be handled differently anyway since a regular user can't\n\t\t// can't do much about them (If we did want to indicate server disk\n\t\t// space matters to users, we'd probably want to use a warning\n\t\t// specific to that situation anyhow. So this covers warning covers\n\t\t// our primary day-to-day concern (individual account quota usage).\n\t\t//\n\t\tif (this.storageStats?.quota > 0 && this.storageStats?.free === 0) {\n\t\t\tthis.showStorageFullWarning()\n\t\t}\n\t},\n\n\tmethods: {\n\t\t// From user input\n\t\tdebounceUpdateStorageStats: debounce(200, function(event) {\n\t\t\tthis.updateStorageStats(event)\n\t\t}),\n\t\t// From interval or event bus\n\t\tthrottleUpdateStorageStats: throttle(1000, function(event) {\n\t\t\tthis.updateStorageStats(event)\n\t\t}),\n\n\t\t/**\n\t\t * Update the storage stats\n\t\t * Throttled at max 1 refresh per minute\n\t\t *\n\t\t * @param {Event} [event] if user interaction\n\t\t */\n\t\tasync updateStorageStats(event = null) {\n\t\t\tif (this.loadingStorageStats) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.loadingStorageStats = true\n\t\t\ttry {\n\t\t\t\tconst response = await axios.get(generateUrl('/apps/files/api/v1/stats'))\n\t\t\t\tif (!response?.data?.data) {\n\t\t\t\t\tthrow new Error('Invalid storage stats')\n\t\t\t\t}\n\n\t\t\t\t// Warn the user if the available account storage changed from > 0 to 0\n\t\t\t\t// (unless only because quota was intentionally set to 0 by admin in the interim)\n\t\t\t\tif (this.storageStats?.free > 0 && response.data.data?.free === 0 && response.data.data?.quota > 0) {\n\t\t\t\t\tthis.showStorageFullWarning()\n\t\t\t\t}\n\n\t\t\t\tthis.storageStats = response.data.data\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Could not refresh storage stats', { error })\n\t\t\t\t// Only show to the user if it was manually triggered\n\t\t\t\tif (event) {\n\t\t\t\t\tshowError(t('files', 'Could not refresh storage stats'))\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loadingStorageStats = false\n\t\t\t}\n\t\t},\n\n\t\tshowStorageFullWarning() {\n\t\t\tshowError(this.t('files', 'Your storage is full, files can not be updated or synced anymore!'))\n\t\t},\n\n\t\tt: translate,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n// User storage stats display\n.app-navigation-entry__settings-quota {\n\t// Align title with progress and icon\n\t--app-navigation-quota-margin: calc((var(--default-clickable-area) - 24px) / 2); // 20px icon size and 4px progress bar\n\n\t&--not-unlimited :deep(.app-navigation-entry__name) {\n\t\tline-height: 1;\n\t\tmargin-top: var(--app-navigation-quota-margin);\n\t}\n\n\tprogress {\n\t\tposition: absolute;\n\t\tbottom: var(--app-navigation-quota-margin);\n\t\tmargin-inline-start: var(--default-clickable-area);\n\t\twidth: calc(100% - (1.5 * var(--default-clickable-area)));\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=6ed9379e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=6ed9379e&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NavigationQuota.vue?vue&type=template&id=6ed9379e&scoped=true\"\nimport script from \"./NavigationQuota.vue?vue&type=script&lang=js\"\nexport * from \"./NavigationQuota.vue?vue&type=script&lang=js\"\nimport style0 from \"./NavigationQuota.vue?vue&type=style&index=0&id=6ed9379e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6ed9379e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.storageStats)?_c('NcAppNavigationItem',{staticClass:\"app-navigation-entry__settings-quota\",class:{ 'app-navigation-entry__settings-quota--not-unlimited': _vm.storageStats.quota >= 0},attrs:{\"aria-description\":_vm.t('files', 'Storage information'),\"loading\":_vm.loadingStorageStats,\"name\":_vm.storageStatsTitle,\"title\":_vm.storageStatsTooltip,\"data-cy-files-navigation-settings-quota\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.debounceUpdateStorageStats.apply(null, arguments)}}},[_c('ChartPie',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"}),_vm._v(\" \"),(_vm.storageStats.quota >= 0)?_c('NcProgressBar',{attrs:{\"slot\":\"extra\",\"aria-label\":_vm.t('files', 'Storage quota'),\"error\":_vm.storageStats.relative > 80,\"value\":Math.min(_vm.storageStats.relative, 100)},slot:\"extra\"}):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppSettingsDialog',{attrs:{\"open\":_vm.open,\"show-navigation\":true,\"name\":_vm.t('files', 'Files settings')},on:{\"update:open\":_vm.onClose}},[_c('NcAppSettingsSection',{attrs:{\"id\":\"settings\",\"name\":_vm.t('files', 'Files settings')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"data-cy-files-settings-setting\":\"sort_favorites_first\",\"checked\":_vm.userConfig.sort_favorites_first},on:{\"update:checked\":function($event){return _vm.setConfig('sort_favorites_first', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Sort favorites first'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"data-cy-files-settings-setting\":\"sort_folders_first\",\"checked\":_vm.userConfig.sort_folders_first},on:{\"update:checked\":function($event){return _vm.setConfig('sort_folders_first', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Sort folders before files'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"data-cy-files-settings-setting\":\"show_hidden\",\"checked\":_vm.userConfig.show_hidden},on:{\"update:checked\":function($event){return _vm.setConfig('show_hidden', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Show hidden files'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"data-cy-files-settings-setting\":\"crop_image_previews\",\"checked\":_vm.userConfig.crop_image_previews},on:{\"update:checked\":function($event){return _vm.setConfig('crop_image_previews', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Crop image previews'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.enableGridView)?_c('NcCheckboxRadioSwitch',{attrs:{\"data-cy-files-settings-setting\":\"grid_view\",\"checked\":_vm.userConfig.grid_view},on:{\"update:checked\":function($event){return _vm.setConfig('grid_view', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Enable the grid view'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"data-cy-files-settings-setting\":\"folder_tree\",\"checked\":_vm.userConfig.folder_tree},on:{\"update:checked\":function($event){return _vm.setConfig('folder_tree', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Enable folder tree'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.settings.length !== 0)?_c('NcAppSettingsSection',{attrs:{\"id\":\"more-settings\",\"name\":_vm.t('files', 'Additional settings')}},[_vm._l((_vm.settings),function(setting){return [_c('Setting',{key:setting.name,attrs:{\"el\":setting.el}})]})],2):_vm._e(),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"webdav\",\"name\":_vm.t('files', 'WebDAV')}},[_c('NcInputField',{attrs:{\"id\":\"webdav-url-input\",\"label\":_vm.t('files', 'WebDAV URL'),\"show-trailing-button\":true,\"success\":_vm.webdavUrlCopied,\"trailing-button-label\":_vm.t('files', 'Copy to clipboard'),\"value\":_vm.webdavUrl,\"readonly\":\"readonly\",\"type\":\"url\"},on:{\"focus\":function($event){return $event.target.select()},\"trailing-button-click\":_vm.copyCloudId},scopedSlots:_vm._u([{key:\"trailing-button-icon\",fn:function(){return [_c('Clipboard',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('em',[_c('a',{staticClass:\"setting-link\",attrs:{\"href\":_vm.webdavDocs,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Use this address to access your Files via WebDAV'))+\" ↗\\n\\t\\t\\t\")])]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',[_c('a',{staticClass:\"setting-link\",attrs:{\"href\":_vm.appPasswordUrl}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'If you have enabled 2FA, you must create and use a new app password by clicking here.'))+\" ↗\\n\\t\\t\\t\")])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div />\n</template>\n<script>\nexport default {\n\tname: 'Setting',\n\tprops: {\n\t\tel: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.$el.appendChild(this.el())\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Setting.vue?vue&type=template&id=315a4ce8\"\nimport script from \"./Setting.vue?vue&type=script&lang=js\"\nexport * from \"./Setting.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineStore } from 'pinia';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\nimport { loadState } from '@nextcloud/initial-state';\nimport axios from '@nextcloud/axios';\nimport Vue from 'vue';\nconst userConfig = loadState('files', 'config', {\n show_hidden: false,\n crop_image_previews: true,\n sort_favorites_first: true,\n sort_folders_first: true,\n grid_view: false,\n});\nexport const useUserConfigStore = function (...args) {\n const store = defineStore('userconfig', {\n state: () => ({\n userConfig,\n }),\n actions: {\n /**\n * Update the user config local store\n * @param key\n * @param value\n */\n onUpdate(key, value) {\n Vue.set(this.userConfig, key, value);\n },\n /**\n * Update the user config local store AND on server side\n * @param key\n * @param value\n */\n async update(key, value) {\n await axios.put(generateUrl('/apps/files/api/v1/config/' + key), {\n value,\n });\n emit('files:config:updated', { key, value });\n },\n },\n });\n const userConfigStore = store(...args);\n // Make sure we only register the listeners once\n if (!userConfigStore._initialized) {\n subscribe('files:config:updated', function ({ key, value }) {\n userConfigStore.onUpdate(key, value);\n });\n userConfigStore._initialized = true;\n }\n return userConfigStore;\n};\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js\"","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<NcAppSettingsDialog :open=\"open\"\n\t\t:show-navigation=\"true\"\n\t\t:name=\"t('files', 'Files settings')\"\n\t\t@update:open=\"onClose\">\n\t\t<!-- Settings API-->\n\t\t<NcAppSettingsSection id=\"settings\" :name=\"t('files', 'Files settings')\">\n\t\t\t<NcCheckboxRadioSwitch data-cy-files-settings-setting=\"sort_favorites_first\"\n\t\t\t\t:checked=\"userConfig.sort_favorites_first\"\n\t\t\t\t@update:checked=\"setConfig('sort_favorites_first', $event)\">\n\t\t\t\t{{ t('files', 'Sort favorites first') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch data-cy-files-settings-setting=\"sort_folders_first\"\n\t\t\t\t:checked=\"userConfig.sort_folders_first\"\n\t\t\t\t@update:checked=\"setConfig('sort_folders_first', $event)\">\n\t\t\t\t{{ t('files', 'Sort folders before files') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch data-cy-files-settings-setting=\"show_hidden\"\n\t\t\t\t:checked=\"userConfig.show_hidden\"\n\t\t\t\t@update:checked=\"setConfig('show_hidden', $event)\">\n\t\t\t\t{{ t('files', 'Show hidden files') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch data-cy-files-settings-setting=\"crop_image_previews\"\n\t\t\t\t:checked=\"userConfig.crop_image_previews\"\n\t\t\t\t@update:checked=\"setConfig('crop_image_previews', $event)\">\n\t\t\t\t{{ t('files', 'Crop image previews') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch v-if=\"enableGridView\"\n\t\t\t\tdata-cy-files-settings-setting=\"grid_view\"\n\t\t\t\t:checked=\"userConfig.grid_view\"\n\t\t\t\t@update:checked=\"setConfig('grid_view', $event)\">\n\t\t\t\t{{ t('files', 'Enable the grid view') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch data-cy-files-settings-setting=\"folder_tree\"\n\t\t\t\t:checked=\"userConfig.folder_tree\"\n\t\t\t\t@update:checked=\"setConfig('folder_tree', $event)\">\n\t\t\t\t{{ t('files', 'Enable folder tree') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcAppSettingsSection>\n\n\t\t<!-- Settings API-->\n\t\t<NcAppSettingsSection v-if=\"settings.length !== 0\"\n\t\t\tid=\"more-settings\"\n\t\t\t:name=\"t('files', 'Additional settings')\">\n\t\t\t<template v-for=\"setting in settings\">\n\t\t\t\t<Setting :key=\"setting.name\" :el=\"setting.el\" />\n\t\t\t</template>\n\t\t</NcAppSettingsSection>\n\n\t\t<!-- Webdav URL-->\n\t\t<NcAppSettingsSection id=\"webdav\" :name=\"t('files', 'WebDAV')\">\n\t\t\t<NcInputField id=\"webdav-url-input\"\n\t\t\t\t:label=\"t('files', 'WebDAV URL')\"\n\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t:success=\"webdavUrlCopied\"\n\t\t\t\t:trailing-button-label=\"t('files', 'Copy to clipboard')\"\n\t\t\t\t:value=\"webdavUrl\"\n\t\t\t\treadonly=\"readonly\"\n\t\t\t\ttype=\"url\"\n\t\t\t\t@focus=\"$event.target.select()\"\n\t\t\t\t@trailing-button-click=\"copyCloudId\">\n\t\t\t\t<template #trailing-button-icon>\n\t\t\t\t\t<Clipboard :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcInputField>\n\t\t\t<em>\n\t\t\t\t<a class=\"setting-link\"\n\t\t\t\t\t:href=\"webdavDocs\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\trel=\"noreferrer noopener\">\n\t\t\t\t\t{{ t('files', 'Use this address to access your Files via WebDAV') }} ↗\n\t\t\t\t</a>\n\t\t\t</em>\n\t\t\t<br>\n\t\t\t<em>\n\t\t\t\t<a class=\"setting-link\" :href=\"appPasswordUrl\">\n\t\t\t\t\t{{ t('files', 'If you have enabled 2FA, you must create and use a new app password by clicking here.') }} ↗\n\t\t\t\t</a>\n\t\t\t</em>\n\t\t</NcAppSettingsSection>\n\t</NcAppSettingsDialog>\n</template>\n\n<script>\nimport NcAppSettingsDialog from '@nextcloud/vue/dist/Components/NcAppSettingsDialog.js'\nimport NcAppSettingsSection from '@nextcloud/vue/dist/Components/NcAppSettingsSection.js'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport Clipboard from 'vue-material-design-icons/ContentCopy.vue'\nimport NcInputField from '@nextcloud/vue/dist/Components/NcInputField.js'\nimport Setting from '../components/Setting.vue'\n\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { translate } from '@nextcloud/l10n'\nimport { loadState } from '@nextcloud/initial-state'\nimport { useUserConfigStore } from '../store/userconfig.ts'\n\nexport default {\n\tname: 'Settings',\n\tcomponents: {\n\t\tClipboard,\n\t\tNcAppSettingsDialog,\n\t\tNcAppSettingsSection,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcInputField,\n\t\tSetting,\n\t},\n\n\tprops: {\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tsetup() {\n\t\tconst userConfigStore = useUserConfigStore()\n\t\treturn {\n\t\t\tuserConfigStore,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// Settings API\n\t\t\tsettings: window.OCA?.Files?.Settings?.settings || [],\n\n\t\t\t// Webdav infos\n\t\t\twebdavUrl: generateRemoteUrl('dav/files/' + encodeURIComponent(getCurrentUser()?.uid)),\n\t\t\twebdavDocs: 'https://docs.nextcloud.com/server/stable/go.php?to=user-webdav',\n\t\t\tappPasswordUrl: generateUrl('/settings/user/security#generate-app-token-section'),\n\t\t\twebdavUrlCopied: false,\n\t\t\tenableGridView: (loadState('core', 'config', [])['enable_non-accessible_features'] ?? true),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tuserConfig() {\n\t\t\treturn this.userConfigStore.userConfig\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\t// Update the settings API entries state\n\t\tthis.settings.forEach(setting => setting.open())\n\t},\n\n\tbeforeDestroy() {\n\t\t// Update the settings API entries state\n\t\tthis.settings.forEach(setting => setting.close())\n\t},\n\n\tmethods: {\n\t\tonClose() {\n\t\t\tthis.$emit('close')\n\t\t},\n\n\t\tsetConfig(key, value) {\n\t\t\tthis.userConfigStore.update(key, value)\n\t\t},\n\n\t\tasync copyCloudId() {\n\t\t\tdocument.querySelector('input#webdav-url-input').select()\n\n\t\t\tif (!navigator.clipboard) {\n\t\t\t\t// Clipboard API not available\n\t\t\t\tshowError(t('files', 'Clipboard is not available'))\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tawait navigator.clipboard.writeText(this.webdavUrl)\n\t\t\tthis.webdavUrlCopied = true\n\t\t\tshowSuccess(t('files', 'WebDAV URL copied to clipboard'))\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.webdavUrlCopied = false\n\t\t\t}, 5000)\n\t\t},\n\n\t\tt: translate,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.setting-link:hover {\n\ttext-decoration: underline;\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=style&index=0&id=23881b2c&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=style&index=0&id=23881b2c&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=23881b2c&scoped=true\"\nimport script from \"./Settings.vue?vue&type=script&lang=js\"\nexport * from \"./Settings.vue?vue&type=script&lang=js\"\nimport style0 from \"./Settings.vue?vue&type=style&index=0&id=23881b2c&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"23881b2c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('Fragment',_vm._l((_vm.currentViews),function(view){return _c('NcAppNavigationItem',{key:view.id,staticClass:\"files-navigation__item\",style:(_vm.style),attrs:{\"allow-collapse\":\"\",\"loading\":view.loading,\"data-cy-files-navigation-item\":view.id,\"exact\":_vm.useExactRouteMatching(view),\"icon\":view.iconClass,\"name\":view.name,\"open\":_vm.isExpanded(view),\"pinned\":view.sticky,\"to\":_vm.generateToNavigation(view)},on:{\"update:open\":(open) => _vm.onOpen(open, view)},scopedSlots:_vm._u([(view.icon)?{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"svg\":view.icon}})]},proxy:true}:null],null,true)},[_vm._v(\" \"),(view.loadChildViews && !view.loaded)?_c('li',{staticStyle:{\"display\":\"none\"}}):_vm._e(),_vm._v(\" \"),(_vm.hasChildViews(view))?_c('FilesNavigationItem',{attrs:{\"parent\":view,\"level\":_vm.level + 1,\"views\":_vm.filterView(_vm.views, _vm.parent.id)}}):_vm._e()],1)}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { getNavigation } from '@nextcloud/files';\nimport { subscribe } from '@nextcloud/event-bus';\nimport { onMounted, onUnmounted, shallowRef, triggerRef } from 'vue';\n/**\n * Composable to get the currently active files view from the files navigation\n * @param _loaded If set enforce a current view is loaded\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function useNavigation(_loaded) {\n const navigation = getNavigation();\n const views = shallowRef(navigation.views);\n const currentView = shallowRef(navigation.active);\n /**\n * Event listener to update the `currentView`\n * @param event The update event\n */\n function onUpdateActive(event) {\n currentView.value = event.detail;\n }\n /**\n * Event listener to update all registered views\n */\n function onUpdateViews() {\n views.value = navigation.views;\n triggerRef(views);\n }\n onMounted(() => {\n navigation.addEventListener('update', onUpdateViews);\n navigation.addEventListener('updateActive', onUpdateActive);\n subscribe('files:navigation:updated', onUpdateViews);\n });\n onUnmounted(() => {\n navigation.removeEventListener('update', onUpdateViews);\n navigation.removeEventListener('updateActive', onUpdateActive);\n });\n return {\n currentView,\n views,\n };\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\nimport { loadState } from '@nextcloud/initial-state';\nimport axios from '@nextcloud/axios';\nimport Vue from 'vue';\nconst viewConfig = loadState('files', 'viewConfigs', {});\nexport const useViewConfigStore = function (...args) {\n const store = defineStore('viewconfig', {\n state: () => ({\n viewConfig,\n }),\n getters: {\n getConfig: (state) => (view) => state.viewConfig[view] || {},\n getConfigs: (state) => () => state.viewConfig,\n },\n actions: {\n /**\n * Update the view config local store\n * @param view\n * @param key\n * @param value\n */\n onUpdate(view, key, value) {\n if (!this.viewConfig[view]) {\n Vue.set(this.viewConfig, view, {});\n }\n Vue.set(this.viewConfig[view], key, value);\n },\n /**\n * Update the view config local store AND on server side\n * @param view\n * @param key\n * @param value\n */\n async update(view, key, value) {\n axios.put(generateUrl('/apps/files/api/v1/views'), {\n value,\n view,\n key,\n });\n emit('files:viewconfig:updated', { view, key, value });\n },\n /**\n * Set the sorting key AND sort by ASC\n * The key param must be a valid key of a File object\n * If not found, will be searched within the File attributes\n * @param key Key to sort by\n * @param view View to set the sorting key for\n */\n setSortingBy(key = 'basename', view = 'files') {\n // Save new config\n this.update(view, 'sorting_mode', key);\n this.update(view, 'sorting_direction', 'asc');\n },\n /**\n * Toggle the sorting direction\n * @param view view to set the sorting order for\n */\n toggleSortingDirection(view = 'files') {\n const config = this.getConfig(view) || { sorting_direction: 'asc' };\n const newDirection = config.sorting_direction === 'asc' ? 'desc' : 'asc';\n // Save new config\n this.update(view, 'sorting_direction', newDirection);\n },\n },\n });\n const viewConfigStore = store(...args);\n // Make sure we only register the listeners once\n if (!viewConfigStore._initialized) {\n subscribe('files:viewconfig:updated', function ({ view, key, value }) {\n viewConfigStore.onUpdate(view, key, value);\n });\n viewConfigStore._initialized = true;\n }\n return viewConfigStore;\n};\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationItem.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationItem.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FilesNavigationItem.vue?vue&type=template&id=7a39a8a8\"\nimport script from \"./FilesNavigationItem.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesNavigationItem.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { FileListFilter } from '@nextcloud/files';\n/**\n * Simple file list filter controlled by the Navigation search box\n */\nexport class FilenameFilter extends FileListFilter {\n searchQuery = '';\n constructor() {\n super('files:filename', 5);\n subscribe('files:navigation:changed', () => this.updateQuery(''));\n }\n filter(nodes) {\n const queryParts = this.searchQuery.toLocaleLowerCase().split(' ').filter(Boolean);\n return nodes.filter((node) => {\n const displayname = node.displayname.toLocaleLowerCase();\n return queryParts.every((part) => displayname.includes(part));\n });\n }\n updateQuery(query) {\n query = (query || '').trim();\n // Only if the query is different we update the filter to prevent re-computing all nodes\n if (query !== this.searchQuery) {\n this.searchQuery = query;\n this.filterUpdated();\n const chips = [];\n if (query !== '') {\n chips.push({\n text: query,\n onclick: () => {\n this.updateQuery('');\n },\n });\n }\n this.updateChips(chips);\n // Emit the new query as it might have come not from the Navigation\n this.dispatchTypedEvent('update:query', new CustomEvent('update:query', { detail: query }));\n }\n }\n}\n","import { subscribe } from '@nextcloud/event-bus';\nimport { getFileListFilters } from '@nextcloud/files';\nimport { defineStore } from 'pinia';\nimport logger from '../logger';\nexport const useFiltersStore = defineStore('filters', {\n state: () => ({\n chips: {},\n filters: [],\n filtersChanged: false,\n }),\n getters: {\n /**\n * Currently active filter chips\n * @param state Internal state\n */\n activeChips(state) {\n return Object.values(state.chips).flat();\n },\n /**\n * Filters sorted by order\n * @param state Internal state\n */\n sortedFilters(state) {\n return state.filters.sort((a, b) => a.order - b.order);\n },\n /**\n * All filters that provide a UI for visual controlling the filter state\n */\n filtersWithUI() {\n return this.sortedFilters.filter((filter) => 'mount' in filter);\n },\n },\n actions: {\n addFilter(filter) {\n filter.addEventListener('update:chips', this.onFilterUpdateChips);\n filter.addEventListener('update:filter', this.onFilterUpdate);\n this.filters.push(filter);\n logger.debug('New file list filter registered', { id: filter.id });\n },\n removeFilter(filterId) {\n const index = this.filters.findIndex(({ id }) => id === filterId);\n if (index > -1) {\n const [filter] = this.filters.splice(index, 1);\n filter.removeEventListener('update:chips', this.onFilterUpdateChips);\n filter.removeEventListener('update:filter', this.onFilterUpdate);\n logger.debug('Files list filter unregistered', { id: filterId });\n }\n },\n onFilterUpdate() {\n this.filtersChanged = true;\n },\n onFilterUpdateChips(event) {\n const id = event.target.id;\n this.chips = { ...this.chips, [id]: [...event.detail] };\n logger.debug('File list filter chips updated', { filter: id, chips: event.detail });\n },\n init() {\n subscribe('files:filter:added', this.addFilter);\n subscribe('files:filter:removed', this.removeFilter);\n for (const filter of getFileListFilters()) {\n this.addFilter(filter);\n }\n },\n },\n});\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcAppNavigation',{staticClass:\"files-navigation\",attrs:{\"data-cy-files-navigation\":\"\",\"aria-label\":_vm.t('files', 'Files')},scopedSlots:_vm._u([{key:\"search\",fn:function(){return [_c('NcAppNavigationSearch',{attrs:{\"label\":_vm.t('files', 'Filter filenames…')},model:{value:(_vm.searchQuery),callback:function ($$v) {_vm.searchQuery=$$v},expression:\"searchQuery\"}})]},proxy:true},{key:\"default\",fn:function(){return [_c('NcAppNavigationList',{staticClass:\"files-navigation__list\",attrs:{\"aria-label\":_vm.t('files', 'Views')}},[_c('FilesNavigationItem',{attrs:{\"views\":_vm.viewMap}})],1),_vm._v(\" \"),_c('SettingsModal',{attrs:{\"open\":_vm.settingsOpened,\"data-cy-files-navigation-settings\":\"\"},on:{\"close\":_vm.onSettingsClose}})]},proxy:true},{key:\"footer\",fn:function(){return [_c('ul',{staticClass:\"app-navigation-entry__settings\"},[_c('NavigationQuota'),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"name\":_vm.t('files', 'Files settings'),\"data-cy-files-navigation-settings-button\":\"\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openSettings.apply(null, arguments)}}},[_c('IconCog',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"})],1)],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=ts\"","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { registerFileListFilter, unregisterFileListFilter } from '@nextcloud/files';\nimport { watchThrottled } from '@vueuse/core';\nimport { onMounted, onUnmounted, ref } from 'vue';\nimport { FilenameFilter } from '../filters/FilenameFilter';\n/**\n * This is for the `Navigation` component to provide a filename filter\n */\nexport function useFilenameFilter() {\n const searchQuery = ref('');\n const filenameFilter = new FilenameFilter();\n /**\n * Updating the search query ref from the filter\n * @param event The update:query event\n */\n function updateQuery(event) {\n if (event.type === 'update:query') {\n searchQuery.value = event.detail;\n event.stopPropagation();\n }\n }\n onMounted(() => {\n filenameFilter.addEventListener('update:query', updateQuery);\n registerFileListFilter(filenameFilter);\n });\n onUnmounted(() => {\n filenameFilter.removeEventListener('update:query', updateQuery);\n unregisterFileListFilter(filenameFilter.id);\n });\n // Update the query on the filter, but throttle to max. every 800ms\n // This will debounce the filter refresh\n watchThrottled(searchQuery, () => {\n filenameFilter.updateQuery(searchQuery.value);\n }, { throttle: 800 });\n return {\n searchQuery,\n };\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=008142f0&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=008142f0&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Navigation.vue?vue&type=template&id=008142f0&scoped=true\"\nimport script from \"./Navigation.vue?vue&type=script&lang=ts\"\nexport * from \"./Navigation.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Navigation.vue?vue&type=style&index=0&id=008142f0&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"008142f0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcAppContent',{attrs:{\"page-heading\":_vm.pageHeading,\"data-cy-files-content\":\"\"}},[_c('div',{staticClass:\"files-list__header\",class:{ 'files-list__header--public': _vm.isPublic }},[_c('BreadCrumbs',{attrs:{\"path\":_vm.directory},on:{\"reload\":_vm.fetchContent},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [(_vm.canShare && _vm.fileListWidth >= 512)?_c('NcButton',{staticClass:\"files-list__header-share-button\",class:{ 'files-list__header-share-button--shared': _vm.shareButtonType },attrs:{\"aria-label\":_vm.shareButtonLabel,\"title\":_vm.shareButtonLabel,\"type\":\"tertiary\"},on:{\"click\":_vm.openSharingSidebar},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.shareButtonType === _vm.ShareType.Link)?_c('LinkIcon'):_c('AccountPlusIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,4106306959)}):_vm._e(),_vm._v(\" \"),(_vm.canUpload && !_vm.isQuotaExceeded && _vm.currentFolder)?_c('UploadPicker',{staticClass:\"files-list__header-upload-button\",attrs:{\"allow-folders\":\"\",\"content\":_vm.getContent,\"destination\":_vm.currentFolder,\"forbidden-characters\":_vm.forbiddenCharacters,\"multiple\":\"\"},on:{\"failed\":_vm.onUploadFail,\"uploaded\":_vm.onUpload}}):_vm._e(),_vm._v(\" \"),_c('NcActions',{attrs:{\"inline\":1,\"force-name\":\"\"}},_vm._l((_vm.enabledFileListActions),function(action){return _c('NcActionButton',{key:action.id,attrs:{\"close-after-click\":\"\"},on:{\"click\":() => action.exec(_vm.currentView, _vm.dirContents, { folder: _vm.currentFolder })},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(action.displayName(_vm.currentView))+\"\\n\\t\\t\\t\\t\\t\")])}),1)]},proxy:true}])}),_vm._v(\" \"),(_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__refresh-icon\"}):_vm._e(),_vm._v(\" \"),(_vm.fileListWidth >= 512 && _vm.enableGridView)?_c('NcButton',{staticClass:\"files-list__header-grid-button\",attrs:{\"aria-label\":_vm.gridViewButtonLabel,\"title\":_vm.gridViewButtonLabel,\"type\":\"tertiary\"},on:{\"click\":_vm.toggleGridView},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.userConfig.grid_view)?_c('ListViewIcon'):_c('ViewGridIcon')]},proxy:true}],null,false,1682960703)}):_vm._e()],1),_vm._v(\" \"),(!_vm.loading && _vm.canUpload)?_c('DragAndDropNotice',{attrs:{\"current-folder\":_vm.currentFolder}}):_vm._e(),_vm._v(\" \"),(_vm.loading && !_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__loading-icon\",attrs:{\"size\":38,\"name\":_vm.t('files', 'Loading current folder')}}):(!_vm.loading && _vm.isEmptyDir)?[(_vm.error)?_c('NcEmptyContent',{attrs:{\"name\":_vm.error,\"data-cy-files-content-error\":\"\"},scopedSlots:_vm._u([{key:\"action\",fn:function(){return [_c('NcButton',{attrs:{\"type\":\"secondary\"},on:{\"click\":_vm.fetchContent},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconReload',{attrs:{\"size\":20}})]},proxy:true}],null,false,3448385010)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Retry'))+\"\\n\\t\\t\\t\\t\")])]},proxy:true},{key:\"icon\",fn:function(){return [_c('IconAlertCircleOutline')]},proxy:true}],null,false,2673163798)}):(_vm.currentView?.emptyView)?_c('div',{staticClass:\"files-list__empty-view-wrapper\"},[_c('div',{ref:\"customEmptyView\"})]):_c('NcEmptyContent',{attrs:{\"name\":_vm.currentView?.emptyTitle || _vm.t('files', 'No files in here'),\"description\":_vm.currentView?.emptyCaption || _vm.t('files', 'Upload some content or sync with your devices!'),\"data-cy-files-content-empty\":\"\"},scopedSlots:_vm._u([(_vm.directory !== '/')?{key:\"action\",fn:function(){return [(_vm.canUpload && !_vm.isQuotaExceeded)?_c('UploadPicker',{staticClass:\"files-list__header-upload-button\",attrs:{\"allow-folders\":\"\",\"content\":_vm.getContent,\"destination\":_vm.currentFolder,\"forbidden-characters\":_vm.forbiddenCharacters,\"multiple\":\"\"},on:{\"failed\":_vm.onUploadFail,\"uploaded\":_vm.onUpload}}):_c('NcButton',{attrs:{\"to\":_vm.toPreviousDir,\"type\":\"primary\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Go back'))+\"\\n\\t\\t\\t\\t\")])]},proxy:true}:null,{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"svg\":_vm.currentView.icon}})]},proxy:true}],null,true)})]:_c('FilesListVirtual',{ref:\"filesListVirtual\",attrs:{\"current-folder\":_vm.currentFolder,\"current-view\":_vm.currentView,\"nodes\":_vm.dirContentsSorted}})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon reload-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M2 12C2 16.97 6.03 21 11 21C13.39 21 15.68 20.06 17.4 18.4L15.9 16.9C14.63 18.25 12.86 19 11 19C4.76 19 1.64 11.46 6.05 7.05C10.46 2.64 18 5.77 18 12H15L19 16H19.1L23 12H20C20 7.03 15.97 3 11 3C6.03 3 2 7.03 2 12Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ReloadIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Reload.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Reload.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Reload.vue?vue&type=template&id=39a07256\"\nimport script from \"./Reload.vue?vue&type=script&lang=js\"\nexport * from \"./Reload.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon reload-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M2 12C2 16.97 6.03 21 11 21C13.39 21 15.68 20.06 17.4 18.4L15.9 16.9C14.63 18.25 12.86 19 11 19C4.76 19 1.64 11.46 6.05 7.05C10.46 2.64 18 5.77 18 12H15L19 16H19.1L23 12H20C20 7.03 15.97 3 11 3C6.03 3 2 7.03 2 12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon format-list-bulleted-square-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3,4H7V8H3V4M9,5V7H21V5H9M3,10H7V14H3V10M9,11V13H21V11H9M3,16H7V20H3V16M9,17V19H21V17H9\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"FormatListBulletedSquareIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulletedSquare.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulletedSquare.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FormatListBulletedSquare.vue?vue&type=template&id=64cece03\"\nimport script from \"./FormatListBulletedSquare.vue?vue&type=script&lang=js\"\nexport * from \"./FormatListBulletedSquare.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon format-list-bulleted-square-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3,4H7V8H3V4M9,5V7H21V5H9M3,10H7V14H3V10M9,11V13H21V11H9M3,16H7V20H3V16M9,17V19H21V17H9\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon account-plus-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"AccountPlusIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountPlus.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountPlus.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AccountPlus.vue?vue&type=template&id=53a26aa0\"\nimport script from \"./AccountPlus.vue?vue&type=script&lang=js\"\nexport * from \"./AccountPlus.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-plus-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ViewGrid.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ViewGrid.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon view-grid-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3,11H11V3H3M3,21H11V13H3M13,21H21V13H13M13,3V11H21V3\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ViewGridIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./ViewGrid.vue?vue&type=template&id=672ea5c8\"\nimport script from \"./ViewGrid.vue?vue&type=script&lang=js\"\nexport * from \"./ViewGrid.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon view-grid-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3,11H11V3H3M3,21H11V13H3M13,21H21V13H13M13,3V11H21V3\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Permission, FileAction } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport InformationSvg from '@mdi/svg/svg/information-variant.svg?raw';\nimport logger from '../logger.ts';\nexport const ACTION_DETAILS = 'details';\nexport const action = new FileAction({\n id: ACTION_DETAILS,\n displayName: () => t('files', 'Open details'),\n iconSvgInline: () => InformationSvg,\n // Sidebar currently supports user folder only, /files/USER\n enabled: (nodes) => {\n if (isPublicShare()) {\n return false;\n }\n // Only works on single node\n if (nodes.length !== 1) {\n return false;\n }\n if (!nodes[0]) {\n return false;\n }\n // Only work if the sidebar is available\n if (!window?.OCA?.Files?.Sidebar) {\n return false;\n }\n return (nodes[0].root?.startsWith('/files/') && nodes[0].permissions !== Permission.NONE) ?? false;\n },\n async exec(node, view, dir) {\n try {\n // Open sidebar and set active tab to sharing by default\n window.OCA.Files.Sidebar.setActiveTab('sharing');\n // TODO: migrate Sidebar to use a Node instead\n await window.OCA.Files.Sidebar.open(node.path);\n // Silently update current fileid\n window.OCP.Files.Router.goToRoute(null, { view: view.id, fileid: String(node.fileid) }, { ...window.OCP.Files.Router.query, dir }, true);\n return null;\n }\n catch (error) {\n logger.error('Error while opening sidebar', { error });\n return false;\n }\n },\n order: -50,\n});\n","import { onMounted, readonly, ref } from 'vue';\n/** The element we observe */\nlet element;\n/** The current width of the element */\nconst width = ref(0);\nconst observer = new ResizeObserver((elements) => {\n if (elements[0].contentBoxSize) {\n // use the newer `contentBoxSize` property if available\n width.value = elements[0].contentBoxSize[0].inlineSize;\n }\n else {\n // fall back to `contentRect`\n width.value = elements[0].contentRect.width;\n }\n});\n/**\n * Update the observed element if needed and reconfigure the observer\n */\nfunction updateObserver() {\n const el = document.querySelector('#app-content-vue') ?? document.body;\n if (el !== element) {\n // if already observing: stop observing the old element\n if (element) {\n observer.unobserve(element);\n }\n // observe the new element if needed\n observer.observe(el);\n element = el;\n }\n}\n/**\n * Get the reactive width of the file list\n */\nexport function useFileListWidth() {\n // Update the observer when the component is mounted (e.g. because this is the files app)\n onMounted(updateObserver);\n // Update the observer also in setup context, so we already have an initial value\n updateObserver();\n return readonly(width);\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { computed } from 'vue';\nimport { useRoute } from 'vue-router/composables';\n/**\n * Get information about the current route\n */\nexport function useRouteParameters() {\n const route = useRoute();\n /**\n * Get the path of the current active directory\n */\n const directory = computed(() => String(route.query.dir || '/')\n // Remove any trailing slash but leave root slash\n .replace(/^(.+)\\/$/, '$1'));\n /**\n * Get the current fileId used on the route\n */\n const fileId = computed(() => {\n const fileId = Number.parseInt(route.params.fileid ?? '0') || null;\n return Number.isNaN(fileId) ? null : fileId;\n });\n /**\n * State of `openFile` route param\n */\n const openFile = computed(\n // if `openfile` is set it is considered truthy, but allow to explicitly set it to 'false'\n () => 'openfile' in route.query && (typeof route.query.openfile !== 'string' || route.query.openfile.toLocaleLowerCase() !== 'false'));\n return {\n /** Path of currently open directory */\n directory,\n /** Current active fileId */\n fileId,\n /** Should the active node should be opened (`openFile` route param) */\n openFile,\n };\n}\n","/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\nimport { getCurrentInstance, effectScope, shallowReactive, onUnmounted, computed, unref } from 'vue';\n\n// dev only warn if no current instance\n\nfunction throwNoCurrentInstance (method) {\n if (!getCurrentInstance()) {\n throw new Error(\n (\"[vue-router]: Missing current instance. \" + method + \"() must be called inside <script setup> or setup().\")\n )\n }\n}\n\nfunction useRouter () {\n if (process.env.NODE_ENV !== 'production') {\n throwNoCurrentInstance('useRouter');\n }\n\n return getCurrentInstance().proxy.$root.$router\n}\n\nfunction useRoute () {\n if (process.env.NODE_ENV !== 'production') {\n throwNoCurrentInstance('useRoute');\n }\n\n var root = getCurrentInstance().proxy.$root;\n if (!root._$route) {\n var route = effectScope(true).run(function () { return shallowReactive(Object.assign({}, root.$router.currentRoute)); }\n );\n root._$route = route;\n\n root.$router.afterEach(function (to) {\n Object.assign(route, to);\n });\n }\n\n return root._$route\n}\n\nfunction onBeforeRouteUpdate (guard) {\n if (process.env.NODE_ENV !== 'production') {\n throwNoCurrentInstance('onBeforeRouteUpdate');\n }\n\n return useFilteredGuard(guard, isUpdateNavigation)\n}\nfunction isUpdateNavigation (to, from, depth) {\n var toMatched = to.matched;\n var fromMatched = from.matched;\n return (\n toMatched.length >= depth &&\n toMatched\n .slice(0, depth + 1)\n .every(function (record, i) { return record === fromMatched[i]; })\n )\n}\n\nfunction isLeaveNavigation (to, from, depth) {\n var toMatched = to.matched;\n var fromMatched = from.matched;\n return toMatched.length < depth || toMatched[depth] !== fromMatched[depth]\n}\n\nfunction onBeforeRouteLeave (guard) {\n if (process.env.NODE_ENV !== 'production') {\n throwNoCurrentInstance('onBeforeRouteLeave');\n }\n\n return useFilteredGuard(guard, isLeaveNavigation)\n}\n\nvar noop = function () {};\nfunction useFilteredGuard (guard, fn) {\n var instance = getCurrentInstance();\n var router = useRouter();\n\n var target = instance.proxy;\n // find the nearest RouterView to know the depth\n while (\n target &&\n target.$vnode &&\n target.$vnode.data &&\n target.$vnode.data.routerViewDepth == null\n ) {\n target = target.$parent;\n }\n\n var depth =\n target && target.$vnode && target.$vnode.data\n ? target.$vnode.data.routerViewDepth\n : null;\n\n if (depth != null) {\n var removeGuard = router.beforeEach(function (to, from, next) {\n return fn(to, from, depth) ? guard(to, from, next) : next()\n });\n\n onUnmounted(removeGuard);\n return removeGuard\n }\n\n return noop\n}\n\n/* */\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction includesParams (outer, inner) {\n var loop = function ( key ) {\n var innerValue = inner[key];\n var outerValue = outer[key];\n if (typeof innerValue === 'string') {\n if (innerValue !== outerValue) { return { v: false } }\n } else {\n if (\n !Array.isArray(outerValue) ||\n outerValue.length !== innerValue.length ||\n innerValue.some(function (value, i) { return value !== outerValue[i]; })\n ) {\n return { v: false }\n }\n }\n };\n\n for (var key in inner) {\n var returned = loop( key );\n\n if ( returned ) return returned.v;\n }\n\n return true\n}\n\n// helpers from vue router 4\n\nfunction isSameRouteLocationParamsValue (a, b) {\n return Array.isArray(a)\n ? isEquivalentArray(a, b)\n : Array.isArray(b)\n ? isEquivalentArray(b, a)\n : a === b\n}\n\nfunction isEquivalentArray (a, b) {\n return Array.isArray(b)\n ? a.length === b.length && a.every(function (value, i) { return value === b[i]; })\n : a.length === 1 && a[0] === b\n}\n\nfunction isSameRouteLocationParams (a, b) {\n if (Object.keys(a).length !== Object.keys(b).length) { return false }\n\n for (var key in a) {\n if (!isSameRouteLocationParamsValue(a[key], b[key])) { return false }\n }\n\n return true\n}\n\nfunction useLink (props) {\n if (process.env.NODE_ENV !== 'production') {\n throwNoCurrentInstance('useLink');\n }\n\n var router = useRouter();\n var currentRoute = useRoute();\n\n var resolvedRoute = computed(function () { return router.resolve(unref(props.to), currentRoute); });\n\n var activeRecordIndex = computed(function () {\n var route = resolvedRoute.value.route;\n var matched = route.matched;\n var length = matched.length;\n var routeMatched = matched[length - 1];\n var currentMatched = currentRoute.matched;\n if (!routeMatched || !currentMatched.length) { return -1 }\n var index = currentMatched.indexOf(routeMatched);\n if (index > -1) { return index }\n // possible parent record\n var parentRecord = currentMatched[currentMatched.length - 2];\n\n return (\n // we are dealing with nested routes\n length > 1 &&\n // if the parent and matched route have the same path, this link is\n // referring to the empty child. Or we currently are on a different\n // child of the same parent\n parentRecord && parentRecord === routeMatched.parent\n )\n });\n\n var isActive = computed(\n function () { return activeRecordIndex.value > -1 &&\n includesParams(currentRoute.params, resolvedRoute.value.route.params); }\n );\n var isExactActive = computed(\n function () { return activeRecordIndex.value > -1 &&\n activeRecordIndex.value === currentRoute.matched.length - 1 &&\n isSameRouteLocationParams(currentRoute.params, resolvedRoute.value.route.params); }\n );\n\n var navigate = function (e) {\n var href = resolvedRoute.value.route;\n if (guardEvent(e)) {\n return props.replace\n ? router.replace(href)\n : router.push(href)\n }\n return Promise.resolve()\n };\n\n return {\n href: computed(function () { return resolvedRoute.value.href; }),\n route: computed(function () { return resolvedRoute.value.route; }),\n isExactActive: isExactActive,\n isActive: isActive,\n navigate: navigate\n }\n}\n\nexport { isSameRouteLocationParams, onBeforeRouteLeave, onBeforeRouteUpdate, useLink, useRoute, useRouter };\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { davGetClient, davGetDefaultPropfind, davResultToNode, davRootPath } from '@nextcloud/files';\nexport const client = davGetClient();\nexport const fetchNode = async (node) => {\n const propfindPayload = davGetDefaultPropfind();\n const result = await client.stat(`${davRootPath}${node.path}`, {\n details: true,\n data: propfindPayload,\n });\n return davResultToNode(result.data);\n};\n","import { defineStore } from 'pinia';\nimport { dirname } from '@nextcloud/paths';\nimport { File, FileType, Folder, Node, getNavigation } from '@nextcloud/files';\nimport { subscribe } from '@nextcloud/event-bus';\nimport Vue from 'vue';\nimport logger from '../logger';\nimport { useFilesStore } from './files';\nexport const usePathsStore = function (...args) {\n const files = useFilesStore(...args);\n const store = defineStore('paths', {\n state: () => ({\n paths: {},\n }),\n getters: {\n getPath: (state) => {\n return (service, path) => {\n if (!state.paths[service]) {\n return undefined;\n }\n return state.paths[service][path];\n };\n },\n },\n actions: {\n addPath(payload) {\n // If it doesn't exists, init the service state\n if (!this.paths[payload.service]) {\n Vue.set(this.paths, payload.service, {});\n }\n // Now we can set the provided path\n Vue.set(this.paths[payload.service], payload.path, payload.source);\n },\n deletePath(service, path) {\n // skip if service does not exist\n if (!this.paths[service]) {\n return;\n }\n Vue.delete(this.paths[service], path);\n },\n onCreatedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (!node.fileid) {\n logger.error('Node has no fileid', { node });\n return;\n }\n // Only add path if it's a folder\n if (node.type === FileType.Folder) {\n this.addPath({\n service,\n path: node.path,\n source: node.source,\n });\n }\n // Update parent folder children if exists\n // If the folder is the root, get it and update it\n this.addNodeToParentChildren(node);\n },\n onDeletedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (node.type === FileType.Folder) {\n // Delete the path\n this.deletePath(service, node.path);\n }\n this.deleteNodeFromParentChildren(node);\n },\n onMovedNode({ node, oldSource }) {\n const service = getNavigation()?.active?.id || 'files';\n // Update the path of the node\n if (node.type === FileType.Folder) {\n // Delete the old path if it exists\n const oldPath = Object.entries(this.paths[service]).find(([, source]) => source === oldSource);\n if (oldPath?.[0]) {\n this.deletePath(service, oldPath[0]);\n }\n // Add the new path\n this.addPath({\n service,\n path: node.path,\n source: node.source,\n });\n }\n // Dummy simple clone of the renamed node from a previous state\n const oldNode = new File({ source: oldSource, owner: node.owner, mime: node.mime });\n this.deleteNodeFromParentChildren(oldNode);\n this.addNodeToParentChildren(node);\n },\n deleteNodeFromParentChildren(node) {\n const service = getNavigation()?.active?.id || 'files';\n // Update children of a root folder\n const parentSource = dirname(node.source);\n const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n if (folder) {\n // ensure sources are unique\n const children = new Set(folder._children ?? []);\n children.delete(node.source);\n Vue.set(folder, '_children', [...children.values()]);\n logger.debug('Children updated', { parent: folder, node, children: folder._children });\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n addNodeToParentChildren(node) {\n const service = getNavigation()?.active?.id || 'files';\n // Update children of a root folder\n const parentSource = dirname(node.source);\n const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n if (folder) {\n // ensure sources are unique\n const children = new Set(folder._children ?? []);\n children.add(node.source);\n Vue.set(folder, '_children', [...children.values()]);\n logger.debug('Children updated', { parent: folder, node, children: folder._children });\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n },\n });\n const pathsStore = store(...args);\n // Make sure we only register the listeners once\n if (!pathsStore._initialized) {\n subscribe('files:node:created', pathsStore.onCreatedNode);\n subscribe('files:node:deleted', pathsStore.onDeletedNode);\n subscribe('files:node:moved', pathsStore.onMovedNode);\n pathsStore._initialized = true;\n }\n return pathsStore;\n};\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport { subscribe } from '@nextcloud/event-bus';\nimport logger from '../logger';\nimport Vue from 'vue';\nimport { fetchNode } from '../services/WebdavClient.ts';\nimport { usePathsStore } from './paths.ts';\nexport const useFilesStore = function (...args) {\n const store = defineStore('files', {\n state: () => ({\n files: {},\n roots: {},\n }),\n getters: {\n /**\n * Get a file or folder by its source\n * @param state\n */\n getNode: (state) => (source) => state.files[source],\n /**\n * Get a list of files or folders by their IDs\n * Note: does not return undefined values\n * @param state\n */\n getNodes: (state) => (sources) => sources\n .map(source => state.files[source])\n .filter(Boolean),\n /**\n * Get files or folders by their file ID\n * Multiple nodes can have the same file ID but different sources\n * (e.g. in a shared context)\n * @param state\n */\n getNodesById: (state) => (fileId) => Object.values(state.files).filter(node => node.fileid === fileId),\n /**\n * Get the root folder of a service\n * @param state\n */\n getRoot: (state) => (service) => state.roots[service],\n },\n actions: {\n /**\n * Get cached nodes within a given path\n *\n * @param service The service (files view)\n * @param path The path relative within the service\n * @return Array of cached nodes within the path\n */\n getNodesByPath(service, path) {\n const pathsStore = usePathsStore();\n let folder;\n // Get the containing folder from path store\n if (!path || path === '/') {\n folder = this.getRoot(service);\n }\n else {\n const source = pathsStore.getPath(service, path);\n if (source) {\n folder = this.getNode(source);\n }\n }\n // If we found a cache entry and the cache entry was already loaded (has children) then use it\n return (folder?._children ?? [])\n .map((source) => this.getNode(source))\n .filter(Boolean);\n },\n updateNodes(nodes) {\n // Update the store all at once\n const files = nodes.reduce((acc, node) => {\n if (!node.fileid) {\n logger.error('Trying to update/set a node without fileid', { node });\n return acc;\n }\n acc[node.source] = node;\n return acc;\n }, {});\n Vue.set(this, 'files', { ...this.files, ...files });\n },\n deleteNodes(nodes) {\n nodes.forEach(node => {\n if (node.source) {\n Vue.delete(this.files, node.source);\n }\n });\n },\n setRoot({ service, root }) {\n Vue.set(this.roots, service, root);\n },\n onDeletedNode(node) {\n this.deleteNodes([node]);\n },\n onCreatedNode(node) {\n this.updateNodes([node]);\n },\n onMovedNode({ node, oldSource }) {\n if (!node.fileid) {\n logger.error('Trying to update/set a node without fileid', { node });\n return;\n }\n // Update the path of the node\n Vue.delete(this.files, oldSource);\n this.updateNodes([node]);\n },\n async onUpdatedNode(node) {\n if (!node.fileid) {\n logger.error('Trying to update/set a node without fileid', { node });\n return;\n }\n // If we have multiple nodes with the same file ID, we need to update all of them\n const nodes = this.getNodesById(node.fileid);\n if (nodes.length > 1) {\n await Promise.all(nodes.map(fetchNode)).then(this.updateNodes);\n logger.debug(nodes.length + ' nodes updated in store', { fileid: node.fileid });\n return;\n }\n // If we have only one node with the file ID, we can update it directly\n if (node.source === nodes[0].source) {\n this.updateNodes([node]);\n return;\n }\n // Otherwise, it means we receive an event for a node that is not in the store\n fetchNode(node).then(n => this.updateNodes([n]));\n },\n },\n });\n const fileStore = store(...args);\n // Make sure we only register the listeners once\n if (!fileStore._initialized) {\n subscribe('files:node:created', fileStore.onCreatedNode);\n subscribe('files:node:deleted', fileStore.onDeletedNode);\n subscribe('files:node:updated', fileStore.onUpdatedNode);\n subscribe('files:node:moved', fileStore.onMovedNode);\n fileStore._initialized = true;\n }\n return fileStore;\n};\n","import { defineStore } from 'pinia';\nimport Vue from 'vue';\nexport const useSelectionStore = defineStore('selection', {\n state: () => ({\n selected: [],\n lastSelection: [],\n lastSelectedIndex: null,\n }),\n actions: {\n /**\n * Set the selection of fileIds\n * @param selection\n */\n set(selection = []) {\n Vue.set(this, 'selected', [...new Set(selection)]);\n },\n /**\n * Set the last selected index\n * @param lastSelectedIndex\n */\n setLastIndex(lastSelectedIndex = null) {\n // Update the last selection if we provided a new selection starting point\n Vue.set(this, 'lastSelection', lastSelectedIndex ? this.selected : []);\n Vue.set(this, 'lastSelectedIndex', lastSelectedIndex);\n },\n /**\n * Reset the selection\n */\n reset() {\n Vue.set(this, 'selected', []);\n Vue.set(this, 'lastSelection', []);\n Vue.set(this, 'lastSelectedIndex', null);\n },\n },\n});\n","import { defineStore } from 'pinia';\nimport { getUploader } from '@nextcloud/upload';\nlet uploader;\nexport const useUploaderStore = function (...args) {\n // Only init on runtime\n uploader = getUploader();\n const store = defineStore('uploader', {\n state: () => ({\n queue: uploader.queue,\n }),\n });\n return store(...args);\n};\n","import { emit } from '@nextcloud/event-bus';\nimport { Folder, Node, davGetClient, davGetDefaultPropfind, davResultToNode } from '@nextcloud/files';\nimport { openConflictPicker } from '@nextcloud/upload';\nimport { showError, showInfo } from '@nextcloud/dialogs';\nimport { translate as t } from '@nextcloud/l10n';\nimport logger from '../logger.ts';\n/**\n * This represents a Directory in the file tree\n * We extend the File class to better handling uploading\n * and stay as close as possible as the Filesystem API.\n * This also allow us to hijack the size or lastModified\n * properties to compute them dynamically.\n */\nexport class Directory extends File {\n /* eslint-disable no-use-before-define */\n _contents;\n constructor(name, contents = []) {\n super([], name, { type: 'httpd/unix-directory' });\n this._contents = contents;\n }\n set contents(contents) {\n this._contents = contents;\n }\n get contents() {\n return this._contents;\n }\n get size() {\n return this._computeDirectorySize(this);\n }\n get lastModified() {\n if (this._contents.length === 0) {\n return Date.now();\n }\n return this._computeDirectoryMtime(this);\n }\n /**\n * Get the last modification time of a file tree\n * This is not perfect, but will get us a pretty good approximation\n * @param directory the directory to traverse\n */\n _computeDirectoryMtime(directory) {\n return directory.contents.reduce((acc, file) => {\n return file.lastModified > acc\n // If the file is a directory, the lastModified will\n // also return the results of its _computeDirectoryMtime method\n // Fancy recursion, huh?\n ? file.lastModified\n : acc;\n }, 0);\n }\n /**\n * Get the size of a file tree\n * @param directory the directory to traverse\n */\n _computeDirectorySize(directory) {\n return directory.contents.reduce((acc, entry) => {\n // If the file is a directory, the size will\n // also return the results of its _computeDirectorySize method\n // Fancy recursion, huh?\n return acc + entry.size;\n }, 0);\n }\n}\n/**\n * Traverse a file tree using the Filesystem API\n * @param entry the entry to traverse\n */\nexport const traverseTree = async (entry) => {\n // Handle file\n if (entry.isFile) {\n return new Promise((resolve, reject) => {\n entry.file(resolve, reject);\n });\n }\n // Handle directory\n logger.debug('Handling recursive file tree', { entry: entry.name });\n const directory = entry;\n const entries = await readDirectory(directory);\n const contents = (await Promise.all(entries.map(traverseTree))).flat();\n return new Directory(directory.name, contents);\n};\n/**\n * Read a directory using Filesystem API\n * @param directory the directory to read\n */\nconst readDirectory = (directory) => {\n const dirReader = directory.createReader();\n return new Promise((resolve, reject) => {\n const entries = [];\n const getEntries = () => {\n dirReader.readEntries((results) => {\n if (results.length) {\n entries.push(...results);\n getEntries();\n }\n else {\n resolve(entries);\n }\n }, (error) => {\n reject(error);\n });\n };\n getEntries();\n });\n};\nexport const createDirectoryIfNotExists = async (absolutePath) => {\n const davClient = davGetClient();\n const dirExists = await davClient.exists(absolutePath);\n if (!dirExists) {\n logger.debug('Directory does not exist, creating it', { absolutePath });\n await davClient.createDirectory(absolutePath, { recursive: true });\n const stat = await davClient.stat(absolutePath, { details: true, data: davGetDefaultPropfind() });\n emit('files:node:created', davResultToNode(stat.data));\n }\n};\nexport const resolveConflict = async (files, destination, contents) => {\n try {\n // List all conflicting files\n const conflicts = files.filter((file) => {\n return contents.find((node) => node.basename === (file instanceof File ? file.name : file.basename));\n }).filter(Boolean);\n // List of incoming files that are NOT in conflict\n const uploads = files.filter((file) => {\n return !conflicts.includes(file);\n });\n // Let the user choose what to do with the conflicting files\n const { selected, renamed } = await openConflictPicker(destination.path, conflicts, contents);\n logger.debug('Conflict resolution', { uploads, selected, renamed });\n // If the user selected nothing, we cancel the upload\n if (selected.length === 0 && renamed.length === 0) {\n // User skipped\n showInfo(t('files', 'Conflicts resolution skipped'));\n logger.info('User skipped the conflict resolution');\n return [];\n }\n // Update the list of files to upload\n return [...uploads, ...selected, ...renamed];\n }\n catch (error) {\n console.error(error);\n // User cancelled\n showError(t('files', 'Upload cancelled'));\n logger.error('User cancelled the upload');\n }\n return [];\n};\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Permission } from '@nextcloud/files';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport PQueue from 'p-queue';\nimport { loadState } from '@nextcloud/initial-state';\nconst sharePermissions = loadState('files_sharing', 'sharePermissions', Permission.NONE);\n// This is the processing queue. We only want to allow 3 concurrent requests\nlet queue;\n// Maximum number of concurrent operations\nconst MAX_CONCURRENCY = 5;\n/**\n * Get the processing queue\n */\nexport const getQueue = () => {\n if (!queue) {\n queue = new PQueue({ concurrency: MAX_CONCURRENCY });\n }\n return queue;\n};\nexport var MoveCopyAction;\n(function (MoveCopyAction) {\n MoveCopyAction[\"MOVE\"] = \"Move\";\n MoveCopyAction[\"COPY\"] = \"Copy\";\n MoveCopyAction[\"MOVE_OR_COPY\"] = \"move-or-copy\";\n})(MoveCopyAction || (MoveCopyAction = {}));\nexport const canMove = (nodes) => {\n const minPermission = nodes.reduce((min, node) => Math.min(min, node.permissions), Permission.ALL);\n return Boolean(minPermission & Permission.DELETE);\n};\nexport const canDownload = (nodes) => {\n return nodes.every(node => {\n const shareAttributes = JSON.parse(node.attributes?.['share-attributes'] ?? '[]');\n return !shareAttributes.some(attribute => attribute.scope === 'permissions' && attribute.value === false && attribute.key === 'download');\n });\n};\nexport const canCopy = (nodes) => {\n // a shared file cannot be copied if the download is disabled\n if (!canDownload(nodes)) {\n return false;\n }\n // it cannot be copied if the user has only view permissions\n if (nodes.some((node) => node.permissions === Permission.NONE)) {\n return false;\n }\n // on public shares all files have the same permission so copy is only possible if write permission is granted\n if (isPublicShare()) {\n return Boolean(sharePermissions & Permission.CREATE);\n }\n // otherwise permission is granted\n return true;\n};\n","import { davGetDefaultPropfind, davResultToNode, davRootPath } from '@nextcloud/files';\nimport { CancelablePromise } from 'cancelable-promise';\nimport { join } from 'path';\nimport { client } from './WebdavClient.ts';\nimport logger from '../logger.ts';\n/**\n * Slim wrapper over `@nextcloud/files` `davResultToNode` to allow using the function with `Array.map`\n * @param stat The result returned by the webdav library\n */\nexport const resultToNode = (stat) => davResultToNode(stat);\nexport const getContents = (path = '/') => {\n path = join(davRootPath, path);\n const controller = new AbortController();\n const propfindPayload = davGetDefaultPropfind();\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n onCancel(() => controller.abort());\n try {\n const contentsResponse = await client.getDirectoryContents(path, {\n details: true,\n data: propfindPayload,\n includeSelf: true,\n signal: controller.signal,\n });\n const root = contentsResponse.data[0];\n const contents = contentsResponse.data.slice(1);\n if (root.filename !== path && `${root.filename}/` !== path) {\n logger.debug(`Exepected \"${path}\" but got filename \"${root.filename}\" instead.`);\n throw new Error('Root node does not match requested path');\n }\n resolve({\n folder: resultToNode(root),\n contents: contents.map((result) => {\n try {\n return resultToNode(result);\n }\n catch (error) {\n logger.error(`Invalid node detected '${result.basename}'`, { error });\n return null;\n }\n }).filter(Boolean),\n });\n }\n catch (error) {\n reject(error);\n }\n });\n};\n","import { isAxiosError } from '@nextcloud/axios';\nimport { FilePickerClosed, getFilePickerBuilder, showError, showInfo, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs';\nimport { emit } from '@nextcloud/event-bus';\nimport { FileAction, FileType, NodeStatus, davGetClient, davRootPath, davResultToNode, davGetDefaultPropfind, getUniqueName, Permission } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport { openConflictPicker, hasConflict } from '@nextcloud/upload';\nimport { basename, join } from 'path';\nimport Vue from 'vue';\nimport CopyIconSvg from '@mdi/svg/svg/folder-multiple.svg?raw';\nimport FolderMoveSvg from '@mdi/svg/svg/folder-move.svg?raw';\nimport { MoveCopyAction, canCopy, canMove, getQueue } from './moveOrCopyActionUtils';\nimport { getContents } from '../services/Files';\nimport logger from '../logger';\n/**\n * Return the action that is possible for the given nodes\n * @param {Node[]} nodes The nodes to check against\n * @return {MoveCopyAction} The action that is possible for the given nodes\n */\nconst getActionForNodes = (nodes) => {\n if (canMove(nodes)) {\n if (canCopy(nodes)) {\n return MoveCopyAction.MOVE_OR_COPY;\n }\n return MoveCopyAction.MOVE;\n }\n // Assuming we can copy as the enabled checks for copy permissions\n return MoveCopyAction.COPY;\n};\n/**\n * Create a loading notification toast\n * @param mode The move or copy mode\n * @param source Name of the node that is copied / moved\n * @param destination Destination path\n * @return {() => void} Function to hide the notification\n */\nfunction createLoadingNotification(mode, source, destination) {\n const text = mode === MoveCopyAction.MOVE ? t('files', 'Moving \"{source}\" to \"{destination}\" …', { source, destination }) : t('files', 'Copying \"{source}\" to \"{destination}\" …', { source, destination });\n let toast;\n toast = showInfo(`<span class=\"icon icon-loading-small toast-loading-icon\"></span> ${text}`, {\n isHTML: true,\n timeout: TOAST_PERMANENT_TIMEOUT,\n onRemove: () => { toast?.hideToast(); toast = undefined; },\n });\n return () => toast && toast.hideToast();\n}\n/**\n * Handle the copy/move of a node to a destination\n * This can be imported and used by other scripts/components on server\n * @param {Node} node The node to copy/move\n * @param {Folder} destination The destination to copy/move the node to\n * @param {MoveCopyAction} method The method to use for the copy/move\n * @param {boolean} overwrite Whether to overwrite the destination if it exists\n * @return {Promise<void>} A promise that resolves when the copy/move is done\n */\nexport const handleCopyMoveNodeTo = async (node, destination, method, overwrite = false) => {\n if (!destination) {\n return;\n }\n if (destination.type !== FileType.Folder) {\n throw new Error(t('files', 'Destination is not a folder'));\n }\n // Do not allow to MOVE a node to the same folder it is already located\n if (method === MoveCopyAction.MOVE && node.dirname === destination.path) {\n throw new Error(t('files', 'This file/folder is already in that directory'));\n }\n /**\n * Example:\n * - node: /foo/bar/file.txt -> path = /foo/bar/file.txt, destination: /foo\n * Allow move of /foo does not start with /foo/bar/file.txt so allow\n * - node: /foo , destination: /foo/bar\n * Do not allow as it would copy foo within itself\n * - node: /foo/bar.txt, destination: /foo\n * Allow copy a file to the same directory\n * - node: \"/foo/bar\", destination: \"/foo/bar 1\"\n * Allow to move or copy but we need to check with trailing / otherwise it would report false positive\n */\n if (`${destination.path}/`.startsWith(`${node.path}/`)) {\n throw new Error(t('files', 'You cannot move a file/folder onto itself or into a subfolder of itself'));\n }\n // Set loading state\n Vue.set(node, 'status', NodeStatus.LOADING);\n const actionFinished = createLoadingNotification(method, node.basename, destination.path);\n const queue = getQueue();\n return await queue.add(async () => {\n const copySuffix = (index) => {\n if (index === 1) {\n return t('files', '(copy)'); // TRANSLATORS: Mark a file as a copy of another file\n }\n return t('files', '(copy %n)', undefined, index); // TRANSLATORS: Meaning it is the n'th copy of a file\n };\n try {\n const client = davGetClient();\n const currentPath = join(davRootPath, node.path);\n const destinationPath = join(davRootPath, destination.path);\n if (method === MoveCopyAction.COPY) {\n let target = node.basename;\n // If we do not allow overwriting then find an unique name\n if (!overwrite) {\n const otherNodes = await client.getDirectoryContents(destinationPath);\n target = getUniqueName(node.basename, otherNodes.map((n) => n.basename), {\n suffix: copySuffix,\n ignoreFileExtension: node.type === FileType.Folder,\n });\n }\n await client.copyFile(currentPath, join(destinationPath, target));\n // If the node is copied into current directory the view needs to be updated\n if (node.dirname === destination.path) {\n const { data } = await client.stat(join(destinationPath, target), {\n details: true,\n data: davGetDefaultPropfind(),\n });\n emit('files:node:created', davResultToNode(data));\n }\n }\n else {\n // show conflict file popup if we do not allow overwriting\n if (!overwrite) {\n const otherNodes = await getContents(destination.path);\n if (hasConflict([node], otherNodes.contents)) {\n try {\n // Let the user choose what to do with the conflicting files\n const { selected, renamed } = await openConflictPicker(destination.path, [node], otherNodes.contents);\n // two empty arrays: either only old files or conflict skipped -> no action required\n if (!selected.length && !renamed.length) {\n return;\n }\n }\n catch (error) {\n // User cancelled\n showError(t('files', 'Move cancelled'));\n return;\n }\n }\n }\n // getting here means either no conflict, file was renamed to keep both files\n // in a conflict, or the selected file was chosen to be kept during the conflict\n await client.moveFile(currentPath, join(destinationPath, node.basename));\n // Delete the node as it will be fetched again\n // when navigating to the destination folder\n emit('files:node:deleted', node);\n }\n }\n catch (error) {\n if (isAxiosError(error)) {\n if (error.response?.status === 412) {\n throw new Error(t('files', 'A file or folder with that name already exists in this folder'));\n }\n else if (error.response?.status === 423) {\n throw new Error(t('files', 'The files are locked'));\n }\n else if (error.response?.status === 404) {\n throw new Error(t('files', 'The file does not exist anymore'));\n }\n else if (error.message) {\n throw new Error(error.message);\n }\n }\n logger.debug(error);\n throw new Error();\n }\n finally {\n Vue.set(node, 'status', '');\n actionFinished();\n }\n });\n};\n/**\n * Open a file picker for the given action\n * @param action The action to open the file picker for\n * @param dir The directory to start the file picker in\n * @param nodes The nodes to move/copy\n * @return The picked destination or false if cancelled by user\n */\nasync function openFilePickerForAction(action, dir = '/', nodes) {\n const { resolve, reject, promise } = Promise.withResolvers();\n const fileIDs = nodes.map(node => node.fileid).filter(Boolean);\n const filePicker = getFilePickerBuilder(t('files', 'Choose destination'))\n .allowDirectories(true)\n .setFilter((n) => {\n // We don't want to show the current nodes in the file picker\n return !fileIDs.includes(n.fileid);\n })\n .setMimeTypeFilter([])\n .setMultiSelect(false)\n .startAt(dir)\n .setButtonFactory((selection, path) => {\n const buttons = [];\n const target = basename(path);\n const dirnames = nodes.map(node => node.dirname);\n const paths = nodes.map(node => node.path);\n if (action === MoveCopyAction.COPY || action === MoveCopyAction.MOVE_OR_COPY) {\n buttons.push({\n label: target ? t('files', 'Copy to {target}', { target }, undefined, { escape: false, sanitize: false }) : t('files', 'Copy'),\n type: 'primary',\n icon: CopyIconSvg,\n disabled: selection.some((node) => (node.permissions & Permission.CREATE) === 0),\n async callback(destination) {\n resolve({\n destination: destination[0],\n action: MoveCopyAction.COPY,\n });\n },\n });\n }\n // Invalid MOVE targets (but valid copy targets)\n if (dirnames.includes(path)) {\n // This file/folder is already in that directory\n return buttons;\n }\n if (paths.includes(path)) {\n // You cannot move a file/folder onto itself\n return buttons;\n }\n if (action === MoveCopyAction.MOVE || action === MoveCopyAction.MOVE_OR_COPY) {\n buttons.push({\n label: target ? t('files', 'Move to {target}', { target }, undefined, { escape: false, sanitize: false }) : t('files', 'Move'),\n type: action === MoveCopyAction.MOVE ? 'primary' : 'secondary',\n icon: FolderMoveSvg,\n async callback(destination) {\n resolve({\n destination: destination[0],\n action: MoveCopyAction.MOVE,\n });\n },\n });\n }\n return buttons;\n })\n .build();\n filePicker.pick()\n .catch((error) => {\n logger.debug(error);\n if (error instanceof FilePickerClosed) {\n resolve(false);\n }\n else {\n reject(new Error(t('files', 'Move or copy operation failed')));\n }\n });\n return promise;\n}\nexport const action = new FileAction({\n id: 'move-copy',\n displayName(nodes) {\n switch (getActionForNodes(nodes)) {\n case MoveCopyAction.MOVE:\n return t('files', 'Move');\n case MoveCopyAction.COPY:\n return t('files', 'Copy');\n case MoveCopyAction.MOVE_OR_COPY:\n return t('files', 'Move or copy');\n }\n },\n iconSvgInline: () => FolderMoveSvg,\n enabled(nodes, view) {\n // We can not copy or move in single file shares\n if (view.id === 'public-file-share') {\n return false;\n }\n // We only support moving/copying files within the user folder\n if (!nodes.every(node => node.root?.startsWith('/files/'))) {\n return false;\n }\n return nodes.length > 0 && (canMove(nodes) || canCopy(nodes));\n },\n async exec(node, view, dir) {\n const action = getActionForNodes([node]);\n let result;\n try {\n result = await openFilePickerForAction(action, dir, [node]);\n }\n catch (e) {\n logger.error(e);\n return false;\n }\n if (result === false) {\n showInfo(t('files', 'Cancelled move or copy of \"{filename}\".', { filename: node.displayname }));\n return null;\n }\n try {\n await handleCopyMoveNodeTo(node, result.destination, result.action);\n return true;\n }\n catch (error) {\n if (error instanceof Error && !!error.message) {\n showError(error.message);\n // Silent action as we handle the toast\n return null;\n }\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n const action = getActionForNodes(nodes);\n const result = await openFilePickerForAction(action, dir, nodes);\n // Handle cancellation silently\n if (result === false) {\n showInfo(nodes.length === 1\n ? t('files', 'Cancelled move or copy of \"{filename}\".', { filename: nodes[0].displayname })\n : t('files', 'Cancelled move or copy operation'));\n return nodes.map(() => null);\n }\n const promises = nodes.map(async (node) => {\n try {\n await handleCopyMoveNodeTo(node, result.destination, result.action);\n return true;\n }\n catch (error) {\n logger.error(`Failed to ${result.action} node`, { node, error });\n return false;\n }\n });\n // We need to keep the selection on error!\n // So we do not return null, and for batch action\n // we let the front handle the error.\n return await Promise.all(promises);\n },\n order: 15,\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Folder, Node, NodeStatus, davRootPath } from '@nextcloud/files';\nimport { getUploader, hasConflict } from '@nextcloud/upload';\nimport { join } from 'path';\nimport { joinPaths } from '@nextcloud/paths';\nimport { showError, showInfo, showSuccess, showWarning } from '@nextcloud/dialogs';\nimport { translate as t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nimport { Directory, traverseTree, resolveConflict, createDirectoryIfNotExists } from './DropServiceUtils';\nimport { handleCopyMoveNodeTo } from '../actions/moveOrCopyAction';\nimport { MoveCopyAction } from '../actions/moveOrCopyActionUtils';\nimport logger from '../logger.ts';\n/**\n * This function converts a list of DataTransferItems to a file tree.\n * It uses the Filesystem API if available, otherwise it falls back to the File API.\n * The File API will NOT be available if the browser is not in a secure context (e.g. HTTP).\n * ⚠️ When using this method, you need to use it as fast as possible, as the DataTransferItems\n * will be cleared after the first access to the props of one of the entries.\n *\n * @param items the list of DataTransferItems\n */\nexport const dataTransferToFileTree = async (items) => {\n // Check if the browser supports the Filesystem API\n // We need to cache the entries to prevent Blink engine bug that clears\n // the list (`data.items`) after first access props of one of the entries\n const entries = items\n .filter((item) => {\n if (item.kind !== 'file') {\n logger.debug('Skipping dropped item', { kind: item.kind, type: item.type });\n return false;\n }\n return true;\n }).map((item) => {\n // MDN recommends to try both, as it might be renamed in the future\n return item?.getAsEntry?.()\n ?? item?.webkitGetAsEntry?.()\n ?? item;\n });\n let warned = false;\n const fileTree = new Directory('root');\n // Traverse the file tree\n for (const entry of entries) {\n // Handle browser issues if Filesystem API is not available. Fallback to File API\n if (entry instanceof DataTransferItem) {\n logger.warn('Could not get FilesystemEntry of item, falling back to file');\n const file = entry.getAsFile();\n if (file === null) {\n logger.warn('Could not process DataTransferItem', { type: entry.type, kind: entry.kind });\n showError(t('files', 'One of the dropped files could not be processed'));\n continue;\n }\n // Warn the user that the browser does not support the Filesystem API\n // we therefore cannot upload directories recursively.\n if (file.type === 'httpd/unix-directory' || !file.type) {\n if (!warned) {\n logger.warn('Browser does not support Filesystem API. Directories will not be uploaded');\n showWarning(t('files', 'Your browser does not support the Filesystem API. Directories will not be uploaded'));\n warned = true;\n }\n continue;\n }\n fileTree.contents.push(file);\n continue;\n }\n // Use Filesystem API\n try {\n fileTree.contents.push(await traverseTree(entry));\n }\n catch (error) {\n // Do not throw, as we want to continue with the other files\n logger.error('Error while traversing file tree', { error });\n }\n }\n return fileTree;\n};\nexport const onDropExternalFiles = async (root, destination, contents) => {\n const uploader = getUploader();\n // Check for conflicts on root elements\n if (await hasConflict(root.contents, contents)) {\n root.contents = await resolveConflict(root.contents, destination, contents);\n }\n if (root.contents.length === 0) {\n logger.info('No files to upload', { root });\n showInfo(t('files', 'No files to upload'));\n return [];\n }\n // Let's process the files\n logger.debug(`Uploading files to ${destination.path}`, { root, contents: root.contents });\n const queue = [];\n const uploadDirectoryContents = async (directory, path) => {\n for (const file of directory.contents) {\n // This is the relative path to the resource\n // from the current uploader destination\n const relativePath = join(path, file.name);\n // If the file is a directory, we need to create it first\n // then browse its tree and upload its contents.\n if (file instanceof Directory) {\n const absolutePath = joinPaths(davRootPath, destination.path, relativePath);\n try {\n console.debug('Processing directory', { relativePath });\n await createDirectoryIfNotExists(absolutePath);\n await uploadDirectoryContents(file, relativePath);\n }\n catch (error) {\n showError(t('files', 'Unable to create the directory {directory}', { directory: file.name }));\n logger.error('', { error, absolutePath, directory: file });\n }\n continue;\n }\n // If we've reached a file, we can upload it\n logger.debug('Uploading file to ' + join(destination.path, relativePath), { file });\n // Overriding the root to avoid changing the current uploader context\n queue.push(uploader.upload(relativePath, file, destination.source));\n }\n };\n // Pause the uploader to prevent it from starting\n // while we compute the queue\n uploader.pause();\n // Upload the files. Using '/' as the starting point\n // as we already adjusted the uploader destination\n await uploadDirectoryContents(root, '/');\n uploader.start();\n // Wait for all promises to settle\n const results = await Promise.allSettled(queue);\n // Check for errors\n const errors = results.filter(result => result.status === 'rejected');\n if (errors.length > 0) {\n logger.error('Error while uploading files', { errors });\n showError(t('files', 'Some files could not be uploaded'));\n return [];\n }\n logger.debug('Files uploaded successfully');\n showSuccess(t('files', 'Files uploaded successfully'));\n return Promise.all(queue);\n};\nexport const onDropInternalFiles = async (nodes, destination, contents, isCopy = false) => {\n const queue = [];\n // Check for conflicts on root elements\n if (await hasConflict(nodes, contents)) {\n nodes = await resolveConflict(nodes, destination, contents);\n }\n if (nodes.length === 0) {\n logger.info('No files to process', { nodes });\n showInfo(t('files', 'No files to process'));\n return;\n }\n for (const node of nodes) {\n Vue.set(node, 'status', NodeStatus.LOADING);\n queue.push(handleCopyMoveNodeTo(node, destination, isCopy ? MoveCopyAction.COPY : MoveCopyAction.MOVE, true));\n }\n // Wait for all promises to settle\n const results = await Promise.allSettled(queue);\n nodes.forEach(node => Vue.set(node, 'status', undefined));\n // Check for errors\n const errors = results.filter(result => result.status === 'rejected');\n if (errors.length > 0) {\n logger.error('Error while copying or moving files', { errors });\n showError(isCopy ? t('files', 'Some files could not be copied') : t('files', 'Some files could not be moved'));\n return;\n }\n logger.debug('Files copy/move successful');\n showSuccess(isCopy ? t('files', 'Files copied successfully') : t('files', 'Files moved successfully'));\n};\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nexport const useDragAndDropStore = defineStore('dragging', {\n state: () => ({\n dragging: [],\n }),\n actions: {\n /**\n * Set the selection of fileIds\n * @param selection\n */\n set(selection = []) {\n Vue.set(this, 'dragging', selection);\n },\n /**\n * Reset the selection\n */\n reset() {\n Vue.set(this, 'dragging', []);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcBreadcrumbs',{staticClass:\"files-list__breadcrumbs\",class:{ 'files-list__breadcrumbs--with-progress': _vm.wrapUploadProgressBar },attrs:{\"data-cy-files-content-breadcrumbs\":\"\",\"aria-label\":_vm.t('files', 'Current directory path')},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"actions\")]},proxy:true}],null,true)},_vm._l((_vm.sections),function(section,index){return _c('NcBreadcrumb',_vm._b({key:section.dir,attrs:{\"dir\":\"auto\",\"to\":section.to,\"force-icon-text\":index === 0 && _vm.fileListWidth >= 486,\"title\":_vm.titleForSection(index, section),\"aria-description\":_vm.ariaForSection(section)},on:{\"drop\":function($event){return _vm.onDrop($event, section.dir)}},nativeOn:{\"click\":function($event){return _vm.onClick(section.to)},\"dragover\":function($event){return _vm.onDragOver($event, section.dir)}},scopedSlots:_vm._u([(index === 0)?{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"size\":20,\"svg\":_vm.viewIcon}})]},proxy:true}:null],null,true)},'NcBreadcrumb',section,false))}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=61601fd4&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=61601fd4&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BreadCrumbs.vue?vue&type=template&id=61601fd4&scoped=true\"\nimport script from \"./BreadCrumbs.vue?vue&type=script&lang=ts\"\nexport * from \"./BreadCrumbs.vue?vue&type=script&lang=ts\"\nimport style0 from \"./BreadCrumbs.vue?vue&type=style&index=0&id=61601fd4&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"61601fd4\",\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { FileType } from '@nextcloud/files';\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n';\n/**\n * Extract dir and name from file path\n *\n * @param {string} path the full path\n * @return {string[]} [dirPath, fileName]\n */\nexport const extractFilePaths = function (path) {\n const pathSections = path.split('/');\n const fileName = pathSections[pathSections.length - 1];\n const dirPath = pathSections.slice(0, pathSections.length - 1).join('/');\n return [dirPath, fileName];\n};\n/**\n * Generate a translated summary of an array of nodes\n * @param {Node[]} nodes the nodes to summarize\n * @return {string}\n */\nexport const getSummaryFor = (nodes) => {\n const fileCount = nodes.filter(node => node.type === FileType.File).length;\n const folderCount = nodes.filter(node => node.type === FileType.Folder).length;\n if (fileCount === 0) {\n return n('files', '{folderCount} folder', '{folderCount} folders', folderCount, { folderCount });\n }\n else if (folderCount === 0) {\n return n('files', '{fileCount} file', '{fileCount} files', fileCount, { fileCount });\n }\n if (fileCount === 1) {\n return n('files', '1 file and {folderCount} folder', '1 file and {folderCount} folders', folderCount, { folderCount });\n }\n if (folderCount === 1) {\n return n('files', '{fileCount} file and 1 folder', '{fileCount} files and 1 folder', fileCount, { fileCount });\n }\n return t('files', '{fileCount} files and {folderCount} folders', { fileCount, folderCount });\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',_vm._g({staticClass:\"files-list__row\",class:{\n\t\t'files-list__row--dragover': _vm.dragover,\n\t\t'files-list__row--loading': _vm.isLoading,\n\t\t'files-list__row--active': _vm.isActive,\n\t},attrs:{\"data-cy-files-list-row\":\"\",\"data-cy-files-list-row-fileid\":_vm.fileid,\"data-cy-files-list-row-name\":_vm.source.basename,\"draggable\":_vm.canDrag}},_vm.rowListeners),[(_vm.isFailedSource)?_c('span',{staticClass:\"files-list__row--failed\"}):_vm._e(),_vm._v(\" \"),_c('FileEntryCheckbox',{attrs:{\"fileid\":_vm.fileid,\"is-loading\":_vm.isLoading,\"nodes\":_vm.nodes,\"source\":_vm.source}}),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\",attrs:{\"data-cy-files-list-row-name\":\"\"}},[_c('FileEntryPreview',{ref:\"preview\",attrs:{\"source\":_vm.source,\"dragover\":_vm.dragover},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}}),_vm._v(\" \"),_c('FileEntryName',{ref:\"name\",attrs:{\"basename\":_vm.basename,\"extension\":_vm.extension,\"nodes\":_vm.nodes,\"source\":_vm.source},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}})],1),_vm._v(\" \"),_c('FileEntryActions',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isRenamingSmallScreen),expression:\"!isRenamingSmallScreen\"}],ref:\"actions\",class:`files-list__row-actions-${_vm.uniqueId}`,attrs:{\"loading\":_vm.loading,\"opened\":_vm.openedMenu,\"source\":_vm.source},on:{\"update:loading\":function($event){_vm.loading=$event},\"update:opened\":function($event){_vm.openedMenu=$event}}}),_vm._v(\" \"),(!_vm.compact && _vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__row-size\",style:(_vm.sizeOpacity),attrs:{\"data-cy-files-list-row-size\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('span',[_vm._v(_vm._s(_vm.size))])]):_vm._e(),_vm._v(\" \"),(!_vm.compact && _vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__row-mtime\",style:(_vm.mtimeOpacity),attrs:{\"data-cy-files-list-row-mtime\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[(_vm.mtime)?_c('NcDateTime',{attrs:{\"timestamp\":_vm.mtime,\"ignore-seconds\":true}}):_c('span',[_vm._v(_vm._s(_vm.t('files', 'Unknown date')))])],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('td',{key:column.id,staticClass:\"files-list__row-column-custom\",class:`files-list__row-${_vm.currentView.id}-${column.id}`,attrs:{\"data-cy-files-list-row-column-custom\":column.id},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('CustomElementRender',{attrs:{\"current-view\":_vm.currentView,\"render\":column.render,\"source\":_vm.source}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nexport const useActionsMenuStore = defineStore('actionsmenu', {\n state: () => ({\n opened: null,\n }),\n});\n","import axios, { isAxiosError } from '@nextcloud/axios';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { NodeStatus } from '@nextcloud/files';\nimport { DialogBuilder } from '@nextcloud/dialogs';\nimport { t } from '@nextcloud/l10n';\nimport { basename, dirname, extname } from 'path';\nimport { defineStore } from 'pinia';\nimport logger from '../logger';\nimport Vue from 'vue';\nimport IconCancel from '@mdi/svg/svg/cancel.svg?raw';\nimport IconCheck from '@mdi/svg/svg/check.svg?raw';\nlet isDialogVisible = false;\nconst showWarningDialog = (oldExtension, newExtension) => {\n if (isDialogVisible) {\n return Promise.resolve(false);\n }\n isDialogVisible = true;\n let message;\n if (!oldExtension && newExtension) {\n message = t('files', 'Adding the file extension \"{new}\" may render the file unreadable.', { new: newExtension });\n }\n else if (!newExtension) {\n message = t('files', 'Removing the file extension \"{old}\" may render the file unreadable.', { old: oldExtension });\n }\n else {\n message = t('files', 'Changing the file extension from \"{old}\" to \"{new}\" may render the file unreadable.', { old: oldExtension, new: newExtension });\n }\n return new Promise((resolve) => {\n const dialog = new DialogBuilder()\n .setName(t('files', 'Change file extension'))\n .setText(message)\n .setButtons([\n {\n label: t('files', 'Keep {oldextension}', { oldextension: oldExtension }),\n icon: IconCancel,\n type: 'secondary',\n callback: () => {\n isDialogVisible = false;\n resolve(false);\n },\n },\n {\n label: newExtension.length ? t('files', 'Use {newextension}', { newextension: newExtension }) : t('files', 'Remove extension'),\n icon: IconCheck,\n type: 'primary',\n callback: () => {\n isDialogVisible = false;\n resolve(true);\n },\n },\n ])\n .build();\n dialog.show().then(() => {\n dialog.hide();\n });\n });\n};\nexport const useRenamingStore = function (...args) {\n const store = defineStore('renaming', {\n state: () => ({\n renamingNode: undefined,\n newName: '',\n }),\n actions: {\n /**\n * Execute the renaming.\n * This will rename the node set as `renamingNode` to the configured new name `newName`.\n * @return true if success, false if skipped (e.g. new and old name are the same)\n * @throws Error if renaming fails, details are set in the error message\n */\n async rename() {\n if (this.renamingNode === undefined) {\n throw new Error('No node is currently being renamed');\n }\n const newName = this.newName.trim?.() || '';\n const oldName = this.renamingNode.basename;\n const oldEncodedSource = this.renamingNode.encodedSource;\n // Check for extension change\n const oldExtension = extname(oldName);\n const newExtension = extname(newName);\n if (oldExtension !== newExtension) {\n const proceed = await showWarningDialog(oldExtension, newExtension);\n if (!proceed) {\n return false;\n }\n }\n if (oldName === newName) {\n return false;\n }\n const node = this.renamingNode;\n Vue.set(node, 'status', NodeStatus.LOADING);\n try {\n // rename the node\n this.renamingNode.rename(newName);\n logger.debug('Moving file to', { destination: this.renamingNode.encodedSource, oldEncodedSource });\n // create MOVE request\n await axios({\n method: 'MOVE',\n url: oldEncodedSource,\n headers: {\n Destination: this.renamingNode.encodedSource,\n Overwrite: 'F',\n },\n });\n // Success 🎉\n emit('files:node:updated', this.renamingNode);\n emit('files:node:renamed', this.renamingNode);\n emit('files:node:moved', {\n node: this.renamingNode,\n oldSource: `${dirname(this.renamingNode.source)}/${oldName}`,\n });\n this.$reset();\n return true;\n }\n catch (error) {\n logger.error('Error while renaming file', { error });\n // Rename back as it failed\n this.renamingNode.rename(oldName);\n if (isAxiosError(error)) {\n // TODO: 409 means current folder does not exist, redirect ?\n if (error?.response?.status === 404) {\n throw new Error(t('files', 'Could not rename \"{oldName}\", it does not exist any more', { oldName }));\n }\n else if (error?.response?.status === 412) {\n throw new Error(t('files', 'The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name.', {\n newName,\n dir: basename(this.renamingNode.dirname),\n }));\n }\n }\n // Unknown error\n throw new Error(t('files', 'Could not rename \"{oldName}\"', { oldName }));\n }\n finally {\n Vue.set(node, 'status', undefined);\n }\n },\n },\n });\n const renamingStore = store(...args);\n // Make sure we only register the listeners once\n if (!renamingStore._initialized) {\n subscribe('files:node:rename', function (node) {\n renamingStore.renamingNode = node;\n renamingStore.newName = node.basename;\n });\n renamingStore._initialized = true;\n }\n return renamingStore;\n};\n","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon file-multiple-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M15,7H20.5L15,1.5V7M8,0H16L22,6V18A2,2 0 0,1 20,20H8C6.89,20 6,19.1 6,18V2A2,2 0 0,1 8,0M4,4V22H20V24H4A2,2 0 0,1 2,22V4H4Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"FileMultipleIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileMultiple.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileMultiple.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FileMultiple.vue?vue&type=template&id=15fca808\"\nimport script from \"./FileMultiple.vue?vue&type=script&lang=js\"\nexport * from \"./FileMultiple.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon file-multiple-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,7H20.5L15,1.5V7M8,0H16L22,6V18A2,2 0 0,1 20,20H8C6.89,20 6,19.1 6,18V2A2,2 0 0,1 8,0M4,4V22H20V24H4A2,2 0 0,1 2,22V4H4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list-drag-image\"},[_c('span',{staticClass:\"files-list-drag-image__icon\"},[_c('span',{ref:\"previewImg\"}),_vm._v(\" \"),(_vm.isSingleFolder)?_c('FolderIcon'):_c('FileMultipleIcon')],1),_vm._v(\" \"),_c('span',{staticClass:\"files-list-drag-image__name\"},[_vm._v(_vm._s(_vm.name))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=style&index=0&id=01562099&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=style&index=0&id=01562099&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DragAndDropPreview.vue?vue&type=template&id=01562099\"\nimport script from \"./DragAndDropPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./DragAndDropPreview.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DragAndDropPreview.vue?vue&type=style&index=0&id=01562099&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import DragAndDropPreview from '../components/DragAndDropPreview.vue';\nimport Vue from 'vue';\nconst Preview = Vue.extend(DragAndDropPreview);\nlet preview;\nexport const getDragAndDropPreview = async (nodes) => {\n return new Promise((resolve) => {\n if (!preview) {\n preview = new Preview().$mount();\n document.body.appendChild(preview.$el);\n }\n preview.update(nodes);\n preview.$on('loaded', () => {\n resolve(preview.$el);\n preview.$off('loaded');\n });\n });\n};\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { showError } from '@nextcloud/dialogs';\nimport { FileType, Permission, Folder, File as NcFile, NodeStatus, Node, getFileActions } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport { generateUrl } from '@nextcloud/router';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport { vOnClickOutside } from '@vueuse/components';\nimport { extname } from 'path';\nimport Vue, { computed, defineComponent } from 'vue';\nimport { action as sidebarAction } from '../actions/sidebarAction.ts';\nimport { getDragAndDropPreview } from '../utils/dragUtils.ts';\nimport { hashCode } from '../utils/hashUtils.ts';\nimport { dataTransferToFileTree, onDropExternalFiles, onDropInternalFiles } from '../services/DropService.ts';\nimport logger from '../logger.ts';\nimport { isDownloadable } from '../utils/permissions.ts';\nVue.directive('onClickOutside', vOnClickOutside);\nconst actions = getFileActions();\nexport default defineComponent({\n props: {\n source: {\n type: [Folder, NcFile, Node],\n required: true,\n },\n nodes: {\n type: Array,\n required: true,\n },\n filesListWidth: {\n type: Number,\n default: 0,\n },\n isMtimeAvailable: {\n type: Boolean,\n default: false,\n },\n compact: {\n type: Boolean,\n default: false,\n },\n },\n provide() {\n return {\n defaultFileAction: computed(() => this.defaultFileAction),\n enabledFileActions: computed(() => this.enabledFileActions),\n };\n },\n data() {\n return {\n loading: '',\n dragover: false,\n gridMode: false,\n };\n },\n computed: {\n fileid() {\n return this.source.fileid ?? 0;\n },\n uniqueId() {\n return hashCode(this.source.source);\n },\n isLoading() {\n return this.source.status === NodeStatus.LOADING || this.loading !== '';\n },\n /**\n * The display name of the current node\n * Either the nodes filename or a custom display name (e.g. for shares)\n */\n displayName() {\n // basename fallback needed for apps using old `@nextcloud/files` prior 3.6.0\n return this.source.displayname || this.source.basename;\n },\n /**\n * The display name without extension\n */\n basename() {\n if (this.extension === '') {\n return this.displayName;\n }\n return this.displayName.slice(0, 0 - this.extension.length);\n },\n /**\n * The extension of the file\n */\n extension() {\n if (this.source.type === FileType.Folder) {\n return '';\n }\n return extname(this.displayName);\n },\n draggingFiles() {\n return this.draggingStore.dragging;\n },\n selectedFiles() {\n return this.selectionStore.selected;\n },\n isSelected() {\n return this.selectedFiles.includes(this.source.source);\n },\n isRenaming() {\n return this.renamingStore.renamingNode === this.source;\n },\n isRenamingSmallScreen() {\n return this.isRenaming && this.filesListWidth < 512;\n },\n isActive() {\n return String(this.fileid) === String(this.currentFileId);\n },\n /**\n * Check if the source is in a failed state after an API request\n */\n isFailedSource() {\n return this.source.status === NodeStatus.FAILED;\n },\n canDrag() {\n if (this.isRenaming) {\n return false;\n }\n const canDrag = (node) => {\n return (node?.permissions & Permission.UPDATE) !== 0;\n };\n // If we're dragging a selection, we need to check all files\n if (this.selectedFiles.length > 0) {\n const nodes = this.selectedFiles.map(source => this.filesStore.getNode(source));\n return nodes.every(canDrag);\n }\n return canDrag(this.source);\n },\n canDrop() {\n if (this.source.type !== FileType.Folder) {\n return false;\n }\n // If the current folder is also being dragged, we can't drop it on itself\n if (this.draggingFiles.includes(this.source.source)) {\n return false;\n }\n return (this.source.permissions & Permission.CREATE) !== 0;\n },\n openedMenu: {\n get() {\n return this.actionsMenuStore.opened === this.uniqueId.toString();\n },\n set(opened) {\n this.actionsMenuStore.opened = opened ? this.uniqueId.toString() : null;\n },\n },\n mtimeOpacity() {\n const maxOpacityTime = 31 * 24 * 60 * 60 * 1000; // 31 days\n const mtime = this.source.mtime?.getTime?.();\n if (!mtime) {\n return {};\n }\n // 1 = today, 0 = 31 days ago\n const ratio = Math.round(Math.min(100, 100 * (maxOpacityTime - (Date.now() - mtime)) / maxOpacityTime));\n if (ratio < 0) {\n return {};\n }\n return {\n color: `color-mix(in srgb, var(--color-main-text) ${ratio}%, var(--color-text-maxcontrast))`,\n };\n },\n /**\n * Sorted actions that are enabled for this node\n */\n enabledFileActions() {\n if (this.source.status === NodeStatus.FAILED) {\n return [];\n }\n return actions\n .filter(action => !action.enabled || action.enabled([this.source], this.currentView))\n .sort((a, b) => (a.order || 0) - (b.order || 0));\n },\n defaultFileAction() {\n return this.enabledFileActions.find((action) => action.default !== undefined);\n },\n },\n watch: {\n /**\n * When the source changes, reset the preview\n * and fetch the new one.\n * @param a\n * @param b\n */\n source(a, b) {\n if (a.source !== b.source) {\n this.resetState();\n }\n },\n openedMenu() {\n if (this.openedMenu === false) {\n // TODO: This timeout can be removed once `close` event only triggers after the transition\n // ref: https://github.com/nextcloud-libraries/nextcloud-vue/pull/6065\n window.setTimeout(() => {\n if (this.openedMenu) {\n // was reopened while the animation run\n return;\n }\n // Reset any right menu position potentially set\n const root = document.getElementById('app-content-vue');\n if (root !== null) {\n root.style.removeProperty('--mouse-pos-x');\n root.style.removeProperty('--mouse-pos-y');\n }\n }, 300);\n }\n },\n },\n beforeDestroy() {\n this.resetState();\n },\n methods: {\n resetState() {\n // Reset loading state\n this.loading = '';\n // Reset the preview state\n this.$refs?.preview?.reset?.();\n // Close menu\n this.openedMenu = false;\n },\n // Open the actions menu on right click\n onRightClick(event) {\n // If already opened, fallback to default browser\n if (this.openedMenu) {\n return;\n }\n // The grid mode is compact enough to not care about\n // the actions menu mouse position\n if (!this.gridMode) {\n // Actions menu is contained within the app content\n const root = this.$el?.closest('main.app-content');\n const contentRect = root.getBoundingClientRect();\n // Using Math.min/max to prevent the menu from going out of the AppContent\n // 200 = max width of the menu\n root.style.setProperty('--mouse-pos-x', Math.max(0, event.clientX - contentRect.left - 200) + 'px');\n root.style.setProperty('--mouse-pos-y', Math.max(0, event.clientY - contentRect.top) + 'px');\n }\n else {\n // Reset any right menu position potentially set\n const root = this.$el?.closest('main.app-content');\n root.style.removeProperty('--mouse-pos-x');\n root.style.removeProperty('--mouse-pos-y');\n }\n // If the clicked row is in the selection, open global menu\n const isMoreThanOneSelected = this.selectedFiles.length > 1;\n this.actionsMenuStore.opened = this.isSelected && isMoreThanOneSelected ? 'global' : this.uniqueId.toString();\n // Prevent any browser defaults\n event.preventDefault();\n event.stopPropagation();\n },\n execDefaultAction(event) {\n // Ignore click if we are renaming\n if (this.isRenaming) {\n return;\n }\n // Ignore right click (button & 2) and any auxillary button expect mouse-wheel (button & 4)\n if (Boolean(event.button & 2) || event.button > 4) {\n return;\n }\n // if ctrl+click / cmd+click (MacOS uses the meta key) or middle mouse button (button & 4), open in new tab\n // also if there is no default action use this as a fallback\n const metaKeyPressed = event.ctrlKey || event.metaKey || Boolean(event.button & 4);\n if (metaKeyPressed || !this.defaultFileAction) {\n // If no download permission, then we can not allow to download (direct link) the files\n if (isPublicShare() && !isDownloadable(this.source)) {\n return;\n }\n const url = isPublicShare()\n ? this.source.encodedSource\n : generateUrl('/f/{fileId}', { fileId: this.fileid });\n event.preventDefault();\n event.stopPropagation();\n window.open(url, metaKeyPressed ? '_self' : undefined);\n return;\n }\n // every special case handled so just execute the default action\n event.preventDefault();\n event.stopPropagation();\n // Execute the first default action if any\n this.defaultFileAction.exec(this.source, this.currentView, this.currentDir);\n },\n openDetailsIfAvailable(event) {\n event.preventDefault();\n event.stopPropagation();\n if (sidebarAction?.enabled?.([this.source], this.currentView)) {\n sidebarAction.exec(this.source, this.currentView, this.currentDir);\n }\n },\n onDragOver(event) {\n this.dragover = this.canDrop;\n if (!this.canDrop) {\n event.dataTransfer.dropEffect = 'none';\n return;\n }\n // Handle copy/move drag and drop\n if (event.ctrlKey) {\n event.dataTransfer.dropEffect = 'copy';\n }\n else {\n event.dataTransfer.dropEffect = 'move';\n }\n },\n onDragLeave(event) {\n // Counter bubbling, make sure we're ending the drag\n // only when we're leaving the current element\n const currentTarget = event.currentTarget;\n if (currentTarget?.contains(event.relatedTarget)) {\n return;\n }\n this.dragover = false;\n },\n async onDragStart(event) {\n event.stopPropagation();\n if (!this.canDrag || !this.fileid) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n logger.debug('Drag started', { event });\n // Make sure that we're not dragging a file like the preview\n event.dataTransfer?.clearData?.();\n // Reset any renaming\n this.renamingStore.$reset();\n // Dragging set of files, if we're dragging a file\n // that is already selected, we use the entire selection\n if (this.selectedFiles.includes(this.source.source)) {\n this.draggingStore.set(this.selectedFiles);\n }\n else {\n this.draggingStore.set([this.source.source]);\n }\n const nodes = this.draggingStore.dragging\n .map(source => this.filesStore.getNode(source));\n const image = await getDragAndDropPreview(nodes);\n event.dataTransfer?.setDragImage(image, -10, -10);\n },\n onDragEnd() {\n this.draggingStore.reset();\n this.dragover = false;\n logger.debug('Drag ended');\n },\n async onDrop(event) {\n // skip if native drop like text drag and drop from files names\n if (!this.draggingFiles && !event.dataTransfer?.items?.length) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n // Caching the selection\n const selection = this.draggingFiles;\n const items = [...event.dataTransfer?.items || []];\n // We need to process the dataTransfer ASAP before the\n // browser clears it. This is why we cache the items too.\n const fileTree = await dataTransferToFileTree(items);\n // We might not have the target directory fetched yet\n const contents = await this.currentView?.getContents(this.source.path);\n const folder = contents?.folder;\n if (!folder) {\n showError(this.t('files', 'Target folder does not exist any more'));\n return;\n }\n // If another button is pressed, cancel it. This\n // allows cancelling the drag with the right click.\n if (!this.canDrop || event.button) {\n return;\n }\n const isCopy = event.ctrlKey;\n this.dragover = false;\n logger.debug('Dropped', { event, folder, selection, fileTree });\n // Check whether we're uploading files\n if (fileTree.contents.length > 0) {\n await onDropExternalFiles(fileTree, folder, contents.contents);\n return;\n }\n // Else we're moving/copying files\n const nodes = selection.map(source => this.filesStore.getNode(source));\n await onDropInternalFiles(nodes, folder, contents.contents, isCopy);\n // Reset selection after we dropped the files\n // if the dropped files are within the selection\n if (selection.some(source => this.selectedFiles.includes(source))) {\n logger.debug('Dropped selection, resetting select store...');\n this.selectionStore.reset();\n }\n },\n t,\n },\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * Simple non-secure hashing function similar to Java's `hashCode`\n * @param str The string to hash\n * @return {number} a non secure hash of the string\n */\nexport const hashCode = function (str) {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash = ((hash << 5) - hash + str.charCodeAt(i)) | 0;\n }\n return (hash >>> 0);\n};\n","import { Permission } from '@nextcloud/files';\n/**\n * Check permissions on the node if it can be downloaded\n * @param node The node to check\n * @return True if downloadable, false otherwise\n */\nexport function isDownloadable(node) {\n if ((node.permissions & Permission.READ) === 0) {\n return false;\n }\n // If the mount type is a share, ensure it got download permissions.\n if (node.attributes['share-attributes']) {\n const shareAttributes = JSON.parse(node.attributes['share-attributes'] || '[]');\n const downloadAttribute = shareAttributes.find(({ scope, key }) => scope === 'permissions' && key === 'download');\n if (downloadAttribute !== undefined) {\n return downloadAttribute.value === true;\n }\n }\n return true;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomElementRender.vue?vue&type=template&id=7b30c709\"\nimport script from \"./CustomElementRender.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomElementRender.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('td',{staticClass:\"files-list__row-actions\",attrs:{\"data-cy-files-list-row-actions\":\"\"}},[_vm._l((_vm.enabledRenderActions),function(action){return _c('CustomElementRender',{key:action.id,staticClass:\"files-list__row-action--inline\",class:'files-list__row-action-' + action.id,attrs:{\"current-view\":_vm.currentView,\"render\":action.renderInline,\"source\":_vm.source}})}),_vm._v(\" \"),_c('NcActions',{ref:\"actionsMenu\",attrs:{\"boundaries-element\":_vm.getBoundariesElement,\"container\":_vm.getBoundariesElement,\"force-name\":true,\"type\":\"tertiary\",\"force-menu\":_vm.enabledInlineActions.length === 0 /* forceMenu only if no inline actions */,\"inline\":_vm.enabledInlineActions.length,\"open\":_vm.openedMenu},on:{\"update:open\":function($event){_vm.openedMenu=$event},\"close\":function($event){_vm.openedSubmenu = null}}},[_vm._l((_vm.enabledMenuActions),function(action){return _c('NcActionButton',{key:action.id,ref:`action-${action.id}`,refInFor:true,class:{\n\t\t\t\t[`files-list__row-action-${action.id}`]: true,\n\t\t\t\t[`files-list__row-action--menu`]: _vm.isMenu(action.id)\n\t\t\t},attrs:{\"close-after-click\":!_vm.isMenu(action.id),\"data-cy-files-list-row-action\":action.id,\"is-menu\":_vm.isMenu(action.id),\"aria-label\":action.title?.([_vm.source], _vm.currentView),\"title\":action.title?.([_vm.source], _vm.currentView)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline([_vm.source], _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.mountType === 'shared' && action.id === 'sharing-status' ? '' : _vm.actionDisplayName(action))+\"\\n\\t\\t\")])}),_vm._v(\" \"),(_vm.openedSubmenu && _vm.enabledSubmenuActions[_vm.openedSubmenu?.id])?[_c('NcActionButton',{staticClass:\"files-list__row-action-back\",on:{\"click\":function($event){return _vm.onBackToMenuClick(_vm.openedSubmenu)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowLeftIcon')]},proxy:true}],null,false,3001860362)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(_vm.openedSubmenu))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.enabledSubmenuActions[_vm.openedSubmenu?.id]),function(action){return _c('NcActionButton',{key:action.id,staticClass:\"files-list__row-action--submenu\",class:`files-list__row-action-${action.id}`,attrs:{\"close-after-click\":\"\",\"data-cy-files-list-row-action\":action.id,\"title\":action.title?.([_vm.source], _vm.currentView)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline([_vm.source], _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\\t\")])})]:_vm._e()],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon arrow-left-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ArrowLeftIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ArrowLeft.vue?vue&type=template&id=16833c02\"\nimport script from \"./ArrowLeft.vue?vue&type=script&lang=js\"\nexport * from \"./ArrowLeft.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon arrow-left-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=0&id=1d682792&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=0&id=1d682792&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=1&id=1d682792&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=1&id=1d682792&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntryActions.vue?vue&type=template&id=1d682792&scoped=true\"\nimport script from \"./FileEntryActions.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryActions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FileEntryActions.vue?vue&type=style&index=0&id=1d682792&prod&lang=scss\"\nimport style1 from \"./FileEntryActions.vue?vue&type=style&index=1&id=1d682792&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d682792\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryCheckbox.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryCheckbox.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('td',{staticClass:\"files-list__row-checkbox\",on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.resetSelection.apply(null, arguments)}}},[(_vm.isLoading)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.loadingLabel}}):_c('NcCheckboxRadioSwitch',{attrs:{\"aria-label\":_vm.ariaLabel,\"checked\":_vm.isSelected,\"data-cy-files-list-row-checkbox\":\"\"},on:{\"update:checked\":_vm.onSelectionChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\n/**\n * Observe various events and save the current\n * special keys states. Useful for checking the\n * current status of a key when executing a method.\n * @param {...any} args\n */\nexport const useKeyboardStore = function (...args) {\n const store = defineStore('keyboard', {\n state: () => ({\n altKey: false,\n ctrlKey: false,\n metaKey: false,\n shiftKey: false,\n }),\n actions: {\n onEvent(event) {\n if (!event) {\n event = window.event;\n }\n Vue.set(this, 'altKey', !!event.altKey);\n Vue.set(this, 'ctrlKey', !!event.ctrlKey);\n Vue.set(this, 'metaKey', !!event.metaKey);\n Vue.set(this, 'shiftKey', !!event.shiftKey);\n },\n },\n });\n const keyboardStore = store(...args);\n // Make sure we only register the listeners once\n if (!keyboardStore._initialized) {\n window.addEventListener('keydown', keyboardStore.onEvent);\n window.addEventListener('keyup', keyboardStore.onEvent);\n window.addEventListener('mousemove', keyboardStore.onEvent);\n keyboardStore._initialized = true;\n }\n return keyboardStore;\n};\n","import { render, staticRenderFns } from \"./FileEntryCheckbox.vue?vue&type=template&id=ecdbc20a\"\nimport script from \"./FileEntryCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryCheckbox.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.isRenaming)?_c('form',{directives:[{name:\"on-click-outside\",rawName:\"v-on-click-outside\",value:(_vm.onRename),expression:\"onRename\"}],ref:\"renameForm\",staticClass:\"files-list__row-rename\",attrs:{\"aria-label\":_vm.t('files', 'Rename file')},on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onRename.apply(null, arguments)}}},[_c('NcTextField',{ref:\"renameInput\",attrs:{\"label\":_vm.renameLabel,\"autofocus\":true,\"minlength\":1,\"required\":true,\"value\":_vm.newName,\"enterkeyhint\":\"done\"},on:{\"update:value\":function($event){_vm.newName=$event},\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.stopRenaming.apply(null, arguments)}}})],1):_c(_vm.linkTo.is,_vm._b({ref:\"basename\",tag:\"component\",staticClass:\"files-list__row-name-link\",attrs:{\"aria-hidden\":_vm.isRenaming,\"data-cy-files-list-row-name-link\":\"\"}},'component',_vm.linkTo.params,false),[_c('span',{staticClass:\"files-list__row-name-text\",attrs:{\"dir\":\"auto\"}},[_c('span',{staticClass:\"files-list__row-name-\",domProps:{\"textContent\":_vm._s(_vm.basename)}}),_vm._v(\" \"),_c('span',{staticClass:\"files-list__row-name-ext\",domProps:{\"textContent\":_vm._s(_vm.extension)}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { InvalidFilenameError, InvalidFilenameErrorReason, validateFilename } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\n/**\n * Get the validity of a filename (empty if valid).\n * This can be used for `setCustomValidity` on input elements\n * @param name The filename\n * @param escape Escape the matched string in the error (only set when used in HTML)\n */\nexport function getFilenameValidity(name, escape = false) {\n if (name.trim() === '') {\n return t('files', 'Filename must not be empty.');\n }\n try {\n validateFilename(name);\n return '';\n }\n catch (error) {\n if (!(error instanceof InvalidFilenameError)) {\n throw error;\n }\n switch (error.reason) {\n case InvalidFilenameErrorReason.Character:\n return t('files', '\"{char}\" is not allowed inside a filename.', { char: error.segment }, undefined, { escape });\n case InvalidFilenameErrorReason.ReservedName:\n return t('files', '\"{segment}\" is a reserved name and not allowed for filenames.', { segment: error.segment }, undefined, { escape: false });\n case InvalidFilenameErrorReason.Extension:\n if (error.segment.match(/\\.[a-z]/i)) {\n return t('files', '\"{extension}\" is not an allowed filetype.', { extension: error.segment }, undefined, { escape: false });\n }\n return t('files', 'Filenames must not end with \"{extension}\".', { extension: error.segment }, undefined, { escape: false });\n default:\n return t('files', 'Invalid filename.');\n }\n }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=style&index=0&id=ce4c1580&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=style&index=0&id=ce4c1580&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntryName.vue?vue&type=template&id=ce4c1580&scoped=true\"\nimport script from \"./FileEntryName.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryName.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FileEntryName.vue?vue&type=style&index=0&id=ce4c1580&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ce4c1580\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"files-list__row-icon\"},[(_vm.source.type === 'folder')?[(_vm.dragover)?_vm._m(0):[_vm._m(1),_vm._v(\" \"),(_vm.folderOverlay)?_c(_vm.folderOverlay,{tag:\"OverlayIcon\",staticClass:\"files-list__row-icon-overlay\"}):_vm._e()]]:(_vm.previewUrl)?_c('span',{staticClass:\"files-list__row-icon-preview-container\"},[(_vm.hasBlurhash && (_vm.backgroundFailed === true || !_vm.backgroundLoaded))?_c('canvas',{ref:\"canvas\",staticClass:\"files-list__row-icon-blurhash\",attrs:{\"aria-hidden\":\"true\"}}):_vm._e(),_vm._v(\" \"),(_vm.backgroundFailed !== true)?_c('img',{ref:\"previewImg\",staticClass:\"files-list__row-icon-preview\",class:{'files-list__row-icon-preview--loaded': _vm.backgroundFailed === false},attrs:{\"alt\":\"\",\"loading\":\"lazy\",\"src\":_vm.previewUrl},on:{\"error\":_vm.onBackgroundError,\"load\":_vm.onBackgroundLoad}}):_vm._e()]):_vm._m(2),_vm._v(\" \"),(_vm.isFavorite)?_c('span',{staticClass:\"files-list__row-icon-favorite\"},[_vm._m(3)],1):_vm._e(),_vm._v(\" \"),(_vm.fileOverlay)?_c(_vm.fileOverlay,{tag:\"OverlayIcon\",staticClass:\"files-list__row-icon-overlay files-list__row-icon-overlay--file\"}):_vm._e()],2)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FolderOpenIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FolderIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FileIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FavoriteIcon')\n}]\n\nexport { render, staticRenderFns }","var q=[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"I\",\"J\",\"K\",\"L\",\"M\",\"N\",\"O\",\"P\",\"Q\",\"R\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\",\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\",\"k\",\"l\",\"m\",\"n\",\"o\",\"p\",\"q\",\"r\",\"s\",\"t\",\"u\",\"v\",\"w\",\"x\",\"y\",\"z\",\"#\",\"$\",\"%\",\"*\",\"+\",\",\",\"-\",\".\",\":\",\";\",\"=\",\"?\",\"@\",\"[\",\"]\",\"^\",\"_\",\"{\",\"|\",\"}\",\"~\"],x=t=>{let e=0;for(let r=0;r<t.length;r++){let n=t[r],l=q.indexOf(n);e=e*83+l}return e},p=(t,e)=>{var r=\"\";for(let n=1;n<=e;n++){let l=Math.floor(t)/Math.pow(83,e-n)%83;r+=q[Math.floor(l)]}return r};var f=t=>{let e=t/255;return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},h=t=>{let e=Math.max(0,Math.min(1,t));return e<=.0031308?Math.trunc(e*12.92*255+.5):Math.trunc((1.055*Math.pow(e,.4166666666666667)-.055)*255+.5)},F=t=>t<0?-1:1,M=(t,e)=>F(t)*Math.pow(Math.abs(t),e);var d=class extends Error{constructor(e){super(e),this.name=\"ValidationError\",this.message=e}};var C=t=>{if(!t||t.length<6)throw new d(\"The blurhash string must be at least 6 characters\");let e=x(t[0]),r=Math.floor(e/9)+1,n=e%9+1;if(t.length!==4+2*n*r)throw new d(`blurhash length mismatch: length is ${t.length} but it should be ${4+2*n*r}`)},N=t=>{try{C(t)}catch(e){return{result:!1,errorReason:e.message}}return{result:!0}},z=t=>{let e=t>>16,r=t>>8&255,n=t&255;return[f(e),f(r),f(n)]},L=(t,e)=>{let r=Math.floor(t/361),n=Math.floor(t/19)%19,l=t%19;return[M((r-9)/9,2)*e,M((n-9)/9,2)*e,M((l-9)/9,2)*e]},U=(t,e,r,n)=>{C(t),n=n|1;let l=x(t[0]),m=Math.floor(l/9)+1,b=l%9+1,i=(x(t[1])+1)/166,u=new Array(b*m);for(let o=0;o<u.length;o++)if(o===0){let a=x(t.substring(2,6));u[o]=z(a)}else{let a=x(t.substring(4+o*2,6+o*2));u[o]=L(a,i*n)}let c=e*4,s=new Uint8ClampedArray(c*r);for(let o=0;o<r;o++)for(let a=0;a<e;a++){let y=0,B=0,R=0;for(let w=0;w<m;w++)for(let P=0;P<b;P++){let G=Math.cos(Math.PI*a*P/e)*Math.cos(Math.PI*o*w/r),T=u[P+w*b];y+=T[0]*G,B+=T[1]*G,R+=T[2]*G}let V=h(y),I=h(B),E=h(R);s[4*a+0+o*c]=V,s[4*a+1+o*c]=I,s[4*a+2+o*c]=E,s[4*a+3+o*c]=255}return s},j=U;var A=4,D=(t,e,r,n)=>{let l=0,m=0,b=0,g=e*A;for(let u=0;u<e;u++){let c=A*u;for(let s=0;s<r;s++){let o=c+s*g,a=n(u,s);l+=a*f(t[o]),m+=a*f(t[o+1]),b+=a*f(t[o+2])}}let i=1/(e*r);return[l*i,m*i,b*i]},$=t=>{let e=h(t[0]),r=h(t[1]),n=h(t[2]);return(e<<16)+(r<<8)+n},H=(t,e)=>{let r=Math.floor(Math.max(0,Math.min(18,Math.floor(M(t[0]/e,.5)*9+9.5)))),n=Math.floor(Math.max(0,Math.min(18,Math.floor(M(t[1]/e,.5)*9+9.5)))),l=Math.floor(Math.max(0,Math.min(18,Math.floor(M(t[2]/e,.5)*9+9.5))));return r*19*19+n*19+l},O=(t,e,r,n,l)=>{if(n<1||n>9||l<1||l>9)throw new d(\"BlurHash must have between 1 and 9 components\");if(e*r*4!==t.length)throw new d(\"Width and height must match the pixels array\");let m=[];for(let s=0;s<l;s++)for(let o=0;o<n;o++){let a=o==0&&s==0?1:2,y=D(t,e,r,(B,R)=>a*Math.cos(Math.PI*o*B/e)*Math.cos(Math.PI*s*R/r));m.push(y)}let b=m[0],g=m.slice(1),i=\"\",u=n-1+(l-1)*9;i+=p(u,1);let c;if(g.length>0){let s=Math.max(...g.map(a=>Math.max(...a))),o=Math.floor(Math.max(0,Math.min(82,Math.floor(s*166-.5))));c=(o+1)/166,i+=p(o,1)}else c=1,i+=p(0,1);return i+=p($(b),4),g.forEach(s=>{i+=p(H(s,c),2)}),i},S=O;export{d as ValidationError,j as decode,S as encode,N as isBlurhashValid};\n//# sourceMappingURL=index.js.map","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon file-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"FileIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./File.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./File.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./File.vue?vue&type=template&id=0f6b0bb0\"\nimport script from \"./File.vue?vue&type=script&lang=js\"\nexport * from \"./File.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon file-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderOpen.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderOpen.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon folder-open-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"FolderOpenIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./FolderOpen.vue?vue&type=template&id=ae0c5fc0\"\nimport script from \"./FolderOpen.vue?vue&type=script&lang=js\"\nexport * from \"./FolderOpen.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-open-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Key.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Key.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon key-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M7 14C5.9 14 5 13.1 5 12S5.9 10 7 10 9 10.9 9 12 8.1 14 7 14M12.6 10C11.8 7.7 9.6 6 7 6C3.7 6 1 8.7 1 12S3.7 18 7 18C9.6 18 11.8 16.3 12.6 14H16V18H20V14H23V10H12.6Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"KeyIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Key.vue?vue&type=template&id=499b3412\"\nimport script from \"./Key.vue?vue&type=script&lang=js\"\nexport * from \"./Key.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon key-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7 14C5.9 14 5 13.1 5 12S5.9 10 7 10 9 10.9 9 12 8.1 14 7 14M12.6 10C11.8 7.7 9.6 6 7 6C3.7 6 1 8.7 1 12S3.7 18 7 18C9.6 18 11.8 16.3 12.6 14H16V18H20V14H23V10H12.6Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Network.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Network.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon network-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"NetworkIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Network.vue?vue&type=template&id=7bf2ec80\"\nimport script from \"./Network.vue?vue&type=script&lang=js\"\nexport * from \"./Network.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon network-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon tag-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"TagIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Tag.vue?vue&type=template&id=356230e0\"\nimport script from \"./Tag.vue?vue&type=script&lang=js\"\nexport * from \"./Tag.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon tag-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon play-circle-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"PlayCircleIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./PlayCircle.vue?vue&type=template&id=3cc1493c\"\nimport script from \"./PlayCircle.vue?vue&type=script&lang=js\"\nexport * from \"./PlayCircle.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon play-circle-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectivesIcon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectivesIcon.vue?vue&type=script&lang=js\"","<!--\n - SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n -->\n<template>\n\t<span :aria-hidden=\"!title\"\n\t\t:aria-label=\"title\"\n\t\tclass=\"material-design-icon collectives-icon\"\n\t\trole=\"img\"\n\t\tv-bind=\"$attrs\"\n\t\t@click=\"$emit('click', $event)\">\n\t\t<svg :fill=\"fillColor\"\n\t\t\tclass=\"material-design-icon__svg\"\n\t\t\t:width=\"size\"\n\t\t\t:height=\"size\"\n\t\t\tviewBox=\"0 0 16 16\">\n\t\t\t<path d=\"M2.9,8.8c0-1.2,0.4-2.4,1.2-3.3L0.3,6c-0.2,0-0.3,0.3-0.1,0.4l2.7,2.6C2.9,9,2.9,8.9,2.9,8.8z\" />\n\t\t\t<path d=\"M8,3.7c0.7,0,1.3,0.1,1.9,0.4L8.2,0.6c-0.1-0.2-0.3-0.2-0.4,0L6.1,4C6.7,3.8,7.3,3.7,8,3.7z\" />\n\t\t\t<path d=\"M3.7,11.5L3,15.2c0,0.2,0.2,0.4,0.4,0.3l3.3-1.7C5.4,13.4,4.4,12.6,3.7,11.5z\" />\n\t\t\t<path d=\"M15.7,6l-3.7-0.5c0.7,0.9,1.2,2,1.2,3.3c0,0.1,0,0.2,0,0.3l2.7-2.6C15.9,6.3,15.9,6.1,15.7,6z\" />\n\t\t\t<path d=\"M12.3,11.5c-0.7,1.1-1.8,1.9-3,2.2l3.3,1.7c0.2,0.1,0.4-0.1,0.4-0.3L12.3,11.5z\" />\n\t\t\t<path d=\"M9.6,10.1c-0.4,0.5-1,0.8-1.6,0.8c-1.1,0-2-0.9-2.1-2C5.9,7.7,6.8,6.7,8,6.7c0.6,0,1.1,0.3,1.5,0.7 c0.1,0.1,0.1,0.1,0.2,0.1h1.4c0.2,0,0.4-0.2,0.3-0.5c-0.7-1.3-2.1-2.2-3.8-2.1C5.8,5,4.3,6.6,4.1,8.5C4,10.8,5.8,12.7,8,12.7 c1.6,0,2.9-0.9,3.5-2.3c0.1-0.2-0.1-0.4-0.3-0.4H9.9C9.8,10,9.7,10,9.6,10.1z\" />\n\t\t</svg>\n\t</span>\n</template>\n\n<script>\nexport default {\n\tname: 'CollectivesIcon',\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tfillColor: {\n\t\t\ttype: String,\n\t\t\tdefault: 'currentColor',\n\t\t},\n\t\tsize: {\n\t\t\ttype: Number,\n\t\t\tdefault: 24,\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./CollectivesIcon.vue?vue&type=template&id=43528c7c\"\nimport script from \"./CollectivesIcon.vue?vue&type=script&lang=js\"\nexport * from \"./CollectivesIcon.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon collectives-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 16 16\"}},[_c('path',{attrs:{\"d\":\"M2.9,8.8c0-1.2,0.4-2.4,1.2-3.3L0.3,6c-0.2,0-0.3,0.3-0.1,0.4l2.7,2.6C2.9,9,2.9,8.9,2.9,8.8z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M8,3.7c0.7,0,1.3,0.1,1.9,0.4L8.2,0.6c-0.1-0.2-0.3-0.2-0.4,0L6.1,4C6.7,3.8,7.3,3.7,8,3.7z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M3.7,11.5L3,15.2c0,0.2,0.2,0.4,0.4,0.3l3.3-1.7C5.4,13.4,4.4,12.6,3.7,11.5z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M15.7,6l-3.7-0.5c0.7,0.9,1.2,2,1.2,3.3c0,0.1,0,0.2,0,0.3l2.7-2.6C15.9,6.3,15.9,6.1,15.7,6z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M12.3,11.5c-0.7,1.1-1.8,1.9-3,2.2l3.3,1.7c0.2,0.1,0.4-0.1,0.4-0.3L12.3,11.5z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M9.6,10.1c-0.4,0.5-1,0.8-1.6,0.8c-1.1,0-2-0.9-2.1-2C5.9,7.7,6.8,6.7,8,6.7c0.6,0,1.1,0.3,1.5,0.7 c0.1,0.1,0.1,0.1,0.2,0.1h1.4c0.2,0,0.4-0.2,0.3-0.5c-0.7-1.3-2.1-2.2-3.8-2.1C5.8,5,4.3,6.6,4.1,8.5C4,10.8,5.8,12.7,8,12.7 c1.6,0,2.9-0.9,3.5-2.3c0.1-0.2-0.1-0.4-0.3-0.4H9.9C9.8,10,9.7,10,9.6,10.1z\"}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcIconSvgWrapper',{staticClass:\"favorite-marker-icon\",attrs:{\"name\":_vm.t('files', 'Favorite'),\"svg\":_vm.StarSvg}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=style&index=0&id=f2d0cf6e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=style&index=0&id=f2d0cf6e&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FavoriteIcon.vue?vue&type=template&id=f2d0cf6e&scoped=true\"\nimport script from \"./FavoriteIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./FavoriteIcon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FavoriteIcon.vue?vue&type=style&index=0&id=f2d0cf6e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f2d0cf6e\",\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Node, registerDavProperty } from '@nextcloud/files';\n/**\n *\n */\nexport function initLivePhotos() {\n registerDavProperty('nc:metadata-files-live-photo', { nc: 'http://nextcloud.org/ns' });\n}\n/**\n * @param {Node} node - The node\n */\nexport function isLivePhoto(node) {\n return node.attributes['metadata-files-live-photo'] !== undefined;\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryPreview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryPreview.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntryPreview.vue?vue&type=template&id=d02c9e3e\"\nimport script from \"./FileEntryPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryPreview.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntry.vue?vue&type=template&id=9d5f84c6\"\nimport script from \"./FileEntry.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntry.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryGrid.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryGrid.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"files-list__row\",class:{'files-list__row--active': _vm.isActive, 'files-list__row--dragover': _vm.dragover, 'files-list__row--loading': _vm.isLoading},attrs:{\"data-cy-files-list-row\":\"\",\"data-cy-files-list-row-fileid\":_vm.fileid,\"data-cy-files-list-row-name\":_vm.source.basename,\"draggable\":_vm.canDrag},on:{\"contextmenu\":_vm.onRightClick,\"dragover\":_vm.onDragOver,\"dragleave\":_vm.onDragLeave,\"dragstart\":_vm.onDragStart,\"dragend\":_vm.onDragEnd,\"drop\":_vm.onDrop}},[(_vm.isFailedSource)?_c('span',{staticClass:\"files-list__row--failed\"}):_vm._e(),_vm._v(\" \"),_c('FileEntryCheckbox',{attrs:{\"fileid\":_vm.fileid,\"is-loading\":_vm.isLoading,\"nodes\":_vm.nodes,\"source\":_vm.source}}),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\",attrs:{\"data-cy-files-list-row-name\":\"\"}},[_c('FileEntryPreview',{ref:\"preview\",attrs:{\"dragover\":_vm.dragover,\"grid-mode\":true,\"source\":_vm.source},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}}),_vm._v(\" \"),_c('FileEntryName',{ref:\"name\",attrs:{\"basename\":_vm.basename,\"extension\":_vm.extension,\"grid-mode\":true,\"nodes\":_vm.nodes,\"source\":_vm.source},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}})],1),_vm._v(\" \"),(!_vm.compact && _vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__row-mtime\",style:(_vm.mtimeOpacity),attrs:{\"data-cy-files-list-row-mtime\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[(_vm.source.mtime)?_c('NcDateTime',{attrs:{\"timestamp\":_vm.source.mtime,\"ignore-seconds\":true}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('FileEntryActions',{ref:\"actions\",class:`files-list__row-actions-${_vm.uniqueId}`,attrs:{\"grid-mode\":true,\"loading\":_vm.loading,\"opened\":_vm.openedMenu,\"source\":_vm.source},on:{\"update:loading\":function($event){_vm.loading=$event},\"update:opened\":function($event){_vm.openedMenu=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FileEntryGrid.vue?vue&type=template&id=04b0dc5e\"\nimport script from \"./FileEntryGrid.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryGrid.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.enabled),expression:\"enabled\"}],class:`files-list__header-${_vm.header.id}`},[_c('span',{ref:\"mount\"})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesListHeader.vue?vue&type=template&id=33e2173e\"\nimport script from \"./FilesListHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListHeader.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',[_c('th',{staticClass:\"files-list__row-checkbox\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('files', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\"},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.summary))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-size\"},[_c('span',[_vm._v(_vm._s(_vm.totalSize))])]):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-mtime\"}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column)},[_c('span',[_vm._v(_vm._s(column.summary?.(_vm.nodes, _vm.currentView)))])])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=style&index=0&id=4c69fc7c&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=style&index=0&id=4c69fc7c&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableFooter.vue?vue&type=template&id=4c69fc7c&scoped=true\"\nimport script from \"./FilesListTableFooter.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableFooter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableFooter.vue?vue&type=style&index=0&id=4c69fc7c&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c69fc7c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"files-list__row-head\"},[_c('th',{staticClass:\"files-list__column files-list__row-checkbox\",on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.resetSelection.apply(null, arguments)}}},[_c('NcCheckboxRadioSwitch',_vm._b({attrs:{\"data-cy-files-list-selection-checkbox\":\"\"},on:{\"update:checked\":_vm.onToggleAll}},'NcCheckboxRadioSwitch',_vm.selectAllBind,false))],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__column files-list__row-name files-list__column--sortable\",attrs:{\"aria-sort\":_vm.ariaSortForMode('basename')}},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Name'),\"mode\":\"basename\"}})],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-size\",class:{ 'files-list__column--sortable': _vm.isSizeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('size')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Size'),\"mode\":\"size\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-mtime\",class:{ 'files-list__column--sortable': _vm.isMtimeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('mtime')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Modified'),\"mode\":\"mtime\"}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column),attrs:{\"aria-sort\":_vm.ariaSortForMode(column.id)}},[(!!column.sort)?_c('FilesListTableHeaderButton',{attrs:{\"name\":column.title,\"mode\":column.id}}):_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(column.title)+\"\\n\\t\\t\")])],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Vue from 'vue';\nimport { mapState } from 'pinia';\nimport { useViewConfigStore } from '../store/viewConfig';\nimport { Navigation, View } from '@nextcloud/files';\nexport default Vue.extend({\n computed: {\n ...mapState(useViewConfigStore, ['getConfig', 'setSortingBy', 'toggleSortingDirection']),\n currentView() {\n return this.$navigation.active;\n },\n /**\n * Get the sorting mode for the current view\n */\n sortingMode() {\n return this.getConfig(this.currentView.id)?.sorting_mode\n || this.currentView?.defaultSortKey\n || 'basename';\n },\n /**\n * Get the sorting direction for the current view\n */\n isAscSorting() {\n const sortingDirection = this.getConfig(this.currentView.id)?.sorting_direction;\n return sortingDirection !== 'desc';\n },\n },\n methods: {\n toggleSortBy(key) {\n // If we're already sorting by this key, flip the direction\n if (this.sortingMode === key) {\n this.toggleSortingDirection(this.currentView.id);\n return;\n }\n // else sort ASC by this new key\n this.setSortingBy(key, this.currentView.id);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcButton',{class:['files-list__column-sort-button', {\n\t\t'files-list__column-sort-button--active': _vm.sortingMode === _vm.mode,\n\t\t'files-list__column-sort-button--size': _vm.sortingMode === 'size',\n\t}],attrs:{\"alignment\":_vm.mode === 'size' ? 'end' : 'start-reverse',\"type\":\"tertiary\",\"title\":_vm.name},on:{\"click\":function($event){return _vm.toggleSortBy(_vm.mode)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.sortingMode !== _vm.mode || _vm.isAscSorting)?_c('MenuUp',{staticClass:\"files-list__column-sort-button-icon\"}):_c('MenuDown',{staticClass:\"files-list__column-sort-button-icon\"})]},proxy:true}])},[_vm._v(\" \"),_c('span',{staticClass:\"files-list__column-sort-button-text\"},[_vm._v(_vm._s(_vm.name))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=6d7680f0&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=6d7680f0&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeaderButton.vue?vue&type=template&id=6d7680f0&scoped=true\"\nimport script from \"./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=6d7680f0&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d7680f0\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=style&index=0&id=4daa9603&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=style&index=0&id=4daa9603&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeader.vue?vue&type=template&id=4daa9603&scoped=true\"\nimport script from \"./FilesListTableHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeader.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeader.vue?vue&type=style&index=0&id=4daa9603&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4daa9603\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list\",attrs:{\"data-cy-files-list\":\"\"}},[_c('div',{ref:\"before\",staticClass:\"files-list__before\"},[_vm._t(\"before\")],2),_vm._v(\" \"),_c('div',{staticClass:\"files-list__filters\"},[_vm._t(\"filters\")],2),_vm._v(\" \"),(!!_vm.$scopedSlots['header-overlay'])?_c('div',{staticClass:\"files-list__thead-overlay\"},[_vm._t(\"header-overlay\")],2):_vm._e(),_vm._v(\" \"),_c('table',{staticClass:\"files-list__table\",class:{ 'files-list__table--with-thead-overlay': !!_vm.$scopedSlots['header-overlay'] }},[(_vm.caption)?_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.caption)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('thead',{ref:\"thead\",staticClass:\"files-list__thead\",attrs:{\"data-cy-files-list-thead\":\"\"}},[_vm._t(\"header\")],2),_vm._v(\" \"),_c('tbody',{staticClass:\"files-list__tbody\",class:_vm.gridMode ? 'files-list__tbody--grid' : 'files-list__tbody--list',style:(_vm.tbodyStyle),attrs:{\"data-cy-files-list-tbody\":\"\"}},_vm._l((_vm.renderedItems),function({key, item},i){return _c(_vm.dataComponent,_vm._b({key:key,tag:\"component\",attrs:{\"source\":item,\"index\":i}},'component',_vm.extraProps,false))}),1),_vm._v(\" \"),_c('tfoot',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isReady),expression:\"isReady\"}],staticClass:\"files-list__tfoot\",attrs:{\"data-cy-files-list-tfoot\":\"\"}},[_vm._t(\"footer\")],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VirtualList.vue?vue&type=template&id=e96cc0ac\"\nimport script from \"./VirtualList.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualList.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list__column files-list__row-actions-batch\",attrs:{\"data-cy-files-list-selection-actions\":\"\"}},[_c('NcActions',{ref:\"actionsMenu\",attrs:{\"container\":\"#app-content-vue\",\"disabled\":!!_vm.loading || _vm.areSomeNodesLoading,\"force-name\":true,\"inline\":_vm.inlineActions,\"menu-name\":_vm.inlineActions <= 1 ? _vm.t('files', 'Actions') : null,\"open\":_vm.openedMenu},on:{\"update:open\":function($event){_vm.openedMenu=$event}}},_vm._l((_vm.enabledActions),function(action){return _c('NcActionButton',{key:action.id,class:'files-list__row-actions-batch-' + action.id,attrs:{\"aria-label\":action.displayName(_vm.nodes, _vm.currentView) + ' ' + _vm.t('files', '(selected)') /** TRANSLATORS: Selected like 'selected files and folders' */,\"data-cy-files-list-selection-action\":action.id},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.nodes, _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(action.displayName(_vm.nodes, _vm.currentView))+\"\\n\\t\\t\")])}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=6c741170&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=6c741170&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeaderActions.vue?vue&type=template&id=6c741170&scoped=true\"\nimport script from \"./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=6c741170&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6c741170\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"file-list-filters\"},[_c('div',{staticClass:\"file-list-filters__filter\",attrs:{\"data-cy-files-filters\":\"\"}},_vm._l((_setup.visualFilters),function(filter){return _c('span',{key:filter.id,ref:\"filterElements\",refInFor:true})}),0),_vm._v(\" \"),(_setup.activeChips.length > 0)?_c('ul',{staticClass:\"file-list-filters__active\",attrs:{\"aria-label\":_setup.t('files', 'Active filters')}},_vm._l((_setup.activeChips),function(chip,index){return _c('li',{key:index},[_c(_setup.NcChip,{attrs:{\"aria-label-close\":_setup.t('files', 'Remove filter'),\"icon-svg\":chip.icon,\"text\":chip.text},on:{\"close\":chip.onclick},scopedSlots:_vm._u([(chip.user)?{key:\"icon\",fn:function(){return [_c(_setup.NcAvatar,{attrs:{\"disable-menu\":\"\",\"show-user-status\":false,\"size\":24,\"user\":chip.user}})]},proxy:true}:null],null,true)})],1)}),0):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=style&index=0&id=bd0c8440&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=style&index=0&id=bd0c8440&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileListFilters.vue?vue&type=template&id=bd0c8440&scoped=true\"\nimport script from \"./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FileListFilters.vue?vue&type=style&index=0&id=bd0c8440&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bd0c8440\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('VirtualList',{ref:\"table\",attrs:{\"data-component\":_vm.userConfig.grid_view ? _vm.FileEntryGrid : _vm.FileEntry,\"data-key\":'source',\"data-sources\":_vm.nodes,\"grid-mode\":_vm.userConfig.grid_view,\"extra-props\":{\n\t\tisMtimeAvailable: _vm.isMtimeAvailable,\n\t\tisSizeAvailable: _vm.isSizeAvailable,\n\t\tnodes: _vm.nodes,\n\t\tfileListWidth: _vm.fileListWidth,\n\t},\"scroll-to-index\":_vm.scrollToIndex,\"caption\":_vm.caption},scopedSlots:_vm._u([{key:\"filters\",fn:function(){return [_c('FileListFilters')]},proxy:true},(!_vm.isNoneSelected)?{key:\"header-overlay\",fn:function(){return [_c('span',{staticClass:\"files-list__selected\"},[_vm._v(_vm._s(_vm.t('files', '{count} selected', { count: _vm.selectedNodes.length })))]),_vm._v(\" \"),_c('FilesListTableHeaderActions',{attrs:{\"current-view\":_vm.currentView,\"selected-nodes\":_vm.selectedNodes}})]},proxy:true}:null,{key:\"before\",fn:function(){return _vm._l((_vm.sortedHeaders),function(header){return _c('FilesListHeader',{key:header.id,attrs:{\"current-folder\":_vm.currentFolder,\"current-view\":_vm.currentView,\"header\":header}})})},proxy:true},{key:\"header\",fn:function(){return [_c('FilesListTableHeader',{ref:\"thead\",attrs:{\"files-list-width\":_vm.fileListWidth,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes}})]},proxy:true},{key:\"footer\",fn:function(){return [_c('FilesListTableFooter',{attrs:{\"current-view\":_vm.currentView,\"files-list-width\":_vm.fileListWidth,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes,\"summary\":_vm.summary}})]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=76316b7f&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=76316b7f&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=1&id=76316b7f&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=1&id=76316b7f&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListVirtual.vue?vue&type=template&id=76316b7f&scoped=true\"\nimport script from \"./FilesListVirtual.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListVirtual.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListVirtual.vue?vue&type=style&index=0&id=76316b7f&prod&scoped=true&lang=scss\"\nimport style1 from \"./FilesListVirtual.vue?vue&type=style&index=1&id=76316b7f&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"76316b7f\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./TrayArrowDown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./TrayArrowDown.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon tray-arrow-down-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 15L17.55 9.54L16.13 8.13L13 11.25V2H11V11.25L7.88 8.13L6.46 9.55L12 15Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"TrayArrowDownIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./TrayArrowDown.vue?vue&type=template&id=5dbf2618\"\nimport script from \"./TrayArrowDown.vue?vue&type=script&lang=js\"\nexport * from \"./TrayArrowDown.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon tray-arrow-down-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 15L17.55 9.54L16.13 8.13L13 11.25V2H11V11.25L7.88 8.13L6.46 9.55L12 15Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.dragover),expression:\"dragover\"}],staticClass:\"files-list__drag-drop-notice\",attrs:{\"data-cy-files-drag-drop-area\":\"\"},on:{\"drop\":_vm.onDrop}},[_c('div',{staticClass:\"files-list__drag-drop-notice-wrapper\"},[(_vm.canUpload && !_vm.isQuotaExceeded)?[_c('TrayArrowDownIcon',{attrs:{\"size\":48}}),_vm._v(\" \"),_c('h3',{staticClass:\"files-list-drag-drop-notice__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Drag and drop files here to upload'))+\"\\n\\t\\t\\t\")])]:[_c('h3',{staticClass:\"files-list-drag-drop-notice__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.cantUploadLabel)+\"\\n\\t\\t\\t\")])]],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=style&index=0&id=48abd828&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=style&index=0&id=48abd828&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DragAndDropNotice.vue?vue&type=template&id=48abd828&scoped=true\"\nimport script from \"./DragAndDropNotice.vue?vue&type=script&lang=ts\"\nexport * from \"./DragAndDropNotice.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DragAndDropNotice.vue?vue&type=style&index=0&id=48abd828&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"48abd828\",\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { t } from '@nextcloud/l10n';\n/**\n * Whether error is a WebDAVClientError\n * @param error - Any exception\n * @return {boolean} - Whether error is a WebDAVClientError\n */\nfunction isWebDAVClientError(error) {\n return error instanceof Error && 'status' in error && 'response' in error;\n}\n/**\n * Get a localized error message from webdav request\n * @param error - An exception from webdav request\n * @return {string} Localized error message for end user\n */\nexport function humanizeWebDAVError(error) {\n if (error instanceof Error) {\n if (isWebDAVClientError(error)) {\n const status = error.status || error.response?.status || 0;\n if ([400, 404, 405].includes(status)) {\n return t('files', 'Folder not found');\n }\n else if (status === 403) {\n return t('files', 'This operation is forbidden');\n }\n else if (status === 500) {\n return t('files', 'This directory is unavailable, please check the logs or contact the administrator');\n }\n else if (status === 503) {\n return t('files', 'Storage is temporarily not available');\n }\n }\n return t('files', 'Unexpected error: {error}', { error: error.message });\n }\n return t('files', 'Unknown error');\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=0d5ddd73&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=0d5ddd73&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesList.vue?vue&type=template&id=0d5ddd73&scoped=true\"\nimport script from \"./FilesList.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesList.vue?vue&type=style&index=0&id=0d5ddd73&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0d5ddd73\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesApp.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesApp.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FilesApp.vue?vue&type=template&id=43ffc6ca\"\nimport script from \"./FilesApp.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesApp.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { getNavigation } from '@nextcloud/files';\nimport { PiniaVuePlugin } from 'pinia';\nimport Vue from 'vue';\nimport { pinia } from './store/index.ts';\nimport router from './router/router';\nimport RouterService from './services/RouterService';\nimport SettingsModel from './models/Setting.js';\nimport SettingsService from './services/Settings.js';\nimport FilesApp from './FilesApp.vue';\n__webpack_nonce__ = getCSPNonce();\n// Init private and public Files namespace\nwindow.OCA.Files = window.OCA.Files ?? {};\nwindow.OCP.Files = window.OCP.Files ?? {};\n// Expose router\nif (!window.OCP.Files.Router) {\n const Router = new RouterService(router);\n Object.assign(window.OCP.Files, { Router });\n}\n// Init Pinia store\nVue.use(PiniaVuePlugin);\n// Init Navigation Service\n// This only works with Vue 2 - with Vue 3 this will not modify the source but return just a observer\nconst Navigation = Vue.observable(getNavigation());\nVue.prototype.$navigation = Navigation;\n// Init Files App Settings Service\nconst Settings = new SettingsService();\nObject.assign(window.OCA.Files, { Settings });\nObject.assign(window.OCA.Files.Settings, { Setting: SettingsModel });\nconst FilesAppVue = Vue.extend(FilesApp);\nnew FilesAppVue({\n router: window.OCP.Files.Router._router,\n pinia,\n}).$mount('#content');\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default class Settings {\n\n\t_settings\n\n\tconstructor() {\n\t\tthis._settings = []\n\t\tconsole.debug('OCA.Files.Settings initialized')\n\t}\n\n\t/**\n\t * Register a new setting\n\t *\n\t * @since 19.0.0\n\t * @param {OCA.Files.Settings.Setting} view element to add to settings\n\t * @return {boolean} whether registering was successful\n\t */\n\tregister(view) {\n\t\tif (this._settings.filter(e => e.name === view.name).length > 0) {\n\t\t\tconsole.error('A setting with the same name is already registered')\n\t\t\treturn false\n\t\t}\n\t\tthis._settings.push(view)\n\t\treturn true\n\t}\n\n\t/**\n\t * All settings elements\n\t *\n\t * @return {OCA.Files.Settings.Setting[]} All currently registered settings\n\t */\n\tget settings() {\n\t\treturn this._settings\n\t}\n\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default class Setting {\n\n\t_close\n\t_el\n\t_name\n\t_open\n\n\t/**\n\t * Create a new files app setting\n\t *\n\t * @since 19.0.0\n\t * @param {string} name the name of this setting\n\t * @param {object} component the component\n\t * @param {Function} component.el function that returns an unmounted dom element to be added\n\t * @param {Function} [component.open] callback for when setting is added\n\t * @param {Function} [component.close] callback for when setting is closed\n\t */\n\tconstructor(name, { el, open, close }) {\n\t\tthis._name = name\n\t\tthis._el = el\n\t\tthis._open = open\n\t\tthis._close = close\n\n\t\tif (typeof this._open !== 'function') {\n\t\t\tthis._open = () => {}\n\t\t}\n\n\t\tif (typeof this._close !== 'function') {\n\t\t\tthis._close = () => {}\n\t\t}\n\t}\n\n\tget name() {\n\t\treturn this._name\n\t}\n\n\tget el() {\n\t\treturn this._el\n\t}\n\n\tget open() {\n\t\treturn this._open\n\t}\n\n\tget close() {\n\t\treturn this._close\n\t}\n\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__breadcrumbs[data-v-61601fd4]{flex:1 1 100% !important;width:100%;height:100%;margin-block:0;margin-inline:10px;min-width:0}.files-list__breadcrumbs[data-v-61601fd4] a{cursor:pointer !important}.files-list__breadcrumbs--with-progress[data-v-61601fd4]{flex-direction:column !important;align-items:flex-start !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/BreadCrumbs.vue\"],\"names\":[],\"mappings\":\"AACA,0CAEC,wBAAA,CACA,UAAA,CACA,WAAA,CACA,cAAA,CACA,kBAAA,CACA,WAAA,CAGC,6CACC,yBAAA,CAIF,yDACC,gCAAA,CACA,iCAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__drag-drop-notice[data-v-48abd828]{display:flex;align-items:center;justify-content:center;width:100%;min-height:113px;margin:0;user-select:none;color:var(--color-text-maxcontrast);background-color:var(--color-main-background);border-color:#000}.files-list__drag-drop-notice h3[data-v-48abd828]{margin-inline-start:16px;color:inherit}.files-list__drag-drop-notice-wrapper[data-v-48abd828]{display:flex;align-items:center;justify-content:center;height:15vh;max-height:70%;padding:0 5vw;border:2px var(--color-border-dark) dashed;border-radius:var(--border-radius-large)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/DragAndDropNotice.vue\"],\"names\":[],\"mappings\":\"AACA,+CACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CAEA,gBAAA,CACA,QAAA,CACA,gBAAA,CACA,mCAAA,CACA,6CAAA,CACA,iBAAA,CAEA,kDACC,wBAAA,CACA,aAAA,CAGD,uDACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,WAAA,CACA,cAAA,CACA,aAAA,CACA,0CAAA,CACA,wCAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list-drag-image{position:absolute;top:-9999px;inset-inline-start:-9999px;display:flex;overflow:hidden;align-items:center;height:44px;padding:6px 12px;background:var(--color-main-background)}.files-list-drag-image__icon,.files-list-drag-image .files-list__row-icon{display:flex;overflow:hidden;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--border-radius)}.files-list-drag-image__icon{overflow:visible;margin-inline-end:12px}.files-list-drag-image__icon img{max-width:100%;max-height:100%}.files-list-drag-image__icon .material-design-icon{color:var(--color-text-maxcontrast)}.files-list-drag-image__icon .material-design-icon.folder-icon{color:var(--color-primary-element)}.files-list-drag-image__icon>span{display:flex}.files-list-drag-image__icon>span .files-list__row-icon+.files-list__row-icon{margin-top:6px;margin-inline-start:-26px}.files-list-drag-image__icon>span .files-list__row-icon+.files-list__row-icon+.files-list__row-icon{margin-top:12px}.files-list-drag-image__icon>span:not(:empty)+*{display:none}.files-list-drag-image__name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/DragAndDropPreview.vue\"],\"names\":[],\"mappings\":\"AAIA,uBACC,iBAAA,CACA,WAAA,CACA,0BAAA,CACA,YAAA,CACA,eAAA,CACA,kBAAA,CACA,WAAA,CACA,gBAAA,CACA,uCAAA,CAEA,0EAEC,YAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,kCAAA,CAGD,6BACC,gBAAA,CACA,sBAAA,CAEA,iCACC,cAAA,CACA,eAAA,CAGD,mDACC,mCAAA,CACA,+DACC,kCAAA,CAKF,kCACC,YAAA,CAGA,8EACC,cA9CU,CA+CV,yBAAA,CACA,oGACC,eAAA,CAKF,gDACC,YAAA,CAKH,6BACC,eAAA,CACA,kBAAA,CACA,sBAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.favorite-marker-icon[data-v-f2d0cf6e]{color:var(--color-favorite);min-width:unset !important;min-height:unset !important}.favorite-marker-icon[data-v-f2d0cf6e] svg{width:26px !important;height:26px !important;max-width:unset !important;max-height:unset !important}.favorite-marker-icon[data-v-f2d0cf6e] svg path{stroke:var(--color-main-background);stroke-width:8px;stroke-linejoin:round;paint-order:stroke}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FavoriteIcon.vue\"],\"names\":[],\"mappings\":\"AACA,uCACC,2BAAA,CAEA,0BAAA,CACG,2BAAA,CAGF,4CAEC,qBAAA,CACA,sBAAA,CAGA,0BAAA,CACA,2BAAA,CAGA,iDACC,mCAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `main.app-content[style*=mouse-pos-x] .v-popper__popper{transform:translate3d(var(--mouse-pos-x), var(--mouse-pos-y), 0px) !important}main.app-content[style*=mouse-pos-x] .v-popper__popper[data-popper-placement=top]{transform:translate3d(var(--mouse-pos-x), calc(var(--mouse-pos-y) - 50vh + 34px), 0px) !important}main.app-content[style*=mouse-pos-x] .v-popper__popper .v-popper__arrow-container{display:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue\"],\"names\":[],\"mappings\":\"AAGA,uDACC,6EAAA,CAGA,kFAEC,iGAAA,CAGD,kFACC,YAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `[data-v-1d682792] .button-vue--icon-and-text .button-vue__text{color:var(--color-primary-element)}[data-v-1d682792] .button-vue--icon-and-text .button-vue__icon{color:var(--color-primary-element)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue\"],\"names\":[],\"mappings\":\"AAEC,+DACC,kCAAA,CAED,+DACC,kCAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `button.files-list__row-name-link[data-v-ce4c1580]{background-color:unset;border:none;font-weight:normal}button.files-list__row-name-link[data-v-ce4c1580]:active{background-color:unset !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryName.vue\"],\"names\":[],\"mappings\":\"AACA,kDACC,sBAAA,CACA,WAAA,CACA,kBAAA,CAEA,yDAEC,iCAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.file-list-filters[data-v-bd0c8440]{display:flex;flex-direction:column;gap:var(--default-grid-baseline);height:100%;width:100%}.file-list-filters__filter[data-v-bd0c8440]{display:flex;align-items:start;justify-content:start;gap:calc(var(--default-grid-baseline, 4px)*2)}.file-list-filters__filter>*[data-v-bd0c8440]{flex:0 1 fit-content}.file-list-filters__active[data-v-bd0c8440]{display:flex;flex-direction:row;gap:calc(var(--default-grid-baseline, 4px)*2)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileListFilters.vue\"],\"names\":[],\"mappings\":\"AACA,oCACC,YAAA,CACA,qBAAA,CACA,gCAAA,CACA,WAAA,CACA,UAAA,CAEA,4CACC,YAAA,CACA,iBAAA,CACA,qBAAA,CACA,6CAAA,CAEA,8CACC,oBAAA,CAIF,4CACC,YAAA,CACA,kBAAA,CACA,6CAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `tr[data-v-4c69fc7c]{margin-bottom:max(25vh,var(--body-container-margin));border-top:1px solid var(--color-border);background-color:rgba(0,0,0,0) !important;border-bottom:none !important}tr td[data-v-4c69fc7c]{user-select:none;color:var(--color-text-maxcontrast) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableFooter.vue\"],\"names\":[],\"mappings\":\"AAEA,oBACC,oDAAA,CACA,wCAAA,CAEA,yCAAA,CACA,6BAAA,CAEA,uBACC,gBAAA,CAEA,8CAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__column[data-v-4daa9603]{user-select:none;color:var(--color-text-maxcontrast) !important}.files-list__column--sortable[data-v-4daa9603]{cursor:pointer}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeader.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,gBAAA,CAEA,8CAAA,CAEA,+CACC,cAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__row-actions-batch[data-v-6c741170]{flex:1 1 100% !important;max-width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeaderActions.vue\"],\"names\":[],\"mappings\":\"AACA,gDACC,wBAAA,CACA,cAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__column-sort-button[data-v-6d7680f0]{margin:0 calc(var(--button-padding, var(--cell-margin))*-1);min-width:calc(100% - 3*var(--cell-margin)) !important}.files-list__column-sort-button-text[data-v-6d7680f0]{color:var(--color-text-maxcontrast);font-weight:normal}.files-list__column-sort-button-icon[data-v-6d7680f0]{color:var(--color-text-maxcontrast);opacity:0;transition:opacity var(--animation-quick);inset-inline-start:-10px}.files-list__column-sort-button--size .files-list__column-sort-button-icon[data-v-6d7680f0]{inset-inline-start:10px}.files-list__column-sort-button--active .files-list__column-sort-button-icon[data-v-6d7680f0],.files-list__column-sort-button:hover .files-list__column-sort-button-icon[data-v-6d7680f0],.files-list__column-sort-button:focus .files-list__column-sort-button-icon[data-v-6d7680f0],.files-list__column-sort-button:active .files-list__column-sort-button-icon[data-v-6d7680f0]{opacity:1}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeaderButton.vue\"],\"names\":[],\"mappings\":\"AACA,iDAEC,2DAAA,CACA,sDAAA,CAEA,sDACC,mCAAA,CACA,kBAAA,CAGD,sDACC,mCAAA,CACA,SAAA,CACA,yCAAA,CACA,wBAAA,CAGD,4FACC,uBAAA,CAGD,mXAIC,SAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list[data-v-76316b7f]{--row-height: 55px;--cell-margin: 14px;--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);--checkbox-size: 24px;--clickable-area: var(--default-clickable-area);--icon-preview-size: 32px;--fixed-block-start-position: var(--default-clickable-area);overflow:auto;height:100%;will-change:scroll-position}.files-list[data-v-76316b7f]:has(.file-list-filters__active){--fixed-block-start-position: calc(var(--default-clickable-area) + var(--default-grid-baseline) + var(--clickable-area-small))}.files-list[data-v-76316b7f] tbody{will-change:padding;contain:layout paint style;display:flex;flex-direction:column;width:100%;position:relative}.files-list[data-v-76316b7f] tbody tr{contain:strict}.files-list[data-v-76316b7f] tbody tr:hover,.files-list[data-v-76316b7f] tbody tr:focus{background-color:var(--color-background-dark)}.files-list[data-v-76316b7f] .files-list__before{display:flex;flex-direction:column}.files-list[data-v-76316b7f] .files-list__selected{padding-inline-end:12px;white-space:nowrap}.files-list[data-v-76316b7f] .files-list__table{display:block}.files-list[data-v-76316b7f] .files-list__table.files-list__table--with-thead-overlay{margin-block-start:calc(-1*var(--row-height))}.files-list[data-v-76316b7f] .files-list__filters{position:sticky;top:0;background-color:var(--color-main-background);z-index:10;padding-inline:var(--row-height) var(--default-grid-baseline, 4px);height:var(--fixed-block-start-position);width:100%}.files-list[data-v-76316b7f] .files-list__thead-overlay{position:sticky;top:var(--fixed-block-start-position);margin-inline-start:var(--row-height);z-index:20;display:flex;align-items:center;background-color:var(--color-main-background);border-block-end:1px solid var(--color-border);height:var(--row-height)}.files-list[data-v-76316b7f] .files-list__thead,.files-list[data-v-76316b7f] .files-list__tfoot{display:flex;flex-direction:column;width:100%;background-color:var(--color-main-background)}.files-list[data-v-76316b7f] .files-list__thead{position:sticky;z-index:10;top:var(--fixed-block-start-position)}.files-list[data-v-76316b7f] tr{position:relative;display:flex;align-items:center;width:100%;border-block-end:1px solid var(--color-border);box-sizing:border-box;user-select:none;height:var(--row-height)}.files-list[data-v-76316b7f] td,.files-list[data-v-76316b7f] th{display:flex;align-items:center;flex:0 0 auto;justify-content:start;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}.files-list[data-v-76316b7f] td span,.files-list[data-v-76316b7f] th span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list[data-v-76316b7f] .files-list__row--failed{position:absolute;display:block;top:0;inset-inline:0;bottom:0;opacity:.1;z-index:-1;background:var(--color-error)}.files-list[data-v-76316b7f] .files-list__row-checkbox{justify-content:center}.files-list[data-v-76316b7f] .files-list__row-checkbox .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list[data-v-76316b7f] .files-list__row-checkbox .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list[data-v-76316b7f] .files-list__row-checkbox .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list[data-v-76316b7f] .files-list__row:hover,.files-list[data-v-76316b7f] .files-list__row:focus,.files-list[data-v-76316b7f] .files-list__row:active,.files-list[data-v-76316b7f] .files-list__row--active,.files-list[data-v-76316b7f] .files-list__row--dragover{background-color:var(--color-background-hover);--color-text-maxcontrast: var(--color-main-text)}.files-list[data-v-76316b7f] .files-list__row:hover>*,.files-list[data-v-76316b7f] .files-list__row:focus>*,.files-list[data-v-76316b7f] .files-list__row:active>*,.files-list[data-v-76316b7f] .files-list__row--active>*,.files-list[data-v-76316b7f] .files-list__row--dragover>*{--color-border: var(--color-border-dark)}.files-list[data-v-76316b7f] .files-list__row:hover .favorite-marker-icon svg path,.files-list[data-v-76316b7f] .files-list__row:focus .favorite-marker-icon svg path,.files-list[data-v-76316b7f] .files-list__row:active .favorite-marker-icon svg path,.files-list[data-v-76316b7f] .files-list__row--active .favorite-marker-icon svg path,.files-list[data-v-76316b7f] .files-list__row--dragover .favorite-marker-icon svg path{stroke:var(--color-background-hover)}.files-list[data-v-76316b7f] .files-list__row--dragover *{pointer-events:none}.files-list[data-v-76316b7f] .files-list__row-icon{position:relative;display:flex;overflow:visible;align-items:center;flex:0 0 var(--icon-preview-size);justify-content:center;width:var(--icon-preview-size);height:100%;margin-inline-end:var(--checkbox-padding);color:var(--color-primary-element)}.files-list[data-v-76316b7f] .files-list__row-icon *{cursor:pointer}.files-list[data-v-76316b7f] .files-list__row-icon>span{justify-content:flex-start}.files-list[data-v-76316b7f] .files-list__row-icon>span:not(.files-list__row-icon-favorite) svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list[data-v-76316b7f] .files-list__row-icon>span.folder-icon,.files-list[data-v-76316b7f] .files-list__row-icon>span.folder-open-icon{margin:-3px}.files-list[data-v-76316b7f] .files-list__row-icon>span.folder-icon svg,.files-list[data-v-76316b7f] .files-list__row-icon>span.folder-open-icon svg{width:calc(var(--icon-preview-size) + 6px);height:calc(var(--icon-preview-size) + 6px)}.files-list[data-v-76316b7f] .files-list__row-icon-preview-container{position:relative;overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius)}.files-list[data-v-76316b7f] .files-list__row-icon-blurhash{position:absolute;inset-block-start:0;inset-inline-start:0;height:100%;width:100%;object-fit:cover}.files-list[data-v-76316b7f] .files-list__row-icon-preview{object-fit:contain;object-position:center;height:100%;width:100%}.files-list[data-v-76316b7f] .files-list__row-icon-preview:not(.files-list__row-icon-preview--loaded){background:var(--color-loading-dark)}.files-list[data-v-76316b7f] .files-list__row-icon-favorite{position:absolute;top:0px;inset-inline-end:-10px}.files-list[data-v-76316b7f] .files-list__row-icon-overlay{position:absolute;max-height:calc(var(--icon-preview-size)*.5);max-width:calc(var(--icon-preview-size)*.5);color:var(--color-primary-element-text);margin-block-start:2px}.files-list[data-v-76316b7f] .files-list__row-icon-overlay--file{color:var(--color-main-text);background:var(--color-main-background);border-radius:100%}.files-list[data-v-76316b7f] .files-list__row-name{overflow:hidden;flex:1 1 auto}.files-list[data-v-76316b7f] .files-list__row-name button.files-list__row-name-link{display:flex;align-items:center;text-align:start;width:100%;height:100%;min-width:0;margin:0;padding:0}.files-list[data-v-76316b7f] .files-list__row-name button.files-list__row-name-link:focus-visible{outline:none !important}.files-list[data-v-76316b7f] .files-list__row-name button.files-list__row-name-link:focus .files-list__row-name-text{outline:var(--border-width-input-focused) solid var(--color-main-text) !important;border-radius:var(--border-radius-element)}.files-list[data-v-76316b7f] .files-list__row-name button.files-list__row-name-link:focus:not(:focus-visible) .files-list__row-name-text{outline:none !important}.files-list[data-v-76316b7f] .files-list__row-name .files-list__row-name-text{color:var(--color-main-text);padding:var(--default-grid-baseline) calc(2*var(--default-grid-baseline));padding-inline-start:-10px;display:inline-flex}.files-list[data-v-76316b7f] .files-list__row-name .files-list__row-name-ext{color:var(--color-text-maxcontrast);overflow:visible}.files-list[data-v-76316b7f] .files-list__row-rename{width:100%;max-width:600px}.files-list[data-v-76316b7f] .files-list__row-rename input{width:100%;margin-inline-start:-8px;padding:2px 6px;border-width:2px}.files-list[data-v-76316b7f] .files-list__row-rename input:invalid{border-color:var(--color-error);color:red}.files-list[data-v-76316b7f] .files-list__row-actions{width:auto}.files-list[data-v-76316b7f] .files-list__row-actions~td,.files-list[data-v-76316b7f] .files-list__row-actions~th{margin:0 var(--cell-margin)}.files-list[data-v-76316b7f] .files-list__row-actions button .button-vue__text{font-weight:normal}.files-list[data-v-76316b7f] .files-list__row-action--inline{margin-inline-end:7px}.files-list[data-v-76316b7f] .files-list__row-mtime,.files-list[data-v-76316b7f] .files-list__row-size{color:var(--color-text-maxcontrast)}.files-list[data-v-76316b7f] .files-list__row-size{width:calc(var(--row-height)*1.5);justify-content:flex-end}.files-list[data-v-76316b7f] .files-list__row-mtime{width:calc(var(--row-height)*2)}.files-list[data-v-76316b7f] .files-list__row-column-custom{width:calc(var(--row-height)*2)}@media screen and (max-width: 512px){.files-list[data-v-76316b7f] .files-list__filters{padding-inline:var(--default-grid-baseline, 4px)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"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\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `tbody.files-list__tbody.files-list__tbody--grid{--half-clickable-area: calc(var(--clickable-area) / 2);--item-padding: 16px;--icon-preview-size: 166px;--name-height: 32px;--mtime-height: 16px;--row-width: calc(var(--icon-preview-size) + var(--item-padding) * 2);--row-height: calc(var(--icon-preview-size) + var(--name-height) + var(--mtime-height) + var(--item-padding) * 2);--checkbox-padding: 0px;display:grid;grid-template-columns:repeat(auto-fill, var(--row-width));align-content:center;align-items:center;justify-content:space-around;justify-items:center}tbody.files-list__tbody.files-list__tbody--grid tr{display:flex;flex-direction:column;width:var(--row-width);height:var(--row-height);border:none;border-radius:var(--border-radius-large);padding:var(--item-padding)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-checkbox{position:absolute;z-index:9;top:calc(var(--item-padding)/2);inset-inline-start:calc(var(--item-padding)/2);overflow:hidden;--checkbox-container-size: 44px;width:var(--checkbox-container-size);height:var(--checkbox-container-size)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-checkbox .checkbox-radio-switch__content::after{content:\"\";width:16px;height:16px;position:absolute;inset-inline-start:50%;margin-inline-start:-8px;z-index:-1;background:var(--color-main-background)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-icon-favorite{position:absolute;top:0;inset-inline-end:0;display:flex;align-items:center;justify-content:center;width:var(--clickable-area);height:var(--clickable-area)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-name{display:flex;flex-direction:column;width:var(--icon-preview-size);height:calc(var(--icon-preview-size) + var(--name-height));overflow:visible}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-name span.files-list__row-icon{width:var(--icon-preview-size);height:var(--icon-preview-size)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-name .files-list__row-name-text{margin:0;margin-inline-start:-4px;padding:0px 4px}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-mtime{width:var(--icon-preview-size);height:var(--mtime-height);font-size:calc(var(--default-font-size) - 4px)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-actions{position:absolute;inset-inline-end:calc(var(--half-clickable-area)/2);inset-block-end:calc(var(--mtime-height)/2);width:var(--clickable-area);height:var(--clickable-area)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"AAEA,gDACC,sDAAA,CACA,oBAAA,CACA,0BAAA,CACA,mBAAA,CACA,oBAAA,CACA,qEAAA,CACA,iHAAA,CACA,uBAAA,CACA,YAAA,CACA,yDAAA,CAEA,oBAAA,CACA,kBAAA,CACA,4BAAA,CACA,oBAAA,CAEA,mDACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,wBAAA,CACA,WAAA,CACA,wCAAA,CACA,2BAAA,CAID,0EACC,iBAAA,CACA,SAAA,CACA,+BAAA,CACA,8CAAA,CACA,eAAA,CACA,+BAAA,CACA,oCAAA,CACA,qCAAA,CAGA,iHACC,UAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,sBAAA,CACA,wBAAA,CACA,UAAA,CACA,uCAAA,CAKF,+EACC,iBAAA,CACA,KAAA,CACA,kBAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,2BAAA,CACA,4BAAA,CAGD,sEACC,YAAA,CACA,qBAAA,CACA,8BAAA,CACA,0DAAA,CAEA,gBAAA,CAEA,gGACC,8BAAA,CACA,+BAAA,CAGD,iGACC,QAAA,CAEA,wBAAA,CACA,eAAA,CAIF,uEACC,8BAAA,CACA,0BAAA,CACA,8CAAA,CAGD,yEACC,iBAAA,CACA,mDAAA,CACA,2CAAA,CACA,2BAAA,CACA,4BAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-navigation-entry__settings-quota[data-v-6ed9379e]{--app-navigation-quota-margin: calc((var(--default-clickable-area) - 24px) / 2)}.app-navigation-entry__settings-quota--not-unlimited[data-v-6ed9379e] .app-navigation-entry__name{line-height:1;margin-top:var(--app-navigation-quota-margin)}.app-navigation-entry__settings-quota progress[data-v-6ed9379e]{position:absolute;bottom:var(--app-navigation-quota-margin);margin-inline-start:var(--default-clickable-area);width:calc(100% - 1.5*var(--default-clickable-area))}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/NavigationQuota.vue\"],\"names\":[],\"mappings\":\"AAEA,uDAEC,+EAAA,CAEA,kGACC,aAAA,CACA,6CAAA,CAGD,gEACC,iBAAA,CACA,yCAAA,CACA,iDAAA,CACA,oDAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.toast-loading-icon{margin-inline-start:-4px;min-width:26px}.app-content[data-v-0d5ddd73]{display:flex;overflow:hidden;flex-direction:column;max-height:100%;position:relative !important}.files-list__header[data-v-0d5ddd73]{display:flex;align-items:center;flex:0 0;max-width:100%;margin-block:var(--app-navigation-padding, 4px);margin-inline:calc(var(--default-clickable-area, 44px) + 2*var(--app-navigation-padding, 4px)) var(--app-navigation-padding, 4px)}.files-list__header--public[data-v-0d5ddd73]{margin-inline:0 var(--app-navigation-padding, 4px)}.files-list__header>*[data-v-0d5ddd73]{flex:0 0}.files-list__header-share-button[data-v-0d5ddd73]{color:var(--color-text-maxcontrast) !important}.files-list__header-share-button--shared[data-v-0d5ddd73]{color:var(--color-main-text) !important}.files-list__empty-view-wrapper[data-v-0d5ddd73]{display:flex;height:100%}.files-list__refresh-icon[data-v-0d5ddd73]{flex:0 0 var(--default-clickable-area);width:var(--default-clickable-area);height:var(--default-clickable-area)}.files-list__loading-icon[data-v-0d5ddd73]{margin:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesList.vue\"],\"names\":[],\"mappings\":\"AACA,oBAEC,wBAAA,CAEA,cAAA,CAGD,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CACA,4BAAA,CAIA,qCACC,YAAA,CACA,kBAAA,CAEA,QAAA,CACA,cAAA,CAEA,+CAAA,CACA,iIAAA,CAEA,6CAEC,kDAAA,CAGD,uCAGC,QAAA,CAGD,kDACC,8CAAA,CAEA,0DACC,uCAAA,CAKH,iDACC,YAAA,CACA,WAAA,CAGD,2CACC,sCAAA,CACA,mCAAA,CACA,oCAAA,CAGD,2CACC,WAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-navigation[data-v-008142f0] .app-navigation-entry.active .button-vue.icon-collapse:not(:hover){color:var(--color-primary-element-text)}.app-navigation>ul.app-navigation__list[data-v-008142f0]{padding-bottom:var(--default-grid-baseline, 4px)}.app-navigation-entry__settings[data-v-008142f0]{height:auto !important;overflow:hidden !important;padding-top:0 !important;flex:0 0 auto}.files-navigation__list[data-v-008142f0]{height:100%}.files-navigation[data-v-008142f0] .app-navigation__content > ul.app-navigation__list{will-change:scroll-position}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Navigation.vue\"],\"names\":[],\"mappings\":\"AAEC,oGACC,uCAAA,CAGD,yDAEC,gDAAA,CAIF,iDACC,sBAAA,CACA,0BAAA,CACA,wBAAA,CAEA,aAAA,CAIA,yCACC,WAAA,CAGD,sFACC,2BAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.setting-link[data-v-23881b2c]:hover{text-decoration:underline}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Settings.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,yBAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import { o as logger } from \"./chunks/dav-DxfiR0wZ.mjs\";\nimport { q, F, s, N, t, P, c, l, m, n, a, g, p, b, r, d, h, f, k, j, e, i } from \"./chunks/dav-DxfiR0wZ.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"path\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nvar NewMenuEntryCategory = /* @__PURE__ */ ((NewMenuEntryCategory2) => {\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"UploadFromDevice\"] = 0] = \"UploadFromDevice\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"CreateNew\"] = 1] = \"CreateNew\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"Other\"] = 2] = \"Other\";\n return NewMenuEntryCategory2;\n})(NewMenuEntryCategory || {});\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n entry.category = entry.category ?? 1;\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(context) {\n if (context) {\n return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex((entry) => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass) || !entry.handler) {\n throw new Error(\"Invalid entry\");\n }\n if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n throw new Error(\"Invalid id or displayName property\");\n }\n if (entry.iconClass && typeof entry.iconClass !== \"string\" || entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n throw new Error(\"Invalid icon provided\");\n }\n if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (typeof entry.handler !== \"function\") {\n throw new Error(\"Invalid handler property\");\n }\n if (\"order\" in entry && typeof entry.order !== \"number\") {\n throw new Error(\"Invalid order property\");\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error(\"Duplicate entry\");\n }\n }\n}\nconst getNewFileMenu = function() {\n if (typeof window._nc_newfilemenu === \"undefined\") {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug(\"NewFileMenu initialized\");\n }\n return window._nc_newfilemenu;\n};\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n throw new Error(\"Invalid execBatch function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error(\"Invalid default\");\n }\n if (\"inline\" in action && typeof action.inline !== \"function\") {\n throw new Error(\"Invalid inline function\");\n }\n if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n throw new Error(\"Invalid renderInline function\");\n }\n }\n}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n if (window._nc_fileactions.find((search) => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nvar InvalidFilenameErrorReason = /* @__PURE__ */ ((InvalidFilenameErrorReason2) => {\n InvalidFilenameErrorReason2[\"ReservedName\"] = \"reserved name\";\n InvalidFilenameErrorReason2[\"Character\"] = \"character\";\n InvalidFilenameErrorReason2[\"Extension\"] = \"extension\";\n return InvalidFilenameErrorReason2;\n})(InvalidFilenameErrorReason || {});\nclass InvalidFilenameError extends Error {\n constructor(options) {\n super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n }\n /**\n * The filename that was validated\n */\n get filename() {\n return this.cause.filename;\n }\n /**\n * Reason why the validation failed\n */\n get reason() {\n return this.cause.reason;\n }\n /**\n * Part of the filename that caused this error\n */\n get segment() {\n return this.cause.segment;\n }\n}\nfunction validateFilename(filename) {\n const capabilities = getCapabilities().files;\n const forbiddenCharacters = capabilities.forbidden_filename_characters ?? window._oc_config?.forbidden_filenames_characters ?? [\"/\", \"\\\\\"];\n for (const character of forbiddenCharacters) {\n if (filename.includes(character)) {\n throw new InvalidFilenameError({ segment: character, reason: \"character\", filename });\n }\n }\n filename = filename.toLocaleLowerCase();\n const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n if (forbiddenFilenames.includes(filename)) {\n throw new InvalidFilenameError({\n filename,\n segment: filename,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const endOfBasename = filename.indexOf(\".\", 1);\n const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n if (forbiddenFilenameBasenames.includes(basename2)) {\n throw new InvalidFilenameError({\n filename,\n segment: basename2,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [\".part\", \".filepart\"];\n for (const extension of forbiddenFilenameExtensions) {\n if (filename.length > extension.length && filename.endsWith(extension)) {\n throw new InvalidFilenameError({ segment: extension, reason: \"extension\", filename });\n }\n }\n}\nfunction isFilenameValid(filename) {\n try {\n validateFilename(filename);\n return true;\n } catch (error) {\n if (error instanceof InvalidFilenameError) {\n return false;\n }\n throw error;\n }\n}\nfunction getUniqueName(name, otherNames, options) {\n const opts = {\n suffix: (n2) => `(${n2})`,\n ignoreFileExtension: false,\n ...options\n };\n let newName = name;\n let i2 = 1;\n while (otherNames.includes(newName)) {\n const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n const base = basename(name, ext);\n newName = `${base} ${opts.suffix(i2++)}${ext}`;\n }\n return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n binaryPrefixes = binaryPrefixes && !base1000;\n if (typeof size === \"string\") {\n size = Number(size);\n }\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n } else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n try {\n value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch (e2) {\n return null;\n }\n const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (match === null || match[1] === \".\" || match[1] === \"\") {\n return null;\n }\n const bytesArray = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n };\n const decimalString = `${match[1]}`;\n const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n if (value instanceof Date) {\n return value.toISOString();\n }\n return String(value);\n}\nfunction orderBy(collection, identifiers2, orders) {\n identifiers2 = identifiers2 ?? [(value) => value];\n orders = orders ?? [];\n const sorting = identifiers2.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n const collator = Intl.Collator(\n [getLanguage(), getCanonicalLocale()],\n {\n // handle 10 as ten and not as one-zero\n numeric: true,\n usage: \"sort\"\n }\n );\n return [...collection].sort((a2, b2) => {\n for (const [index, identifier] of identifiers2.entries()) {\n const value = collator.compare(stringify(identifier(a2)), stringify(identifier(b2)));\n if (value !== 0) {\n return value * sorting[index];\n }\n }\n return 0;\n });\n}\nvar FilesSortingMode = /* @__PURE__ */ ((FilesSortingMode2) => {\n FilesSortingMode2[\"Name\"] = \"basename\";\n FilesSortingMode2[\"Modified\"] = \"mtime\";\n FilesSortingMode2[\"Size\"] = \"size\";\n return FilesSortingMode2;\n})(FilesSortingMode || {});\nfunction sortNodes(nodes, options = {}) {\n const sortingOptions = {\n // Default to sort by name\n sortingMode: \"basename\",\n // Default to sort ascending\n sortingOrder: \"asc\",\n ...options\n };\n const basename2 = (name) => name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n const identifiers2 = [\n // 1: Sort favorites first if enabled\n ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n // 2: Sort folders first if sorting by name\n ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n // 3: Use sorting mode if NOT basename (to be able to use display name too)\n ...sortingOptions.sortingMode !== \"basename\" ? [(v) => v[sortingOptions.sortingMode]] : [],\n // 4: Use display name if available, fallback to name\n (v) => basename2(v.displayname || v.attributes?.displayname || v.basename),\n // 5: Finally, use basename if all previous sorting methods failed\n (v) => v.basename\n ];\n const orders = [\n // (for 1): always sort favorites before normal files\n ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n // (for 2): always sort folders before files\n ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n ...sortingOptions.sortingMode === \"mtime\" ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n // (also for 3 so make sure not to conflict with 2 and 3)\n ...sortingOptions.sortingMode !== \"mtime\" && sortingOptions.sortingMode !== \"basename\" ? [sortingOptions.sortingOrder] : [],\n // for 4: use configured sorting direction\n sortingOptions.sortingOrder,\n // for 5: use configured sorting direction\n sortingOptions.sortingOrder\n ];\n return orderBy(nodes, identifiers2, orders);\n}\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\n */\n remove(id) {\n const index = this._views.findIndex((view) => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst isValidColumn = function(column) {\n if (!column.id || typeof column.id !== \"string\") {\n throw new Error(\"A column id is required\");\n }\n if (!column.title || typeof column.title !== \"string\") {\n throw new Error(\"A column title is required\");\n }\n if (!column.render || typeof column.render !== \"function\") {\n throw new Error(\"A render function is required\");\n }\n if (column.sort && typeof column.sort !== \"function\") {\n throw new Error(\"Column sortFunction must be a function\");\n }\n if (column.summary && typeof column.summary !== \"function\") {\n throw new Error(\"Column summary must be a function\");\n }\n return true;\n};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar validator$2 = {};\nvar util$3 = {};\n(function(exports) {\n const nameStartChar = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n const nameChar = nameStartChar + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n const nameRegexp = \"[\" + nameStartChar + \"][\" + nameChar + \"]*\";\n const regexName = new RegExp(\"^\" + nameRegexp + \"$\");\n const getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n };\n const isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === \"undefined\");\n };\n exports.isExist = function(v) {\n return typeof v !== \"undefined\";\n };\n exports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n };\n exports.merge = function(target, a2, arrayMode) {\n if (a2) {\n const keys = Object.keys(a2);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n if (arrayMode === \"strict\") {\n target[keys[i2]] = [a2[keys[i2]]];\n } else {\n target[keys[i2]] = a2[keys[i2]];\n }\n }\n }\n };\n exports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return \"\";\n }\n };\n exports.isName = isName;\n exports.getAllMatches = getAllMatches;\n exports.nameRegexp = nameRegexp;\n})(util$3);\nconst util$2 = util$3;\nconst defaultOptions$2 = {\n allowBooleanAttributes: false,\n //A tag can have attributes without any value\n unpairedTags: []\n};\nvalidator$2.validate = function(xmlData, options) {\n options = Object.assign({}, defaultOptions$2, options);\n const tags = [];\n let tagFound = false;\n let reachedRoot = false;\n if (xmlData[0] === \"\\uFEFF\") {\n xmlData = xmlData.substr(1);\n }\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && xmlData[i2 + 1] === \"?\") {\n i2 += 2;\n i2 = readPI(xmlData, i2);\n if (i2.err) return i2;\n } else if (xmlData[i2] === \"<\") {\n let tagStartPos = i2;\n i2++;\n if (xmlData[i2] === \"!\") {\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i2] === \"/\") {\n closingTag = true;\n i2++;\n }\n let tagName = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== \">\" && xmlData[i2] !== \" \" && xmlData[i2] !== \"\t\" && xmlData[i2] !== \"\\n\" && xmlData[i2] !== \"\\r\"; i2++) {\n tagName += xmlData[i2];\n }\n tagName = tagName.trim();\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substring(0, tagName.length - 1);\n i2--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject(\"InvalidTag\", msg, getLineNumberForPosition(xmlData, i2));\n }\n const result = readAttributeStr(xmlData, i2);\n if (result === false) {\n return getErrorObject(\"InvalidAttr\", \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i2));\n }\n let attrStr = result.value;\n i2 = result.index;\n if (attrStr[attrStr.length - 1] === \"/\") {\n const attrStrStart = i2 - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n } else {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i2));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject(\n \"InvalidTag\",\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos)\n );\n }\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i2 - attrStr.length + isValid.err.line));\n }\n if (reachedRoot === true) {\n return getErrorObject(\"InvalidXml\", \"Multiple possible root nodes found.\", getLineNumberForPosition(xmlData, i2));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) ;\n else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n for (i2++; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"!\") {\n i2++;\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else if (xmlData[i2 + 1] === \"?\") {\n i2 = readPI(xmlData, ++i2);\n if (i2.err) return i2;\n } else {\n break;\n }\n } else if (xmlData[i2] === \"&\") {\n const afterAmp = validateAmpersand(xmlData, i2);\n if (afterAmp == -1)\n return getErrorObject(\"InvalidChar\", \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i2));\n i2 = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i2])) {\n return getErrorObject(\"InvalidXml\", \"Extra text at the end\", getLineNumberForPosition(xmlData, i2));\n }\n }\n }\n if (xmlData[i2] === \"<\") {\n i2--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i2])) {\n continue;\n }\n return getErrorObject(\"InvalidChar\", \"char '\" + xmlData[i2] + \"' is not expected.\", getLineNumberForPosition(xmlData, i2));\n }\n }\n if (!tagFound) {\n return getErrorObject(\"InvalidXml\", \"Start tag expected.\", 1);\n } else if (tags.length == 1) {\n return getErrorObject(\"InvalidTag\", \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject(\"InvalidXml\", \"Invalid '\" + JSON.stringify(tags.map((t3) => t3.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n }\n return true;\n};\nfunction isWhiteSpace(char) {\n return char === \" \" || char === \"\t\" || char === \"\\n\" || char === \"\\r\";\n}\nfunction readPI(xmlData, i2) {\n const start = i2;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] == \"?\" || xmlData[i2] == \" \") {\n const tagname = xmlData.substr(start, i2 - start);\n if (i2 > 5 && tagname === \"xml\") {\n return getErrorObject(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", getLineNumberForPosition(xmlData, i2));\n } else if (xmlData[i2] == \"?\" && xmlData[i2 + 1] == \">\") {\n i2++;\n break;\n } else {\n continue;\n }\n }\n }\n return i2;\n}\nfunction readCommentAndCDATA(xmlData, i2) {\n if (xmlData.length > i2 + 5 && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \"-\") {\n for (i2 += 3; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"-\" && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n } else if (xmlData.length > i2 + 8 && xmlData[i2 + 1] === \"D\" && xmlData[i2 + 2] === \"O\" && xmlData[i2 + 3] === \"C\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"Y\" && xmlData[i2 + 6] === \"P\" && xmlData[i2 + 7] === \"E\") {\n let angleBracketsCount = 1;\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n angleBracketsCount++;\n } else if (xmlData[i2] === \">\") {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (xmlData.length > i2 + 9 && xmlData[i2 + 1] === \"[\" && xmlData[i2 + 2] === \"C\" && xmlData[i2 + 3] === \"D\" && xmlData[i2 + 4] === \"A\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"A\" && xmlData[i2 + 7] === \"[\") {\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"]\" && xmlData[i2 + 1] === \"]\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n }\n return i2;\n}\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\nfunction readAttributeStr(xmlData, i2) {\n let attrStr = \"\";\n let startChar = \"\";\n let tagClosed = false;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === doubleQuote || xmlData[i2] === singleQuote) {\n if (startChar === \"\") {\n startChar = xmlData[i2];\n } else if (startChar !== xmlData[i2]) ;\n else {\n startChar = \"\";\n }\n } else if (xmlData[i2] === \">\") {\n if (startChar === \"\") {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i2];\n }\n if (startChar !== \"\") {\n return false;\n }\n return {\n value: attrStr,\n index: i2,\n tagClosed\n };\n}\nconst validAttrStrRegxp = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\nfunction validateAttributeString(attrStr, options) {\n const matches = util$2.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n for (let i2 = 0; i2 < matches.length; i2++) {\n if (matches[i2][1].length === 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] !== void 0 && matches[i2][4] === void 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' is without value.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] === void 0 && !options.allowBooleanAttributes) {\n return getErrorObject(\"InvalidAttr\", \"boolean attribute '\" + matches[i2][2] + \"' is not allowed.\", getPositionFromMatch(matches[i2]));\n }\n const attrName = matches[i2][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i2]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n attrNames[attrName] = 1;\n } else {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i2]));\n }\n }\n return true;\n}\nfunction validateNumberAmpersand(xmlData, i2) {\n let re2 = /\\d/;\n if (xmlData[i2] === \"x\") {\n i2++;\n re2 = /[\\da-fA-F]/;\n }\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \";\")\n return i2;\n if (!xmlData[i2].match(re2))\n break;\n }\n return -1;\n}\nfunction validateAmpersand(xmlData, i2) {\n i2++;\n if (xmlData[i2] === \";\")\n return -1;\n if (xmlData[i2] === \"#\") {\n i2++;\n return validateNumberAmpersand(xmlData, i2);\n }\n let count = 0;\n for (; i2 < xmlData.length; i2++, count++) {\n if (xmlData[i2].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i2] === \";\")\n break;\n return -1;\n }\n return i2;\n}\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col\n }\n };\n}\nfunction validateAttrName(attrName) {\n return util$2.isName(attrName);\n}\nfunction validateTagName(tagname) {\n return util$2.isName(tagname);\n}\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\nvar OptionsBuilder = {};\nconst defaultOptions$1 = {\n preserveOrder: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n removeNSPrefix: false,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true,\n //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val2) {\n return val2;\n },\n attributeValueProcessor: function(attrName, val2) {\n return val2;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs) {\n return tagName;\n }\n // skipEmptyListItem: false\n};\nconst buildOptions$1 = function(options) {\n return Object.assign({}, defaultOptions$1, options);\n};\nOptionsBuilder.buildOptions = buildOptions$1;\nOptionsBuilder.defaultOptions = defaultOptions$1;\nclass XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = [];\n this[\":@\"] = {};\n }\n add(key, val2) {\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val2 });\n }\n addChild(node) {\n if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n }\n}\nvar xmlNode$1 = XmlNode;\nconst util$1 = util$3;\nfunction readDocType$1(xmlData, i2) {\n const entities = {};\n if (xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"C\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"Y\" && xmlData[i2 + 7] === \"P\" && xmlData[i2 + 8] === \"E\") {\n i2 = i2 + 9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && !comment) {\n if (hasBody && isEntity(xmlData, i2)) {\n i2 += 7;\n [entityName, val, i2] = readEntityExp(xmlData, i2 + 1);\n if (val.indexOf(\"&\") === -1)\n entities[validateEntityName(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n };\n } else if (hasBody && isElement(xmlData, i2)) i2 += 8;\n else if (hasBody && isAttlist(xmlData, i2)) i2 += 8;\n else if (hasBody && isNotation(xmlData, i2)) i2 += 9;\n else if (isComment) comment = true;\n else throw new Error(\"Invalid DOCTYPE\");\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i2] === \">\") {\n if (comment) {\n if (xmlData[i2 - 1] === \"-\" && xmlData[i2 - 2] === \"-\") {\n comment = false;\n angleBracketsCount--;\n }\n } else {\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n } else if (xmlData[i2] === \"[\") {\n hasBody = true;\n } else {\n exp += xmlData[i2];\n }\n }\n if (angleBracketsCount !== 0) {\n throw new Error(`Unclosed DOCTYPE`);\n }\n } else {\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return { entities, i: i2 };\n}\nfunction readEntityExp(xmlData, i2) {\n let entityName2 = \"\";\n for (; i2 < xmlData.length && (xmlData[i2] !== \"'\" && xmlData[i2] !== '\"'); i2++) {\n entityName2 += xmlData[i2];\n }\n entityName2 = entityName2.trim();\n if (entityName2.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n const startChar = xmlData[i2++];\n let val2 = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== startChar; i2++) {\n val2 += xmlData[i2];\n }\n return [entityName2, val2, i2];\n}\nfunction isComment(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"-\" && xmlData[i2 + 3] === \"-\") return true;\n return false;\n}\nfunction isEntity(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"N\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"I\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"Y\") return true;\n return false;\n}\nfunction isElement(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"L\" && xmlData[i2 + 4] === \"E\" && xmlData[i2 + 5] === \"M\" && xmlData[i2 + 6] === \"E\" && xmlData[i2 + 7] === \"N\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n}\nfunction isAttlist(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"A\" && xmlData[i2 + 3] === \"T\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"L\" && xmlData[i2 + 6] === \"I\" && xmlData[i2 + 7] === \"S\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n}\nfunction isNotation(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"N\" && xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"A\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"I\" && xmlData[i2 + 8] === \"O\" && xmlData[i2 + 9] === \"N\") return true;\n return false;\n}\nfunction validateEntityName(name) {\n if (util$1.isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\nvar DocTypeReader = readDocType$1;\nconst hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\nconst consider = {\n hex: true,\n leadingZeros: true,\n decimalPoint: \".\",\n eNotation: true\n //skipLike: /regex/\n};\nfunction toNumber$1(str, options = {}) {\n options = Object.assign({}, consider, options);\n if (!str || typeof str !== \"string\") return str;\n let trimmedStr = str.trim();\n if (options.skipLike !== void 0 && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n } else {\n const match = numRegex.exec(trimmedStr);\n if (match) {\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]);\n const eNotation = match[4] || match[6];\n if (!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str;\n else if (!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str;\n else {\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if (numStr.search(/[eE]/) !== -1) {\n if (options.eNotation) return num;\n else return str;\n } else if (eNotation) {\n if (options.eNotation) return num;\n else return str;\n } else if (trimmedStr.indexOf(\".\") !== -1) {\n if (numStr === \"0\" && numTrimmedByZeros === \"\") return num;\n else if (numStr === numTrimmedByZeros) return num;\n else if (sign && numStr === \"-\" + numTrimmedByZeros) return num;\n else return str;\n }\n if (leadingZeros) {\n if (numTrimmedByZeros === numStr) return num;\n else if (sign + numTrimmedByZeros === numStr) return num;\n else return str;\n }\n if (trimmedStr === numStr) return num;\n else if (trimmedStr === sign + numStr) return num;\n return str;\n }\n } else {\n return str;\n }\n }\n}\nfunction trimZeros(numStr) {\n if (numStr && numStr.indexOf(\".\") !== -1) {\n numStr = numStr.replace(/0+$/, \"\");\n if (numStr === \".\") numStr = \"0\";\n else if (numStr[0] === \".\") numStr = \"0\" + numStr;\n else if (numStr[numStr.length - 1] === \".\") numStr = numStr.substr(0, numStr.length - 1);\n return numStr;\n }\n return numStr;\n}\nvar strnum = toNumber$1;\nfunction getIgnoreAttributesFn$2(ignoreAttributes2) {\n if (typeof ignoreAttributes2 === \"function\") {\n return ignoreAttributes2;\n }\n if (Array.isArray(ignoreAttributes2)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes2) {\n if (typeof pattern === \"string\" && attrName === pattern) {\n return true;\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true;\n }\n }\n };\n }\n return () => false;\n}\nvar ignoreAttributes = getIgnoreAttributesFn$2;\nconst util = util$3;\nconst xmlNode = xmlNode$1;\nconst readDocType = DocTypeReader;\nconst toNumber = strnum;\nconst getIgnoreAttributesFn$1 = ignoreAttributes;\nlet OrderedObjParser$1 = class OrderedObjParser {\n constructor(options) {\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n \"quot\": { regex: /&(quot|#34|#x22);/g, val: '\"' }\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 16)) }\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue$1;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn$1(this.options.ignoreAttributes);\n }\n};\nfunction addExternalEntities(externalEntities) {\n const entKeys = Object.keys(externalEntities);\n for (let i2 = 0; i2 < entKeys.length; i2++) {\n const ent = entKeys[i2];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\" + ent + \";\", \"g\"),\n val: externalEntities[ent]\n };\n }\n}\nfunction parseTextData(val2, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val2 !== void 0) {\n if (this.options.trimValues && !dontTrim) {\n val2 = val2.trim();\n }\n if (val2.length > 0) {\n if (!escapeEntities) val2 = this.replaceEntitiesValue(val2);\n const newval = this.options.tagValueProcessor(tagName, val2, jPath, hasAttributes, isLeafNode);\n if (newval === null || newval === void 0) {\n return val2;\n } else if (typeof newval !== typeof val2 || newval !== val2) {\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val2, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val2.trim();\n if (trimmedVal === val2) {\n return parseValue(val2, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val2;\n }\n }\n }\n }\n}\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(\":\");\n const prefix = tagname.charAt(0) === \"/\" ? \"/\" : \"\";\n if (tags[0] === \"xmlns\") {\n return \"\";\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\nconst attrsRegx = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === \"string\") {\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length;\n const attrs = {};\n for (let i2 = 0; i2 < len; i2++) {\n const attrName = this.resolveNameSpace(matches[i2][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue;\n }\n let oldVal = matches[i2][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if (aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== void 0) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if (newVal === null || newVal === void 0) {\n attrs[aName] = oldVal;\n } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n attrs[aName] = newVal;\n } else {\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n}\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\");\n const xmlObj = new xmlNode(\"!xml\");\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n const ch = xmlData[i2];\n if (ch === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, \"Closing Tag is not closed.\");\n let tagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (this.options.removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n }\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode) {\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\") + 1);\n if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n throw new Error(`Unpaired tag can not be used as closing tag: </${tagName}>`);\n }\n let propIndex = 0;\n if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n propIndex = jPath.lastIndexOf(\".\", jPath.lastIndexOf(\".\") - 1);\n this.tagsNodeStack.pop();\n } else {\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n currentNode = this.tagsNodeStack.pop();\n textData = \"\";\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n let tagData = readTagExp(xmlData, i2, false, \"?>\");\n if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if (this.options.ignoreDeclaration && tagData.tagName === \"?xml\" || this.options.ignorePiTags) ;\n else {\n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n }\n i2 = tagData.closeIndex + 1;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const endIndex = findClosingIndex(xmlData, \"-->\", i2 + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const comment = xmlData.substring(i2 + 4, endIndex - 2);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n }\n i2 = endIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"!D\") {\n const result = readDocType(xmlData, i2);\n this.docTypeEntities = result.entities;\n i2 = result.i;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i2 + 9, closeIndex);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n let val2 = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if (val2 == void 0) val2 = \"\";\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val2);\n }\n i2 = closeIndex + 2;\n } else {\n let result = readTagExp(xmlData, i2, this.options.removeNSPrefix);\n let tagName = result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode && textData) {\n if (currentNode.tagname !== \"!xml\") {\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n const lastTag = currentNode;\n if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if (tagName !== xmlObj.tagname) {\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i2 = result.closeIndex;\n } else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n i2 = result.closeIndex;\n } else {\n const result2 = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if (!result2) throw new Error(`Unexpected end of ${rawTagName}`);\n i2 = result2.i;\n tagContent = result2.tagContent;\n }\n const childNode = new xmlNode(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if (tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n this.addChild(currentNode, childNode, jPath);\n } else {\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n const childNode = new xmlNode(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n } else {\n const childNode = new xmlNode(tagName);\n this.tagsNodeStack.push(currentNode);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n currentNode = childNode;\n }\n textData = \"\";\n i2 = closeIndex;\n }\n }\n } else {\n textData += xmlData[i2];\n }\n }\n return xmlObj.child;\n};\nfunction addChild(currentNode, childNode, jPath) {\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"]);\n if (result === false) ;\n else if (typeof result === \"string\") {\n childNode.tagname = result;\n currentNode.addChild(childNode);\n } else {\n currentNode.addChild(childNode);\n }\n}\nconst replaceEntitiesValue$1 = function(val2) {\n if (this.options.processEntities) {\n for (let entityName2 in this.docTypeEntities) {\n const entity = this.docTypeEntities[entityName2];\n val2 = val2.replace(entity.regx, entity.val);\n }\n for (let entityName2 in this.lastEntities) {\n const entity = this.lastEntities[entityName2];\n val2 = val2.replace(entity.regex, entity.val);\n }\n if (this.options.htmlEntities) {\n for (let entityName2 in this.htmlEntities) {\n const entity = this.htmlEntities[entityName2];\n val2 = val2.replace(entity.regex, entity.val);\n }\n }\n val2 = val2.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return val2;\n};\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) {\n if (isLeafNode === void 0) isLeafNode = Object.keys(currentNode.child).length === 0;\n textData = this.parseTextData(\n textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode\n );\n if (textData !== void 0 && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\nfunction isItStopNode(stopNodes, jPath, currentTagName) {\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if (allNodesExp === stopNodeExp || jPath === stopNodeExp) return true;\n }\n return false;\n}\nfunction tagExpWithClosingIndex(xmlData, i2, closingChar = \">\") {\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i2; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index\n };\n }\n } else {\n return {\n data: tagExp,\n index\n };\n }\n } else if (ch === \"\t\") {\n ch = \" \";\n }\n tagExp += ch;\n }\n}\nfunction findClosingIndex(xmlData, str, i2, errMsg) {\n const closingIndex = xmlData.indexOf(str, i2);\n if (closingIndex === -1) {\n throw new Error(errMsg);\n } else {\n return closingIndex + str.length - 1;\n }\n}\nfunction readTagExp(xmlData, i2, removeNSPrefix, closingChar = \">\") {\n const result = tagExpWithClosingIndex(xmlData, i2 + 1, closingChar);\n if (!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n return {\n tagName,\n tagExp,\n closeIndex,\n attrExpPresent,\n rawTagName\n };\n}\nfunction readStopNodeData(xmlData, tagName, i2) {\n const startIndex = i2;\n let openTagCount = 1;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (closeTagName === tagName) {\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i2),\n i: closeIndex\n };\n }\n }\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n const closeIndex = findClosingIndex(xmlData, \"?>\", i2 + 1, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const closeIndex = findClosingIndex(xmlData, \"-->\", i2 + 3, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"StopNode is not closed.\") - 2;\n i2 = closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i2, \">\");\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n openTagCount++;\n }\n i2 = tagData.closeIndex;\n }\n }\n }\n }\n}\nfunction parseValue(val2, shouldParse, options) {\n if (shouldParse && typeof val2 === \"string\") {\n const newval = val2.trim();\n if (newval === \"true\") return true;\n else if (newval === \"false\") return false;\n else return toNumber(val2, options);\n } else {\n if (util.isExist(val2)) {\n return val2;\n } else {\n return \"\";\n }\n }\n}\nvar OrderedObjParser_1 = OrderedObjParser$1;\nvar node2json = {};\nfunction prettify$1(node, options) {\n return compress(node, options);\n}\nfunction compress(arr, options, jPath) {\n let text;\n const compressedObj = {};\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const property = propName$1(tagObj);\n let newJpath = \"\";\n if (jPath === void 0) newJpath = property;\n else newJpath = jPath + \".\" + property;\n if (property === options.textNodeName) {\n if (text === void 0) text = tagObj[property];\n else text += \"\" + tagObj[property];\n } else if (property === void 0) {\n continue;\n } else if (tagObj[property]) {\n let val2 = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val2, options);\n if (tagObj[\":@\"]) {\n assignAttributes(val2, tagObj[\":@\"], newJpath, options);\n } else if (Object.keys(val2).length === 1 && val2[options.textNodeName] !== void 0 && !options.alwaysCreateTextNode) {\n val2 = val2[options.textNodeName];\n } else if (Object.keys(val2).length === 0) {\n if (options.alwaysCreateTextNode) val2[options.textNodeName] = \"\";\n else val2 = \"\";\n }\n if (compressedObj[property] !== void 0 && compressedObj.hasOwnProperty(property)) {\n if (!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [compressedObj[property]];\n }\n compressedObj[property].push(val2);\n } else {\n if (options.isArray(property, newJpath, isLeaf)) {\n compressedObj[property] = [val2];\n } else {\n compressedObj[property] = val2;\n }\n }\n }\n }\n if (typeof text === \"string\") {\n if (text.length > 0) compressedObj[options.textNodeName] = text;\n } else if (text !== void 0) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\nfunction propName$1(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (key !== \":@\") return key;\n }\n}\nfunction assignAttributes(obj, attrMap, jpath, options) {\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n const atrrName = keys[i2];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [attrMap[atrrName]];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\nfunction isLeafTag(obj, options) {\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n if (propCount === 0) {\n return true;\n }\n if (propCount === 1 && (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)) {\n return true;\n }\n return false;\n}\nnode2json.prettify = prettify$1;\nconst { buildOptions } = OptionsBuilder;\nconst OrderedObjParser2 = OrderedObjParser_1;\nconst { prettify } = node2json;\nconst validator$1 = validator$2;\nlet XMLParser$1 = class XMLParser {\n constructor(options) {\n this.externalEntities = {};\n this.options = buildOptions(options);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData, validationOption) {\n if (typeof xmlData === \"string\") ;\n else if (xmlData.toString) {\n xmlData = xmlData.toString();\n } else {\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n }\n if (validationOption) {\n if (validationOption === true) validationOption = {};\n const result = validator$1.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`);\n }\n }\n const orderedObjParser = new OrderedObjParser2(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if (this.options.preserveOrder || orderedResult === void 0) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value) {\n if (value.indexOf(\"&\") !== -1) {\n throw new Error(\"Entity value can't have '&'\");\n } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '&#xD;'\");\n } else if (value === \"&\") {\n throw new Error(\"An entity with value '&' is not permitted\");\n } else {\n this.externalEntities[key] = value;\n }\n }\n};\nvar XMLParser_1 = XMLParser$1;\nconst EOL = \"\\n\";\nfunction toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const tagName = propName(tagObj);\n if (tagName === void 0) continue;\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName;\n else newJPath = `${jPath}.${tagName}`;\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += `<![CDATA[${tagObj[tagName][0][options.textNodeName]}]]>`;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + `<!--${tagObj[tagName][0][options.textNodeName]}-->`;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr2 = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\";\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr2}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}</${tagName}>`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"</\"))) {\n xmlStr += indentation + options.indentBy + tagValue + indentation;\n } else {\n xmlStr += tagValue;\n }\n xmlStr += `</${tagName}>`;\n }\n isPreviousElementTag = true;\n }\n return xmlStr;\n}\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n}\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i2 = 0; i2 < options.entities.length; i2++) {\n const entity = options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nvar orderedJs2Xml = toXml;\nconst buildFromOrderedJs = orderedJs2Xml;\nconst getIgnoreAttributesFn = ignoreAttributes;\nconst defaultOptions = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: \" \",\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a2) {\n return a2;\n },\n attributeValueProcessor: function(attrName, a2) {\n return a2;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&amp;\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \"&gt;\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"&lt;\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"&apos;\" },\n { regex: new RegExp('\"', \"g\"), val: \"&quot;\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function() {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n this.processTextOrObjNode = processTextOrObjNode;\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = \">\\n\";\n this.newLine = \"\\n\";\n } else {\n this.indentate = function() {\n return \"\";\n };\n this.tagEndChar = \">\";\n this.newLine = \"\";\n }\n}\nBuilder.prototype.build = function(jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n };\n }\n return this.j2x(jObj, 0, []).val;\n }\n};\nBuilder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = \"\";\n let val2 = \"\";\n const jPath = ajPath.join(\".\");\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === \"undefined\") {\n if (this.isAttribute(key)) {\n val2 += \"\";\n }\n } else if (jObj[key] === null) {\n if (this.isAttribute(key)) {\n val2 += \"\";\n } else if (key[0] === \"?\") {\n val2 += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n } else {\n val2 += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n }\n } else if (jObj[key] instanceof Date) {\n val2 += this.buildTextValNode(jObj[key], key, \"\", level);\n } else if (typeof jObj[key] !== \"object\") {\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, \"\" + jObj[key]);\n } else if (!attr) {\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, \"\" + jObj[key]);\n val2 += this.replaceEntitiesValue(newval);\n } else {\n val2 += this.buildTextValNode(jObj[key], key, \"\", level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j2 = 0; j2 < arrLen; j2++) {\n const item = jObj[key][j2];\n if (typeof item === \"undefined\") ;\n else if (item === null) {\n if (key[0] === \"?\") val2 += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n else val2 += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n } else if (typeof item === \"object\") {\n if (this.options.oneListGroup) {\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr;\n }\n } else {\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath);\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, \"\", level);\n }\n }\n }\n if (this.options.oneListGroup) {\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val2 += listTagVal;\n } else {\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j2 = 0; j2 < L; j2++) {\n attrStr += this.buildAttrPairStr(Ks[j2], \"\" + jObj[key][Ks[j2]]);\n }\n } else {\n val2 += this.processTextOrObjNode(jObj[key], key, level, ajPath);\n }\n }\n }\n return { attrStr, val: val2 };\n};\nBuilder.prototype.buildAttrPairStr = function(attrName, val2) {\n val2 = this.options.attributeValueProcessor(attrName, \"\" + val2);\n val2 = this.replaceEntitiesValue(val2);\n if (this.options.suppressBooleanAttributes && val2 === \"true\") {\n return \" \" + attrName;\n } else return \" \" + attrName + '=\"' + val2 + '\"';\n};\nfunction processTextOrObjNode(object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== void 0 && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\nBuilder.prototype.buildObjectNode = function(val2, key, attrStr, level) {\n if (val2 === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n else {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n let tagEndExp = \"</\" + key + this.tagEndChar;\n let piClosingChar = \"\";\n if (key[0] === \"?\") {\n piClosingChar = \"?\";\n tagEndExp = \"\";\n }\n if ((attrStr || attrStr === \"\") && val2.indexOf(\"<\") === -1) {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + \">\" + val2 + tagEndExp;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `<!--${val2}-->` + this.newLine;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + this.tagEndChar + val2 + this.indentate(level) + tagEndExp;\n }\n }\n};\nBuilder.prototype.closeTag = function(key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) {\n if (!this.options.suppressUnpairedNode) closeTag = \"/\";\n } else if (this.options.suppressEmptyNode) {\n closeTag = \"/\";\n } else {\n closeTag = `></${key}`;\n }\n return closeTag;\n};\nBuilder.prototype.buildTextValNode = function(val2, key, attrStr, level) {\n if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {\n return this.indentate(level) + `<![CDATA[${val2}]]>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `<!--${val2}-->` + this.newLine;\n } else if (key[0] === \"?\") {\n return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n } else {\n let textValue = this.options.tagValueProcessor(key, val2);\n textValue = this.replaceEntitiesValue(textValue);\n if (textValue === \"\") {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + \">\" + textValue + \"</\" + key + this.tagEndChar;\n }\n }\n};\nBuilder.prototype.replaceEntitiesValue = function(textValue) {\n if (textValue && textValue.length > 0 && this.options.processEntities) {\n for (let i2 = 0; i2 < this.options.entities.length; i2++) {\n const entity = this.options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n};\nfunction indentate(level) {\n return this.options.indentBy.repeat(level);\n}\nfunction isAttribute(name) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n}\nvar json2xml = Builder;\nconst validator = validator$2;\nconst XMLParser2 = XMLParser_1;\nconst XMLBuilder = json2xml;\nvar fxp = {\n XMLParser: XMLParser2,\n XMLValidator: validator,\n XMLBuilder\n};\nfunction isSvg(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n }\n string = string.trim();\n if (string.length === 0) {\n return false;\n }\n if (fxp.XMLValidator.validate(string) !== true) {\n return false;\n }\n let jsonObject;\n const parser = new fxp.XMLParser();\n try {\n jsonObject = parser.parse(string);\n } catch {\n return false;\n }\n if (!jsonObject) {\n return false;\n }\n if (!Object.keys(jsonObject).some((x) => x.toLowerCase() === \"svg\")) {\n return false;\n }\n return true;\n}\nclass View {\n _view;\n constructor(view) {\n isValidView(view);\n this._view = view;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(icon) {\n this._view.icon = icon;\n }\n get order() {\n return this._view.order;\n }\n set order(order) {\n this._view.order = order;\n }\n get params() {\n return this._view.params;\n }\n set params(params) {\n this._view.params = params;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(expanded) {\n this._view.expanded = expanded;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n get loadChildViews() {\n return this._view.loadChildViews;\n }\n}\nconst isValidView = function(view) {\n if (!view.id || typeof view.id !== \"string\") {\n throw new Error(\"View id is required and must be a string\");\n }\n if (!view.name || typeof view.name !== \"string\") {\n throw new Error(\"View name is required and must be a string\");\n }\n if (\"caption\" in view && typeof view.caption !== \"string\") {\n throw new Error(\"View caption must be a string\");\n }\n if (!view.getContents || typeof view.getContents !== \"function\") {\n throw new Error(\"View getContents is required and must be a function\");\n }\n if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n throw new Error(\"View icon is required and must be a valid svg string\");\n }\n if (\"order\" in view && typeof view.order !== \"number\") {\n throw new Error(\"View order must be a number\");\n }\n if (view.columns) {\n view.columns.forEach((column) => {\n if (!(column instanceof Column)) {\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }\n });\n }\n if (view.emptyView && typeof view.emptyView !== \"function\") {\n throw new Error(\"View emptyView must be a function\");\n }\n if (view.parent && typeof view.parent !== \"string\") {\n throw new Error(\"View parent must be a string\");\n }\n if (\"sticky\" in view && typeof view.sticky !== \"boolean\") {\n throw new Error(\"View sticky must be a boolean\");\n }\n if (\"expanded\" in view && typeof view.expanded !== \"boolean\") {\n throw new Error(\"View expanded must be a boolean\");\n }\n if (view.defaultSortKey && typeof view.defaultSortKey !== \"string\") {\n throw new Error(\"View defaultSortKey must be a string\");\n }\n if (view.loadChildViews && typeof view.loadChildViews !== \"function\") {\n throw new Error(\"View loadChildViews must be a function\");\n }\n return true;\n};\nconst debug$1 = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n};\nvar debug_1 = debug$1;\nconst SEMVER_SPEC_VERSION = \"2.0.0\";\nconst MAX_LENGTH$1 = 256;\nconst MAX_SAFE_INTEGER$1 = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n9007199254740991;\nconst MAX_SAFE_COMPONENT_LENGTH = 16;\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH$1 - 6;\nconst RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n];\nvar constants = {\n MAX_LENGTH: MAX_LENGTH$1,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n};\nvar re$1 = { exports: {} };\n(function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH: MAX_SAFE_COMPONENT_LENGTH2,\n MAX_SAFE_BUILD_LENGTH: MAX_SAFE_BUILD_LENGTH2,\n MAX_LENGTH: MAX_LENGTH2\n } = constants;\n const debug2 = debug_1;\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const t3 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH2],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH2]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug2(name, index, value);\n t3[name] = index;\n src[index] = value;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t3.NUMERICIDENTIFIER]})\\\\.(${src[t3.NUMERICIDENTIFIER]})\\\\.(${src[t3.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t3.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t3.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t3.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t3.NUMERICIDENTIFIER]}|${src[t3.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t3.NUMERICIDENTIFIERLOOSE]}|${src[t3.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t3.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t3.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t3.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t3.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t3.BUILDIDENTIFIER]}(?:\\\\.${src[t3.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t3.MAINVERSION]}${src[t3.PRERELEASE]}?${src[t3.BUILD]}?`);\n createToken(\"FULL\", `^${src[t3.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t3.MAINVERSIONLOOSE]}${src[t3.PRERELEASELOOSE]}?${src[t3.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t3.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t3.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t3.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t3.XRANGEIDENTIFIER]})(?:\\\\.(${src[t3.XRANGEIDENTIFIER]})(?:\\\\.(${src[t3.XRANGEIDENTIFIER]})(?:${src[t3.PRERELEASE]})?${src[t3.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t3.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t3.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t3.XRANGEIDENTIFIERLOOSE]})(?:${src[t3.PRERELEASELOOSE]})?${src[t3.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t3.GTLT]}\\\\s*${src[t3.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t3.GTLT]}\\\\s*${src[t3.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH2}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH2}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH2}}))?`);\n createToken(\"COERCE\", `${src[t3.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t3.COERCEPLAIN] + `(?:${src[t3.PRERELEASE]})?(?:${src[t3.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t3.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t3.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t3.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t3.LONETILDE]}${src[t3.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t3.LONETILDE]}${src[t3.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t3.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t3.LONECARET]}${src[t3.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t3.LONECARET]}${src[t3.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t3.GTLT]}\\\\s*(${src[t3.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t3.GTLT]}\\\\s*(${src[t3.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t3.GTLT]}\\\\s*(${src[t3.LOOSEPLAIN]}|${src[t3.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t3.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t3.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t3.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t3.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n})(re$1, re$1.exports);\nvar reExports = re$1.exports;\nconst looseOption = Object.freeze({ loose: true });\nconst emptyOpts = Object.freeze({});\nconst parseOptions$1 = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n};\nvar parseOptions_1 = parseOptions$1;\nconst numeric = /^[0-9]+$/;\nconst compareIdentifiers$1 = (a2, b2) => {\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n};\nconst rcompareIdentifiers = (a2, b2) => compareIdentifiers$1(b2, a2);\nvar identifiers = {\n compareIdentifiers: compareIdentifiers$1,\n rcompareIdentifiers\n};\nconst debug = debug_1;\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = constants;\nconst { safeRe: re, t: t2 } = reExports;\nconst parseOptions = parseOptions_1;\nconst { compareIdentifiers } = identifiers;\nlet SemVer$2 = class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m2 = version.trim().match(options.loose ? re[t2.LOOSE] : re[t2.FULL]);\n if (!m2) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m2[1];\n this.minor = +m2[2];\n this.patch = +m2[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m2[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m2[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m2[5] ? m2[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i2 = 0;\n do {\n const a2 = this.prerelease[i2];\n const b2 = other.prerelease[i2];\n debug(\"prerelease compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i2 = 0;\n do {\n const a2 = this.build[i2];\n const b2 = other.build[i2];\n debug(\"build compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i2 = this.prerelease.length;\n while (--i2 >= 0) {\n if (typeof this.prerelease[i2] === \"number\") {\n this.prerelease[i2]++;\n i2 = -2;\n }\n }\n if (i2 === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n};\nvar semver = SemVer$2;\nconst SemVer$1 = semver;\nconst parse$1 = (version, options, throwErrors = false) => {\n if (version instanceof SemVer$1) {\n return version;\n }\n try {\n return new SemVer$1(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n};\nvar parse_1 = parse$1;\nconst parse = parse_1;\nconst valid = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n};\nvar valid_1 = valid;\nconst valid$1 = /* @__PURE__ */ getDefaultExportFromCjs(valid_1);\nconst SemVer2 = semver;\nconst major = (a2, loose) => new SemVer2(a2, loose).major;\nvar major_1 = major;\nconst major$1 = /* @__PURE__ */ getDefaultExportFromCjs(major_1);\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid$1(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major$1(bus2.getVersion()) !== major$1(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, event) {\n this.bus.emit(name, event);\n }\n}\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h2) => h2 !== handler)\n );\n }\n emit(name, event) {\n (this.handlers.get(name) || []).forEach((h2) => {\n try {\n h2(event);\n } catch (e2) {\n console.error(\"could not invoke event listener\", e2);\n }\n });\n }\n}\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, event) {\n getBus().emit(name, event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nconst addNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\nconst removeNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\nconst getNewFileMenuEntries = function(context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context).sort((a2, b2) => {\n if (a2.order !== void 0 && b2.order !== void 0 && a2.order !== b2.order) {\n return a2.order - b2.order;\n }\n return a2.displayName.localeCompare(b2.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n });\n};\nexport {\n Column,\n DefaultType,\n q as File,\n FileAction,\n FileListAction,\n FileListFilter,\n F as FileType,\n FilesSortingMode,\n s as Folder,\n Header,\n InvalidFilenameError,\n InvalidFilenameErrorReason,\n Navigation,\n NewMenuEntryCategory,\n N as Node,\n t as NodeStatus,\n P as Permission,\n View,\n addNewFileMenuEntry,\n c as davGetClient,\n l as davGetDefaultPropfind,\n m as davGetFavoritesReport,\n n as davGetRecentSearch,\n a as davGetRemoteURL,\n g as davGetRootPath,\n p as davParsePermissions,\n b as davRemoteURL,\n r as davResultToNode,\n d as davRootPath,\n h as defaultDavNamespaces,\n f as defaultDavProperties,\n formatFileSize,\n k as getDavNameSpaces,\n j as getDavProperties,\n e as getFavoriteNodes,\n getFileActions,\n getFileListActions,\n getFileListFilters,\n getFileListHeaders,\n getNavigation,\n getNewFileMenuEntries,\n getUniqueName,\n isFilenameValid,\n orderBy,\n parseFileSize,\n i as registerDavProperty,\n registerFileAction,\n registerFileListAction,\n registerFileListFilter,\n registerFileListHeaders,\n removeNewFileMenuEntry,\n sortNodes,\n unregisterFileListFilter,\n validateFilename\n};\n","import '../assets/index-7UBhRcxV.css';\nimport { isPublicShare } from \"@nextcloud/sharing/public\";\nimport Vue, { defineAsyncComponent } from \"vue\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport { Folder, Permission, davRootPath, FileType, davGetClient, davRemoteURL, validateFilename, InvalidFilenameError, getUniqueName, NewMenuEntryCategory, getNewFileMenuEntries } from \"@nextcloud/files\";\nimport { basename, encodePath } from \"@nextcloud/paths\";\nimport { normalize } from \"path\";\nimport axios, { isCancel } from \"@nextcloud/axios\";\nimport PCancelable from \"p-cancelable\";\nimport PQueue from \"p-queue\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport axiosRetry, { exponentialDelay } from \"axios-retry\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport makeEta from \"simple-eta\";\nimport NcActionButton from \"@nextcloud/vue/dist/Components/NcActionButton.js\";\nimport NcActionCaption from \"@nextcloud/vue/dist/Components/NcActionCaption.js\";\nimport NcActionSeparator from \"@nextcloud/vue/dist/Components/NcActionSeparator.js\";\nimport NcActions from \"@nextcloud/vue/dist/Components/NcActions.js\";\nimport NcButton from \"@nextcloud/vue/dist/Components/NcButton.js\";\nimport NcIconSvgWrapper from \"@nextcloud/vue/dist/Components/NcIconSvgWrapper.js\";\nimport NcProgressBar from \"@nextcloud/vue/dist/Components/NcProgressBar.js\";\nimport { spawnDialog, showInfo, showWarning } from \"@nextcloud/dialogs\";\naxiosRetry(axios, { retries: 0 });\nconst uploadData = async function(url, uploadData2, signal, onUploadProgress = () => {\n}, destinationFile = void 0, headers = {}, retries = 5) {\n let data;\n if (uploadData2 instanceof Blob) {\n data = uploadData2;\n } else {\n data = await uploadData2();\n }\n if (destinationFile) {\n headers.Destination = destinationFile;\n }\n if (!headers[\"Content-Type\"]) {\n headers[\"Content-Type\"] = \"application/octet-stream\";\n }\n return await axios.request({\n method: \"PUT\",\n url,\n data,\n signal,\n onUploadProgress,\n headers,\n \"axios-retry\": {\n retries,\n retryDelay: (retryCount, error) => exponentialDelay(retryCount, error, 1e3)\n }\n });\n};\nconst getChunk = function(file, start, length) {\n if (start === 0 && file.size <= length) {\n return Promise.resolve(new Blob([file], { type: file.type || \"application/octet-stream\" }));\n }\n return Promise.resolve(new Blob([file.slice(start, start + length)], { type: \"application/octet-stream\" }));\n};\nconst initChunkWorkspace = async function(destinationFile = void 0, retries = 5) {\n const chunksWorkspace = generateRemoteUrl(`dav/uploads/${getCurrentUser()?.uid}`);\n const hash = [...Array(16)].map(() => Math.floor(Math.random() * 16).toString(16)).join(\"\");\n const tempWorkspace = `web-file-upload-${hash}`;\n const url = `${chunksWorkspace}/${tempWorkspace}`;\n const headers = destinationFile ? { Destination: destinationFile } : void 0;\n await axios.request({\n method: \"MKCOL\",\n url,\n headers,\n \"axios-retry\": {\n retries,\n retryDelay: (retryCount, error) => exponentialDelay(retryCount, error, 1e3)\n }\n });\n return url;\n};\nconst getMaxChunksSize = function(fileSize = void 0) {\n const maxChunkSize = window.OC?.appConfig?.files?.max_chunk_size;\n if (maxChunkSize <= 0) {\n return 0;\n }\n if (!Number(maxChunkSize)) {\n return 10 * 1024 * 1024;\n }\n const minimumChunkSize = Math.max(Number(maxChunkSize), 5 * 1024 * 1024);\n if (fileSize === void 0) {\n return minimumChunkSize;\n }\n return Math.max(minimumChunkSize, Math.ceil(fileSize / 1e4));\n};\nvar Status$1 = /* @__PURE__ */ ((Status2) => {\n Status2[Status2[\"INITIALIZED\"] = 0] = \"INITIALIZED\";\n Status2[Status2[\"UPLOADING\"] = 1] = \"UPLOADING\";\n Status2[Status2[\"ASSEMBLING\"] = 2] = \"ASSEMBLING\";\n Status2[Status2[\"FINISHED\"] = 3] = \"FINISHED\";\n Status2[Status2[\"CANCELLED\"] = 4] = \"CANCELLED\";\n Status2[Status2[\"FAILED\"] = 5] = \"FAILED\";\n return Status2;\n})(Status$1 || {});\nclass Upload {\n _source;\n _file;\n _isChunked;\n _chunks;\n _size;\n _uploaded = 0;\n _startTime = 0;\n _status = 0;\n _controller;\n _response = null;\n constructor(source, chunked = false, size, file) {\n const chunks = Math.min(getMaxChunksSize() > 0 ? Math.ceil(size / getMaxChunksSize()) : 1, 1e4);\n this._source = source;\n this._isChunked = chunked && getMaxChunksSize() > 0 && chunks > 1;\n this._chunks = this._isChunked ? chunks : 1;\n this._size = size;\n this._file = file;\n this._controller = new AbortController();\n }\n get source() {\n return this._source;\n }\n get file() {\n return this._file;\n }\n get isChunked() {\n return this._isChunked;\n }\n get chunks() {\n return this._chunks;\n }\n get size() {\n return this._size;\n }\n get startTime() {\n return this._startTime;\n }\n set response(response) {\n this._response = response;\n }\n get response() {\n return this._response;\n }\n get uploaded() {\n return this._uploaded;\n }\n /**\n * Update the uploaded bytes of this upload\n */\n set uploaded(length) {\n if (length >= this._size) {\n this._status = this._isChunked ? 2 : 3;\n this._uploaded = this._size;\n return;\n }\n this._status = 1;\n this._uploaded = length;\n if (this._startTime === 0) {\n this._startTime = (/* @__PURE__ */ new Date()).getTime();\n }\n }\n get status() {\n return this._status;\n }\n /**\n * Update this upload status\n */\n set status(status) {\n this._status = status;\n }\n /**\n * Returns the axios cancel token source\n */\n get signal() {\n return this._controller.signal;\n }\n /**\n * Cancel any ongoing requests linked to this upload\n */\n cancel() {\n this._controller.abort();\n this._status = 4;\n }\n}\nconst isFileSystemDirectoryEntry = (o) => \"FileSystemDirectoryEntry\" in window && o instanceof FileSystemDirectoryEntry;\nconst isFileSystemFileEntry = (o) => \"FileSystemFileEntry\" in window && o instanceof FileSystemFileEntry;\nconst isFileSystemEntry = (o) => \"FileSystemEntry\" in window && o instanceof FileSystemEntry;\nclass Directory extends File {\n _originalName;\n _path;\n _children;\n constructor(path) {\n super([], basename(path), { type: \"httpd/unix-directory\", lastModified: 0 });\n this._children = /* @__PURE__ */ new Map();\n this._originalName = basename(path);\n this._path = path;\n }\n get size() {\n return this.children.reduce((sum, file) => sum + file.size, 0);\n }\n get lastModified() {\n return this.children.reduce((latest, file) => Math.max(latest, file.lastModified), 0);\n }\n // We need this to keep track of renamed files\n get originalName() {\n return this._originalName;\n }\n get children() {\n return Array.from(this._children.values());\n }\n get webkitRelativePath() {\n return this._path;\n }\n getChild(name) {\n return this._children.get(name) ?? null;\n }\n /**\n * Add multiple children at once\n * @param files The files to add\n */\n async addChildren(files) {\n for (const file of files) {\n await this.addChild(file);\n }\n }\n /**\n * Add a child to the directory.\n * If it is a nested child the parents will be created if not already exist.\n * @param file The child to add\n */\n async addChild(file) {\n const rootPath = this._path && `${this._path}/`;\n if (isFileSystemFileEntry(file)) {\n file = await new Promise((resolve, reject) => file.file(resolve, reject));\n } else if (isFileSystemDirectoryEntry(file)) {\n const reader = file.createReader();\n const entries = await new Promise((resolve, reject) => reader.readEntries(resolve, reject));\n const child = new Directory(`${rootPath}${file.name}`);\n await child.addChildren(entries);\n this._children.set(file.name, child);\n return;\n }\n file = file;\n const filePath = file.webkitRelativePath ?? file.name;\n if (!filePath.includes(\"/\")) {\n this._children.set(file.name, file);\n } else {\n if (!filePath.startsWith(this._path)) {\n throw new Error(`File ${filePath} is not a child of ${this._path}`);\n }\n const relPath = filePath.slice(rootPath.length);\n const name = basename(relPath);\n if (name === relPath) {\n this._children.set(name, file);\n } else {\n const base = relPath.slice(0, relPath.indexOf(\"/\"));\n if (this._children.has(base)) {\n await this._children.get(base).addChild(file);\n } else {\n const child = new Directory(`${rootPath}${base}`);\n await child.addChild(file);\n this._children.set(base, child);\n }\n }\n }\n }\n}\nconst gtBuilder = getGettextBuilder().detectLocale();\n[{ \"locale\": \"af\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Afrikaans (https://www.transifex.com/nextcloud/teams/64236/af/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"af\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Afrikaans (https://www.transifex.com/nextcloud/teams/64236/af/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: af\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ar\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"abusaud, 2024\", \"Language-Team\": \"Arabic (https://app.transifex.com/nextcloud/teams/64236/ar/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ar\", \"Plural-Forms\": \"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nAli <alimahwer@yahoo.com>, 2024\\nabusaud, 2024\\n\" }, \"msgstr\": [\"Last-Translator: abusaud, 2024\\nLanguage-Team: Arabic (https://app.transifex.com/nextcloud/teams/64236/ar/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ar\\nPlural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" هو اسم ممنوع لملف أو مجلد.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" هو نوع ممنوع أن يكون لملف.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" هو غير مسموح به في اسم ملف أو مجلد.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ملف متعارض\", \"{count} ملف متعارض\", \"{count} ملفان متعارضان\", \"{count} ملف متعارض\", \"{count} ملفات متعارضة\", \"{count} ملفات متعارضة\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} ملف متعارض في {dirname}\", \"{count} ملف متعارض في {dirname}\", \"{count} ملفان متعارضان في {dirname}\", \"{count} ملف متعارض في {dirname}\", \"{count} ملفات متعارضة في {dirname}\", \"{count} ملفات متعارضة في {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} ثانية متبقية\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} متبقية\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"بضع ثوانٍ متبقية\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"إلغاء\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"إلغِ العملية بالكامل\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"إلغاء عمليات رفع الملفات\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"إستمر\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"إنشاء جديد\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"تقدير الوقت المتبقي\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"الإصدار الحالي\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['غير مسموح ان ينتهي اسم الملف بـ \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"إذا اخترت الاحتفاظ بالنسختين فسيتم إلحاق رقم عداد آخر اسم الملف الوارد.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"اسم ملف غير صحيح\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"تاريخ آخر تعديل غير معروف\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"جديد\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"اسم ملف جديد\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"نسخة جديدة\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"مُجمَّد\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"معاينة الصورة\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"تغيير التسمية\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"حدِّد كل صناديق الخيارات\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"حدِّد كل الملفات الموجودة\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"حدِّد كل الملفات الجديدة\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"تخطِّي\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"حجم غير معلوم\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"رفع الملفات\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"رفع ملفات\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"رفع مجلدات\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"الرفع من جهاز \"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"تمّ إلغاء عملية رفع الملفات\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"تمّ تجاوز الرفع\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['رفع \"{folder}\" تمّ تجاوزه'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"تقدُّم الرفع \"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"عند تحديد مجلد وارد، أي ملفات متعارضة بداخله ستتم الكتابة فوقها.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"عند تحديد مجلد وارد، ستتم كتابة المحتوى في المجلد الموجود و سيتم تنفيذ حل التعارض بشكل تعاوُدي.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"أيُّ الملفات ترغب في الإبقاء عليها؟\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"يمكنك إمّا تغيير اسم الملف، أو تجاوزه، أو إلغاء العملية برُمَّتها.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"يجب أن تختار نسخة واحدة على الأقل من كل ملف للاستمرار.\"] } } } } }, { \"locale\": \"ast\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"enolp <enolp@softastur.org>, 2023\", \"Language-Team\": \"Asturian (https://app.transifex.com/nextcloud/teams/64236/ast/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ast\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nenolp <enolp@softastur.org>, 2023\\n\" }, \"msgstr\": [\"Last-Translator: enolp <enolp@softastur.org>, 2023\\nLanguage-Team: Asturian (https://app.transifex.com/nextcloud/teams/64236/ast/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ast\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ficheru en coflictu\", \"{count} ficheros en coflictu\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} ficheru en coflictu en {dirname}\", \"{count} ficheros en coflictu en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Queden {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Tiempu que queda: {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"queden unos segundos\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Encaboxar les xubes\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Siguir\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando'l tiempu que falta\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión esistente\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"Si seleiciones dambes versiones, el ficheru copiáu va tener un númberu amestáu al so nome.\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"La data de la última modificación ye desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevu\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versión nueva\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en posa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar la imaxe\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Marcar toles caxelles\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleicionar tolos ficheros esistentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleicionar tolos ficheros nuevos\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Saltar esti ficheru\", \"Saltar {count} ficheros\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamañu desconocíu\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"Encaboxóse la xuba\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Xubir ficheros\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Xuba en cursu\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué ficheros quies caltener?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Tienes de seleicionar polo menos una versión de cada ficheru pa siguir.\"] } } } } }, { \"locale\": \"az\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Rashad Aliyev <microphprashad@gmail.com>, 2023\", \"Language-Team\": \"Azerbaijani (https://app.transifex.com/nextcloud/teams/64236/az/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"az\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nRashad Aliyev <microphprashad@gmail.com>, 2023\\n\" }, \"msgstr\": [\"Last-Translator: Rashad Aliyev <microphprashad@gmail.com>, 2023\\nLanguage-Team: Azerbaijani (https://app.transifex.com/nextcloud/teams/64236/az/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: az\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saniyə qalıb\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} qalıb\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir neçə saniyə qalıb\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Əlavə et\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yükləməni imtina et\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Təxmini qalan vaxt\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauzadadır\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Faylları yüklə\"] } } } } }, { \"locale\": \"be\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Belarusian (https://www.transifex.com/nextcloud/teams/64236/be/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"be\", \"Plural-Forms\": \"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Belarusian (https://www.transifex.com/nextcloud/teams/64236/be/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: be\\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bg\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bulgarian (Bulgaria) (https://www.transifex.com/nextcloud/teams/64236/bg_BG/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bg_BG\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bulgarian (Bulgaria) (https://www.transifex.com/nextcloud/teams/64236/bg_BG/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bg_BG\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bn_BD\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bengali (Bangladesh) (https://www.transifex.com/nextcloud/teams/64236/bn_BD/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bn_BD\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bengali (Bangladesh) (https://www.transifex.com/nextcloud/teams/64236/bn_BD/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bn_BD\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"br\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"br\", \"Plural-Forms\": \"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: br\\nPlural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bs\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bosnian (https://www.transifex.com/nextcloud/teams/64236/bs/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bs\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bosnian (https://www.transifex.com/nextcloud/teams/64236/bs/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bs\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ca\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Toni Hermoso Pulido <toniher@softcatala.cat>, 2022\", \"Language-Team\": \"Catalan (https://www.transifex.com/nextcloud/teams/64236/ca/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ca\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nMarc Riera <marcriera@softcatala.org>, 2022\\nToni Hermoso Pulido <toniher@softcatala.cat>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Toni Hermoso Pulido <toniher@softcatala.cat>, 2022\\nLanguage-Team: Catalan (https://www.transifex.com/nextcloud/teams/64236/ca/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ca\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Queden {seconds} segons\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"Queden {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"Queden uns segons\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Afegeix\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancel·la les pujades\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"S'està estimant el temps restant\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"En pausa\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Puja els fitxers\"] } } } } }, { \"locale\": \"cs\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Pavel Borecki <pavel.borecki@gmail.com>, 2024\", \"Language-Team\": \"Czech (Czech Republic) (https://app.transifex.com/nextcloud/teams/64236/cs_CZ/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"cs_CZ\", \"Plural-Forms\": \"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMichal Šmahel <ceskyDJ@seznam.cz>, 2024\\nMartin Hankovec, 2024\\nAppukonrad <appukonrad@gmail.com>, 2024\\nPavel Borecki <pavel.borecki@gmail.com>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2024\\nLanguage-Team: Czech (Czech Republic) (https://app.transifex.com/nextcloud/teams/64236/cs_CZ/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: cs_CZ\\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}“ není povoleno použít jako název souboru či složky.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}“ není povoleného typu souboru.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}“ není povoleno použít v rámci názvu souboru či složky.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} kolize souborů\", \"{count} kolize souborů\", \"{count} kolizí souborů\", \"{count} kolize souborů\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} kolize souboru v {dirname}\", \"{count} kolize souboru v {dirname}\", \"{count} kolizí souborů v {dirname}\", \"{count} kolize souboru v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"zbývá {seconds}\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"zbývá {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"zbývá několik sekund\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Zrušit\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušit celou operaci\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Zrušit nahrávání\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovat\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Vytvořit nový\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"odhaduje se zbývající čas\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existující verze\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Názvy souborů nemohou končit na „{segment}“.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Pokud vyberete obě verze, příchozí soubor bude mít ke jménu přidánu číslici.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Neplatný název souboru\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Neznámé datum poslední úpravy\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nové\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nový název souboru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nová verze\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pozastaveno\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Náhled obrázku\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Přejmenovat\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Označit všechny zaškrtávací kolonky\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrat veškeré stávající soubory\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrat veškeré nové soubory\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Přeskočit\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Přeskočit tento soubor\", \"Přeskočit {count} soubory\", \"Přeskočit {count} souborů\", \"Přeskočit {count} soubory\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznámá velikost\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Nahrát\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Nahrát soubory\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Nahrát složky\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Nahrát ze zařízení\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nahrávání bylo zrušeno\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nahrání bylo přeskočeno\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Nahrání „{folder}“ bylo přeskočeno\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Postup v nahrávání\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Po výběru příchozí složky budou rovněž přepsány všechny v ní obsažené konfliktní soubory\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Když je vybrána příchozí složka, obsah je zapsán do existující složky a je provedeno rekurzivní řešení kolizí.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Které soubory si přejete ponechat?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Soubor je možné buď přejmenovat, přeskočit nebo celou operaci zrušit.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby bylo možné pokračovat, je třeba vybrat alespoň jednu verzi od každého souboru.\"] } } } } }, { \"locale\": \"cy_GB\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Welsh (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/cy_GB/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"cy_GB\", \"Plural-Forms\": \"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Welsh (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/cy_GB/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: cy_GB\\nPlural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"da\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Martin Bonde <Martin@maboni.dk>, 2024\", \"Language-Team\": \"Danish (https://app.transifex.com/nextcloud/teams/64236/da/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"da\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nRasmus Rosendahl-Kaa, 2024\\nMartin Bonde <Martin@maboni.dk>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Martin Bonde <Martin@maboni.dk>, 2024\\nLanguage-Team: Danish (https://app.transifex.com/nextcloud/teams/64236/da/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: da\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er et forbudt fil- eller mappenavn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er en forbudt filtype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ikke tilladt i et fil- eller mappenavn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fil konflikt\", \"{count} filer i konflikt\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fil konflikt i {dirname}\", \"{count} filer i konflikt i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{sekunder} sekunder tilbage\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tilbage\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"et par sekunder tilbage\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuller\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annuller hele handlingen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annuller uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsæt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Opret ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimering af resterende tid\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Eksisterende version\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnavne må ikke slutte med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du vælger begge versioner, vil den indkommende fil have et nummer tilføjet til sit navn.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ugyldigt filnavn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Sidste modifikationsdato ukendt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nyt filnavn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauset\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forhåndsvisning af billede\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Omdøb\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vælg alle felter\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vælg alle eksisterende filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vælg alle nye filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Spring over\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Spring denne fil over\", \"Spring {count} filer over\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukendt størrelse\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Upload mapper\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Upload fra enhed\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload er blevet annulleret\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload er blevet sprunget over\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload af \"{folder}\" er blevet sprunget over'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Upload fremskridt\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en indgående mappe er valgt, vil alle modstridende filer i den også blive overskrevet.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en indkommende mappe er valgt, vil dens indhold blive skrevet ind i den eksisterende mappe og en rekursiv konfliktløsning udføres.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer ønsker du at beholde?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan enten omdøbe filen, springe denne fil over eller annullere hele handlingen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du skal vælge mindst én version af hver fil for at fortsætte.\"] } } } } }, { \"locale\": \"de\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Andy Scherzinger <info@andy-scherzinger.de>, 2024\", \"Language-Team\": \"German (https://app.transifex.com/nextcloud/teams/64236/de/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"de\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMario Siegmann <mario_siegmann@web.de>, 2024\\nMartin Wilichowski, 2024\\nAndy Scherzinger <info@andy-scherzinger.de>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Andy Scherzinger <info@andy-scherzinger.de>, 2024\\nLanguage-Team: German (https://app.transifex.com/nextcloud/teams/64236/de/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: de\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ist ein verbotener Datei- oder Ordnername.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ist ein verbotener Dateityp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ist in einem Datei- oder Ordnernamen nicht zulässig.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} Datei-Konflikt\", \"{count} Datei-Konflikte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} Datei-Konflikt in {dirname}\", \"{count} Datei-Konflikte in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} Sekunden verbleiben\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} verbleibend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ein paar Sekunden verbleiben\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hochladen abbrechen\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Neu erstellen\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Geschätzte verbleibende Zeit\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dateinamen dürfen nicht mit \"{segment}\" enden.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn du beide Versionen auswählst, wird der eingehenden Datei eine Nummer zum Namen hinzugefügt.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ungültiger Dateiname\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Neuer Dateiname\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Pausiert\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vorschaubild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Umbenennen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Überspringen\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Diese Datei überspringen\", \"{count} Dateien überspringen\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unbekannte Größe\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Hochladen\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dateien hochladen\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ordner hochladen\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Vom Gerät hochladen\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Das Hochladen wurde abgebrochen\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Das Hochladen wurde übersprungen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Das Hochladen von \"{folder}\" wurde übersprungen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fortschritt beim Hochladen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden alle darin enthaltenen Konfliktdateien ebenfalls überschrieben.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien möchtest du behalten?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kannst die Datei entweder umbenennen, diese Datei überspringen oder den gesamten Vorgang abbrechen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du musst mindestens eine Version jeder Datei auswählen, um fortzufahren.\"] } } } } }, { \"locale\": \"de_DE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Mark Ziegler <mark.ziegler@rakekniven.de>, 2024\", \"Language-Team\": \"German (Germany) (https://app.transifex.com/nextcloud/teams/64236/de_DE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"de_DE\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMario Siegmann <mario_siegmann@web.de>, 2024\\nMark Ziegler <mark.ziegler@rakekniven.de>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Mark Ziegler <mark.ziegler@rakekniven.de>, 2024\\nLanguage-Team: German (Germany) (https://app.transifex.com/nextcloud/teams/64236/de_DE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: de_DE\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ist ein verbotener Datei- oder Ordnername.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ist ein verbotener Dateityp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ist in einem Datei- oder Ordnernamen nicht zulässig.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} Datei-Konflikt\", \"{count} Datei-Konflikte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} Datei-Konflikt in {dirname}\", \"{count} Datei-Konflikte in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} Sekunden verbleiben\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} verbleibend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ein paar Sekunden verbleiben\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hochladen abbrechen\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Neu erstellen\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Berechne verbleibende Zeit\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dateinamen dürfen nicht mit \"{segment}\" enden.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn Sie beide Versionen auswählen, wird der eingehenden Datei eine Nummer zum Namen hinzugefügt.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ungültiger Dateiname\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Neuer Dateiname\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Pausiert\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vorschaubild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Umbenennen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Überspringen\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} Datei überspringen\", \"{count} Dateien überspringen\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unbekannte Größe\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Hochladen\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dateien hochladen\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ordner hochladen\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Vom Gerät hochladen\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Das Hochladen wurde abgebrochen\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Das Hochladen wurde übersprungen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Das Hochladen von \"{folder}\" wurde übersprungen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fortschritt beim Hochladen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden alle darin enthaltenen Konfliktdateien ebenfalls überschrieben.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien möchten Sie behalten?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Sie können die Datei entweder umbenennen, diese Datei überspringen oder den gesamten Vorgang abbrechen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Sie müssen mindestens eine Version jeder Datei auswählen, um fortzufahren.\"] } } } } }, { \"locale\": \"el\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Nik Pap, 2022\", \"Language-Team\": \"Greek (https://www.transifex.com/nextcloud/teams/64236/el/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"el\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nNik Pap, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Nik Pap, 2022\\nLanguage-Team: Greek (https://www.transifex.com/nextcloud/teams/64236/el/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: el\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"απομένουν {seconds} δευτερόλεπτα\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"απομένουν {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"απομένουν λίγα δευτερόλεπτα\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Προσθήκη\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Ακύρωση μεταφορτώσεων\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"εκτίμηση του χρόνου που απομένει\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"σε παύση\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Μεταφόρτωση αρχείων\"] } } } } }, { \"locale\": \"en_GB\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Andi Chandler <andi@gowling.com>, 2024\", \"Language-Team\": \"English (United Kingdom) (https://app.transifex.com/nextcloud/teams/64236/en_GB/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"en_GB\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nAndi Chandler <andi@gowling.com>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Andi Chandler <andi@gowling.com>, 2024\\nLanguage-Team: English (United Kingdom) (https://app.transifex.com/nextcloud/teams/64236/en_GB/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: en_GB\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" is a forbidden file or folder name.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" is a forbidden file type.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" is not allowed inside a file or folder name.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file conflict\", \"{count} files conflict\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file conflict in {dirname}\", \"{count} file conflicts in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} seconds left\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} left\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"a few seconds left\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel the entire operation\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancel uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continue\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Create new\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimating time left\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existing version\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filenames must not end with \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"If you select both versions, the incoming file will have a number added to its name.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Invalid filename\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Last modified date unknown\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"New\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"New filename\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"New version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"paused\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Preview image\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Rename\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Select all checkboxes\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Select all existing files\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Select all new files\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Skip\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Skip this file\", \"Skip {count} files\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unknown size\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload files\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Upload folders\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Upload from device\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload has been cancelled\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload has been skipped\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload of \"{folder}\" has been skipped'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Upload progress\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"When an incoming folder is selected, any conflicting files within it will also be overwritten.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Which files do you want to keep?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"You can either rename the file, skip this file or cancel the whole operation.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"You need to select at least one version of each file to continue.\"] } } } } }, { \"locale\": \"eo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"eo\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: eo\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Julio C. Ortega, 2024\", \"Language-Team\": \"Spanish (https://app.transifex.com/nextcloud/teams/64236/es/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nFranciscoFJ <dev-ooo@satel-sa.com>, 2024\\nJulio C. Ortega, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Julio C. Ortega, 2024\\nLanguage-Team: Spanish (https://app.transifex.com/nextcloud/teams/64236/es/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{filename}\" contains invalid characters, how do you want to continue?': { \"msgid\": '\"{filename}\" contains invalid characters, how do you want to continue?', \"msgstr\": ['\"{filename}\" contiene caracteres inválidos, ¿cómo desea continuar?'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} conflictos de archivo\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicto de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan unos segundos\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, el archivo entrante le será agregado un número a su nombre.\"] }, \"Invalid file name\": { \"msgid\": \"Invalid file name\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Última fecha de modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Saltar\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Saltar este archivo\", \"Saltar {count} archivos\", \"Saltar {count} archivos\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Subir carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Subir desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La subida ha sido cancelada\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la subida\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier de los archivos en conflictos también serán sobre-escritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido es escrito en la carpeta existente y se realizará una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué archivos desea conservar?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_419\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"ALEJANDRO CASTRO, 2022\", \"Language-Team\": \"Spanish (Latin America) (https://www.transifex.com/nextcloud/teams/64236/es_419/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_419\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nALEJANDRO CASTRO, 2022\\n\" }, \"msgstr\": [\"Last-Translator: ALEJANDRO CASTRO, 2022\\nLanguage-Team: Spanish (Latin America) (https://www.transifex.com/nextcloud/teams/64236/es_419/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_419\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{tiempo} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan pocos segundos\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"agregar\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] } } } } }, { \"locale\": \"es_AR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Matías Campo Hoet <matiascampo@gmail.com>, 2024\", \"Language-Team\": \"Spanish (Argentina) (https://app.transifex.com/nextcloud/teams/64236/es_AR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_AR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMatías Campo Hoet <matiascampo@gmail.com>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Matías Campo Hoet <matiascampo@gmail.com>, 2024\\nLanguage-Team: Spanish (Argentina) (https://app.transifex.com/nextcloud/teams/64236/es_AR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_AR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{filename}\" contains invalid characters, how do you want to continue?': { \"msgid\": '\"{filename}\" contains invalid characters, how do you want to continue?', \"msgstr\": ['\"{filename}\" contiene caracteres inválidos, ¿cómo desea continuar?'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} conflictos de archivo\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicto de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan unos segundos\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, se agregará un número al nombre del archivo entrante.\"] }, \"Invalid file name\": { \"msgid\": \"Invalid file name\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Fecha de última modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vista previa de imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir este archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Cargar archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Cargar carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Cargar desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Carga cancelada\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la carga\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier archivo en conflicto dentro de la misma también serán sobreescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido se escribe en la carpeta existente y se realiza una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué archivos desea conservar?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_CL\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Chile) (https://www.transifex.com/nextcloud/teams/64236/es_CL/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CL\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Chile) (https://www.transifex.com/nextcloud/teams/64236/es_CL/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CL\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_CO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Colombia) (https://www.transifex.com/nextcloud/teams/64236/es_CO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CO\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Colombia) (https://www.transifex.com/nextcloud/teams/64236/es_CO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CO\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_CR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Costa Rica) (https://www.transifex.com/nextcloud/teams/64236/es_CR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Costa Rica) (https://www.transifex.com/nextcloud/teams/64236/es_CR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_DO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Dominican Republic) (https://www.transifex.com/nextcloud/teams/64236/es_DO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_DO\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Dominican Republic) (https://www.transifex.com/nextcloud/teams/64236/es_DO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_DO\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_EC\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Ecuador) (https://www.transifex.com/nextcloud/teams/64236/es_EC/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_EC\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Ecuador) (https://www.transifex.com/nextcloud/teams/64236/es_EC/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_EC\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_GT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Guatemala) (https://www.transifex.com/nextcloud/teams/64236/es_GT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_GT\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Guatemala) (https://www.transifex.com/nextcloud/teams/64236/es_GT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_GT\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_HN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Honduras) (https://www.transifex.com/nextcloud/teams/64236/es_HN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_HN\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Honduras) (https://www.transifex.com/nextcloud/teams/64236/es_HN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_HN\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_MX\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Jehu Marcos Herrera Puentes, 2024\", \"Language-Team\": \"Spanish (Mexico) (https://app.transifex.com/nextcloud/teams/64236/es_MX/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_MX\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJehu Marcos Herrera Puentes, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Jehu Marcos Herrera Puentes, 2024\\nLanguage-Team: Spanish (Mexico) (https://app.transifex.com/nextcloud/teams/64236/es_MX/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_MX\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{filename}\" contains invalid characters, how do you want to continue?': { \"msgid\": '\"{filename}\" contains invalid characters, how do you want to continue?', \"msgstr\": ['\"{filename}\" contiene caracteres inválidos, ¿Cómo desea continuar?'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} archivos en conflicto\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} archivo en conflicto en {dirname}\", \"{count} archivos en conflicto en {dirname}\", \"{count} archivo en conflicto en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{tiempo} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan pocos segundos\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, se agregará un número al nombre del archivo entrante.\"] }, \"Invalid file name\": { \"msgid\": \"Invalid file name\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Fecha de última modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir este archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Subir carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Subir desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La subida ha sido cancelada\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la subida\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier archivo en conflicto dentro de la misma también será sobrescrito.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido se escribe en la carpeta existente y se realiza una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Cuáles archivos desea conservar?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_NI\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Nicaragua) (https://www.transifex.com/nextcloud/teams/64236/es_NI/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_NI\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Nicaragua) (https://www.transifex.com/nextcloud/teams/64236/es_NI/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_NI\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PA\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Panama) (https://www.transifex.com/nextcloud/teams/64236/es_PA/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PA\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Panama) (https://www.transifex.com/nextcloud/teams/64236/es_PA/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PA\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Peru) (https://www.transifex.com/nextcloud/teams/64236/es_PE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PE\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Peru) (https://www.transifex.com/nextcloud/teams/64236/es_PE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PE\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Puerto Rico) (https://www.transifex.com/nextcloud/teams/64236/es_PR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Puerto Rico) (https://www.transifex.com/nextcloud/teams/64236/es_PR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Paraguay) (https://www.transifex.com/nextcloud/teams/64236/es_PY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PY\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Paraguay) (https://www.transifex.com/nextcloud/teams/64236/es_PY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PY\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_SV\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (El Salvador) (https://www.transifex.com/nextcloud/teams/64236/es_SV/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_SV\", \"Plural-Forms\": \"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (El Salvador) (https://www.transifex.com/nextcloud/teams/64236/es_SV/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_SV\\nPlural-Forms: nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_UY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Uruguay) (https://www.transifex.com/nextcloud/teams/64236/es_UY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_UY\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Uruguay) (https://www.transifex.com/nextcloud/teams/64236/es_UY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_UY\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"et_EE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Taavo Roos, 2023\", \"Language-Team\": \"Estonian (Estonia) (https://app.transifex.com/nextcloud/teams/64236/et_EE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"et_EE\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nMait R, 2022\\nTaavo Roos, 2023\\n\" }, \"msgstr\": [\"Last-Translator: Taavo Roos, 2023\\nLanguage-Team: Estonian (Estonia) (https://app.transifex.com/nextcloud/teams/64236/et_EE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: et_EE\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} jäänud sekundid\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} aega jäänud\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"jäänud mõni sekund\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Lisa\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Tühista üleslaadimine\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"hinnanguline järelejäänud aeg\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausil\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Lae failid üles\"] } } } } }, { \"locale\": \"eu\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Unai Tolosa Pontesta <utolosa002@gmail.com>, 2022\", \"Language-Team\": \"Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"eu\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nUnai Tolosa Pontesta <utolosa002@gmail.com>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Unai Tolosa Pontesta <utolosa002@gmail.com>, 2022\\nLanguage-Team: Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: eu\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundo geratzen dira\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} geratzen da\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"segundo batzuk geratzen dira\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Gehitu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Ezeztatu igoerak\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"kalkulatutako geratzen den denbora\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"geldituta\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Igo fitxategiak\"] } } } } }, { \"locale\": \"fa\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Fatemeh Komeily, 2023\", \"Language-Team\": \"Persian (https://app.transifex.com/nextcloud/teams/64236/fa/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fa\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nFatemeh Komeily, 2023\\n\" }, \"msgstr\": [\"Last-Translator: Fatemeh Komeily, 2023\\nLanguage-Team: Persian (https://app.transifex.com/nextcloud/teams/64236/fa/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fa\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"ثانیه های باقی مانده\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"باقی مانده\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"چند ثانیه مانده\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"اضافه کردن\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"کنسل کردن فایل های اپلود شده\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"تخمین زمان باقی مانده\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"مکث کردن\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"بارگذاری فایل ها\"] } } } } }, { \"locale\": \"fi\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"teemue, 2024\", \"Language-Team\": \"Finnish (Finland) (https://app.transifex.com/nextcloud/teams/64236/fi_FI/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fi_FI\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJiri Grönroos <jiri.gronroos@iki.fi>, 2024\\nthingumy, 2024\\nteemue, 2024\\n\" }, \"msgstr\": [\"Last-Translator: teemue, 2024\\nLanguage-Team: Finnish (Finland) (https://app.transifex.com/nextcloud/teams/64236/fi_FI/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fi_FI\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" on kielletty tiedoston tai hakemiston nimi.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" on kielletty tiedostotyyppi.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ei ole sallittu tiedoston tai hakemiston nimessä.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} tiedoston ristiriita\", \"{count} tiedoston ristiriita\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} tiedoston ristiriita kansiossa {dirname}\", \"{count} tiedoston ristiriita kansiossa {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekuntia jäljellä\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} jäljellä\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"muutama sekunti jäljellä\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Peruuta\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Peruuta koko toimenpide\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Peruuta lähetykset\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Jatka\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Luo uusi\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"arvioidaan jäljellä olevaa aikaa\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Olemassa oleva versio\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Tiedoston nimi ei saa päättyä \"{segment}\"'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jos valitset molemmat versiot, saapuvan tiedoston nimeen lisätään numero.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Kielletty/väärä tiedoston nimi\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Viimeisin muokkauspäivä on tuntematon\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Uusi\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Uusi tiedostonimi\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Uusi versio\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"keskeytetty\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Esikatsele kuva\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Nimeä uudelleen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Valitse kaikki valintaruudut\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Valitse kaikki olemassa olevat tiedostot\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Valitse kaikki uudet tiedostot\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ohita\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ohita tämä tiedosto\", \"Ohita {count} tiedostoa\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tuntematon koko\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Lähetä\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Lähetä tiedostoja\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Lähetä kansioita\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Lähetä laitteelta\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Lähetys on peruttu\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Lähetys on ohitettu\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Hakemiston \"{folder}\" lähetys on ohitettu'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Lähetyksen edistyminen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Valittuasi saapuvien kansion, kaikki ristiriitaiset tiedostot kansiossa ylikirjoitetaan.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Valittuasi saapuvien kansion, sisältö kirjoitetaan olemassaolevaan kansioon ja suoritetaan rekursiivinen ristiriitojen poisto.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Mitkä tiedostot haluat säilyttää?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Voit joko nimetä tiedoston uudelleen, ohittaa tämän tiedoston tai peruuttaa koko toiminnon.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Sinun täytyy valita vähintään yksi versio jokaisesta tiedostosta jatkaaksesi.\"] } } } } }, { \"locale\": \"fo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Faroese (https://www.transifex.com/nextcloud/teams/64236/fo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fo\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Faroese (https://www.transifex.com/nextcloud/teams/64236/fo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fo\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"fr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Arnaud Cazenave, 2024\", \"Language-Team\": \"French (https://app.transifex.com/nextcloud/teams/64236/fr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fr\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nBenoit Pruneau, 2024\\njed boulahya, 2024\\nJérôme HERBINET, 2024\\nArnaud Cazenave, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Arnaud Cazenave, 2024\\nLanguage-Team: French (https://app.transifex.com/nextcloud/teams/64236/fr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fr\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" est un nom de fichier ou de dossier interdit.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" est un type de fichier interdit.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`\"{segment}\" n'est pas autorisé dans le nom d'un fichier ou d'un dossier.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fichier en conflit\", \"{count} fichiers en conflit\", \"{count} fichiers en conflit\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fichier en conflit dans {dirname}\", \"{count} fichiers en conflit dans {dirname}\", \"{count} fichiers en conflit dans {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} secondes restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restant\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quelques secondes restantes\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuler\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annuler l'opération entière\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annuler les téléversements\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuer\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Créer un nouveau\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimation du temps restant\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Version existante\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Le nom des fichiers ne doit pas finir par \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si vous sélectionnez les deux versions, le nouveau fichier aura un nombre ajouté à son nom.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nom de fichier invalide\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Date de la dernière modification est inconnue\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nouveau\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nouveau nom de fichier\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nouvelle version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pause\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Aperçu de l'image\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renommer\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Sélectionner toutes les cases à cocher\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Sélectionner tous les fichiers existants\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Sélectionner tous les nouveaux fichiers\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ignorer\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ignorer ce fichier\", \"Ignorer {count} fichiers\", \"Ignorer {count} fichiers\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Taille inconnue\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Téléverser\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Téléverser des fichiers\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Téléverser des dossiers\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Téléverser depuis l'appareil\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Le téléversement a été annulé\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Le téléversement a été ignoré\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Le téléversement de \"{folder}\" a été ignoré'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progression du téléversement\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Lorsqu'un dossier entrant est sélectionné, tous les fichiers en conflit qu'il contient seront également écrasés.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Lorsqu'un dossier entrant est sélectionné, le contenu est ajouté dans le dossier existant et une résolution récursive des conflits est effectuée.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quels fichiers souhaitez-vous conserver ?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Vous pouvez soit renommer le fichier, soit ignorer le fichier soit annuler toute l'opération.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Vous devez sélectionner au moins une version de chaque fichier pour continuer.\"] } } } } }, { \"locale\": \"ga\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Aindriú Mac Giolla Eoin, 2024\", \"Language-Team\": \"Irish (https://app.transifex.com/nextcloud/teams/64236/ga/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ga\", \"Plural-Forms\": \"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nAindriú Mac Giolla Eoin, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Aindriú Mac Giolla Eoin, 2024\\nLanguage-Team: Irish (https://app.transifex.com/nextcloud/teams/64236/ga/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ga\\nPlural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['Is ainm toirmiscthe comhaid nó fillteáin é \"{segment}\".'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Is cineál comhaid toirmiscthe é \"{segment}\".'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`Ní cheadaítear \"{segment}\" taobh istigh d'ainm comhaid nó fillteáin.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} coimhlint comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} coimhlint comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} soicind fágtha\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} fágtha\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"cúpla soicind fágtha\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cealaigh\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cealaigh an oibríocht iomlán\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cealaigh uaslódálacha\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Leanúint ar aghaidh\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Cruthaigh nua\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ag déanamh meastachán ar an am atá fágtha\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Leagan láithreach \"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Níor cheart go gcríochnaíonn comhaid chomhad le \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Má roghnaíonn tú an dá leagan, cuirfear uimhir leis an ainm a thagann isteach.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ainm comhaid neamhbhailí\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Dáta modhnaithe is déanaí anaithnid\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nua\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ainm comhaid nua\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Leagan nua\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"sos\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Íomhá réamhamharc\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Athainmnigh\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Roghnaigh gach ticbhosca\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Roghnaigh gach comhad atá ann cheana féin\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Roghnaigh gach comhad nua\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Scipeáil\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Léim an comhad seo\", \"Léim ar {count} comhad\", \"Léim ar {count} comhad\", \"Léim ar {count} comhad\", \"Léim ar {count} comhad\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Méid anaithnid\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Uaslódáil\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Uaslódáil comhaid\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Uaslódáil fillteáin\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Íosluchtaigh ó ghléas\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Cuireadh an t-uaslódáil ar ceal\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Léiríodh an uaslódáil\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Léiríodh an uaslódáil \"{folder}\".'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uaslódáil dul chun cinn\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, déanfar aon chomhad contrártha laistigh de a fhorscríobh freisin.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, scríobhtar an t-ábhar isteach san fhillteán atá ann cheana agus déantar réiteach coinbhleachta athchúrsach.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Cé na comhaid ar mhaith leat a choinneáil?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Is féidir leat an comhad a athainmniú, scipeáil an comhad seo nó an oibríocht iomlán a chealú.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ní mór duit leagan amháin ar a laghad de gach comhad a roghnú chun leanúint ar aghaidh.\"] } } } } }, { \"locale\": \"gd\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Gaelic, Scottish (https://www.transifex.com/nextcloud/teams/64236/gd/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"gd\", \"Plural-Forms\": \"nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Gaelic, Scottish (https://www.transifex.com/nextcloud/teams/64236/gd/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: gd\\nPlural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"gl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Miguel Anxo Bouzada <mbouzada@gmail.com>, 2024\", \"Language-Team\": \"Galician (https://app.transifex.com/nextcloud/teams/64236/gl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"gl\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMiguel Anxo Bouzada <mbouzada@gmail.com>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Miguel Anxo Bouzada <mbouzada@gmail.com>, 2024\\nLanguage-Team: Galician (https://app.transifex.com/nextcloud/teams/64236/gl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: gl\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"«{segment}» é un nome vedado para un ficheiro ou cartafol.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"«{segment}» é un tipo de ficheiro vedado.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"«{segment}» non está permitido dentro dun nome de ficheiro ou cartafol.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflito de ficheiros\", \"{count} conflitos de ficheiros\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflito de ficheiros en {dirname}\", \"{count} conflitos de ficheiros en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"faltan {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"falta {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"faltan uns segundos\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancela toda a operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar envíos\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear un novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"calculando canto tempo falta\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Os nomes de ficheiros non deben rematar con «{segment}».\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selecciona ambas as versións, o ficheiro entrante terá un número engadido ao seu nome.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"O nome de ficheiro non é válido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificación descoñecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nova\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de ficheiro\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"detido\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vista previa da imaxe\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Marcar todas as caixas de selección\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos os ficheiros existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos os ficheiros novos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omita este ficheiro\", \"Omitir {count} ficheiros\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño descoñecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Enviar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Enviar ficheiros\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Enviar cartafoles\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Enviar dende o dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O envío foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O envío foi omitido\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"O envío de «{folder}» foi omitido\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso do envío\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, tamén se sobrescribirán os ficheiros en conflito dentro del.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, o contido escríbese no cartafol existente e lévase a cabo unha resolución recursiva de conflitos.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Que ficheiros quere conservar?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Pode cambiar o nome do ficheiro, omitir este ficheiro ou cancelar toda a operación.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar polo menos unha versión de cada ficheiro para continuar.\"] } } } } }, { \"locale\": \"he\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"he\", \"Plural-Forms\": \"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: he\\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hi_IN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Hindi (India) (https://www.transifex.com/nextcloud/teams/64236/hi_IN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hi_IN\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Hindi (India) (https://www.transifex.com/nextcloud/teams/64236/hi_IN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hi_IN\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Croatian (https://www.transifex.com/nextcloud/teams/64236/hr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hr\", \"Plural-Forms\": \"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Croatian (https://www.transifex.com/nextcloud/teams/64236/hr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hr\\nPlural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hsb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Upper Sorbian (https://www.transifex.com/nextcloud/teams/64236/hsb/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hsb\", \"Plural-Forms\": \"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Upper Sorbian (https://www.transifex.com/nextcloud/teams/64236/hsb/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hsb\\nPlural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hu\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Gyuris Gellért <jobel@ujevangelizacio.hu>, 2024\", \"Language-Team\": \"Hungarian (Hungary) (https://app.transifex.com/nextcloud/teams/64236/hu_HU/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hu_HU\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nGyuris Gellért <jobel@ujevangelizacio.hu>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Gyuris Gellért <jobel@ujevangelizacio.hu>, 2024\\nLanguage-Team: Hungarian (Hungary) (https://app.transifex.com/nextcloud/teams/64236/hu_HU/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hu_HU\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['Tiltott fájl- vagy mappanév: „{segment}\".'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Tiltott fájltípus: „{segment}\".'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Nem megengedett egy fájl- vagy mappanévben: „{segment}\".'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}fájlt érintő konfliktus\", \"{count} fájlt érintő konfliktus\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fájlt érintő konfliktus a mappában: {dirname}\", \"{count}fájlt érintő konfliktus a mappában: {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{} másodperc van hátra\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} van hátra\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"pár másodperc van hátra\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Mégse\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Teljes művelet megszakítása\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Feltöltések megszakítása\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Tovább\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Új létrehozása\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"hátralévő idő becslése\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Jelenlegi változat\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Fájlnevek nem végződhetnek erre: „{segment}”.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ha mindkét verziót kiválasztja, a bejövő fájl neve egy számmal egészül ki.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Érvénytelen fájlnév\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Utolsó módosítás dátuma ismeretlen\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Új\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Új fájlnév\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Új verzió\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"szüneteltetve\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Kép előnézete\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Átnevezés\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Minden jelölőnégyzet kijelölése\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Minden jelenlegi fájl kijelölése\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Minden új fájl kijelölése\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Kihagyás\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ezen fájl kihagyása\", \"{count}fájl kihagyása\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ismeretlen méret\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Feltöltés\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Fájlok feltöltése\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Mappák feltöltése\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Feltöltés eszközről\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Feltöltés meg lett szakítva\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Feltöltés át lett ugorva\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"„{folder}” feltöltése át lett ugorva\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Feltöltési folyamat\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ha egy bejövő mappa van kiválasztva, a mappában lévő ütköző fájlok is felülírásra kerülnek.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ha egy bejövő mappa van kiválasztva, a tartalom a meglévő mappába íródik és rekurzív konfliktusfeloldás történik.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Mely fájlokat kívánja megtartani?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Átnevezheti a fájlt, kihagyhatja ezt a fájlt, vagy törölheti az egész műveletet.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"A folytatáshoz minden fájlból legalább egy verziót ki kell választani.\"] } } } } }, { \"locale\": \"hy\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Armenian (https://www.transifex.com/nextcloud/teams/64236/hy/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hy\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Armenian (https://www.transifex.com/nextcloud/teams/64236/hy/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hy\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ia\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Interlingua (https://www.transifex.com/nextcloud/teams/64236/ia/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ia\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Interlingua (https://www.transifex.com/nextcloud/teams/64236/ia/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ia\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"id\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Linerly <linerly@proton.me>, 2023\", \"Language-Team\": \"Indonesian (https://app.transifex.com/nextcloud/teams/64236/id/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"id\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJohn Molakvoæ <skjnldsv@protonmail.com>, 2023\\nEmpty Slot Filler, 2023\\nLinerly <linerly@proton.me>, 2023\\n\" }, \"msgstr\": [\"Last-Translator: Linerly <linerly@proton.me>, 2023\\nLanguage-Team: Indonesian (https://app.transifex.com/nextcloud/teams/64236/id/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: id\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} berkas berkonflik\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} berkas berkonflik dalam {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} detik tersisa\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tersisa\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"tinggal sebentar lagi\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Batalkan unggahan\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Lanjutkan\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"memperkirakan waktu yang tersisa\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versi yang ada\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"Jika Anda memilih kedua versi, nama berkas yang disalin akan ditambahi angka.\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Tanggal perubahan terakhir tidak diketahui\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versi baru\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"dijeda\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Gambar pratinjau\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Pilih semua kotak centang\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Pilih semua berkas yang ada\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Pilih semua berkas baru\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Lewati {count} berkas\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukuran tidak diketahui\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"Unggahan dibatalkan\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Unggah berkas\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Berkas mana yang Anda ingin tetap simpan?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Anda harus memilih setidaknya satu versi dari masing-masing berkas untuk melanjutkan.\"] } } } } }, { \"locale\": \"ig\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Igbo (https://www.transifex.com/nextcloud/teams/64236/ig/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ig\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Igbo (https://www.transifex.com/nextcloud/teams/64236/ig/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ig\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"is\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Sveinn í Felli <sv1@fellsnet.is>, 2023\", \"Language-Team\": \"Icelandic (https://app.transifex.com/nextcloud/teams/64236/is/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"is\", \"Plural-Forms\": \"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nSveinn í Felli <sv1@fellsnet.is>, 2023\\n\" }, \"msgstr\": [\"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>, 2023\\nLanguage-Team: Icelandic (https://app.transifex.com/nextcloud/teams/64236/is/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: is\\nPlural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} árekstur skráa\", \"{count} árekstrar skráa\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} árekstur skráa í {dirname}\", \"{count} árekstrar skráa í {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekúndur eftir\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} eftir\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"nokkrar sekúndur eftir\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hætta við innsendingar\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Halda áfram\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"áætla tíma sem eftir er\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Fyrirliggjandi útgáfa\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"Ef þú velur báðar útgáfur, þá mun verða bætt tölustaf aftan við heiti afrituðu skrárinnar.\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Síðasta breytingadagsetning er óþekkt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nýtt\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ný útgáfa\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"í bið\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forskoðun myndar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Velja gátreiti\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Velja allar fyrirliggjandi skrár\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Velja allar nýjar skrár\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Sleppa þessari skrá\", \"Sleppa {count} skrám\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Óþekkt stærð\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"Hætt við innsendingu\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Senda inn skrár\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvaða skrám vilt þú vilt halda eftir?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Þú verður að velja að minnsta kosti eina útgáfu af hverri skrá til að halda áfram.\"] } } } } }, { \"locale\": \"it\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"albanobattistella <albanobattistella@gmail.com>, 2024\", \"Language-Team\": \"Italian (https://app.transifex.com/nextcloud/teams/64236/it/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"it\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nFrancesco Sercia, 2024\\nalbanobattistella <albanobattistella@gmail.com>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: albanobattistella <albanobattistella@gmail.com>, 2024\\nLanguage-Team: Italian (https://app.transifex.com/nextcloud/teams/64236/it/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: it\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" è un nome di file o cartella proibito.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\"è un tipo di file proibito.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`\"{segment}\" non è consentito all'interno di un nome di file o cartella.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file in conflitto\", \"{count} file in conflitto\", \"{count} file in conflitto\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file in conflitto in {dirname}\", \"{count} file in conflitto in {dirname}\", \"{count} file in conflitto in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} secondi rimanenti \"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} rimanente\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"alcuni secondi rimanenti\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annulla\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annulla l'intera operazione\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annulla i caricamenti\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continua\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crea nuovo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"calcolo il tempo rimanente\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versione esistente\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['I nomi dei file non devono terminare con \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selezioni entrambe le versioni, nel nome del file copiato verrà aggiunto un numero \"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome file non valido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Ultima modifica sconosciuta\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuovo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nuovo nome file\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nuova versione\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Anteprima immagine\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Rinomina\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleziona tutte le caselle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleziona tutti i file esistenti\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleziona tutti i nuovi file\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Salta\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Salta questo file\", \"Salta {count} file\", \"Salta {count} file\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Dimensione sconosciuta\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Caricamento\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Carica i file\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Carica cartelle\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Carica dal dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Caricamento annullato\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Il caricamento è stato saltato\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Il caricamento di \"{folder}\" è stato saltato'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progresso del caricamento\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, anche tutti i file in conflitto al suo interno verranno sovrascritti.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, il contenuto viene scritto nella cartella esistente e viene eseguita una risoluzione ricorsiva dei conflitti.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quali file vuoi mantenere?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"È possibile rinominare il file, ignorarlo o annullare l'intera operazione.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Devi selezionare almeno una versione di ogni file per continuare\"] } } } } }, { \"locale\": \"ja\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"kshimohata, 2024\", \"Language-Team\": \"Japanese (Japan) (https://app.transifex.com/nextcloud/teams/64236/ja_JP/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ja_JP\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nkojima.imamura, 2024\\nTakafumi AKAMATSU, 2024\\ndevi, 2024\\nkshimohata, 2024\\n\" }, \"msgstr\": [\"Last-Translator: kshimohata, 2024\\nLanguage-Team: Japanese (Japan) (https://app.transifex.com/nextcloud/teams/64236/ja_JP/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ja_JP\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" は禁止されているファイルまたはフォルダ名です。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" は禁止されているファイルタイプです。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['ファイルまたはフォルダ名に \"{segment}\" を含めることはできません。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ファイル数の競合\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} で {count} 個のファイルが競合しています\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"残り {seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"残り {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"残り数秒\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"キャンセル\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"すべての操作をキャンセルする\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"アップロードをキャンセル\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"続ける\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"新規作成\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"概算残り時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既存バージョン\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['ファイル名の末尾に \"{segment}\" を付けることはできません。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"両方のバージョンを選択した場合、受信ファイルの名前に数字が追加されます。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"無効なファイル名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最終更新日不明\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新規作成\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新しいファイル名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新しいバージョン\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"一時停止中\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"プレビュー画像\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"名前を変更\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"すべて選択\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"すべての既存ファイルを選択\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"すべての新規ファイルを選択\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"スキップ\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} 個のファイルをスキップする\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"サイズ不明\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"アップロード\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"ファイルをアップロード\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"フォルダのアップロード\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"デバイスからのアップロード\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"アップロードはキャンセルされました\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"アップロードがスキップされました\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" のアップロードがスキップされました'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"アップロード進行状況\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"受信フォルダが選択されると、その中の競合するファイルもすべて上書きされます。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"受信フォルダが選択されると、その内容は既存のフォルダに書き込まれ、再帰的な競合解決が行われます。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"どのファイルを保持しますか?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"ファイル名を変更するか、このファイルをスキップするか、操作全体をキャンセルすることができます。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"続行するには、各ファイルの少なくとも1つのバージョンを選択する必要があります。\"] } } } } }, { \"locale\": \"ka\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Georgian (https://www.transifex.com/nextcloud/teams/64236/ka/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ka\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Georgian (https://www.transifex.com/nextcloud/teams/64236/ka/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ka\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ka_GE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Georgian (Georgia) (https://www.transifex.com/nextcloud/teams/64236/ka_GE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ka_GE\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Georgian (Georgia) (https://www.transifex.com/nextcloud/teams/64236/ka_GE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ka_GE\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"kab\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"ZiriSut, 2023\", \"Language-Team\": \"Kabyle (https://app.transifex.com/nextcloud/teams/64236/kab/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kab\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nZiriSut, 2023\\n\" }, \"msgstr\": [\"Last-Translator: ZiriSut, 2023\\nLanguage-Team: Kabyle (https://app.transifex.com/nextcloud/teams/64236/kab/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kab\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} tesdatin i d-yeqqimen\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} i d-yeqqimen\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"qqiment-d kra n tesdatin kan\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Rnu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Sefsex asali\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"asizel n wakud i d-yeqqimen\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"yeḥbes\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Sali-d ifuyla\"] } } } } }, { \"locale\": \"kk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Kazakh (https://www.transifex.com/nextcloud/teams/64236/kk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kk\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Kazakh (https://www.transifex.com/nextcloud/teams/64236/kk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kk\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"km\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Khmer (https://www.transifex.com/nextcloud/teams/64236/km/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"km\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Khmer (https://www.transifex.com/nextcloud/teams/64236/km/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: km\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"kn\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Kannada (https://www.transifex.com/nextcloud/teams/64236/kn/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kn\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Kannada (https://www.transifex.com/nextcloud/teams/64236/kn/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kn\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ko\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"이상오, 2024\", \"Language-Team\": \"Korean (https://app.transifex.com/nextcloud/teams/64236/ko/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ko\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\n이상오, 2024\\n\" }, \"msgstr\": [\"Last-Translator: 이상오, 2024\\nLanguage-Team: Korean (https://app.transifex.com/nextcloud/teams/64236/ko/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ko\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{filename}\" contains invalid characters, how do you want to continue?': { \"msgid\": '\"{filename}\" contains invalid characters, how do you want to continue?', \"msgstr\": ['\"{filename}\"에 유효하지 않은 문자가 있습니다, 계속하시겠습니까?'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}개의 파일이 충돌함\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname}에서 {count}개의 파일이 충돌함\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds}초 남음\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} 남음\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"곧 완료\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"취소\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"전체 작업을 취소\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"업로드 취소\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"확인\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"새로 만들기\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"남은 시간 계산\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"현재 버전\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"두 파일을 모두 선택하면, 들어오는 파일의 이름에 번호가 추가됩니다.\"] }, \"Invalid file name\": { \"msgid\": \"Invalid file name\", \"msgstr\": [\"잘못된 파일 이름\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"최근 수정일 알 수 없음\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"새로 만들기\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"새 버전\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"일시정지됨\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"미리보기 이미지\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"이름 바꾸기\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"모든 체크박스 선택\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"기존 파일을 모두 선택\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"새로운 파일을 모두 선택\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"건너뛰기\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count}개의 파일 넘기기\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"크기를 알 수 없음\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"파일 업로드\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"폴더 업로드\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"장치에서 업로드\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"업로드가 취소되었습니다.\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"업로드 진행도\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"들어오는 폴더를 선택했다면, 충돌하는 내부 파일들은 덮어쓰기 됩니다.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"들어오는 폴더를 선택했다면 내용물이 그 기존 폴더 안에 작성되고, 전체적으로 충돌 해결을 수행합니다.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"어떤 파일을 보존하시겠습니까?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"계속하기 위해서는 한 파일에 최소 하나의 버전을 선택해야 합니다.\"] } } } } }, { \"locale\": \"la\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Latin (https://www.transifex.com/nextcloud/teams/64236/la/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"la\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Latin (https://www.transifex.com/nextcloud/teams/64236/la/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: la\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Luxembourgish (https://www.transifex.com/nextcloud/teams/64236/lb/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lb\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Luxembourgish (https://www.transifex.com/nextcloud/teams/64236/lb/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lb\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Lao (https://www.transifex.com/nextcloud/teams/64236/lo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lo\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Lao (https://www.transifex.com/nextcloud/teams/64236/lo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lo\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lt_LT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lt_LT\", \"Plural-Forms\": \"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lt_LT\\nPlural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lv\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Latvian (https://www.transifex.com/nextcloud/teams/64236/lv/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lv\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Latvian (https://www.transifex.com/nextcloud/teams/64236/lv/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lv\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"mk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Сашко Тодоров <sasetodorov@gmail.com>, 2022\", \"Language-Team\": \"Macedonian (https://www.transifex.com/nextcloud/teams/64236/mk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mk\", \"Plural-Forms\": \"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nСашко Тодоров <sasetodorov@gmail.com>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Сашко Тодоров <sasetodorov@gmail.com>, 2022\\nLanguage-Team: Macedonian (https://www.transifex.com/nextcloud/teams/64236/mk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mk\\nPlural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"преостануваат {seconds} секунди\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"преостанува {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"уште неколку секунди\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Додади\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Прекини прикачување\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"приближно преостанато време\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"паузирано\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Прикачување датотеки\"] } } } } }, { \"locale\": \"mn\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"BATKHUYAG Ganbold, 2023\", \"Language-Team\": \"Mongolian (https://app.transifex.com/nextcloud/teams/64236/mn/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mn\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nBATKHUYAG Ganbold, 2023\\n\" }, \"msgstr\": [\"Last-Translator: BATKHUYAG Ganbold, 2023\\nLanguage-Team: Mongolian (https://app.transifex.com/nextcloud/teams/64236/mn/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mn\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} секунд үлдсэн\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} үлдсэн\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"хэдхэн секунд үлдсэн\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Нэмэх\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Илгээлтийг цуцлах\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Үлдсэн хугацааг тооцоолж байна\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"түр зогсоосон\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Файл илгээх\"] } } } } }, { \"locale\": \"mr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Marathi (https://www.transifex.com/nextcloud/teams/64236/mr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mr\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Marathi (https://www.transifex.com/nextcloud/teams/64236/mr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mr\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ms_MY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Malay (Malaysia) (https://www.transifex.com/nextcloud/teams/64236/ms_MY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ms_MY\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Malay (Malaysia) (https://www.transifex.com/nextcloud/teams/64236/ms_MY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ms_MY\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"my\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"my\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: my\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"nb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Roger Knutsen, 2024\", \"Language-Team\": \"Norwegian Bokmål (Norway) (https://app.transifex.com/nextcloud/teams/64236/nb_NO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nb_NO\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nRoger Knutsen, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Roger Knutsen, 2024\\nLanguage-Team: Norwegian Bokmål (Norway) (https://app.transifex.com/nextcloud/teams/64236/nb_NO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nb_NO\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er et forbudt fil- eller mappenavn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er en forbudt filtype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ikke tillatt i et fil- eller mappenavn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file conflict\", \"{count} filkonflikter\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file conflict in {dirname}\", \"{count} filkonflikter i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunder igjen\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} igjen\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"noen få sekunder igjen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hele operasjonen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Avbryt opplastninger\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsett\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Opprett ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Estimerer tid igjen\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Gjeldende versjon\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnavn må ikke slutte med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du velger begge versjonene, vil den innkommende filen ha et nummer lagt til navnet.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ugyldig filnavn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Siste gang redigert ukjent\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nytt filnavn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny versjon\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauset\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forhåndsvis bilde\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Omdøp\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Velg alle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Velg alle eksisterende filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Velg alle nye filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Hopp over\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Skip this file\", \"Hopp over {count} filer\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukjent størrelse\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Last opp filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Last opp mapper\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Last opp fra enhet\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Opplastingen er kansellert\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Opplastingen er hoppet over\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Opplasting av \"{folder}\" er hoppet over'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fremdrift, opplasting\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en innkommende mappe velges, blir eventuelle motstridende filer i den også overskrevet.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en innkommende mappe velges, skrives innholdet inn i den eksisterende mappen, og en rekursiv konfliktløsning utføres.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer vil du beholde?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan enten gi nytt navn til filen, hoppe over denne filen eller avbryte hele operasjonen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du må velge minst en versjon av hver fil for å fortsette.\"] } } } } }, { \"locale\": \"ne\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Nepali (https://www.transifex.com/nextcloud/teams/64236/ne/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ne\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Nepali (https://www.transifex.com/nextcloud/teams/64236/ne/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ne\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"nl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Rico <rico-schwab@hotmail.com>, 2023\", \"Language-Team\": \"Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nl\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nRico <rico-schwab@hotmail.com>, 2023\\n\" }, \"msgstr\": [\"Last-Translator: Rico <rico-schwab@hotmail.com>, 2023\\nLanguage-Team: Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nl\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Nog {seconds} seconden\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{seconds} over\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"Nog een paar seconden\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Voeg toe\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Uploads annuleren\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Schatting van de resterende tijd\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Gepauzeerd\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload bestanden\"] } } } } }, { \"locale\": \"nn_NO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Norwegian Nynorsk (Norway) (https://www.transifex.com/nextcloud/teams/64236/nn_NO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nn_NO\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Norwegian Nynorsk (Norway) (https://www.transifex.com/nextcloud/teams/64236/nn_NO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nn_NO\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"oc\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"oc\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: oc\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"pl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Piotr Strębski <strebski@gmail.com>, 2024\", \"Language-Team\": \"Polish (https://app.transifex.com/nextcloud/teams/64236/pl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pl\", \"Plural-Forms\": \"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nPiotr Strębski <strebski@gmail.com>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Piotr Strębski <strebski@gmail.com>, 2024\\nLanguage-Team: Polish (https://app.transifex.com/nextcloud/teams/64236/pl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pl\\nPlural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}” to zabroniona nazwa pliku lub folderu.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}” jest zabronionym typem pliku.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"Znak „{segment}” nie jest dozwolony w nazwie pliku lub folderu.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"konflikt 1 pliku\", \"{count} konfliktów plików\", \"{count} konfliktów plików\", \"{count} konfliktów plików\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} konfliktowy plik w {dirname}\", \"{count} konfliktowych plików w {dirname}\", \"{count} konfliktowych plików w {dirname}\", \"{count} konfliktowych plików w {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Pozostało {seconds} sekund\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Pozostało {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"Pozostało kilka sekund\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Anuluj\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Anuluj całą operację\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Anuluj wysyłanie\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Kontynuuj\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Utwórz nowe\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Szacowanie pozostałego czasu\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Istniejąca wersja\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Nazwy plików nie mogą kończyć się na „{segment}”.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jeśli wybierzesz obie wersje, do nazwy pliku przychodzącego zostanie dodany numer.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nieprawidłowa nazwa pliku\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Nieznana data ostatniej modyfikacji\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nowy\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nowa nazwa pliku\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nowa wersja\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Wstrzymane\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Podgląd obrazu\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Zmiana nazwy\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Zaznacz wszystkie pola wyboru\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Zaznacz wszystkie istniejące pliki\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Zaznacz wszystkie nowe pliki\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Pomiń\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Pomiń 1 plik\", \"Pomiń {count} plików\", \"Pomiń {count} plików\", \"Pomiń {count} plików\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Nieznany rozmiar\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Prześlij\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Wyślij pliki\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Prześlij foldery\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Prześlij z urządzenia\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Przesyłanie zostało anulowane\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Przesyłanie zostało pominięte\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Przesyłanie „{folder}” zostało pominięte\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Postęp wysyłania\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Po wybraniu folderu przychodzącego wszelkie znajdujące się w nim pliki powodujące konflikt również zostaną nadpisane.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Po wybraniu folderu przychodzącego zawartość jest zapisywana w istniejącym folderze i przeprowadzane jest rekursywne rozwiązywanie konfliktów.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Które pliki chcesz zachować?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Możesz zmienić nazwę pliku, pominąć ten plik lub anulować całą operację.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby kontynuować, musisz wybrać co najmniej jedną wersję każdego pliku.\"] } } } } }, { \"locale\": \"ps\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Pashto (https://www.transifex.com/nextcloud/teams/64236/ps/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ps\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Pashto (https://www.transifex.com/nextcloud/teams/64236/ps/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ps\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"pt_BR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Paulo Schopf, 2024\", \"Language-Team\": \"Portuguese (Brazil) (https://app.transifex.com/nextcloud/teams/64236/pt_BR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pt_BR\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nLeonardo Colman Lopes <leonardo.dev@colman.com.br>, 2024\\nRodrigo Sottomaior Macedo <sottomaiormacedotec@sottomaiormacedo.tech>, 2024\\nPaulo Schopf, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Paulo Schopf, 2024\\nLanguage-Team: Portuguese (Brazil) (https://app.transifex.com/nextcloud/teams/64236/pt_BR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pt_BR\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" é um nome de arquivo ou pasta proibido.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" é um tipo de arquivo proibido.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" não é permitido dentro de um nome de arquivo ou pasta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} arquivos em conflito\", \"{count} arquivos em conflito\", \"{count} arquivos em conflito\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflitos de arquivo em {dirname}\", \"{count} conflitos de arquivo em {dirname}\", \"{count} conflitos de arquivo em {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"alguns segundos restantes\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar a operação inteira\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Criar novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Os nomes dos arquivos não devem terminar com \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se você selecionar ambas as versões, o arquivo recebido terá um número adicionado ao seu nome.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome de arquivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de arquivo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Visualizar imagem\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Marque todas as caixas de seleção\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecione todos os arquivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecione todos os novos arquivos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Pular\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ignorar {count} arquivos\", \"Ignorar {count} arquivos\", \"Ignorar {count} arquivos\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamanho desconhecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Enviar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Enviar arquivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Enviar pastas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Carregar do dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O upload foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O upload foi pulado\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['O upload de \"{folder}\" foi ignorado'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Envio em progresso\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quando uma pasta é selecionada, quaisquer arquivos dentro dela também serão sobrescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando uma pasta de entrada é selecionada, o conteúdo é gravado na pasta existente e uma resolução de conflito recursiva é executada.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais arquivos você deseja manter?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Você pode renomear o arquivo, pular este arquivo ou cancelar toda a operação.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Você precisa selecionar pelo menos uma versão de cada arquivo para continuar.\"] } } } } }, { \"locale\": \"pt_PT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Manuela Silva <mmsrs@sky.com>, 2022\", \"Language-Team\": \"Portuguese (Portugal) (https://www.transifex.com/nextcloud/teams/64236/pt_PT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pt_PT\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nManuela Silva <mmsrs@sky.com>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Manuela Silva <mmsrs@sky.com>, 2022\\nLanguage-Team: Portuguese (Portugal) (https://www.transifex.com/nextcloud/teams/64236/pt_PT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pt_PT\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"faltam {seconds} segundo(s)\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"faltam {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"faltam uns segundos\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Adicionar\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar envios\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"tempo em falta estimado\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Enviar ficheiros\"] } } } } }, { \"locale\": \"ro\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Mădălin Vasiliu <contact@madalinvasiliu.com>, 2022\", \"Language-Team\": \"Romanian (https://www.transifex.com/nextcloud/teams/64236/ro/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ro\", \"Plural-Forms\": \"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nMădălin Vasiliu <contact@madalinvasiliu.com>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Mădălin Vasiliu <contact@madalinvasiliu.com>, 2022\\nLanguage-Team: Romanian (https://www.transifex.com/nextcloud/teams/64236/ro/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ro\\nPlural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} secunde rămase\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} rămas\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"câteva secunde rămase\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Adaugă\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Anulați încărcările\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimarea timpului rămas\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pus pe pauză\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Încarcă fișiere\"] } } } } }, { \"locale\": \"ru\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Roman Stepanov, 2024\", \"Language-Team\": \"Russian (https://app.transifex.com/nextcloud/teams/64236/ru/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ru\", \"Plural-Forms\": \"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nAlex <kekcuha@gmail.com>, 2024\\nВлад, 2024\\nAlex <fedotov22091982@gmail.com>, 2024\\nRoman Stepanov, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Roman Stepanov, 2024\\nLanguage-Team: Russian (https://app.transifex.com/nextcloud/teams/64236/ru/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ru\\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"{segment} — это запрещенное имя файла или папки.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"{segment}— это запрещенный тип файла.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"{segment}не допускается в имени файла или папки.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"конфликт {count} файла\", \"конфликт {count} файлов\", \"конфликт {count} файлов\", \"конфликт {count} файлов\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"конфликт {count} файла в {dirname}\", \"конфликт {count} файлов в {dirname}\", \"конфликт {count} файлов в {dirname}\", \"конфликт {count} файлов в {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"осталось {seconds} секунд\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"осталось {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"осталось несколько секунд\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Отмена\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Отменить всю операцию целиком\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Отменить загрузки\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продолжить\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Создать новое\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"оценка оставшегося времени\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Текущая версия\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Имена файлов не должны заканчиваться на {segment}\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Если вы выберете обе версии, к имени входящего файла будет добавлен номер.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Неверное имя файла\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата последнего изменения неизвестна\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Новый\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Новое имя файла\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Новая версия\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"приостановлено\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Предварительный просмотр\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Переименовать\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Установить все флажки\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Выбрать все существующие файлы\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Выбрать все новые файлы\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Пропуск\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Пропустить файл\", \"Пропустить {count} файла\", \"Пропустить {count} файлов\", \"Пропустить {count} файлов\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Неизвестный размер\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Загрузить\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Загрузка файлов\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Загрузка папок\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Загрузка с устройства\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Загрузка была отменена\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Загрузка была пропущена\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Загрузка {folder}была пропущена\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Состояние передачи на сервер\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Когда выбрана входящая папка, все конфликтующие файлы в ней также будут перезаписаны.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Когда выбрана входящая папка, содержимое записывается в существующую папку и выполняется рекурсивное разрешение конфликтов.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Какие файлы вы хотите сохранить?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Вы можете переименовать файл, пропустить этот файл или отменить всю операцию.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Для продолжения вам нужно выбрать по крайней мере одну версию каждого файла.\"] } } } } }, { \"locale\": \"sc\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Sardinian (https://www.transifex.com/nextcloud/teams/64236/sc/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sc\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Sardinian (https://www.transifex.com/nextcloud/teams/64236/sc/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sc\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"si\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"si\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: si\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Slovak (Slovakia) (https://www.transifex.com/nextcloud/teams/64236/sk_SK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sk_SK\", \"Plural-Forms\": \"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Slovak (Slovakia) (https://www.transifex.com/nextcloud/teams/64236/sk_SK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sk_SK\\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Simon Bogina, 2024\", \"Language-Team\": \"Slovenian (https://app.transifex.com/nextcloud/teams/64236/sl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sl\", \"Plural-Forms\": \"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJan Kraljič <jan.kraljic@patware.eu>, 2024\\nSimon Bogina, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Simon Bogina, 2024\\nLanguage-Team: Slovenian (https://app.transifex.com/nextcloud/teams/64236/sl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sl\\nPlural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" je prepovedano ime datoteka ali mape.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" je prepovedan tip datoteke.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ni dovoljeno v imenu datoteke ali mape.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"1{count} datoteka je v konfliktu\", \"1{count} datoteki sta v konfiktu\", \"1{count} datotek je v konfliktu\", \"{count} datotek je v konfliktu\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} datoteka je v konfiktu v {dirname}\", \"{count} datoteki sta v konfiktu v {dirname}\", \"{count} datotek je v konfiktu v {dirname}\", \"{count} konfliktov datotek v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"še {seconds} sekund\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"še {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"še nekaj sekund\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Prekliči\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Prekliči celotni postopek\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Prekliči pošiljanje\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Nadaljuj\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Ustvari nov\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ocenjujem čas do konca\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Obstoječa različica\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Imena datotek se ne smejo končati s \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Če izberete obe različici, bo imenu dohodne datoteke na koncu dodana številka.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nepravilno ime datoteke\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum zadnje spremembe neznan\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nov\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo ime datoteke\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova različica\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"v premoru\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Predogled slike\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Preimenuj\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Izberi vsa potrditvena polja\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Označi vse obstoječe datoteke\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Označi vse nove datoteke\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Preskoči\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Preskoči datoteko\", \"Preskoči {count} datoteki\", \"Preskoči {count} datotek\", \"Preskoči {count} datotek\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznana velikost\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Naloži\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Naloži datoteke\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Naloži mape\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Naloži iz naprave\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nalaganje je bilo preklicano\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nalaganje je bilo preskočeno\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Nalaganje \"{folder}\" je bilo preskočeno'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Napredek nalaganja\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ko je izbrana dohodna mapa, bodo vse datototeke v konfliktu znotraj nje prepisane.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ko je izbrana dohodna mapa, je vsebina vpisana v obstoječo mapo in je izvedeno rekurzivno reševanje konfliktov.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Katere datoteke želite obdržati?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Datoteko lahko preimenujete, preskočite ali prekličete celo operacijo.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Izbrati morate vsaj eno različico vsake datoteke da nadaljujete.\"] } } } } }, { \"locale\": \"sq\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sq\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sq\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Иван Пешић, 2024\", \"Language-Team\": \"Serbian (https://app.transifex.com/nextcloud/teams/64236/sr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sr\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nИван Пешић, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Иван Пешић, 2024\\nLanguage-Team: Serbian (https://app.transifex.com/nextcloud/teams/64236/sr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sr\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}” је забрањено име фајла или фолдера.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}” је забрањен тип фајла.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}” није дозвољено унутар имена фајла или фолдера.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} фајл конфликт\", \"{count} фајл конфликта\", \"{count} фајл конфликта\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} фајл конфликт у {dirname}\", \"{count} фајл конфликта у {dirname}\", \"{count} фајл конфликта у {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"преостало је {seconds} секунди\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} преостало\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"преостало је неколико секунди\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Отказује комплетну операцију\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Обустави отпремања\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Настави\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Креирај ново\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"процена преосталог времена\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Постојећа верзија\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Имена фајлова не смеју да се завршавају на „{segment}”.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ако изаберете обе верзије, на име долазног фајла ће се додати број.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Неисправно име фајла\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Није познат датум последње измене\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ново\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ново име фајла\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова верзија\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"паузирано\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Слика прегледа\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Промени име\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Штиклирај сва поља за штиклирање\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Изабери све постојеће фајлове\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Изабери све нове фајлове\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Прескочи\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Прескочи овај фајл\", \"Прескочи {count} фајла\", \"Прескочи {count} фајлова\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Непозната величина\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Отпреми\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Отпреми фајлове\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Отпреми фолдере\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Отпреми са уређаја\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Отпремање је отказано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Отпремање је прескочено\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Отпремање „{folder}”је прескочено\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Напредак отпремања\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Када се изабере долазни фолдер, сва имена фајлова са конфликтом унутар њега ће се такође преписати.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Када се изабере долазни фолдер, садржај се уписује у постојећи фолдер и извршава се рекурзивно разрешавање конфликата.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Које фајлове желите да задржите?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Можете или да промените име фајлу, прескочите овај фајл или откажете комплетну операцију.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Морате да изаберете барем једну верзију сваког фајла да наставите.\"] } } } } }, { \"locale\": \"sr@latin\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Serbian (Latin) (https://www.transifex.com/nextcloud/teams/64236/sr@latin/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sr@latin\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Serbian (Latin) (https://www.transifex.com/nextcloud/teams/64236/sr@latin/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sr@latin\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sv\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Magnus Höglund, 2024\", \"Language-Team\": \"Swedish (https://app.transifex.com/nextcloud/teams/64236/sv/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sv\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMagnus Höglund, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Magnus Höglund, 2024\\nLanguage-Team: Swedish (https://app.transifex.com/nextcloud/teams/64236/sv/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sv\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" är ett förbjudet fil- eller mappnamn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" är en förbjuden filtyp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" är inte tillåtet i ett fil- eller mappnamn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} filkonflikt\", \"{count} filkonflikter\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} filkonflikt i {dirname}\", \"{count} filkonflikter i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunder kvarstår\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} kvarstår\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"några sekunder kvar\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hela operationen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Avbryt uppladdningar\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsätt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Skapa ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"uppskattar kvarstående tid\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Nuvarande version\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnamn får inte sluta med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Om du väljer båda versionerna kommer den inkommande filen att läggas till ett nummer i namnet.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ogiltigt filnamn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Senaste ändringsdatum okänt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nytt filnamn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausad\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Förhandsgranska bild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Byt namn\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Markera alla kryssrutor\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Välj alla befintliga filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Välj alla nya filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Hoppa över\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Hoppa över denna fil\", \"Hoppa över {count} filer\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Okänd storlek\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Ladda upp\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Ladda upp filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ladda upp mappar\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Ladda upp från enhet\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Uppladdningen har avbrutits\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Uppladdningen har hoppats över\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Uppladdningen av \"{folder}\" har hoppats över'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uppladdningsförlopp\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"När en inkommande mapp väljs skrivs även alla konfliktande filer i den över.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"När en inkommande mapp väljs skrivs innehållet in i den befintliga mappen och en rekursiv konfliktlösning utförs.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Vilka filer vill du behålla?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan antingen byta namn på filen, hoppa över den här filen eller avbryta hela operationen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du måste välja minst en version av varje fil för att fortsätta.\"] } } } } }, { \"locale\": \"sw\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Swahili (https://www.transifex.com/nextcloud/teams/64236/sw/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sw\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Swahili (https://www.transifex.com/nextcloud/teams/64236/sw/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sw\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ta\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Tamil (https://www.transifex.com/nextcloud/teams/64236/ta/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ta\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Tamil (https://www.transifex.com/nextcloud/teams/64236/ta/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ta\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"th\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Phongpanot Phairat <ppnplus@protonmail.com>, 2022\", \"Language-Team\": \"Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"th_TH\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nPhongpanot Phairat <ppnplus@protonmail.com>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Phongpanot Phairat <ppnplus@protonmail.com>, 2022\\nLanguage-Team: Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: th_TH\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"เหลืออีก {seconds} วินาที\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"เหลืออีก {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"เหลืออีกไม่กี่วินาที\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"เพิ่ม\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"ยกเลิกการอัปโหลด\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"กำลังคำนวณเวลาที่เหลือ\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"หยุดชั่วคราว\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"อัปโหลดไฟล์\"] } } } } }, { \"locale\": \"tk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Turkmen (https://www.transifex.com/nextcloud/teams/64236/tk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"tk\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Turkmen (https://www.transifex.com/nextcloud/teams/64236/tk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: tk\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"tr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Kaya Zeren <kayazeren@gmail.com>, 2024\", \"Language-Team\": \"Turkish (https://app.transifex.com/nextcloud/teams/64236/tr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"tr\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nKaya Zeren <kayazeren@gmail.com>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Kaya Zeren <kayazeren@gmail.com>, 2024\\nLanguage-Team: Turkish (https://app.transifex.com/nextcloud/teams/64236/tr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: tr\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" dosya ya da klasör adına izin verilmiyor.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" dosya türüne izin verilmiyor.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Bir dosya ya da klasör adında \"{segment}\" ifadesine izin verilmiyor.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} dosya çakışması var\", \"{count} dosya çakışması var\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} klasöründe {count} dosya çakışması var\", \"{dirname} klasöründe {count} dosya çakışması var\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saniye kaldı\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} kaldı\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir kaç saniye kaldı\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"İptal\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Tüm işlemi iptal et\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yüklemeleri iptal et\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"İlerle\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Yeni ekle\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"öngörülen kalan süre\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Var olan sürüm\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dosya adları \"{segment}\" ile bitmemeli.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"İki sürümü de seçerseniz, gelen dosyanın adına bir sayı eklenir.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Dosya adı geçersiz\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Son değiştirilme tarihi bilinmiyor\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Yeni\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Yeni dosya adı\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Yeni sürüm\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"duraklatıldı\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Görsel ön izlemesi\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Yeniden adlandır\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Tüm kutuları işaretle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Tüm var olan dosyaları seç\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Tüm yeni dosyaları seç\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Atla\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Bu dosyayı atla\", \"{count} dosyayı atla\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Boyut bilinmiyor\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Yükle\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dosyaları yükle\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Klasörleri yükle\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Aygıttan yükle\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Yükleme iptal edildi\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Yükleme atlandı\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" klasörünün yüklenmesi atlandı'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Yükleme ilerlemesi\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Bir gelen klasör seçildiğinde, içindeki çakışan dosyaların da üzerine yazılır.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bir gelen klasörü seçildiğinde içerik var olan klasöre yazılır ve yinelemeli bir çakışma çözümü uygulanır.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hangi dosyaları tutmak istiyorsunuz?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Dosya adını değiştirebilir, bu dosyayı atlayabilir ya da tüm işlemi iptal edebilirsiniz.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"İlerlemek için her dosyanın en az bir sürümünü seçmelisiniz.\"] } } } } }, { \"locale\": \"ug\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Uyghur (https://www.transifex.com/nextcloud/teams/64236/ug/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ug\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Uyghur (https://www.transifex.com/nextcloud/teams/64236/ug/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ug\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"uk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"O St <oleksiy.stasevych@gmail.com>, 2024\", \"Language-Team\": \"Ukrainian (https://app.transifex.com/nextcloud/teams/64236/uk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"uk\", \"Plural-Forms\": \"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nO St <oleksiy.stasevych@gmail.com>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: O St <oleksiy.stasevych@gmail.com>, 2024\\nLanguage-Team: Ukrainian (https://app.transifex.com/nextcloud/teams/64236/uk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: uk\\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [`\"{segment}\" не є дозволеним ім'ям файлу або каталогу.`] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" не є дозволеним типом файлу.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" не дозволене сполучення символів в назві файлу або каталогу.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} конфліктний файл\", \"{count} конфліктних файли\", \"{count} конфліктних файлів\", \"{count} конфліктних файлів\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} конфліктний файл у каталозі {dirname}\", \"{count} конфліктних файли у каталозі {dirname}\", \"{count} конфліктних файлів у каталозі {dirname}\", \"{count} конфліктних файлів у каталозі {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Залишилося {seconds} секунд\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Залишилося {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"залишилося кілька секунд\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Скасувати\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Скасувати операцію повністю\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Скасувати завантаження\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продовжити\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Створити новий\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"оцінка часу, що залишився\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Присутня версія\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [`Ім'я файлів не можуть закінчуватися на \"{segment}\".`] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Якщо буде вибрано обидві версії, до імени вхідного файлу було додано цифру.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Недійсне ім'я файлу\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата останньої зміни невідома\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Нове\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Нове ім'я файлу\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова версія\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"призупинено\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Попередній перегляд\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Перейменувати\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Вибрати все\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Вибрати усі присутні файли\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Вибрати усі нові файли\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Пропустити\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Пропустити файл\", \"Пропустити {count} файли\", \"Пропустити {count} файлів\", \"Пропустити {count} файлів\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Невідомий розмір\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Завантажити\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Завантажити файли\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Завантажити каталоги\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Завантажити з пристрою\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Завантаження скасовано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Завантаження пропущено\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Завантаження \"{folder}\" пропущено'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Поступ завантаження\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Усі конфліктні файли у вибраному каталозі призначення буде перезаписано поверх.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Якщо буде вибрано вхідний каталог, вміст буде записано до наявного каталогу та вирішено конфлікти у відповідних файлах каталогу та підкаталогів.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Які файли залишити?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Ви можете або перейменувати цей файл, пропустити або скасувати дію з файлом.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Для продовження потрібно вибрати принаймні одну версію для кожного файлу.\"] } } } } }, { \"locale\": \"ur_PK\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Urdu (Pakistan) (https://www.transifex.com/nextcloud/teams/64236/ur_PK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ur_PK\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Urdu (Pakistan) (https://www.transifex.com/nextcloud/teams/64236/ur_PK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ur_PK\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"uz\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Uzbek (https://www.transifex.com/nextcloud/teams/64236/uz/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"uz\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Uzbek (https://www.transifex.com/nextcloud/teams/64236/uz/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: uz\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"vi\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Tung DangQuang, 2023\", \"Language-Team\": \"Vietnamese (https://app.transifex.com/nextcloud/teams/64236/vi/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"vi\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJohn Molakvoæ <skjnldsv@protonmail.com>, 2023\\nTung DangQuang, 2023\\n\" }, \"msgstr\": [\"Last-Translator: Tung DangQuang, 2023\\nLanguage-Team: Vietnamese (https://app.transifex.com/nextcloud/teams/64236/vi/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: vi\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} Tập tin xung đột\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} tập tin lỗi trong {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Còn {second} giây\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Còn lại {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"Còn lại một vài giây\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Huỷ tải lên\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Tiếp Tục\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Thời gian còn lại dự kiến\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Phiên Bản Hiện Tại\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"Nếu bạn chọn cả hai phiên bản, tệp được sao chép sẽ có thêm một số vào tên của nó.\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Ngày sửa dổi lần cuối không xác định\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Tạo Mới\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Phiên Bản Mới\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"đã tạm dừng\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Xem Trước Ảnh\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Chọn tất cả hộp checkbox\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Chọn tất cả các tập tin có sẵn\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Chọn tất cả các tập tin mới\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Bỏ Qua {count} tập tin\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Không rõ dung lượng\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"Dừng Tải Lên\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Tập tin tải lên\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Đang Tải Lên\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Bạn muốn giữ tập tin nào?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Bạn cần chọn ít nhất một phiên bản tập tin mới có thể tiếp tục\"] } } } } }, { \"locale\": \"zh_CN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Gloryandel, 2024\", \"Language-Team\": \"Chinese (China) (https://app.transifex.com/nextcloud/teams/64236/zh_CN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_CN\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nGloryandel, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Gloryandel, 2024\\nLanguage-Team: Chinese (China) (https://app.transifex.com/nextcloud/teams/64236/zh_CN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_CN\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" 是被禁止的文件名或文件夹名。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" 是被禁止的文件类型。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" 不允许包含在文件名或文件夹名中。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}文件冲突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"在{dirname}目录下有{count}个文件冲突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"剩余 {seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩余 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"还剩几秒\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整个操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上传\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"继续\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"新建\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估计剩余时间\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"服务端版本\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['文件名不得以 \"{segment}\" 结尾。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"如果同时选择两个版本,则上传文件的名称中将添加一个数字。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"无效文件名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"文件最后修改日期未知\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新建\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新文件名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"上传版本\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暂停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"图片预览\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"重命名\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"选择所有的选择框\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"保留所有服务端版本\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"保留所有上传版本\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"跳过\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"跳过{count}个文件\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"文件大小未知\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"上传\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上传文件\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"上传文件夹\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"从设备上传\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"上传已取消\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"上传已跳过\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['已跳过上传\"{folder}\"'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上传进度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"当选择上传文件夹时,其中任何冲突的文件也都会被覆盖。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"选择上传文件夹后,内容将写入现有文件夹,并递归执行冲突解决。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"你要保留哪些文件?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"您可以重命名文件、跳过此文件或取消整个操作。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"每个文件至少选择保留一个版本\"] } } } } }, { \"locale\": \"zh_HK\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Café Tango, 2024\", \"Language-Team\": \"Chinese (Hong Kong) (https://app.transifex.com/nextcloud/teams/64236/zh_HK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_HK\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nCafé Tango, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Café Tango, 2024\\nLanguage-Team: Chinese (Hong Kong) (https://app.transifex.com/nextcloud/teams/64236/zh_HK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_HK\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} 個檔案衝突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 中有 {count} 個檔案衝突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"剩餘 {seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩餘 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"還剩幾秒\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整個操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上傳\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"繼續\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估計剩餘時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既有版本\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"若您選取兩個版本,傳入檔案的名稱將會新增編號。\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最後修改日期不詳\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新增\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新版本 \"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暫停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"預覽圖片\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"選取所有核取方塊\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"選取所有既有檔案\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"選取所有新檔案\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"略過 {count} 個檔案\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"大小不詳\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"已取消上傳\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上傳檔案\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上傳進度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"選取傳入資料夾後,其中任何的衝突檔案都會被覆寫。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"選擇傳入資料夾後,內容將寫入現有資料夾並執行遞歸衝突解決。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"您想保留哪些檔案?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"您必須為每個檔案都至少選取一個版本以繼續。\"] } } } } }, { \"locale\": \"zh_TW\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"黃柏諺 <s8321414@gmail.com>, 2024\", \"Language-Team\": \"Chinese (Taiwan) (https://app.transifex.com/nextcloud/teams/64236/zh_TW/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_TW\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\n黃柏諺 <s8321414@gmail.com>, 2024\\n\" }, \"msgstr\": [\"Last-Translator: 黃柏諺 <s8321414@gmail.com>, 2024\\nLanguage-Team: Chinese (Taiwan) (https://app.transifex.com/nextcloud/teams/64236/zh_TW/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_TW\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} 個檔案衝突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 中有 {count} 個檔案衝突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"剩餘 {seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩餘 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"還剩幾秒\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整個操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上傳\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"繼續\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估計剩餘時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既有版本\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"若您選取兩個版本,複製的檔案的名稱將會新增編號。\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最後修改日期未知\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新增\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新版本\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暫停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"預覽圖片\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"選取所有核取方塊\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"選取所有既有檔案\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"選取所有新檔案\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"略過 {count} 檔案\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"未知大小\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"已取消上傳\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上傳檔案\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上傳進度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"選取傳入資料夾後,其中任何的衝突檔案都會被覆寫。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"您想保留哪些檔案?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"您必須為每個檔案都至少選取一個版本以繼續。\"] } } } } }].map((data) => gtBuilder.addTranslation(data.locale, data.json));\nconst gt = gtBuilder.build();\nconst n = gt.ngettext.bind(gt);\nconst t = gt.gettext.bind(gt);\nconst logger = getLoggerBuilder().setApp(\"@nextcloud/upload\").detectUser().build();\nvar Status = /* @__PURE__ */ ((Status2) => {\n Status2[Status2[\"IDLE\"] = 0] = \"IDLE\";\n Status2[Status2[\"UPLOADING\"] = 1] = \"UPLOADING\";\n Status2[Status2[\"PAUSED\"] = 2] = \"PAUSED\";\n return Status2;\n})(Status || {});\nclass Uploader {\n // Initialized via setter in the constructor\n _destinationFolder;\n _isPublic;\n _customHeaders;\n // Global upload queue\n _uploadQueue = [];\n _jobQueue = new PQueue({\n // Maximum number of concurrent uploads\n // @ts-expect-error TS2339 Object has no defined properties\n concurrency: getCapabilities().files?.chunked_upload?.max_parallel_count ?? 5\n });\n _queueSize = 0;\n _queueProgress = 0;\n _queueStatus = 0;\n _notifiers = [];\n /**\n * Initialize uploader\n *\n * @param {boolean} isPublic are we in public mode ?\n * @param {Folder} destinationFolder the context folder to operate, relative to the root folder\n */\n constructor(isPublic = false, destinationFolder) {\n this._isPublic = isPublic;\n this._customHeaders = {};\n if (!destinationFolder) {\n const source = `${davRemoteURL}${davRootPath}`;\n let owner;\n if (isPublic) {\n owner = \"anonymous\";\n } else {\n const user = getCurrentUser()?.uid;\n if (!user) {\n throw new Error(\"User is not logged in\");\n }\n owner = user;\n }\n destinationFolder = new Folder({\n id: 0,\n owner,\n permissions: Permission.ALL,\n root: davRootPath,\n source\n });\n }\n this.destination = destinationFolder;\n this._jobQueue.addListener(\"idle\", () => this.reset());\n logger.debug(\"Upload workspace initialized\", {\n destination: this.destination,\n root: this.root,\n isPublic,\n maxChunksSize: getMaxChunksSize()\n });\n }\n /**\n * Get the upload destination path relative to the root folder\n */\n get destination() {\n return this._destinationFolder;\n }\n /**\n * Set the upload destination path relative to the root folder\n */\n set destination(folder) {\n if (!folder || folder.type !== FileType.Folder || !folder.source) {\n throw new Error(\"Invalid destination folder\");\n }\n logger.debug(\"Destination set\", { folder });\n this._destinationFolder = folder;\n }\n /**\n * Get the root folder\n */\n get root() {\n return this._destinationFolder.source;\n }\n /**\n * Get registered custom headers for uploads\n */\n get customHeaders() {\n return structuredClone(this._customHeaders);\n }\n /**\n * Set a custom header\n * @param name The header to set\n * @param value The string value\n */\n setCustomHeader(name, value = \"\") {\n this._customHeaders[name] = value;\n }\n /**\n * Unset a custom header\n * @param name The header to unset\n */\n deleteCustomerHeader(name) {\n delete this._customHeaders[name];\n }\n /**\n * Get the upload queue\n */\n get queue() {\n return this._uploadQueue;\n }\n reset() {\n this._uploadQueue.splice(0, this._uploadQueue.length);\n this._jobQueue.clear();\n this._queueSize = 0;\n this._queueProgress = 0;\n this._queueStatus = 0;\n }\n /**\n * Pause any ongoing upload(s)\n */\n pause() {\n this._jobQueue.pause();\n this._queueStatus = 2;\n }\n /**\n * Resume any pending upload(s)\n */\n start() {\n this._jobQueue.start();\n this._queueStatus = 1;\n this.updateStats();\n }\n /**\n * Get the upload queue stats\n */\n get info() {\n return {\n size: this._queueSize,\n progress: this._queueProgress,\n status: this._queueStatus\n };\n }\n updateStats() {\n const size = this._uploadQueue.map((upload2) => upload2.size).reduce((partialSum, a) => partialSum + a, 0);\n const uploaded = this._uploadQueue.map((upload2) => upload2.uploaded).reduce((partialSum, a) => partialSum + a, 0);\n this._queueSize = size;\n this._queueProgress = uploaded;\n if (this._queueStatus === 2) {\n return;\n }\n this._queueStatus = this._jobQueue.size > 0 ? 1 : 0;\n }\n addNotifier(notifier) {\n this._notifiers.push(notifier);\n }\n /**\n * Notify listeners of the upload completion\n * @param upload The upload that finished\n */\n _notifyAll(upload2) {\n for (const notifier of this._notifiers) {\n try {\n notifier(upload2);\n } catch (error) {\n logger.warn(\"Error in upload notifier\", { error, source: upload2.source });\n }\n }\n }\n /**\n * Uploads multiple files or folders while preserving the relative path (if available)\n * @param {string} destination The destination path relative to the root folder. e.g. /foo/bar (a file \"a.txt\" will be uploaded then to \"/foo/bar/a.txt\")\n * @param {Array<File|FileSystemEntry>} files The files and/or folders to upload\n * @param {Function} callback Callback that receives the nodes in the current folder and the current path to allow resolving conflicts, all nodes that are returned will be uploaded (if a folder does not exist it will be created)\n * @return Cancelable promise that resolves to an array of uploads\n *\n * @example\n * ```ts\n * // For example this is from handling the onchange event of an input[type=file]\n * async handleFiles(files: File[]) {\n * this.uploads = await this.uploader.batchUpload('uploads', files, this.handleConflicts)\n * }\n *\n * async handleConflicts(nodes: File[], currentPath: string) {\n * const conflicts = getConflicts(nodes, this.fetchContent(currentPath))\n * if (conflicts.length === 0) {\n * // No conflicts so upload all\n * return nodes\n * } else {\n * // Open the conflict picker to resolve conflicts\n * try {\n * const { selected, renamed } = await openConflictPicker(currentPath, conflicts, this.fetchContent(currentPath), { recursive: true })\n * return [...selected, ...renamed]\n * } catch (e) {\n * return false\n * }\n * }\n * }\n * ```\n */\n batchUpload(destination, files, callback) {\n if (!callback) {\n callback = async (files2) => files2;\n }\n return new PCancelable(async (resolve, reject, onCancel) => {\n const rootFolder = new Directory(\"\");\n await rootFolder.addChildren(files);\n const target = `${this.root.replace(/\\/$/, \"\")}/${destination.replace(/^\\//, \"\")}`;\n const upload2 = new Upload(target, false, 0, rootFolder);\n upload2.status = Status$1.UPLOADING;\n this._uploadQueue.push(upload2);\n logger.debug(\"Starting new batch upload\", { target });\n try {\n const client = davGetClient(this.root, this._customHeaders);\n const promise = this.uploadDirectory(destination, rootFolder, callback, client);\n onCancel(() => promise.cancel());\n const uploads = await promise;\n upload2.status = Status$1.FINISHED;\n resolve(uploads);\n } catch (error) {\n logger.error(\"Error in batch upload\", { error });\n upload2.status = Status$1.FAILED;\n reject(t(\"Upload has been cancelled\"));\n } finally {\n this._notifyAll(upload2);\n this.updateStats();\n }\n });\n }\n /**\n * Helper to create a directory wrapped inside an Upload class\n * @param destination Destination where to create the directory\n * @param directory The directory to create\n * @param client The cached WebDAV client\n */\n createDirectory(destination, directory, client) {\n const folderPath = normalize(`${destination}/${directory.name}`).replace(/\\/$/, \"\");\n const rootPath = `${this.root.replace(/\\/$/, \"\")}/${folderPath.replace(/^\\//, \"\")}`;\n if (!directory.name) {\n throw new Error(\"Can not create empty directory\");\n }\n const currentUpload = new Upload(rootPath, false, 0, directory);\n this._uploadQueue.push(currentUpload);\n return new PCancelable(async (resolve, reject, onCancel) => {\n const abort = new AbortController();\n onCancel(() => abort.abort());\n currentUpload.signal.addEventListener(\"abort\", () => reject(t(\"Upload has been cancelled\")));\n await this._jobQueue.add(async () => {\n currentUpload.status = Status$1.UPLOADING;\n try {\n await client.createDirectory(folderPath, { signal: abort.signal });\n resolve(currentUpload);\n } catch (error) {\n if (error && typeof error === \"object\" && \"status\" in error && error.status === 405) {\n currentUpload.status = Status$1.FINISHED;\n logger.debug(\"Directory already exists, writing into it\", { directory: directory.name });\n } else {\n currentUpload.status = Status$1.FAILED;\n reject(error);\n }\n } finally {\n this._notifyAll(currentUpload);\n this.updateStats();\n }\n });\n });\n }\n // Helper for uploading directories (recursively)\n uploadDirectory(destination, directory, callback, client) {\n const folderPath = normalize(`${destination}/${directory.name}`).replace(/\\/$/, \"\");\n return new PCancelable(async (resolve, reject, onCancel) => {\n const abort = new AbortController();\n onCancel(() => abort.abort());\n const selectedForUpload = await callback(directory.children, folderPath);\n if (selectedForUpload === false) {\n logger.debug(\"Upload canceled by user\", { directory });\n reject(t(\"Upload has been cancelled\"));\n return;\n } else if (selectedForUpload.length === 0 && directory.children.length > 0) {\n logger.debug(\"Skipping directory, as all files were skipped by user\", { directory });\n resolve([]);\n return;\n }\n const directories = [];\n const uploads = [];\n abort.signal.addEventListener(\"abort\", () => {\n directories.forEach((upload2) => upload2.cancel());\n uploads.forEach((upload2) => upload2.cancel());\n });\n logger.debug(\"Start directory upload\", { directory });\n try {\n if (directory.name) {\n uploads.push(this.createDirectory(destination, directory, client));\n await uploads.at(-1);\n }\n for (const node of selectedForUpload) {\n if (node instanceof Directory) {\n directories.push(this.uploadDirectory(folderPath, node, callback, client));\n } else {\n uploads.push(this.upload(`${folderPath}/${node.name}`, node));\n }\n }\n const resolvedUploads = await Promise.all(uploads);\n const resolvedDirectoryUploads = await Promise.all(directories);\n resolve([resolvedUploads, ...resolvedDirectoryUploads].flat());\n } catch (e) {\n abort.abort(e);\n reject(e);\n }\n });\n }\n /**\n * Upload a file to the given path\n * @param {string} destination the destination path relative to the root folder. e.g. /foo/bar.txt\n * @param {File|FileSystemFileEntry} fileHandle the file to upload\n * @param {string} root the root folder to upload to\n * @param retries number of retries\n */\n upload(destination, fileHandle, root, retries = 5) {\n root = root || this.root;\n const destinationPath = `${root.replace(/\\/$/, \"\")}/${destination.replace(/^\\//, \"\")}`;\n const { origin } = new URL(destinationPath);\n const encodedDestinationFile = origin + encodePath(destinationPath.slice(origin.length));\n logger.debug(`Uploading ${fileHandle.name} to ${encodedDestinationFile}`);\n const promise = new PCancelable(async (resolve, reject, onCancel) => {\n if (isFileSystemFileEntry(fileHandle)) {\n fileHandle = await new Promise((resolve2) => fileHandle.file(resolve2, reject));\n }\n const file = fileHandle;\n const maxChunkSize = getMaxChunksSize(\"size\" in file ? file.size : void 0);\n const disabledChunkUpload = this._isPublic || maxChunkSize === 0 || \"size\" in file && file.size < maxChunkSize;\n const upload2 = new Upload(destinationPath, !disabledChunkUpload, file.size, file);\n this._uploadQueue.push(upload2);\n this.updateStats();\n onCancel(upload2.cancel);\n if (!disabledChunkUpload) {\n logger.debug(\"Initializing chunked upload\", { file, upload: upload2 });\n const tempUrl = await initChunkWorkspace(encodedDestinationFile, retries);\n const chunksQueue = [];\n for (let chunk = 0; chunk < upload2.chunks; chunk++) {\n const bufferStart = chunk * maxChunkSize;\n const bufferEnd = Math.min(bufferStart + maxChunkSize, upload2.size);\n const blob = () => getChunk(file, bufferStart, maxChunkSize);\n const request = () => {\n return uploadData(\n `${tempUrl}/${chunk + 1}`,\n blob,\n upload2.signal,\n () => this.updateStats(),\n encodedDestinationFile,\n {\n ...this._customHeaders,\n \"X-OC-Mtime\": Math.floor(file.lastModified / 1e3),\n \"OC-Total-Length\": file.size,\n \"Content-Type\": \"application/octet-stream\"\n },\n retries\n ).then(() => {\n upload2.uploaded = upload2.uploaded + maxChunkSize;\n }).catch((error) => {\n if (error?.response?.status === 507) {\n logger.error(\"Upload failed, not enough space on the server or quota exceeded. Cancelling the remaining chunks\", { error, upload: upload2 });\n upload2.cancel();\n upload2.status = Status$1.FAILED;\n throw error;\n }\n if (!isCancel(error)) {\n logger.error(`Chunk ${chunk + 1} ${bufferStart} - ${bufferEnd} uploading failed`, { error, upload: upload2 });\n upload2.cancel();\n upload2.status = Status$1.FAILED;\n }\n throw error;\n });\n };\n chunksQueue.push(this._jobQueue.add(request));\n }\n try {\n await Promise.all(chunksQueue);\n this.updateStats();\n upload2.response = await axios.request({\n method: \"MOVE\",\n url: `${tempUrl}/.file`,\n headers: {\n ...this._customHeaders,\n \"X-OC-Mtime\": Math.floor(file.lastModified / 1e3),\n \"OC-Total-Length\": file.size,\n Destination: encodedDestinationFile\n }\n });\n this.updateStats();\n upload2.status = Status$1.FINISHED;\n logger.debug(`Successfully uploaded ${file.name}`, { file, upload: upload2 });\n resolve(upload2);\n } catch (error) {\n if (!isCancel(error)) {\n upload2.status = Status$1.FAILED;\n reject(\"Failed assembling the chunks together\");\n } else {\n upload2.status = Status$1.FAILED;\n reject(t(\"Upload has been cancelled\"));\n }\n axios.request({\n method: \"DELETE\",\n url: `${tempUrl}`\n });\n }\n this._notifyAll(upload2);\n } else {\n logger.debug(\"Initializing regular upload\", { file, upload: upload2 });\n const blob = await getChunk(file, 0, upload2.size);\n const request = async () => {\n try {\n upload2.response = await uploadData(\n encodedDestinationFile,\n blob,\n upload2.signal,\n (event) => {\n upload2.uploaded = upload2.uploaded + event.bytes;\n this.updateStats();\n },\n void 0,\n {\n ...this._customHeaders,\n \"X-OC-Mtime\": Math.floor(file.lastModified / 1e3),\n \"Content-Type\": file.type\n }\n );\n upload2.uploaded = upload2.size;\n this.updateStats();\n logger.debug(`Successfully uploaded ${file.name}`, { file, upload: upload2 });\n resolve(upload2);\n } catch (error) {\n if (isCancel(error)) {\n upload2.status = Status$1.FAILED;\n reject(t(\"Upload has been cancelled\"));\n return;\n }\n if (error?.response) {\n upload2.response = error.response;\n }\n upload2.status = Status$1.FAILED;\n logger.error(`Failed uploading ${file.name}`, { error, file, upload: upload2 });\n reject(\"Failed uploading the file\");\n }\n this._notifyAll(upload2);\n };\n this._jobQueue.add(request);\n this.updateStats();\n }\n return upload2;\n });\n return promise;\n }\n}\nfunction normalizeComponent(scriptExports, render6, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {\n var options = typeof scriptExports === \"function\" ? scriptExports.options : scriptExports;\n if (render6) {\n options.render = render6;\n options.staticRenderFns = staticRenderFns;\n options._compiled = true;\n }\n if (scopeId) {\n options._scopeId = \"data-v-\" + scopeId;\n }\n return {\n exports: scriptExports,\n options\n };\n}\nconst _sfc_main$4 = {\n name: \"CancelIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$4 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon cancel-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M12 4C10.1 4 8.4 4.6 7.1 5.7L18.3 16.9C19.3 15.5 20 13.8 20 12C20 7.6 16.4 4 12 4M16.9 18.3L5.7 7.1C4.6 8.4 4 10.1 4 12C4 16.4 7.6 20 12 20C13.9 20 15.6 19.4 16.9 18.3Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n null\n);\nconst IconCancel = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"FolderUploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon folder-upload-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst IconFolderUpload = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"PlusIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon plus-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst IconPlus = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"UploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon upload-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst IconUpload = __component__$1.exports;\nfunction showInvalidFilenameDialog(error) {\n const InvalidFilenameDialog = defineAsyncComponent(() => import(\"./InvalidFilenameDialog-DtcCk3Tc.mjs\"));\n const { promise, reject, resolve } = Promise.withResolvers();\n spawnDialog(\n InvalidFilenameDialog,\n {\n error,\n validateFilename\n },\n (...rest) => {\n const [{ skip, rename }] = rest;\n if (skip) {\n resolve(false);\n } else if (rename) {\n resolve(rename);\n } else {\n reject();\n }\n }\n );\n return promise;\n}\nfunction hasConflict(files, content) {\n return getConflicts(files, content).length > 0;\n}\nfunction getConflicts(files, content) {\n const contentNames = content.map((node) => node.basename);\n const conflicts = files.filter((node) => {\n const name = \"basename\" in node ? node.basename : node.name;\n return contentNames.indexOf(name) !== -1;\n });\n return conflicts;\n}\nfunction uploadConflictHandler(contentsCallback) {\n return async (nodes, path) => {\n try {\n const content = await contentsCallback(path).catch(() => []);\n const conflicts = getConflicts(nodes, content);\n if (conflicts.length > 0) {\n const { selected, renamed } = await openConflictPicker(path, conflicts, content, { recursive: true });\n nodes = [...selected, ...renamed];\n }\n const filesToUpload = [];\n for (const file of nodes) {\n try {\n validateFilename(file.name);\n filesToUpload.push(file);\n } catch (error) {\n if (!(error instanceof InvalidFilenameError)) {\n logger.error(`Unexpected error while validating ${file.name}`, { error });\n throw error;\n }\n let newName = await showInvalidFilenameDialog(error);\n if (newName !== false) {\n newName = getUniqueName(newName, nodes.map((node) => node.name));\n Object.defineProperty(file, \"name\", { value: newName });\n filesToUpload.push(file);\n }\n }\n }\n if (filesToUpload.length === 0 && nodes.length > 0) {\n const folder = basename(path);\n showInfo(\n folder ? t('Upload of \"{folder}\" has been skipped', { folder }) : t(\"Upload has been skipped\")\n );\n }\n return filesToUpload;\n } catch (error) {\n logger.debug(\"Upload has been cancelled\", { error });\n showWarning(t(\"Upload has been cancelled\"));\n return false;\n }\n };\n}\nconst _sfc_main = Vue.extend({\n name: \"UploadPicker\",\n components: {\n IconCancel,\n IconFolderUpload,\n IconPlus,\n IconUpload,\n NcActionButton,\n NcActionCaption,\n NcActionSeparator,\n NcActions,\n NcButton,\n NcIconSvgWrapper,\n NcProgressBar\n },\n props: {\n accept: {\n type: Array,\n default: null\n },\n disabled: {\n type: Boolean,\n default: false\n },\n multiple: {\n type: Boolean,\n default: false\n },\n /**\n * Allow to disable the \"new\"-menu for this UploadPicker instance\n * @default false\n */\n noMenu: {\n type: Boolean,\n default: false\n },\n destination: {\n type: Folder,\n default: void 0\n },\n allowFolders: {\n type: Boolean,\n default: false\n },\n /**\n * List of file present in the destination folder\n * It is also possible to provide a function that takes a relative path to the current directory and returns the content of it\n * Note: If a function is passed it should return the current base directory when no path or an empty is passed\n */\n content: {\n type: [Array, Function],\n default: () => []\n },\n /**\n * Overwrite forbidden characters (by default the capabilities of the server are used)\n * @deprecated Deprecated and will be removed in the next major version\n */\n forbiddenCharacters: {\n type: Array,\n default: () => []\n }\n },\n setup() {\n return {\n t,\n // non reactive data / properties\n progressTimeId: `nc-uploader-progress-${Math.random().toString(36).slice(7)}`\n };\n },\n data() {\n return {\n eta: null,\n timeLeft: \"\",\n newFileMenuEntries: [],\n uploadManager: getUploader()\n };\n },\n computed: {\n menuEntriesUpload() {\n return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.UploadFromDevice);\n },\n menuEntriesNew() {\n return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.CreateNew);\n },\n menuEntriesOther() {\n return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.Other);\n },\n /**\n * Check whether the current browser supports uploading directories\n * Hint: This does not check if the current connection supports this, as some browsers require a secure context!\n */\n canUploadFolders() {\n return this.allowFolders && \"webkitdirectory\" in document.createElement(\"input\");\n },\n totalQueueSize() {\n return this.uploadManager.info?.size || 0;\n },\n uploadedQueueSize() {\n return this.uploadManager.info?.progress || 0;\n },\n progress() {\n return Math.round(this.uploadedQueueSize / this.totalQueueSize * 100) || 0;\n },\n queue() {\n return this.uploadManager.queue;\n },\n hasFailure() {\n return this.queue?.filter((upload2) => upload2.status === Status$1.FAILED).length !== 0;\n },\n isUploading() {\n return this.queue?.length > 0;\n },\n isAssembling() {\n return this.queue?.filter((upload2) => upload2.status === Status$1.ASSEMBLING).length !== 0;\n },\n isPaused() {\n return this.uploadManager.info?.status === Status.PAUSED;\n },\n buttonLabel() {\n return this.noMenu ? t(\"Upload\") : t(\"New\");\n },\n // Hide the button text if we're uploading\n buttonName() {\n if (this.isUploading) {\n return void 0;\n }\n return this.buttonLabel;\n }\n },\n watch: {\n allowFolders: {\n immediate: true,\n handler() {\n if (typeof this.content !== \"function\" && this.allowFolders) {\n logger.error(\"[UploadPicker] Setting `allowFolders` is only allowed if `content` is a function\");\n }\n }\n },\n destination(destination) {\n this.setDestination(destination);\n },\n totalQueueSize(size) {\n this.eta = makeEta({ min: 0, max: size });\n this.updateStatus();\n },\n uploadedQueueSize(size) {\n this.eta?.report?.(size);\n this.updateStatus();\n },\n isPaused(isPaused) {\n if (isPaused) {\n this.$emit(\"paused\", this.queue);\n } else {\n this.$emit(\"resumed\", this.queue);\n }\n }\n },\n beforeMount() {\n if (this.destination) {\n this.setDestination(this.destination);\n }\n this.uploadManager.addNotifier(this.onUploadCompletion);\n logger.debug(\"UploadPicker initialised\");\n },\n methods: {\n /**\n * Handle clicking a new-menu entry\n * @param entry The entry that was clicked\n */\n async onClick(entry) {\n entry.handler(\n this.destination,\n await this.getContent().catch(() => [])\n );\n },\n /**\n * Trigger file picker\n * @param uploadFolders Upload folders\n */\n onTriggerPick(uploadFolders = false) {\n const input = this.$refs.input;\n if (this.canUploadFolders) {\n input.webkitdirectory = uploadFolders;\n }\n this.$nextTick(() => input.click());\n },\n /**\n * Helper for backwards compatibility that queries the content of the current directory\n * @param path The current path\n */\n async getContent(path) {\n return Array.isArray(this.content) ? this.content : await this.content(path);\n },\n /**\n * Start uploading\n */\n onPick() {\n const input = this.$refs.input;\n const files = input.files ? Array.from(input.files) : [];\n this.uploadManager.batchUpload(\"\", files, uploadConflictHandler(this.getContent)).catch((error) => logger.debug(\"Error while uploading\", { error })).finally(() => this.resetForm());\n },\n resetForm() {\n const form = this.$refs.form;\n form?.reset();\n },\n /**\n * Cancel ongoing queue\n */\n onCancel() {\n this.uploadManager.queue.forEach((upload2) => {\n upload2.cancel();\n });\n this.resetForm();\n },\n updateStatus() {\n if (this.isPaused) {\n this.timeLeft = t(\"paused\");\n return;\n }\n const estimate = Math.round(this.eta.estimate());\n if (estimate === Infinity) {\n this.timeLeft = t(\"estimating time left\");\n return;\n }\n if (estimate < 10) {\n this.timeLeft = t(\"a few seconds left\");\n return;\n }\n if (estimate > 60) {\n const date = /* @__PURE__ */ new Date(0);\n date.setSeconds(estimate);\n const time = date.toISOString().slice(11, 11 + 8);\n this.timeLeft = t(\"{time} left\", { time });\n return;\n }\n this.timeLeft = t(\"{seconds} seconds left\", { seconds: estimate });\n },\n setDestination(destination) {\n if (!this.destination) {\n logger.debug(\"Invalid destination\");\n return;\n }\n this.uploadManager.destination = destination;\n this.newFileMenuEntries = getNewFileMenuEntries(destination);\n },\n onUploadCompletion(upload2) {\n if (upload2.status === Status$1.FAILED) {\n this.$emit(\"failed\", upload2);\n } else {\n this.$emit(\"uploaded\", upload2);\n }\n }\n }\n});\nvar _sfc_render = function render5() {\n var _vm = this, _c = _vm._self._c;\n _vm._self._setupProxy;\n return _vm.destination ? _c(\"form\", { ref: \"form\", staticClass: \"upload-picker\", class: { \"upload-picker--uploading\": _vm.isUploading, \"upload-picker--paused\": _vm.isPaused }, attrs: { \"data-cy-upload-picker\": \"\" } }, [(_vm.noMenu || _vm.newFileMenuEntries.length === 0) && !_vm.canUploadFolders ? _c(\"NcButton\", { attrs: { \"disabled\": _vm.disabled, \"data-cy-upload-picker-add\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-file\", \"type\": \"secondary\" }, on: { \"click\": function($event) {\n return _vm.onTriggerPick();\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconPlus\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 1991456921) }, [_vm._v(\" \" + _vm._s(_vm.buttonName) + \" \")]) : _c(\"NcActions\", { attrs: { \"aria-label\": _vm.buttonLabel, \"menu-name\": _vm.buttonName, \"type\": \"secondary\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconPlus\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 1991456921) }, [_c(\"NcActionCaption\", { attrs: { \"name\": _vm.t(\"Upload from device\") } }), _c(\"NcActionButton\", { attrs: { \"data-cy-upload-picker-add\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-file\", \"close-after-click\": true }, on: { \"click\": function($event) {\n return _vm.onTriggerPick();\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconUpload\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 337456192) }, [_vm._v(\" \" + _vm._s(_vm.t(\"Upload files\")) + \" \")]), _vm.canUploadFolders ? _c(\"NcActionButton\", { attrs: { \"close-after-click\": \"\", \"data-cy-upload-picker-add-folders\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-folder\" }, on: { \"click\": function($event) {\n return _vm.onTriggerPick(true);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconFolderUpload\", { staticStyle: { \"color\": \"var(--color-primary-element)\" }, attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 1037549157) }, [_vm._v(\" \" + _vm._s(_vm.t(\"Upload folders\")) + \" \")]) : _vm._e(), !_vm.noMenu ? _vm._l(_vm.menuEntriesUpload, function(entry) {\n return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n return _vm.onClick(entry);\n } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n }) : _vm._e(), !_vm.noMenu && _vm.menuEntriesNew.length > 0 ? [_c(\"NcActionSeparator\"), _c(\"NcActionCaption\", { attrs: { \"name\": _vm.t(\"Create new\") } }), _vm._l(_vm.menuEntriesNew, function(entry) {\n return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n return _vm.onClick(entry);\n } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n })] : _vm._e(), !_vm.noMenu && _vm.menuEntriesOther.length > 0 ? [_c(\"NcActionSeparator\"), _vm._l(_vm.menuEntriesOther, function(entry) {\n return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n return _vm.onClick(entry);\n } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n })] : _vm._e()], 2), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.isUploading, expression: \"isUploading\" }], staticClass: \"upload-picker__progress\" }, [_c(\"NcProgressBar\", { attrs: { \"aria-label\": _vm.t(\"Upload progress\"), \"aria-describedby\": _vm.progressTimeId, \"error\": _vm.hasFailure, \"value\": _vm.progress, \"size\": \"medium\" } }), _c(\"p\", { attrs: { \"id\": _vm.progressTimeId } }, [_vm._v(\" \" + _vm._s(_vm.timeLeft) + \" \")])], 1), _vm.isUploading ? _c(\"NcButton\", { staticClass: \"upload-picker__cancel\", attrs: { \"type\": \"tertiary\", \"aria-label\": _vm.t(\"Cancel uploads\"), \"data-cy-upload-picker-cancel\": \"\" }, on: { \"click\": _vm.onCancel }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconCancel\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 3076329829) }) : _vm._e(), _c(\"input\", { ref: \"input\", staticClass: \"hidden-visually\", attrs: { \"accept\": _vm.accept?.join?.(\", \"), \"multiple\": _vm.multiple, \"data-cy-upload-picker-input\": \"\", \"type\": \"file\" }, on: { \"change\": _vm.onPick } })], 1) : _vm._e();\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"c5517ef8\"\n);\nconst UploadPicker = __component__.exports;\nfunction getUploader(isPublic = isPublicShare(), forceRecreate = false) {\n if (forceRecreate || window._nc_uploader === void 0) {\n window._nc_uploader = new Uploader(isPublic);\n }\n return window._nc_uploader;\n}\nfunction upload(destinationPath, file) {\n const uploader = getUploader();\n uploader.upload(destinationPath, file);\n return uploader;\n}\nasync function openConflictPicker(dirname, conflicts, content, options) {\n const ConflictPicker = defineAsyncComponent(() => import(\"./ConflictPicker-CAhCQs1P.mjs\"));\n return new Promise((resolve, reject) => {\n const picker = new Vue({\n name: \"ConflictPickerRoot\",\n render: (h) => h(ConflictPicker, {\n props: {\n dirname,\n conflicts,\n content,\n recursiveUpload: options?.recursive === true\n },\n on: {\n submit(results) {\n resolve(results);\n picker.$destroy();\n picker.$el?.parentNode?.removeChild(picker.$el);\n },\n cancel(error) {\n reject(error ?? new Error(\"Canceled\"));\n picker.$destroy();\n picker.$el?.parentNode?.removeChild(picker.$el);\n }\n }\n })\n });\n picker.$mount();\n document.body.appendChild(picker.$el);\n });\n}\nexport {\n Status$1 as S,\n UploadPicker as U,\n isFileSystemEntry as a,\n n as b,\n getConflicts as c,\n uploadConflictHandler as d,\n Upload as e,\n Uploader as f,\n getUploader as g,\n hasConflict as h,\n isFileSystemFileEntry as i,\n Status as j,\n logger as l,\n normalizeComponent as n,\n openConflictPicker as o,\n t,\n upload as u\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"5706\":\"3153330af47fc26a725a\",\"5828\":\"251f4c2fee5cd4300ac4\",\"6127\":\"da37b69cd9ee64a1836b\",\"6473\":\"29a59b355eab986be8fd\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2882;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2882: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(50458)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","pinia","createPinia","Vue","use","Router","originalPush","prototype","push","to","onComplete","onAbort","call","this","catch","err","mode","base","generateUrl","linkActiveClass","routes","path","redirect","name","params","view","props","stringifyQuery","query","result","queryString","stringify","replace","RouterService","constructor","router","_defineProperty","currentRoute","_router","goTo","arguments","length","undefined","goToRoute","emits","title","type","String","fillColor","default","size","Number","_vm","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","throttle","delay","callback","options","timeoutID","_ref","_ref$noTrailing","noTrailing","_ref$noLeading","noLeading","_ref$debounceMode","debounceMode","cancelled","lastExec","clearExistingTimeout","clearTimeout","wrapper","_len","arguments_","Array","_key","self","elapsed","Date","now","exec","apply","clear","setTimeout","cancel","_ref2$upcomingOnly","upcomingOnly","getLoggerBuilder","setApp","detectUser","build","components","ChartPie","NcAppNavigationItem","NcProgressBar","data","loadingStorageStats","storageStats","loadState","computed","storageStatsTitle","usedQuotaByte","formatFileSize","used","quotaByte","quota","t","storageStatsTooltip","relative","beforeMount","setInterval","throttleUpdateStorageStats","subscribe","mounted","free","showStorageFullWarning","methods","debounceUpdateStorageStats","_ref$atBegin","atBegin","event","updateStorageStats","response","axios","get","Error","error","logger","showError","translate","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","class","stopPropagation","preventDefault","slot","Math","min","el","Function","required","$el","appendChild","userConfig","show_hidden","crop_image_previews","sort_favorites_first","sort_folders_first","grid_view","useUserConfigStore","userConfigStore","defineStore","state","actions","onUpdate","key","value","update","put","emit","store","_initialized","Clipboard","NcAppSettingsDialog","NcAppSettingsSection","NcCheckboxRadioSwitch","NcInputField","Setting","open","Boolean","setup","settings","window","OCA","Files","Settings","webdavUrl","generateRemoteUrl","encodeURIComponent","getCurrentUser","uid","webdavDocs","appPasswordUrl","webdavUrlCopied","enableGridView","forEach","setting","beforeDestroy","close","onClose","setConfig","copyCloudId","document","querySelector","select","navigator","clipboard","writeText","showSuccess","folder_tree","_l","target","scopedSlots","_u","fn","proxy","useNavigation","_loaded","navigation","getNavigation","views","shallowRef","currentView","active","onUpdateActive","detail","onUpdateViews","triggerRef","onMounted","addEventListener","onUnmounted","removeEventListener","viewConfig","useViewConfigStore","getters","getConfig","getConfigs","setSortingBy","toggleSortingDirection","newDirection","sorting_direction","viewConfigStore","defineComponent","Fragment","NcIconSvgWrapper","parent","Object","level","currentViews","values","reduce","acc","filter","dir","startsWith","id","style","hasChildViews","useExactRouteMatching","generateToNavigation","isExpanded","expanded","onOpen","loadChildViews","filterView","viewMap","fromEntries","entries","viewId","_views","_setupProxy","loading","iconClass","sticky","icon","loaded","staticStyle","FilenameFilter","FileListFilter","super","updateQuery","nodes","queryParts","searchQuery","toLocaleLowerCase","split","node","displayname","every","part","includes","trim","filterUpdated","chips","text","onclick","updateChips","dispatchTypedEvent","CustomEvent","useFiltersStore","filters","filtersChanged","activeChips","flat","sortedFilters","sort","a","b","order","filtersWithUI","addFilter","onFilterUpdateChips","onFilterUpdate","debug","removeFilter","filterId","index","findIndex","splice","init","getFileListFilters","collator","Intl","Collator","getLanguage","getCanonicalLocale","numeric","usage","IconCog","FilesNavigationItem","NavigationQuota","NcAppNavigation","NcAppNavigationList","NcAppNavigationSearch","SettingsModal","filtersStore","ref","filenameFilter","registerFileListFilter","unregisterFileListFilter","watchThrottled","useFilenameFilter","settingsOpened","currentViewId","$route","map","compare","watch","newView","oldView","find","showView","created","loadExpandedViews","_ref2","viewConfigs","viewsToLoad","_ref3","config","_ref4","$navigation","Sidebar","setActive","openSettings","onSettingsClose","model","$$v","expression","action","FileAction","displayName","iconSvgInline","InformationSvg","enabled","isPublicShare","root","permissions","Permission","NONE","setActiveTab","OCP","fileid","element","width","observer","ResizeObserver","elements","contentBoxSize","inlineSize","contentRect","updateObserver","body","unobserve","observe","useFileListWidth","readonly","useRouteParameters","route","$root","_$route","run","assign","$router","afterEach","useRoute","directory","fileId","parseInt","isNaN","openFile","openfile","client","davGetClient","fetchNode","async","propfindPayload","davGetDefaultPropfind","stat","davRootPath","details","davResultToNode","usePathsStore","files","useFilesStore","pathsStore","paths","getPath","service","addPath","payload","source","deletePath","delete","onCreatedNode","FileType","Folder","addNodeToParentChildren","onDeletedNode","deleteNodeFromParentChildren","onMovedNode","oldSource","oldPath","oldNode","File","owner","mime","parentSource","dirname","folder","getRoot","getNode","children","Set","_children","add","fileStore","roots","getNodes","sources","getNodesById","getNodesByPath","updateNodes","deleteNodes","setRoot","onUpdatedNode","Promise","all","then","n","useSelectionStore","selected","lastSelection","lastSelectedIndex","set","selection","setLastIndex","reset","uploader","useUploaderStore","getUploader","queue","Directory","contents","_contents","_computeDirectorySize","lastModified","_computeDirectoryMtime","file","entry","traverseTree","isFile","resolve","reject","readDirectory","dirReader","createReader","getEntries","readEntries","results","createDirectoryIfNotExists","davClient","exists","absolutePath","createDirectory","recursive","resolveConflict","destination","conflicts","basename","uploads","renamed","openConflictPicker","showInfo","info","console","sharePermissions","getQueue","PQueue","concurrency","MoveCopyAction","canMove","minPermission","ALL","DELETE","canCopy","JSON","parse","attributes","some","attribute","scope","canDownload","CREATE","resultToNode","getContents","join","controller","AbortController","CancelablePromise","onCancel","abort","contentsResponse","getDirectoryContents","includeSelf","signal","slice","filename","getActionForNodes","MOVE_OR_COPY","MOVE","COPY","handleCopyMoveNodeTo","method","overwrite","NodeStatus","LOADING","actionFinished","toast","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","onRemove","hideToast","createLoadingNotification","copySuffix","currentPath","destinationPath","otherNodes","getUniqueName","suffix","ignoreFileExtension","copyFile","hasConflict","moveFile","isAxiosError","status","message","openFilePickerForAction","promise","withResolvers","fileIDs","getFilePickerBuilder","allowDirectories","setFilter","setMimeTypeFilter","setMultiSelect","startAt","setButtonFactory","buttons","dirnames","label","escape","sanitize","CopyIconSvg","disabled","FolderMoveSvg","pick","FilePickerClosed","e","execBatch","promises","dataTransferToFileTree","items","item","kind","getAsEntry","webkitGetAsEntry","warned","fileTree","DataTransferItem","warn","getAsFile","showWarning","onDropExternalFiles","uploadDirectoryContents","relativePath","joinPaths","upload","pause","start","errors","allSettled","onDropInternalFiles","isCopy","useDragAndDropStore","dragging","NcBreadcrumbs","NcBreadcrumb","draggingStore","filesStore","selectionStore","uploaderStore","fileListWidth","dirs","sections","getFileSourceFromPath","getNodeFromSource","exact","getDirDisplayName","getTo","disableDrop","isUploadInProgress","wrapUploadProgressBar","viewIcon","selectedFiles","draggingFiles","onClick","onDragOver","dataTransfer","ctrlKey","dropEffect","onDrop","canDrop","button","titleForSection","section","ariaForSection","_t","nativeOn","getSummaryFor","fileCount","folderCount","useActionsMenuStore","opened","isDialogVisible","useRenamingStore","renamingStore","renamingNode","newName","rename","oldName","oldEncodedSource","encodedSource","oldExtension","extname","newExtension","proceed","showWarningDialog","new","old","dialog","DialogBuilder","setName","setText","setButtons","oldextension","newextension","IconCheck","show","hide","url","headers","Destination","Overwrite","$reset","extend","FileMultipleIcon","FolderIcon","isSingleNode","isSingleFolder","summary","totalSize","total","$refs","previewImg","replaceChildren","preview","parentNode","cloneNode","$nextTick","Preview","DragAndDropPreview","directive","vOnClickOutside","getFileActions","NcFile","Node","filesListWidth","isMtimeAvailable","compact","provide","defaultFileAction","enabledFileActions","dragover","gridMode","uniqueId","str","hash","i","charCodeAt","hashCode","isLoading","extension","isSelected","isRenaming","isRenamingSmallScreen","isActive","currentFileId","isFailedSource","FAILED","canDrag","UPDATE","openedMenu","actionsMenuStore","toString","mtimeOpacity","maxOpacityTime","mtime","getTime","ratio","round","color","resetState","getElementById","removeProperty","onRightClick","closest","getBoundingClientRect","setProperty","max","clientX","left","clientY","top","isMoreThanOneSelected","execDefaultAction","metaKeyPressed","metaKey","READ","downloadAttribute","isDownloadable","currentDir","openDetailsIfAvailable","sidebarAction","onDragLeave","currentTarget","contains","relatedTarget","onDragStart","clearData","image","$mount","$on","$off","getDragAndDropPreview","setDragImage","onDragEnd","render","updateRootElement","ArrowLeftIcon","CustomElementRender","NcActionButton","NcActions","NcActionSeparator","NcLoadingIcon","inject","openedSubmenu","enabledInlineActions","inline","enabledRenderActions","renderInline","enabledMenuActions","DefaultType","HIDDEN","topActionsIds","enabledSubmenuActions","arr","getBoundariesElement","mountType","actionDisplayName","onActionClick","isSubmenu","$set","success","isMenu","onBackToMenuClick","menuAction","focus","refInFor","keyboardStore","altKey","shiftKey","onEvent","useKeyboardStore","ariaLabel","loadingLabel","onSelectionChange","newSelectedIndex","isAlreadySelected","end","filesToSelect","resetSelection","indexOf","_k","keyCode","getFilenameValidity","validateFilename","InvalidFilenameError","reason","InvalidFilenameErrorReason","Character","char","segment","ReservedName","Extension","match","NcTextField","renameLabel","linkTo","is","tabindex","immediate","handler","renaming","startRenaming","input","renameInput","validity","checkIfNodeExists","setCustomValidity","reportValidity","setSelectionRange","dispatchEvent","Event","stopRenaming","onRename","renameForm","checkValidity","nameContainer","directives","rawName","tag","domProps","q","x","r","f","pow","h","trunc","M","F","abs","d","z","L","floor","l","j","C","m","u","o","substring","c","s","Uint8ClampedArray","y","B","R","w","P","G","cos","PI","T","V","I","E","StarSvg","setAttribute","AccountGroupIcon","AccountPlusIcon","CollectivesIcon","FavoriteIcon","FileIcon","FolderOpenIcon","KeyIcon","LinkIcon","NetworkIcon","TagIcon","isPublic","publicSharingToken","getSharingToken","backgroundFailed","backgroundLoaded","isFavorite","favorite","cropPreviews","previewUrl","token","URL","location","origin","searchParams","etag","href","fileOverlay","PlayCircleIcon","folderOverlay","shareTypes","ShareType","Link","Email","hasBlurhash","canvas","drawBlurhash","src","onBackgroundLoad","onBackgroundError","height","pixels","decode","ctx","getContext","imageData","createImageData","putImageData","_m","FileEntryActions","FileEntryCheckbox","FileEntryName","FileEntryPreview","NcDateTime","mixins","FileEntryMixin","isSizeAvailable","rowListeners","dragstart","contextmenu","dragleave","dragend","drop","columns","sizeOpacity","getDate","crtime","mtimeTitle","moment","format","_g","column","inheritAttrs","header","currentFolder","updated","mount","View","classForColumn","mapState","sortingMode","sorting_mode","defaultSortKey","isAscSorting","sortingDirection","toggleSortBy","MenuDown","MenuUp","NcButton","filesSortingMixin","FilesListTableHeaderButton","selectAllBind","checked","isAllSelected","indeterminate","isSomeSelected","selectedNodes","isNoneSelected","ariaSortForMode","onToggleAll","dataComponent","dataKey","dataSources","extraProps","scrollToIndex","caption","beforeHeight","headerHeight","tableHeight","resizeObserver","isReady","bufferItems","columnCount","itemHeight","itemWidth","rowCount","ceil","startIndex","shownItems","renderedItems","oldItemsKeys","$_recycledPool","unusedKeys","keys","pop","random","substr","totalRowCount","tbodyStyle","isOverScrolled","lastIndex","hiddenAfterItems","paddingTop","paddingBottom","minHeight","scrollTo","oldColumnCount","before","thead","debounce","clientHeight","onScroll","passive","disconnect","targetRow","scrollTop","_onScrollHandle","requestAnimationFrame","topScroll","$scopedSlots","enabledActions","areSomeNodesLoading","inlineActions","selectionSources","failedSources","_defineComponent","__name","__props","filterStore","visualFilters","filterElements","watchEffect","__sfc","NcAvatar","NcChip","_setup","chip","user","FileListFilters","FilesListHeader","FilesListTableFooter","FilesListTableHeader","VirtualList","FilesListTableHeaderActions","FileEntry","FileEntryGrid","getFileListHeaders","openFileId","sortedHeaders","cantUpload","isQuotaExceeded","defaultCaption","scrollToFile","handleOpenFile","unselectFile","openSidebarForFile","unsubscribe","documentElement","clientWidth","defaultAction","at","isForeignFile","types","tableElement","table","tableTop","tableBottom","count","TrayArrowDownIcon","canUpload","cantUploadLabel","resetDragOver","mainContent","onContentDrop","lastUpload","findLast","UploadStatus","webkitRelativePath","isSharingEnabled","getCapabilities","files_sharing","BreadCrumbs","DragAndDropNotice","FilesListVirtual","ListViewIcon","NcAppContent","NcEmptyContent","UploadPicker","ViewGridIcon","IconAlertCircleOutline","IconReload","forbiddenCharacters","dirContentsFiltered","getContent","normalizedPath","normalize","pageHeading","dirContents","dirContentsSorted","customColumn","reverse","sortNodes","sortFavoritesFirst","sortFoldersFirst","sortingOrder","isEmptyDir","isRefreshing","toPreviousDir","shareTypesAttributes","shareButtonLabel","shareButtonType","User","gridViewButtonLabel","canShare","SHARE","showCustomEmptyView","emptyView","enabledFileListActions","getFileListActions","toSorted","theming","productName","customEmptyView","fetchContent","newDir","oldDir","filesListVirtual","filterDirContent","onNodeDeleted","unmounted","fatal","isWebDAVClientError","humanizeWebDAVError","onUpload","onUploadFail","CANCELLED","doc","DOMParser","parseFromString","getElementsByTagName","textContent","openSharingSidebar","toggleGridView","click","emptyTitle","emptyCaption","NcContent","FilesList","Navigation","__webpack_nonce__","getCSPNonce","PiniaVuePlugin","observable","_settings","register","_name","_el","_open","_close","FilesApp","___CSS_LOADER_EXPORT___","module","NewMenuEntryCategory","NewMenuEntryCategory2","NewFileMenu","_entries","registerEntry","validateEntry","category","unregisterEntry","entryIndex","getEntryIndex","context","DefaultType2","_action","validateAction","destructive","_nc_fileactions","_nc_filelistactions","_nc_filelistheader","InvalidFilenameErrorReason2","cause","capabilities","forbidden_filename_characters","_oc_config","forbidden_filenames_characters","character","forbidden_filenames","endOfBasename","basename2","forbidden_filename_basenames","forbiddenFilenameExtensions","forbidden_filename_extensions","endsWith","otherNames","opts","n2","i2","ext","humanList","humanListBinary","skipSmallSizes","binaryPrefixes","base1000","log","readableFormat","relativeSize","toFixed","parseFloat","toLocaleString","toISOString","sortingOptions","collection","identifiers2","orders","sorting","_","a2","b2","identifier","orderBy","v","lastIndexOf","_currentView","search","remove","_nc_navigation","Column","_column","isValidColumn","getDefaultExportFromCjs","__esModule","hasOwnProperty","validator$2","util$3","exports","nameStartChar","nameRegexp","regexName","RegExp","isExist","isEmptyObject","obj","merge","arrayMode","len","getValue","isName","string","getAllMatches","regex","matches","allmatches","util$2","defaultOptions$2","allowBooleanAttributes","unpairedTags","isWhiteSpace","readPI","xmlData","tagname","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","angleBracketsCount","validate","tags","tagFound","reachedRoot","tagStartPos","closingTag","tagName","msg","readAttributeStr","attrStr","attrStrStart","isValid","validateAttributeString","code","line","tagClosed","otg","openPos","col","afterAmp","validateAmpersand","t3","doubleQuote","singleQuote","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","attrName","validateAttrName","re2","validateNumberAmpersand","lineNumber","lines","OptionsBuilder","defaultOptions$1","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","val2","attributeValueProcessor","stopNodes","alwaysCreateTextNode","isArray","commentPropName","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","jPath","buildOptions","defaultOptions","util$1","readEntityExp","entityName2","isComment","isEntity","isElement","isAttlist","isNotation","validateEntityName","hexRegex","numRegex","consider","decimalPoint","ignoreAttributes2","pattern","test","util","xmlNode","child","addChild","readDocType","entities","hasBody","comment","exp","entityName","val","regx","toNumber","trimmedStr","skipLike","sign","numTrimmedByZeros","numStr","num","getIgnoreAttributesFn$1","addExternalEntities","externalEntities","entKeys","ent","lastEntities","parseTextData","dontTrim","hasAttributes","isLeafNode","escapeEntities","replaceEntitiesValue","newval","parseValue","resolveNameSpace","prefix","charAt","attrsRegx","buildAttributesMap","ignoreAttributesFn","oldVal","aName","newVal","attrCollection","parseXml","xmlObj","currentNode","textData","closeIndex","findClosingIndex","colonIndex","saveTextToParentTag","lastTagName","propIndex","tagsNodeStack","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","docTypeEntities","rawTagName","lastTag","isItStopNode","tagContent","result2","readStopNodeData","replaceEntitiesValue$1","entity","ampEntity","currentTagName","allNodesExp","stopNodePath","stopNodeExp","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","trimStart","openTagCount","shouldParse","node2json","compress","compressedObj","tagObj","property","propName$1","newJpath","isLeaf","isLeafTag","assignAttributes","attrMap","jpath","atrrName","propCount","prettify","OrderedObjParser2","fromCharCode","validator$1","arrToStr","indentation","xmlStr","isPreviousElementTag","propName","newJPath","tagText","isStopNode","attStr2","attr_to_str","tempInd","piTextNodeName","newIdentation","indentBy","tagStart","tagValue","suppressUnpairedNode","suppressEmptyNode","attr","attrVal","suppressBooleanAttributes","textValue","buildFromOrderedJs","jArray","getIgnoreAttributesFn","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","ajPath","j2x","concat","buildTextValNode","buildObjectNode","repeat","jObj","arrayNodeName","buildAttrPairStr","arrLen","listTagVal","listTagAttr","j2","Ks","closeTag","tagEndExp","piClosingChar","fxp","XMLParser","validationOption","orderedObjParser","orderedResult","addEntity","XMLValidator","XMLBuilder","_view","isValidView","TypeError","jsonObject","parser","toLowerCase","isSvg","debug_1","process","env","NODE_DEBUG","args","constants","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","MAX_LENGTH$1","MAX_SAFE_INTEGER","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","re$1","MAX_SAFE_COMPONENT_LENGTH2","MAX_SAFE_BUILD_LENGTH2","MAX_LENGTH2","debug2","re","safeRe","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","COERCE","COERCEFULL","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","reExports","looseOption","freeze","loose","emptyOpts","compareIdentifiers$1","anum","bnum","identifiers","compareIdentifiers","rcompareIdentifiers","t2","parseOptions","semver","SemVer","version","includePrerelease","m2","LOOSE","FULL","raw","major","minor","patch","prerelease","other","compareMain","comparePre","compareBuild","inc","release","identifierBase","SemVer$1","valid$1","throwErrors","er","SemVer2","major$1","ProxyBus","bus","bus2","getVersion","SimpleBus","handlers","Map","h2","e2","Proxy","OC","_eventBus","_nc_event_bus","_nc_filelist_filters","has","getNewFileMenuEntries","_nc_newfilemenu","localeCompare","sensitivity","retries","uploadData","uploadData2","onUploadProgress","destinationFile","Blob","request","retryDelay","retryCount","getChunk","getMaxChunksSize","fileSize","maxChunkSize","appConfig","max_chunk_size","minimumChunkSize","Status$1","Status2","Upload","_source","_file","_isChunked","_chunks","_size","_uploaded","_startTime","_status","_controller","_response","chunked","chunks","isChunked","startTime","uploaded","isFileSystemFileEntry","FileSystemFileEntry","isFileSystemEntry","FileSystemEntry","_originalName","_path","sum","latest","originalName","from","getChild","addChildren","rootPath","FileSystemDirectoryEntry","reader","filePath","relPath","gtBuilder","detectLocale","addTranslation","locale","json","gt","ngettext","bind","gettext","Status","Uploader","_destinationFolder","_isPublic","_customHeaders","_uploadQueue","_jobQueue","chunked_upload","max_parallel_count","_queueSize","_queueProgress","_queueStatus","_notifiers","destinationFolder","addListener","maxChunksSize","customHeaders","structuredClone","setCustomHeader","deleteCustomerHeader","updateStats","progress","upload2","partialSum","addNotifier","notifier","_notifyAll","batchUpload","files2","rootFolder","UPLOADING","uploadDirectory","FINISHED","folderPath","currentUpload","selectedForUpload","directories","fileHandle","encodedDestinationFile","resolve2","disabledChunkUpload","blob","bytes","tempUrl","initChunkWorkspace","chunksQueue","chunk","bufferStart","bufferEnd","normalizeComponent","scriptExports","render6","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","_compiled","_scopeId","IconCancel","IconFolderUpload","IconPlus","IconUpload","showInvalidFilenameDialog","InvalidFilenameDialog","rest","skip","content","getConflicts","contentNames","NcActionCaption","accept","multiple","noMenu","allowFolders","progressTimeId","eta","timeLeft","newFileMenuEntries","uploadManager","menuEntriesUpload","UploadFromDevice","menuEntriesNew","CreateNew","menuEntriesOther","Other","canUploadFolders","createElement","totalQueueSize","uploadedQueueSize","hasFailure","isUploading","isAssembling","ASSEMBLING","isPaused","PAUSED","buttonLabel","buttonName","setDestination","updateStatus","report","onUploadCompletion","onTriggerPick","uploadFolders","webkitdirectory","onPick","contentsCallback","filesToUpload","defineProperty","finally","resetForm","form","estimate","Infinity","date","setSeconds","time","seconds","forceRecreate","_nc_uploader","ConflictPicker","picker","recursiveUpload","submit","$destroy","removeChild","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","O","chunkIds","priority","notFulfilled","fulfilled","getter","definition","enumerable","chunkId","g","globalThis","prop","done","script","needAttach","scripts","getAttribute","charset","nc","onScriptComplete","prev","onerror","onload","doneFns","head","Symbol","toStringTag","nmd","scriptUrl","importScripts","currentScript","toUpperCase","p","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index 5834bfd47b5..a30eccfd838 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -12,6 +12,26 @@ return array(
'NCU\\Config\\Exceptions\\UnknownKeyException' => $baseDir . '/lib/unstable/Config/Exceptions/UnknownKeyException.php',
'NCU\\Config\\IUserConfig' => $baseDir . '/lib/unstable/Config/IUserConfig.php',
'NCU\\Config\\ValueType' => $baseDir . '/lib/unstable/Config/ValueType.php',
+ 'NCU\\Security\\Signature\\Enum\\DigestAlgorithm' => $baseDir . '/lib/unstable/Security/Signature/Enum/DigestAlgorithm.php',
+ 'NCU\\Security\\Signature\\Enum\\SignatoryStatus' => $baseDir . '/lib/unstable/Security/Signature/Enum/SignatoryStatus.php',
+ 'NCU\\Security\\Signature\\Enum\\SignatoryType' => $baseDir . '/lib/unstable/Security/Signature/Enum/SignatoryType.php',
+ 'NCU\\Security\\Signature\\Enum\\SignatureAlgorithm' => $baseDir . '/lib/unstable/Security/Signature/Enum/SignatureAlgorithm.php',
+ 'NCU\\Security\\Signature\\Exceptions\\IdentityNotFoundException' => $baseDir . '/lib/unstable/Security/Signature/Exceptions/IdentityNotFoundException.php',
+ 'NCU\\Security\\Signature\\Exceptions\\IncomingRequestException' => $baseDir . '/lib/unstable/Security/Signature/Exceptions/IncomingRequestException.php',
+ 'NCU\\Security\\Signature\\Exceptions\\InvalidKeyOriginException' => $baseDir . '/lib/unstable/Security/Signature/Exceptions/InvalidKeyOriginException.php',
+ 'NCU\\Security\\Signature\\Exceptions\\InvalidSignatureException' => $baseDir . '/lib/unstable/Security/Signature/Exceptions/InvalidSignatureException.php',
+ 'NCU\\Security\\Signature\\Exceptions\\SignatoryConflictException' => $baseDir . '/lib/unstable/Security/Signature/Exceptions/SignatoryConflictException.php',
+ 'NCU\\Security\\Signature\\Exceptions\\SignatoryException' => $baseDir . '/lib/unstable/Security/Signature/Exceptions/SignatoryException.php',
+ 'NCU\\Security\\Signature\\Exceptions\\SignatoryNotFoundException' => $baseDir . '/lib/unstable/Security/Signature/Exceptions/SignatoryNotFoundException.php',
+ 'NCU\\Security\\Signature\\Exceptions\\SignatureElementNotFoundException' => $baseDir . '/lib/unstable/Security/Signature/Exceptions/SignatureElementNotFoundException.php',
+ 'NCU\\Security\\Signature\\Exceptions\\SignatureException' => $baseDir . '/lib/unstable/Security/Signature/Exceptions/SignatureException.php',
+ 'NCU\\Security\\Signature\\Exceptions\\SignatureNotFoundException' => $baseDir . '/lib/unstable/Security/Signature/Exceptions/SignatureNotFoundException.php',
+ 'NCU\\Security\\Signature\\IIncomingSignedRequest' => $baseDir . '/lib/unstable/Security/Signature/IIncomingSignedRequest.php',
+ 'NCU\\Security\\Signature\\IOutgoingSignedRequest' => $baseDir . '/lib/unstable/Security/Signature/IOutgoingSignedRequest.php',
+ 'NCU\\Security\\Signature\\ISignatoryManager' => $baseDir . '/lib/unstable/Security/Signature/ISignatoryManager.php',
+ 'NCU\\Security\\Signature\\ISignatureManager' => $baseDir . '/lib/unstable/Security/Signature/ISignatureManager.php',
+ 'NCU\\Security\\Signature\\ISignedRequest' => $baseDir . '/lib/unstable/Security/Signature/ISignedRequest.php',
+ 'NCU\\Security\\Signature\\Model\\Signatory' => $baseDir . '/lib/unstable/Security/Signature/Model/Signatory.php',
'OCP\\Accounts\\IAccount' => $baseDir . '/lib/public/Accounts/IAccount.php',
'OCP\\Accounts\\IAccountManager' => $baseDir . '/lib/public/Accounts/IAccountManager.php',
'OCP\\Accounts\\IAccountProperty' => $baseDir . '/lib/public/Accounts/IAccountProperty.php',
@@ -1393,6 +1413,7 @@ return array(
'OC\\Core\\Migrations\\Version30000Date20240814180800' => $baseDir . '/core/Migrations/Version30000Date20240814180800.php',
'OC\\Core\\Migrations\\Version30000Date20240815080800' => $baseDir . '/core/Migrations/Version30000Date20240815080800.php',
'OC\\Core\\Migrations\\Version30000Date20240906095113' => $baseDir . '/core/Migrations/Version30000Date20240906095113.php',
+ 'OC\\Core\\Migrations\\Version31000Date20240101084401' => $baseDir . '/core/Migrations/Version31000Date20240101084401.php',
'OC\\Core\\Migrations\\Version31000Date20240814184402' => $baseDir . '/core/Migrations/Version31000Date20240814184402.php',
'OC\\Core\\Migrations\\Version31000Date20241018063111' => $baseDir . '/core/Migrations/Version31000Date20241018063111.php',
'OC\\Core\\Notification\\CoreNotifier' => $baseDir . '/core/Notification/CoreNotifier.php',
@@ -1733,6 +1754,7 @@ return array(
'OC\\OCM\\Model\\OCMProvider' => $baseDir . '/lib/private/OCM/Model/OCMProvider.php',
'OC\\OCM\\Model\\OCMResource' => $baseDir . '/lib/private/OCM/Model/OCMResource.php',
'OC\\OCM\\OCMDiscoveryService' => $baseDir . '/lib/private/OCM/OCMDiscoveryService.php',
+ 'OC\\OCM\\OCMSignatoryManager' => $baseDir . '/lib/private/OCM/OCMSignatoryManager.php',
'OC\\OCS\\ApiHelper' => $baseDir . '/lib/private/OCS/ApiHelper.php',
'OC\\OCS\\CoreCapabilities' => $baseDir . '/lib/private/OCS/CoreCapabilities.php',
'OC\\OCS\\DiscoveryService' => $baseDir . '/lib/private/OCS/DiscoveryService.php',
@@ -1909,6 +1931,11 @@ return array(
'OC\\Security\\RateLimiting\\Limiter' => $baseDir . '/lib/private/Security/RateLimiting/Limiter.php',
'OC\\Security\\RemoteHostValidator' => $baseDir . '/lib/private/Security/RemoteHostValidator.php',
'OC\\Security\\SecureRandom' => $baseDir . '/lib/private/Security/SecureRandom.php',
+ 'OC\\Security\\Signature\\Db\\SignatoryMapper' => $baseDir . '/lib/private/Security/Signature/Db/SignatoryMapper.php',
+ 'OC\\Security\\Signature\\Model\\IncomingSignedRequest' => $baseDir . '/lib/private/Security/Signature/Model/IncomingSignedRequest.php',
+ 'OC\\Security\\Signature\\Model\\OutgoingSignedRequest' => $baseDir . '/lib/private/Security/Signature/Model/OutgoingSignedRequest.php',
+ 'OC\\Security\\Signature\\Model\\SignedRequest' => $baseDir . '/lib/private/Security/Signature/Model/SignedRequest.php',
+ 'OC\\Security\\Signature\\SignatureManager' => $baseDir . '/lib/private/Security/Signature/SignatureManager.php',
'OC\\Security\\TrustedDomainHelper' => $baseDir . '/lib/private/Security/TrustedDomainHelper.php',
'OC\\Security\\VerificationToken\\CleanUpJob' => $baseDir . '/lib/private/Security/VerificationToken/CleanUpJob.php',
'OC\\Security\\VerificationToken\\VerificationToken' => $baseDir . '/lib/private/Security/VerificationToken/VerificationToken.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index e510e80d4c6..9ca1852a071 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -53,6 +53,26 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
'NCU\\Config\\Exceptions\\UnknownKeyException' => __DIR__ . '/../../..' . '/lib/unstable/Config/Exceptions/UnknownKeyException.php',
'NCU\\Config\\IUserConfig' => __DIR__ . '/../../..' . '/lib/unstable/Config/IUserConfig.php',
'NCU\\Config\\ValueType' => __DIR__ . '/../../..' . '/lib/unstable/Config/ValueType.php',
+ 'NCU\\Security\\Signature\\Enum\\DigestAlgorithm' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Enum/DigestAlgorithm.php',
+ 'NCU\\Security\\Signature\\Enum\\SignatoryStatus' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Enum/SignatoryStatus.php',
+ 'NCU\\Security\\Signature\\Enum\\SignatoryType' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Enum/SignatoryType.php',
+ 'NCU\\Security\\Signature\\Enum\\SignatureAlgorithm' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Enum/SignatureAlgorithm.php',
+ 'NCU\\Security\\Signature\\Exceptions\\IdentityNotFoundException' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Exceptions/IdentityNotFoundException.php',
+ 'NCU\\Security\\Signature\\Exceptions\\IncomingRequestException' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Exceptions/IncomingRequestException.php',
+ 'NCU\\Security\\Signature\\Exceptions\\InvalidKeyOriginException' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Exceptions/InvalidKeyOriginException.php',
+ 'NCU\\Security\\Signature\\Exceptions\\InvalidSignatureException' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Exceptions/InvalidSignatureException.php',
+ 'NCU\\Security\\Signature\\Exceptions\\SignatoryConflictException' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Exceptions/SignatoryConflictException.php',
+ 'NCU\\Security\\Signature\\Exceptions\\SignatoryException' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Exceptions/SignatoryException.php',
+ 'NCU\\Security\\Signature\\Exceptions\\SignatoryNotFoundException' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Exceptions/SignatoryNotFoundException.php',
+ 'NCU\\Security\\Signature\\Exceptions\\SignatureElementNotFoundException' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Exceptions/SignatureElementNotFoundException.php',
+ 'NCU\\Security\\Signature\\Exceptions\\SignatureException' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Exceptions/SignatureException.php',
+ 'NCU\\Security\\Signature\\Exceptions\\SignatureNotFoundException' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Exceptions/SignatureNotFoundException.php',
+ 'NCU\\Security\\Signature\\IIncomingSignedRequest' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/IIncomingSignedRequest.php',
+ 'NCU\\Security\\Signature\\IOutgoingSignedRequest' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/IOutgoingSignedRequest.php',
+ 'NCU\\Security\\Signature\\ISignatoryManager' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/ISignatoryManager.php',
+ 'NCU\\Security\\Signature\\ISignatureManager' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/ISignatureManager.php',
+ 'NCU\\Security\\Signature\\ISignedRequest' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/ISignedRequest.php',
+ 'NCU\\Security\\Signature\\Model\\Signatory' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Model/Signatory.php',
'OCP\\Accounts\\IAccount' => __DIR__ . '/../../..' . '/lib/public/Accounts/IAccount.php',
'OCP\\Accounts\\IAccountManager' => __DIR__ . '/../../..' . '/lib/public/Accounts/IAccountManager.php',
'OCP\\Accounts\\IAccountProperty' => __DIR__ . '/../../..' . '/lib/public/Accounts/IAccountProperty.php',
@@ -1434,6 +1454,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
'OC\\Core\\Migrations\\Version30000Date20240814180800' => __DIR__ . '/../../..' . '/core/Migrations/Version30000Date20240814180800.php',
'OC\\Core\\Migrations\\Version30000Date20240815080800' => __DIR__ . '/../../..' . '/core/Migrations/Version30000Date20240815080800.php',
'OC\\Core\\Migrations\\Version30000Date20240906095113' => __DIR__ . '/../../..' . '/core/Migrations/Version30000Date20240906095113.php',
+ 'OC\\Core\\Migrations\\Version31000Date20240101084401' => __DIR__ . '/../../..' . '/core/Migrations/Version31000Date20240101084401.php',
'OC\\Core\\Migrations\\Version31000Date20240814184402' => __DIR__ . '/../../..' . '/core/Migrations/Version31000Date20240814184402.php',
'OC\\Core\\Migrations\\Version31000Date20241018063111' => __DIR__ . '/../../..' . '/core/Migrations/Version31000Date20241018063111.php',
'OC\\Core\\Notification\\CoreNotifier' => __DIR__ . '/../../..' . '/core/Notification/CoreNotifier.php',
@@ -1774,6 +1795,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
'OC\\OCM\\Model\\OCMProvider' => __DIR__ . '/../../..' . '/lib/private/OCM/Model/OCMProvider.php',
'OC\\OCM\\Model\\OCMResource' => __DIR__ . '/../../..' . '/lib/private/OCM/Model/OCMResource.php',
'OC\\OCM\\OCMDiscoveryService' => __DIR__ . '/../../..' . '/lib/private/OCM/OCMDiscoveryService.php',
+ 'OC\\OCM\\OCMSignatoryManager' => __DIR__ . '/../../..' . '/lib/private/OCM/OCMSignatoryManager.php',
'OC\\OCS\\ApiHelper' => __DIR__ . '/../../..' . '/lib/private/OCS/ApiHelper.php',
'OC\\OCS\\CoreCapabilities' => __DIR__ . '/../../..' . '/lib/private/OCS/CoreCapabilities.php',
'OC\\OCS\\DiscoveryService' => __DIR__ . '/../../..' . '/lib/private/OCS/DiscoveryService.php',
@@ -1950,6 +1972,11 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
'OC\\Security\\RateLimiting\\Limiter' => __DIR__ . '/../../..' . '/lib/private/Security/RateLimiting/Limiter.php',
'OC\\Security\\RemoteHostValidator' => __DIR__ . '/../../..' . '/lib/private/Security/RemoteHostValidator.php',
'OC\\Security\\SecureRandom' => __DIR__ . '/../../..' . '/lib/private/Security/SecureRandom.php',
+ 'OC\\Security\\Signature\\Db\\SignatoryMapper' => __DIR__ . '/../../..' . '/lib/private/Security/Signature/Db/SignatoryMapper.php',
+ 'OC\\Security\\Signature\\Model\\IncomingSignedRequest' => __DIR__ . '/../../..' . '/lib/private/Security/Signature/Model/IncomingSignedRequest.php',
+ 'OC\\Security\\Signature\\Model\\OutgoingSignedRequest' => __DIR__ . '/../../..' . '/lib/private/Security/Signature/Model/OutgoingSignedRequest.php',
+ 'OC\\Security\\Signature\\Model\\SignedRequest' => __DIR__ . '/../../..' . '/lib/private/Security/Signature/Model/SignedRequest.php',
+ 'OC\\Security\\Signature\\SignatureManager' => __DIR__ . '/../../..' . '/lib/private/Security/Signature/SignatureManager.php',
'OC\\Security\\TrustedDomainHelper' => __DIR__ . '/../../..' . '/lib/private/Security/TrustedDomainHelper.php',
'OC\\Security\\VerificationToken\\CleanUpJob' => __DIR__ . '/../../..' . '/lib/private/Security/VerificationToken/CleanUpJob.php',
'OC\\Security\\VerificationToken\\VerificationToken' => __DIR__ . '/../../..' . '/lib/private/Security/VerificationToken/VerificationToken.php',
diff --git a/lib/l10n/eu.js b/lib/l10n/eu.js
index 2a91b6eb45f..d883a8efc92 100644
--- a/lib/l10n/eu.js
+++ b/lib/l10n/eu.js
@@ -123,6 +123,7 @@ OC.L10N.register(
"Headline" : "Izenburua",
"Organisation" : "Erakundea",
"Role" : "Zeregina",
+ "Pronouns" : "Izenordainak",
"Unknown account" : "Kontu ezezaguna",
"Additional settings" : "Ezarpen gehiago",
"Enter the database Login and name for %s" : "Sartu datu-basearen saioa eta izena %s(r)entzako",
diff --git a/lib/l10n/eu.json b/lib/l10n/eu.json
index b9f4f3bd736..59fc51924c0 100644
--- a/lib/l10n/eu.json
+++ b/lib/l10n/eu.json
@@ -121,6 +121,7 @@
"Headline" : "Izenburua",
"Organisation" : "Erakundea",
"Role" : "Zeregina",
+ "Pronouns" : "Izenordainak",
"Unknown account" : "Kontu ezezaguna",
"Additional settings" : "Ezarpen gehiago",
"Enter the database Login and name for %s" : "Sartu datu-basearen saioa eta izena %s(r)entzako",
diff --git a/lib/private/Federation/CloudFederationProviderManager.php b/lib/private/Federation/CloudFederationProviderManager.php
index bf7648d472b..e9354294351 100644
--- a/lib/private/Federation/CloudFederationProviderManager.php
+++ b/lib/private/Federation/CloudFederationProviderManager.php
@@ -8,7 +8,9 @@ declare(strict_types=1);
*/
namespace OC\Federation;
+use NCU\Security\Signature\ISignatureManager;
use OC\AppFramework\Http;
+use OC\OCM\OCMSignatoryManager;
use OCP\App\IAppManager;
use OCP\Federation\Exceptions\ProviderDoesNotExistsException;
use OCP\Federation\ICloudFederationNotification;
@@ -16,8 +18,10 @@ use OCP\Federation\ICloudFederationProvider;
use OCP\Federation\ICloudFederationProviderManager;
use OCP\Federation\ICloudFederationShare;
use OCP\Federation\ICloudIdManager;
+use OCP\Http\Client\IClient;
use OCP\Http\Client\IClientService;
use OCP\Http\Client\IResponse;
+use OCP\IAppConfig;
use OCP\IConfig;
use OCP\OCM\Exceptions\OCMProviderException;
use OCP\OCM\IOCMDiscoveryService;
@@ -37,9 +41,12 @@ class CloudFederationProviderManager implements ICloudFederationProviderManager
public function __construct(
private IConfig $config,
private IAppManager $appManager,
+ private IAppConfig $appConfig,
private IClientService $httpClientService,
private ICloudIdManager $cloudIdManager,
private IOCMDiscoveryService $discoveryService,
+ private readonly ISignatureManager $signatureManager,
+ private readonly OCMSignatoryManager $signatoryManager,
private LoggerInterface $logger,
) {
}
@@ -99,17 +106,11 @@ class CloudFederationProviderManager implements ICloudFederationProviderManager
public function sendShare(ICloudFederationShare $share) {
$cloudID = $this->cloudIdManager->resolveCloudId($share->getShareWith());
try {
- $ocmProvider = $this->discoveryService->discover($cloudID->getRemote());
- } catch (OCMProviderException $e) {
- return false;
- }
-
- $client = $this->httpClientService->newClient();
- try {
- $response = $client->post($ocmProvider->getEndPoint() . '/shares', array_merge($this->getDefaultRequestOptions(), [
- 'body' => json_encode($share->getShare()),
- ]));
-
+ try {
+ $response = $this->postOcmPayload($cloudID->getRemote(), '/shares', json_encode($share->getShare()));
+ } catch (OCMProviderException) {
+ return false;
+ }
if ($response->getStatusCode() === Http::STATUS_CREATED) {
$result = json_decode($response->getBody(), true);
return (is_array($result)) ? $result : [];
@@ -135,13 +136,9 @@ class CloudFederationProviderManager implements ICloudFederationProviderManager
*/
public function sendCloudShare(ICloudFederationShare $share): IResponse {
$cloudID = $this->cloudIdManager->resolveCloudId($share->getShareWith());
- $ocmProvider = $this->discoveryService->discover($cloudID->getRemote());
-
$client = $this->httpClientService->newClient();
try {
- return $client->post($ocmProvider->getEndPoint() . '/shares', array_merge($this->getDefaultRequestOptions(), [
- 'body' => json_encode($share->getShare()),
- ]));
+ return $this->postOcmPayload($cloudID->getRemote(), '/shares', json_encode($share->getShare()), $client);
} catch (\Throwable $e) {
$this->logger->error('Error while sending share to federation server: ' . $e->getMessage(), ['exception' => $e]);
try {
@@ -160,16 +157,11 @@ class CloudFederationProviderManager implements ICloudFederationProviderManager
*/
public function sendNotification($url, ICloudFederationNotification $notification) {
try {
- $ocmProvider = $this->discoveryService->discover($url);
- } catch (OCMProviderException $e) {
- return false;
- }
-
- $client = $this->httpClientService->newClient();
- try {
- $response = $client->post($ocmProvider->getEndPoint() . '/notifications', array_merge($this->getDefaultRequestOptions(), [
- 'body' => json_encode($notification->getMessage()),
- ]));
+ try {
+ $response = $this->postOcmPayload($url, '/notifications', json_encode($notification->getMessage()));
+ } catch (OCMProviderException) {
+ return false;
+ }
if ($response->getStatusCode() === Http::STATUS_CREATED) {
$result = json_decode($response->getBody(), true);
return (is_array($result)) ? $result : [];
@@ -189,13 +181,9 @@ class CloudFederationProviderManager implements ICloudFederationProviderManager
* @throws OCMProviderException
*/
public function sendCloudNotification(string $url, ICloudFederationNotification $notification): IResponse {
- $ocmProvider = $this->discoveryService->discover($url);
-
$client = $this->httpClientService->newClient();
try {
- return $client->post($ocmProvider->getEndPoint() . '/notifications', array_merge($this->getDefaultRequestOptions(), [
- 'body' => json_encode($notification->getMessage()),
- ]));
+ return $this->postOcmPayload($url, '/notifications', json_encode($notification->getMessage()), $client);
} catch (\Throwable $e) {
$this->logger->error('Error while sending notification to federation server: ' . $e->getMessage(), ['exception' => $e]);
try {
@@ -215,16 +203,52 @@ class CloudFederationProviderManager implements ICloudFederationProviderManager
return $this->appManager->isEnabledForUser('cloud_federation_api');
}
+ /**
+ * @param string $cloudId
+ * @param string $uri
+ * @param string $payload
+ *
+ * @return IResponse
+ * @throws OCMProviderException
+ */
+ private function postOcmPayload(string $cloudId, string $uri, string $payload, ?IClient $client = null): IResponse {
+ $ocmProvider = $this->discoveryService->discover($cloudId);
+ $uri = $ocmProvider->getEndPoint() . '/' . ltrim($uri, '/');
+ $client = $client ?? $this->httpClientService->newClient();
+ return $client->post($uri, $this->prepareOcmPayload($uri, $payload));
+ }
+
+ /**
+ * @param string $uri
+ * @param string $payload
+ *
+ * @return array
+ */
+ private function prepareOcmPayload(string $uri, string $payload): array {
+ $payload = array_merge($this->getDefaultRequestOptions(), ['body' => $payload]);
+
+ if ($this->appConfig->getValueBool('core', OCMSignatoryManager::APPCONFIG_SIGN_ENFORCED, lazy: true) &&
+ $this->signatoryManager->getRemoteSignatory($this->signatureManager->extractIdentityFromUri($uri)) === null) {
+ return $payload;
+ }
+
+ if (!$this->appConfig->getValueBool('core', OCMSignatoryManager::APPCONFIG_SIGN_DISABLED, lazy: true)) {
+ $signedPayload = $this->signatureManager->signOutgoingRequestIClientPayload(
+ $this->signatoryManager,
+ $payload,
+ 'post', $uri
+ );
+ }
+
+ return $signedPayload ?? $payload;
+ }
+
private function getDefaultRequestOptions(): array {
- $options = [
+ return [
'headers' => ['content-type' => 'application/json'],
'timeout' => 10,
'connect_timeout' => 10,
+ 'verify' => !$this->config->getSystemValueBool('sharing.federation.allowSelfSignedCertificates', false),
];
-
- if ($this->config->getSystemValueBool('sharing.federation.allowSelfSignedCertificates')) {
- $options['verify'] = false;
- }
- return $options;
}
}
diff --git a/lib/private/Files/Storage/Wrapper/Encoding.php b/lib/private/Files/Storage/Wrapper/Encoding.php
index d5afbad9592..92e20cfb3df 100644
--- a/lib/private/Files/Storage/Wrapper/Encoding.php
+++ b/lib/private/Files/Storage/Wrapper/Encoding.php
@@ -280,7 +280,9 @@ class Encoding extends Wrapper {
public function getMetaData(string $path): ?array {
$entry = $this->storage->getMetaData($this->findPathToUse($path));
- $entry['name'] = trim(Filesystem::normalizePath($entry['name']), '/');
+ if ($entry !== null) {
+ $entry['name'] = trim(Filesystem::normalizePath($entry['name']), '/');
+ }
return $entry;
}
diff --git a/lib/private/OCM/Model/OCMProvider.php b/lib/private/OCM/Model/OCMProvider.php
index 73002ae668d..61005d3089d 100644
--- a/lib/private/OCM/Model/OCMProvider.php
+++ b/lib/private/OCM/Model/OCMProvider.php
@@ -9,6 +9,7 @@ declare(strict_types=1);
namespace OC\OCM\Model;
+use NCU\Security\Signature\Model\Signatory;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\OCM\Events\ResourceTypeRegisterEvent;
use OCP\OCM\Exceptions\OCMArgumentException;
@@ -25,7 +26,7 @@ class OCMProvider implements IOCMProvider {
private string $endPoint = '';
/** @var IOCMResource[] */
private array $resourceTypes = [];
-
+ private ?Signatory $signatory = null;
private bool $emittedEvent = false;
public function __construct(
@@ -152,6 +153,14 @@ class OCMProvider implements IOCMProvider {
throw new OCMArgumentException('resource not found');
}
+ public function setSignatory(Signatory $signatory): void {
+ $this->signatory = $signatory;
+ }
+
+ public function getSignatory(): ?Signatory {
+ return $this->signatory;
+ }
+
/**
* import data from an array
*
@@ -163,7 +172,7 @@ class OCMProvider implements IOCMProvider {
*/
public function import(array $data): static {
$this->setEnabled(is_bool($data['enabled'] ?? '') ? $data['enabled'] : false)
- ->setApiVersion((string)($data['apiVersion'] ?? ''))
+ ->setApiVersion((string)($data['version'] ?? ''))
->setEndPoint($data['endPoint'] ?? '');
$resources = [];
@@ -173,6 +182,14 @@ class OCMProvider implements IOCMProvider {
}
$this->setResourceTypes($resources);
+ // import details about the remote request signing public key, if available
+ $signatory = new Signatory();
+ $signatory->setKeyId($data['publicKey']['keyId'] ?? '');
+ $signatory->setPublicKey($data['publicKey']['publicKeyPem'] ?? '');
+ if ($signatory->getKeyId() !== '' && $signatory->getPublicKey() !== '') {
+ $this->setSignatory($signatory);
+ }
+
if (!$this->looksValid()) {
throw new OCMProviderException('remote provider does not look valid');
}
@@ -188,18 +205,22 @@ class OCMProvider implements IOCMProvider {
return ($this->getApiVersion() !== '' && $this->getEndPoint() !== '');
}
-
/**
* @return array{
- * enabled: bool,
- * apiVersion: string,
- * endPoint: string,
- * resourceTypes: list<array{
- * name: string,
- * shareTypes: list<string>,
- * protocols: array<string, string>
- * }>,
- * }
+ * enabled: bool,
+ * apiVersion: '1.0-proposal1',
+ * endPoint: string,
+ * publicKey: array{
+ * keyId: string,
+ * publicKeyPem: string
+ * },
+ * resourceTypes: list<array{
+ * name: string,
+ * shareTypes: list<string>,
+ * protocols: array<string, string>
+ * }>,
+ * version: string
+ * }
*/
public function jsonSerialize(): array {
$resourceTypes = [];
@@ -209,8 +230,10 @@ class OCMProvider implements IOCMProvider {
return [
'enabled' => $this->isEnabled(),
- 'apiVersion' => $this->getApiVersion(),
+ 'apiVersion' => '1.0-proposal1', // deprecated, but keep it to stay compatible with old version
+ 'version' => $this->getApiVersion(), // informative but real version
'endPoint' => $this->getEndPoint(),
+ 'publicKey' => $this->getSignatory()->jsonSerialize(),
'resourceTypes' => $resourceTypes
];
}
diff --git a/lib/private/OCM/OCMDiscoveryService.php b/lib/private/OCM/OCMDiscoveryService.php
index 203df4bbf9b..55da887494a 100644
--- a/lib/private/OCM/OCMDiscoveryService.php
+++ b/lib/private/OCM/OCMDiscoveryService.php
@@ -25,12 +25,6 @@ use Psr\Log\LoggerInterface;
*/
class OCMDiscoveryService implements IOCMDiscoveryService {
private ICache $cache;
- private array $supportedAPIVersion =
- [
- '1.0-proposal1',
- '1.0',
- '1.1'
- ];
public function __construct(
ICacheFactory $cacheFactory,
@@ -52,6 +46,14 @@ class OCMDiscoveryService implements IOCMDiscoveryService {
*/
public function discover(string $remote, bool $skipCache = false): IOCMProvider {
$remote = rtrim($remote, '/');
+ if (!str_starts_with($remote, 'http://') && !str_starts_with($remote, 'https://')) {
+ // if scheme not specified, we test both;
+ try {
+ return $this->discover('https://' . $remote, $skipCache);
+ } catch (OCMProviderException) {
+ return $this->discover('http://' . $remote, $skipCache);
+ }
+ }
if (!$skipCache) {
try {
@@ -61,9 +63,7 @@ class OCMDiscoveryService implements IOCMDiscoveryService {
}
$this->provider->import(json_decode($cached ?? '', true, 8, JSON_THROW_ON_ERROR) ?? []);
- if ($this->supportedAPIVersion($this->provider->getApiVersion())) {
- return $this->provider; // if cache looks valid, we use it
- }
+ return $this->provider;
} catch (JsonException|OCMProviderException $e) {
// we ignore cache on issues
}
@@ -78,10 +78,7 @@ class OCMDiscoveryService implements IOCMDiscoveryService {
if ($this->config->getSystemValueBool('sharing.federation.allowSelfSignedCertificates') === true) {
$options['verify'] = false;
}
- $response = $client->get(
- $remote . '/ocm-provider/',
- $options,
- );
+ $response = $client->get($remote . '/ocm-provider/', $options);
if ($response->getStatusCode() === Http::STATUS_OK) {
$body = $response->getBody();
@@ -101,31 +98,6 @@ class OCMDiscoveryService implements IOCMDiscoveryService {
throw new OCMProviderException('error while requesting remote ocm provider');
}
- if (!$this->supportedAPIVersion($this->provider->getApiVersion())) {
- $this->cache->set($remote, false, 5 * 60);
- throw new OCMProviderException('API version not supported');
- }
-
return $this->provider;
}
-
- /**
- * Check the version from remote is supported.
- * The minor version of the API will be ignored:
- * 1.0.1 is identified as 1.0
- *
- * @param string $version
- *
- * @return bool
- */
- private function supportedAPIVersion(string $version): bool {
- $dot1 = strpos($version, '.');
- $dot2 = strpos($version, '.', $dot1 + 1);
-
- if ($dot2 > 0) {
- $version = substr($version, 0, $dot2);
- }
-
- return (in_array($version, $this->supportedAPIVersion));
- }
}
diff --git a/lib/private/OCM/OCMSignatoryManager.php b/lib/private/OCM/OCMSignatoryManager.php
new file mode 100644
index 00000000000..3b2cc595507
--- /dev/null
+++ b/lib/private/OCM/OCMSignatoryManager.php
@@ -0,0 +1,160 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace OC\OCM;
+
+use NCU\Security\Signature\Enum\DigestAlgorithm;
+use NCU\Security\Signature\Enum\SignatoryType;
+use NCU\Security\Signature\Enum\SignatureAlgorithm;
+use NCU\Security\Signature\Exceptions\IdentityNotFoundException;
+use NCU\Security\Signature\ISignatoryManager;
+use NCU\Security\Signature\ISignatureManager;
+use NCU\Security\Signature\Model\Signatory;
+use OC\Security\IdentityProof\Manager;
+use OCP\IAppConfig;
+use OCP\IURLGenerator;
+use OCP\OCM\Exceptions\OCMProviderException;
+use Psr\Log\LoggerInterface;
+
+/**
+ * @inheritDoc
+ *
+ * returns local signatory using IKeyPairManager
+ * extract optional signatory (keyId+public key) from ocm discovery service on remote instance
+ *
+ * @since 31.0.0
+ */
+class OCMSignatoryManager implements ISignatoryManager {
+ public const PROVIDER_ID = 'ocm';
+ public const APPCONFIG_SIGN_IDENTITY_EXTERNAL = 'ocm_signed_request_identity_external';
+ public const APPCONFIG_SIGN_DISABLED = 'ocm_signed_request_disabled';
+ public const APPCONFIG_SIGN_ENFORCED = 'ocm_signed_request_enforced';
+
+ public function __construct(
+ private readonly IAppConfig $appConfig,
+ private readonly ISignatureManager $signatureManager,
+ private readonly IURLGenerator $urlGenerator,
+ private readonly Manager $identityProofManager,
+ private readonly OCMDiscoveryService $ocmDiscoveryService,
+ private readonly LoggerInterface $logger,
+ ) {
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @return string
+ * @since 31.0.0
+ */
+ public function getProviderId(): string {
+ return self::PROVIDER_ID;
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @return array
+ * @since 31.0.0
+ */
+ public function getOptions(): array {
+ return [
+ 'algorithm' => SignatureAlgorithm::RSA_SHA512,
+ 'digestAlgorithm' => DigestAlgorithm::SHA512,
+ 'extraSignatureHeaders' => [],
+ 'ttl' => 300,
+ 'dateHeader' => 'D, d M Y H:i:s T',
+ 'ttlSignatory' => 86400 * 3,
+ 'bodyMaxSize' => 50000,
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @return Signatory
+ * @throws IdentityNotFoundException
+ * @since 31.0.0
+ */
+ public function getLocalSignatory(): Signatory {
+ /**
+ * TODO: manage multiple identity (external, internal, ...) to allow a limitation
+ * based on the requested interface (ie. only accept shares from globalscale)
+ */
+ if ($this->appConfig->hasKey('core', self::APPCONFIG_SIGN_IDENTITY_EXTERNAL, true)) {
+ $identity = $this->appConfig->getValueString('core', self::APPCONFIG_SIGN_IDENTITY_EXTERNAL, lazy: true);
+ $keyId = 'https://' . $identity . '/ocm#signature';
+ } else {
+ $keyId = $this->generateKeyId();
+ }
+
+ if (!$this->identityProofManager->hasAppKey('core', 'ocm_external')) {
+ $this->identityProofManager->generateAppKey('core', 'ocm_external', [
+ 'algorithm' => 'rsa',
+ 'private_key_bits' => 2048,
+ 'private_key_type' => OPENSSL_KEYTYPE_RSA,
+ ]);
+ }
+ $keyPair = $this->identityProofManager->getAppKey('core', 'ocm_external');
+
+ $signatory = new Signatory(true);
+ $signatory->setKeyId($keyId);
+ $signatory->setPublicKey($keyPair->getPublic());
+ $signatory->setPrivateKey($keyPair->getPrivate());
+ return $signatory;
+
+ }
+
+ /**
+ * - tries to generate a keyId using global configuration (from signature manager) if available
+ * - generate a keyId using the current route to ocm shares
+ *
+ * @return string
+ * @throws IdentityNotFoundException
+ */
+ private function generateKeyId(): string {
+ try {
+ return $this->signatureManager->generateKeyIdFromConfig('/ocm#signature');
+ } catch (IdentityNotFoundException) {
+ }
+
+ $url = $this->urlGenerator->linkToRouteAbsolute('cloud_federation_api.requesthandlercontroller.addShare');
+ $identity = $this->signatureManager->extractIdentityFromUri($url);
+
+ // catching possible subfolder to create a keyId like 'https://hostname/subfolder/ocm#signature
+ $path = parse_url($url, PHP_URL_PATH);
+ $pos = strpos($path, '/ocm/shares');
+ $sub = ($pos) ? substr($path, 0, $pos) : '';
+
+ return 'https://' . $identity . $sub . '/ocm#signature';
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @param string $remote
+ *
+ * @return Signatory|null must be NULL if no signatory is found
+ * @since 31.0.0
+ */
+ public function getRemoteSignatory(string $remote): ?Signatory {
+ try {
+ $ocmProvider = $this->ocmDiscoveryService->discover($remote, true);
+ /**
+ * @experimental 31.0.0
+ * @psalm-suppress UndefinedInterfaceMethod
+ */
+ $signatory = $ocmProvider->getSignatory();
+ $signatory?->setSignatoryType(SignatoryType::TRUSTED);
+ return $signatory;
+ } catch (OCMProviderException $e) {
+ $this->logger->warning('fail to get remote signatory', ['exception' => $e, 'remote' => $remote]);
+ return null;
+ }
+ }
+}
diff --git a/lib/private/Security/IdentityProof/Manager.php b/lib/private/Security/IdentityProof/Manager.php
index 0ce760ccc63..935c18bb81d 100644
--- a/lib/private/Security/IdentityProof/Manager.php
+++ b/lib/private/Security/IdentityProof/Manager.php
@@ -10,6 +10,7 @@ namespace OC\Security\IdentityProof;
use OC\Files\AppData\Factory;
use OCP\Files\IAppData;
+use OCP\Files\NotFoundException;
use OCP\IConfig;
use OCP\IUser;
use OCP\Security\ICrypto;
@@ -31,18 +32,20 @@ class Manager {
* Calls the openssl functions to generate a public and private key.
* In a separate function for unit testing purposes.
*
+ * @param array $options config options to generate key {@see openssl_csr_new}
+ *
* @return array [$publicKey, $privateKey]
* @throws \RuntimeException
*/
- protected function generateKeyPair(): array {
+ protected function generateKeyPair(array $options = []): array {
$config = [
- 'digest_alg' => 'sha512',
- 'private_key_bits' => 2048,
+ 'digest_alg' => $options['algorithm'] ?? 'sha512',
+ 'private_key_bits' => $options['bits'] ?? 2048,
+ 'private_key_type' => $options['type'] ?? OPENSSL_KEYTYPE_RSA,
];
// Generate new key
$res = openssl_pkey_new($config);
-
if ($res === false) {
$this->logOpensslError();
throw new \RuntimeException('OpenSSL reported a problem');
@@ -65,15 +68,17 @@ class Manager {
* Note: If a key already exists it will be overwritten
*
* @param string $id key id
+ * @param array $options config options to generate key {@see openssl_csr_new}
+ *
* @throws \RuntimeException
*/
- protected function generateKey(string $id): Key {
- [$publicKey, $privateKey] = $this->generateKeyPair();
+ protected function generateKey(string $id, array $options = []): Key {
+ [$publicKey, $privateKey] = $this->generateKeyPair($options);
// Write the private and public key to the disk
try {
$this->appData->newFolder($id);
- } catch (\Exception $e) {
+ } catch (\Exception) {
}
$folder = $this->appData->getFolder($id);
$folder->newFile('private')
@@ -125,6 +130,38 @@ class Manager {
return $this->retrieveKey('system-' . $instanceId);
}
+ public function hasAppKey(string $app, string $name): bool {
+ $id = $this->generateAppKeyId($app, $name);
+ try {
+ $folder = $this->appData->getFolder($id);
+ return ($folder->fileExists('public') && $folder->fileExists('private'));
+ } catch (NotFoundException) {
+ return false;
+ }
+ }
+
+ public function getAppKey(string $app, string $name): Key {
+ return $this->retrieveKey($this->generateAppKeyId($app, $name));
+ }
+
+ public function generateAppKey(string $app, string $name, array $options = []): Key {
+ return $this->generateKey($this->generateAppKeyId($app, $name), $options);
+ }
+
+ public function deleteAppKey(string $app, string $name): bool {
+ try {
+ $folder = $this->appData->getFolder($this->generateAppKeyId($app, $name));
+ $folder->delete();
+ return true;
+ } catch (NotFoundException) {
+ return false;
+ }
+ }
+
+ private function generateAppKeyId(string $app, string $name): string {
+ return 'app-' . $app . '-' . $name;
+ }
+
private function logOpensslError(): void {
$errors = [];
while ($error = openssl_error_string()) {
diff --git a/lib/private/Security/Signature/Db/SignatoryMapper.php b/lib/private/Security/Signature/Db/SignatoryMapper.php
new file mode 100644
index 00000000000..47b79320548
--- /dev/null
+++ b/lib/private/Security/Signature/Db/SignatoryMapper.php
@@ -0,0 +1,114 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace OC\Security\Signature\Db;
+
+use NCU\Security\Signature\Exceptions\SignatoryNotFoundException;
+use NCU\Security\Signature\Model\Signatory;
+use OCP\AppFramework\Db\DoesNotExistException;
+use OCP\AppFramework\Db\QBMapper;
+use OCP\DB\Exception;
+use OCP\IDBConnection;
+
+/**
+ * @template-extends QBMapper<Signatory>
+ */
+class SignatoryMapper extends QBMapper {
+ public const TABLE = 'sec_signatory';
+
+ public function __construct(
+ IDBConnection $db,
+ ) {
+ parent::__construct($db, self::TABLE, Signatory::class);
+ }
+
+ /**
+ *
+ */
+ public function getByHost(string $host, string $account = ''): Signatory {
+ $qb = $this->db->getQueryBuilder();
+ $qb->select('*')
+ ->from($this->getTableName())
+ ->where($qb->expr()->eq('host', $qb->createNamedParameter($host)))
+ ->andWhere($qb->expr()->eq('account', $qb->createNamedParameter($account)));
+
+ try {
+ return $this->findEntity($qb);
+ } catch (DoesNotExistException) {
+ throw new SignatoryNotFoundException('no signatory found');
+ }
+ }
+
+ /**
+ */
+ public function getByKeyId(string $keyId): Signatory {
+ $qb = $this->db->getQueryBuilder();
+ $qb->select('*')
+ ->from($this->getTableName())
+ ->where($qb->expr()->eq('key_id_sum', $qb->createNamedParameter($this->hashKeyId($keyId))));
+
+ try {
+ return $this->findEntity($qb);
+ } catch (DoesNotExistException) {
+ throw new SignatoryNotFoundException('no signatory found');
+ }
+ }
+
+ /**
+ * @param string $keyId
+ *
+ * @return int
+ * @throws Exception
+ */
+ public function deleteByKeyId(string $keyId): int {
+ $qb = $this->db->getQueryBuilder();
+ $qb->delete($this->getTableName())
+ ->where($qb->expr()->eq('key_id_sum', $qb->createNamedParameter($this->hashKeyId($keyId))));
+
+ return $qb->executeStatement();
+ }
+
+ /**
+ * @param Signatory $signatory
+ *
+ * @return int
+ */
+ public function updateMetadata(Signatory $signatory): int {
+ $qb = $this->db->getQueryBuilder();
+ $qb->update($this->getTableName())
+ ->set('metadata', $qb->createNamedParameter(json_encode($signatory->getMetadata())))
+ ->set('last_updated', $qb->createNamedParameter(time()));
+ $qb->where($qb->expr()->eq('key_id_sum', $qb->createNamedParameter($this->hashKeyId($signatory->getKeyId()))));
+
+ return $qb->executeStatement();
+ }
+
+ /**
+ * @param Signatory $signator
+ */
+ public function updatePublicKey(Signatory $signatory): int {
+ $qb = $this->db->getQueryBuilder();
+ $qb->update($this->getTableName())
+ ->set('signatory', $qb->createNamedParameter($signatory->getPublicKey()))
+ ->set('last_updated', $qb->createNamedParameter(time()));
+ $qb->where($qb->expr()->eq('key_id_sum', $qb->createNamedParameter($this->hashKeyId($signatory->getKeyId()))));
+
+ return $qb->executeStatement();
+ }
+
+ /**
+ * returns a hash version for keyId for better index in the database
+ *
+ * @param string $keyId
+ *
+ * @return string
+ */
+ private function hashKeyId(string $keyId): string {
+ return hash('sha256', $keyId);
+ }
+}
diff --git a/lib/private/Security/Signature/Model/IncomingSignedRequest.php b/lib/private/Security/Signature/Model/IncomingSignedRequest.php
new file mode 100644
index 00000000000..0f7dc7cb771
--- /dev/null
+++ b/lib/private/Security/Signature/Model/IncomingSignedRequest.php
@@ -0,0 +1,268 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OC\Security\Signature\Model;
+
+use JsonSerializable;
+use NCU\Security\Signature\Enum\DigestAlgorithm;
+use NCU\Security\Signature\Enum\SignatureAlgorithm;
+use NCU\Security\Signature\Exceptions\IdentityNotFoundException;
+use NCU\Security\Signature\Exceptions\IncomingRequestException;
+use NCU\Security\Signature\Exceptions\InvalidSignatureException;
+use NCU\Security\Signature\Exceptions\SignatoryNotFoundException;
+use NCU\Security\Signature\Exceptions\SignatureElementNotFoundException;
+use NCU\Security\Signature\Exceptions\SignatureException;
+use NCU\Security\Signature\Exceptions\SignatureNotFoundException;
+use NCU\Security\Signature\IIncomingSignedRequest;
+use NCU\Security\Signature\ISignatureManager;
+use NCU\Security\Signature\Model\Signatory;
+use OC\Security\Signature\SignatureManager;
+use OCP\IRequest;
+use ValueError;
+
+/**
+ * @inheritDoc
+ *
+ * @see ISignatureManager for details on signature
+ * @since 31.0.0
+ */
+class IncomingSignedRequest extends SignedRequest implements
+ IIncomingSignedRequest,
+ JsonSerializable {
+ private string $origin = '';
+
+ /**
+ * @param string $body
+ * @param IRequest $request
+ * @param array $options
+ *
+ * @throws IncomingRequestException if incoming request is wrongly signed
+ * @throws SignatureException if signature is faulty
+ * @throws SignatureNotFoundException if signature is not implemented
+ */
+ public function __construct(
+ string $body,
+ private readonly IRequest $request,
+ private readonly array $options = [],
+ ) {
+ parent::__construct($body);
+ $this->verifyHeaders();
+ $this->extractSignatureHeader();
+ $this->reconstructSignatureData();
+
+ try {
+ // we set origin based on the keyId defined in the Signature header of the request
+ $this->setOrigin(Signatory::extractIdentityFromUri($this->getSigningElement('keyId')));
+ } catch (IdentityNotFoundException $e) {
+ throw new IncomingRequestException($e->getMessage());
+ }
+ }
+
+ /**
+ * confirm that:
+ *
+ * - date is available in the header and its value is less than 5 minutes old
+ * - content-length is available and is the same as the payload size
+ * - digest is available and fit the checksum of the payload
+ *
+ * @throws IncomingRequestException
+ * @throws SignatureNotFoundException
+ */
+ private function verifyHeaders(): void {
+ if ($this->request->getHeader('Signature') === '') {
+ throw new SignatureNotFoundException('missing Signature in header');
+ }
+
+ // confirm presence of date, content-length, digest and Signature
+ $date = $this->request->getHeader('date');
+ if ($date === '') {
+ throw new IncomingRequestException('missing date in header');
+ }
+ $contentLength = $this->request->getHeader('content-length');
+ if ($contentLength === '') {
+ throw new IncomingRequestException('missing content-length in header');
+ }
+ $digest = $this->request->getHeader('digest');
+ if ($digest === '') {
+ throw new IncomingRequestException('missing digest in header');
+ }
+
+ // confirm date
+ try {
+ $dTime = new \DateTime($date);
+ $requestTime = $dTime->getTimestamp();
+ } catch (\Exception) {
+ throw new IncomingRequestException('datetime exception');
+ }
+ if ($requestTime < (time() - ($this->options['ttl'] ?? SignatureManager::DATE_TTL))) {
+ throw new IncomingRequestException('object is too old');
+ }
+
+ // confirm validity of content-length
+ if (strlen($this->getBody()) !== (int)$contentLength) {
+ throw new IncomingRequestException('inexact content-length in header');
+ }
+
+ // confirm digest value, based on body
+ [$algo, ] = explode('=', $digest);
+ try {
+ $this->setDigestAlgorithm(DigestAlgorithm::from($algo));
+ } catch (ValueError) {
+ throw new IncomingRequestException('unknown digest algorithm');
+ }
+ if ($digest !== $this->getDigest()) {
+ throw new IncomingRequestException('invalid value for digest in header');
+ }
+ }
+
+ /**
+ * extract data from the header entry 'Signature' and convert its content from string to an array
+ * also confirm that it contains the minimum mandatory information
+ *
+ * @throws IncomingRequestException
+ */
+ private function extractSignatureHeader(): void {
+ $details = [];
+ foreach (explode(',', $this->request->getHeader('Signature')) as $entry) {
+ if ($entry === '' || !strpos($entry, '=')) {
+ continue;
+ }
+
+ [$k, $v] = explode('=', $entry, 2);
+ preg_match('/^"([^"]+)"$/', $v, $var);
+ if ($var[0] !== '') {
+ $v = trim($var[0], '"');
+ }
+ $details[$k] = $v;
+ }
+
+ $this->setSigningElements($details);
+
+ try {
+ // confirm keys are in the Signature header
+ $this->getSigningElement('keyId');
+ $this->getSigningElement('headers');
+ $this->setSignature($this->getSigningElement('signature'));
+ } catch (SignatureElementNotFoundException $e) {
+ throw new IncomingRequestException($e->getMessage());
+ }
+ }
+
+ /**
+ * reconstruct signature data based on signature's metadata stored in the 'Signature' header
+ *
+ * @throws SignatureException
+ * @throws SignatureElementNotFoundException
+ */
+ private function reconstructSignatureData(): void {
+ $usedHeaders = explode(' ', $this->getSigningElement('headers'));
+ $neededHeaders = array_merge(['date', 'host', 'content-length', 'digest'],
+ array_keys($this->options['extraSignatureHeaders'] ?? []));
+
+ $missingHeaders = array_diff($neededHeaders, $usedHeaders);
+ if ($missingHeaders !== []) {
+ throw new SignatureException('missing entries in Signature.headers: ' . json_encode($missingHeaders));
+ }
+
+ $estimated = ['(request-target): ' . strtolower($this->request->getMethod()) . ' ' . $this->request->getRequestUri()];
+ foreach ($usedHeaders as $key) {
+ if ($key === '(request-target)') {
+ continue;
+ }
+ $value = (strtolower($key) === 'host') ? $this->request->getServerHost() : $this->request->getHeader($key);
+ if ($value === '') {
+ throw new SignatureException('missing header ' . $key . ' in request');
+ }
+
+ $estimated[] = $key . ': ' . $value;
+ }
+
+ $this->setSignatureData($estimated);
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @return IRequest
+ * @since 31.0.0
+ */
+ public function getRequest(): IRequest {
+ return $this->request;
+ }
+
+ /**
+ * set the hostname at the source of the request,
+ * based on the keyId defined in the signature header.
+ *
+ * @param string $origin
+ * @since 31.0.0
+ */
+ private function setOrigin(string $origin): void {
+ $this->origin = $origin;
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @return string
+ * @throws IncomingRequestException
+ * @since 31.0.0
+ */
+ public function getOrigin(): string {
+ if ($this->origin === '') {
+ throw new IncomingRequestException('empty origin');
+ }
+ return $this->origin;
+ }
+
+ /**
+ * returns the keyId extracted from the signature headers.
+ * keyId is a mandatory entry in the headers of a signed request.
+ *
+ * @return string
+ * @throws SignatureElementNotFoundException
+ * @since 31.0.0
+ */
+ public function getKeyId(): string {
+ return $this->getSigningElement('keyId');
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @throws SignatureException
+ * @throws SignatoryNotFoundException
+ * @since 31.0.0
+ */
+ public function verify(): void {
+ $publicKey = $this->getSignatory()->getPublicKey();
+ if ($publicKey === '') {
+ throw new SignatoryNotFoundException('empty public key');
+ }
+
+ $algorithm = SignatureAlgorithm::tryFrom($this->getSigningElement('algorithm')) ?? SignatureAlgorithm::RSA_SHA256;
+ if (openssl_verify(
+ implode("\n", $this->getSignatureData()),
+ base64_decode($this->getSignature()),
+ $publicKey,
+ $algorithm->value
+ ) !== 1) {
+ throw new InvalidSignatureException('signature issue');
+ }
+ }
+
+ public function jsonSerialize(): array {
+ return array_merge(
+ parent::jsonSerialize(),
+ [
+ 'options' => $this->options,
+ 'origin' => $this->origin,
+ ]
+ );
+ }
+}
diff --git a/lib/private/Security/Signature/Model/OutgoingSignedRequest.php b/lib/private/Security/Signature/Model/OutgoingSignedRequest.php
new file mode 100644
index 00000000000..dbfac3bfd34
--- /dev/null
+++ b/lib/private/Security/Signature/Model/OutgoingSignedRequest.php
@@ -0,0 +1,229 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OC\Security\Signature\Model;
+
+use JsonSerializable;
+use NCU\Security\Signature\Enum\DigestAlgorithm;
+use NCU\Security\Signature\Enum\SignatureAlgorithm;
+use NCU\Security\Signature\Exceptions\SignatoryException;
+use NCU\Security\Signature\Exceptions\SignatoryNotFoundException;
+use NCU\Security\Signature\IOutgoingSignedRequest;
+use NCU\Security\Signature\ISignatoryManager;
+use NCU\Security\Signature\ISignatureManager;
+use OC\Security\Signature\SignatureManager;
+
+/**
+ * extends ISignedRequest to add info requested at the generation of the signature
+ *
+ * @see ISignatureManager for details on signature
+ * @since 31.0.0
+ */
+class OutgoingSignedRequest extends SignedRequest implements
+ IOutgoingSignedRequest,
+ JsonSerializable {
+ private string $host = '';
+ private array $headers = [];
+ /** @var list<string> $headerList */
+ private array $headerList = [];
+ private SignatureAlgorithm $algorithm;
+ public function __construct(
+ string $body,
+ ISignatoryManager $signatoryManager,
+ private readonly string $identity,
+ private readonly string $method,
+ private readonly string $path,
+ ) {
+ parent::__construct($body);
+
+ $options = $signatoryManager->getOptions();
+ $this->setHost($identity)
+ ->setAlgorithm($options['algorithm'] ?? SignatureAlgorithm::RSA_SHA256)
+ ->setSignatory($signatoryManager->getLocalSignatory())
+ ->setDigestAlgorithm($options['digestAlgorithm'] ?? DigestAlgorithm::SHA256);
+
+ $headers = array_merge([
+ '(request-target)' => strtolower($method) . ' ' . $path,
+ 'content-length' => strlen($this->getBody()),
+ 'date' => gmdate($options['dateHeader'] ?? SignatureManager::DATE_HEADER),
+ 'digest' => $this->getDigest(),
+ 'host' => $this->getHost()
+ ], $options['extraSignatureHeaders'] ?? []);
+
+ $signing = $headerList = [];
+ foreach ($headers as $element => $value) {
+ $signing[] = $element . ': ' . $value;
+ $headerList[] = $element;
+ if ($element !== '(request-target)') {
+ $this->addHeader($element, $value);
+ }
+ }
+
+ $this->setHeaderList($headerList)
+ ->setSignatureData($signing);
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @param string $host
+ * @return $this
+ * @since 31.0.0
+ */
+ public function setHost(string $host): self {
+ $this->host = $host;
+ return $this;
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @return string
+ * @since 31.0.0
+ */
+ public function getHost(): string {
+ return $this->host;
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @param string $key
+ * @param string|int|float $value
+ *
+ * @return self
+ * @since 31.0.0
+ */
+ public function addHeader(string $key, string|int|float $value): self {
+ $this->headers[$key] = $value;
+ return $this;
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @return array
+ * @since 31.0.0
+ */
+ public function getHeaders(): array {
+ return $this->headers;
+ }
+
+ /**
+ * set the ordered list of used headers in the Signature
+ *
+ * @param list<string> $list
+ *
+ * @return self
+ * @since 31.0.0
+ */
+ public function setHeaderList(array $list): self {
+ $this->headerList = $list;
+ return $this;
+ }
+
+ /**
+ * returns ordered list of used headers in the Signature
+ *
+ * @return list<string>
+ * @since 31.0.0
+ */
+ public function getHeaderList(): array {
+ return $this->headerList;
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @param SignatureAlgorithm $algorithm
+ *
+ * @return self
+ * @since 31.0.0
+ */
+ public function setAlgorithm(SignatureAlgorithm $algorithm): self {
+ $this->algorithm = $algorithm;
+ return $this;
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @return SignatureAlgorithm
+ * @since 31.0.0
+ */
+ public function getAlgorithm(): SignatureAlgorithm {
+ return $this->algorithm;
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @return self
+ * @throws SignatoryException
+ * @throws SignatoryNotFoundException
+ * @since 31.0.0
+ */
+ public function sign(): self {
+ $privateKey = $this->getSignatory()->getPrivateKey();
+ if ($privateKey === '') {
+ throw new SignatoryException('empty private key');
+ }
+
+ openssl_sign(
+ implode("\n", $this->getSignatureData()),
+ $signed,
+ $privateKey,
+ $this->getAlgorithm()->value
+ );
+
+ $this->setSignature(base64_encode($signed));
+ $this->setSigningElements(
+ [
+ 'keyId="' . $this->getSignatory()->getKeyId() . '"',
+ 'algorithm="' . $this->getAlgorithm()->value . '"',
+ 'headers="' . implode(' ', $this->getHeaderList()) . '"',
+ 'signature="' . $this->getSignature() . '"'
+ ]
+ );
+ $this->addHeader('Signature', implode(',', $this->getSigningElements()));
+
+ return $this;
+ }
+
+ /**
+ * @param string $clear
+ * @param string $privateKey
+ * @param SignatureAlgorithm $algorithm
+ *
+ * @return string
+ * @throws SignatoryException
+ */
+ private function signString(string $clear, string $privateKey, SignatureAlgorithm $algorithm): string {
+ if ($privateKey === '') {
+ throw new SignatoryException('empty private key');
+ }
+
+ openssl_sign($clear, $signed, $privateKey, $algorithm->value);
+
+ return base64_encode($signed);
+ }
+
+ public function jsonSerialize(): array {
+ return array_merge(
+ parent::jsonSerialize(),
+ [
+ 'host' => $this->host,
+ 'headers' => $this->headers,
+ 'algorithm' => $this->algorithm->value,
+ 'method' => $this->method,
+ 'identity' => $this->identity,
+ 'path' => $this->path,
+ ]
+ );
+ }
+}
diff --git a/lib/private/Security/Signature/Model/SignedRequest.php b/lib/private/Security/Signature/Model/SignedRequest.php
new file mode 100644
index 00000000000..f30935e83b1
--- /dev/null
+++ b/lib/private/Security/Signature/Model/SignedRequest.php
@@ -0,0 +1,216 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OC\Security\Signature\Model;
+
+use JsonSerializable;
+use NCU\Security\Signature\Enum\DigestAlgorithm;
+use NCU\Security\Signature\Exceptions\SignatoryNotFoundException;
+use NCU\Security\Signature\Exceptions\SignatureElementNotFoundException;
+use NCU\Security\Signature\ISignedRequest;
+use NCU\Security\Signature\Model\Signatory;
+
+/**
+ * @inheritDoc
+ *
+ * @since 31.0.0
+ */
+class SignedRequest implements ISignedRequest, JsonSerializable {
+ private string $digest = '';
+ private DigestAlgorithm $digestAlgorithm = DigestAlgorithm::SHA256;
+ private array $signingElements = [];
+ private array $signatureData = [];
+ private string $signature = '';
+ private ?Signatory $signatory = null;
+
+ public function __construct(
+ private readonly string $body,
+ ) {
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @return string
+ * @since 31.0.0
+ */
+ public function getBody(): string {
+ return $this->body;
+ }
+
+ /**
+ * set algorithm used to generate digest
+ *
+ * @param DigestAlgorithm $algorithm
+ *
+ * @return self
+ * @since 31.0.0
+ */
+ protected function setDigestAlgorithm(DigestAlgorithm $algorithm): self {
+ $this->digestAlgorithm = $algorithm;
+ return $this;
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @return DigestAlgorithm
+ * @since 31.0.0
+ */
+ public function getDigestAlgorithm(): DigestAlgorithm {
+ return $this->digestAlgorithm;
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @return string
+ * @since 31.0.0
+ */
+ public function getDigest(): string {
+ if ($this->digest === '') {
+ $this->digest = $this->digestAlgorithm->value . '=' .
+ base64_encode(hash($this->digestAlgorithm->getHashingAlgorithm(), $this->body, true));
+ }
+ return $this->digest;
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @param array $elements
+ *
+ * @return self
+ * @since 31.0.0
+ */
+ public function setSigningElements(array $elements): self {
+ $this->signingElements = $elements;
+ return $this;
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @return array
+ * @since 31.0.0
+ */
+ public function getSigningElements(): array {
+ return $this->signingElements;
+ }
+
+ /**
+ * @param string $key
+ *
+ * @return string
+ * @throws SignatureElementNotFoundException
+ * @since 31.0.0
+ *
+ */
+ public function getSigningElement(string $key): string { // getSignatureDetail / getSignatureEntry() ?
+ if (!array_key_exists($key, $this->signingElements)) {
+ throw new SignatureElementNotFoundException('missing element ' . $key . ' in Signature header');
+ }
+
+ return $this->signingElements[$key];
+ }
+
+ /**
+ * store data used to generate signature
+ *
+ * @param array $data
+ *
+ * @return self
+ * @since 31.0.0
+ */
+ protected function setSignatureData(array $data): self {
+ $this->signatureData = $data;
+ return $this;
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @return array
+ * @since 31.0.0
+ */
+ public function getSignatureData(): array {
+ return $this->signatureData;
+ }
+
+ /**
+ * set the signed version of the signature
+ *
+ * @param string $signature
+ *
+ * @return self
+ * @since 31.0.0
+ */
+ protected function setSignature(string $signature): self {
+ $this->signature = $signature;
+ return $this;
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @return string
+ * @since 31.0.0
+ */
+ public function getSignature(): string {
+ return $this->signature;
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @param Signatory $signatory
+ * @return self
+ * @since 31.0.0
+ */
+ public function setSignatory(Signatory $signatory): self {
+ $this->signatory = $signatory;
+ return $this;
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @return Signatory
+ * @throws SignatoryNotFoundException
+ * @since 31.0.0
+ */
+ public function getSignatory(): Signatory {
+ if ($this->signatory === null) {
+ throw new SignatoryNotFoundException();
+ }
+
+ return $this->signatory;
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @return bool
+ * @since 31.0.0
+ */
+ public function hasSignatory(): bool {
+ return ($this->signatory !== null);
+ }
+
+ public function jsonSerialize(): array {
+ return [
+ 'body' => $this->body,
+ 'digest' => $this->getDigest(),
+ 'digestAlgorithm' => $this->getDigestAlgorithm()->value,
+ 'signingElements' => $this->signingElements,
+ 'signatureData' => $this->signatureData,
+ 'signature' => $this->signature,
+ 'signatory' => $this->signatory ?? false,
+ ];
+ }
+}
diff --git a/lib/private/Security/Signature/SignatureManager.php b/lib/private/Security/Signature/SignatureManager.php
new file mode 100644
index 00000000000..fa52bbfaa7c
--- /dev/null
+++ b/lib/private/Security/Signature/SignatureManager.php
@@ -0,0 +1,425 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace OC\Security\Signature;
+
+use NCU\Security\Signature\Enum\SignatoryType;
+use NCU\Security\Signature\Exceptions\IdentityNotFoundException;
+use NCU\Security\Signature\Exceptions\IncomingRequestException;
+use NCU\Security\Signature\Exceptions\InvalidKeyOriginException;
+use NCU\Security\Signature\Exceptions\InvalidSignatureException;
+use NCU\Security\Signature\Exceptions\SignatoryConflictException;
+use NCU\Security\Signature\Exceptions\SignatoryException;
+use NCU\Security\Signature\Exceptions\SignatoryNotFoundException;
+use NCU\Security\Signature\Exceptions\SignatureElementNotFoundException;
+use NCU\Security\Signature\Exceptions\SignatureException;
+use NCU\Security\Signature\Exceptions\SignatureNotFoundException;
+use NCU\Security\Signature\IIncomingSignedRequest;
+use NCU\Security\Signature\IOutgoingSignedRequest;
+use NCU\Security\Signature\ISignatoryManager;
+use NCU\Security\Signature\ISignatureManager;
+use NCU\Security\Signature\Model\Signatory;
+use OC\Security\Signature\Db\SignatoryMapper;
+use OC\Security\Signature\Model\IncomingSignedRequest;
+use OC\Security\Signature\Model\OutgoingSignedRequest;
+use OCP\DB\Exception as DBException;
+use OCP\IAppConfig;
+use OCP\IRequest;
+use Psr\Log\LoggerInterface;
+
+/**
+ * ISignatureManager is a service integrated to core that provide tools
+ * to set/get authenticity of/from outgoing/incoming request.
+ *
+ * Quick description of the signature, added to the headers
+ * {
+ * "(request-target)": "post /path",
+ * "content-length": 385,
+ * "date": "Mon, 08 Jul 2024 14:16:20 GMT",
+ * "digest": "SHA-256=U7gNVUQiixe5BRbp4Tg0xCZMTcSWXXUZI2\\/xtHM40S0=",
+ * "host": "hostname.of.the.recipient",
+ * "Signature": "keyId=\"https://author.hostname/key\",algorithm=\"sha256\",headers=\"content-length
+ * date digest host\",signature=\"DzN12OCS1rsA[...]o0VmxjQooRo6HHabg==\""
+ * }
+ *
+ * 'content-length' is the total length of the data/content
+ * 'date' is the datetime the request have been initiated
+ * 'digest' is a checksum of the data/content
+ * 'host' is the hostname of the recipient of the request (remote when signing outgoing request, local on
+ * incoming request)
+ * 'Signature' contains the signature generated using the private key, and metadata:
+ * - 'keyId' is a unique id, formatted as an url. hostname is used to retrieve the public key via custom
+ * discovery
+ * - 'algorithm' define the algorithm used to generate signature
+ * - 'headers' contains a list of element used during the generation of the signature
+ * - 'signature' is the encrypted string, using local private key, of an array containing elements
+ * listed in 'headers' and their value. Some elements (content-length date digest host) are mandatory
+ * to ensure authenticity override protection.
+ *
+ * @since 31.0.0
+ */
+class SignatureManager implements ISignatureManager {
+ public const DATE_HEADER = 'D, d M Y H:i:s T';
+ public const DATE_TTL = 300;
+ public const SIGNATORY_TTL = 86400 * 3;
+ public const BODY_MAXSIZE = 50000; // max size of the payload of the request
+ public const APPCONFIG_IDENTITY = 'security.signature.identity';
+
+ public function __construct(
+ private readonly IRequest $request,
+ private readonly SignatoryMapper $mapper,
+ private readonly IAppConfig $appConfig,
+ private readonly LoggerInterface $logger,
+ ) {
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @param ISignatoryManager $signatoryManager used to get details about remote instance
+ * @param string|null $body if NULL, body will be extracted from php://input
+ *
+ * @return IIncomingSignedRequest
+ * @throws IncomingRequestException if anything looks wrong with the incoming request
+ * @throws SignatureNotFoundException if incoming request is not signed
+ * @throws SignatureException if signature could not be confirmed
+ * @since 31.0.0
+ */
+ public function getIncomingSignedRequest(
+ ISignatoryManager $signatoryManager,
+ ?string $body = null,
+ ): IIncomingSignedRequest {
+ $body = $body ?? file_get_contents('php://input');
+ $options = $signatoryManager->getOptions();
+ if (strlen($body) > ($options['bodyMaxSize'] ?? self::BODY_MAXSIZE)) {
+ throw new IncomingRequestException('content of request is too big');
+ }
+
+ // generate IncomingSignedRequest based on body and request
+ $signedRequest = new IncomingSignedRequest($body, $this->request, $options);
+
+ try {
+ // confirm the validity of content and identity of the incoming request
+ $this->confirmIncomingRequestSignature($signedRequest, $signatoryManager, $options['ttlSignatory'] ?? self::SIGNATORY_TTL);
+ } catch (SignatureException $e) {
+ $this->logger->warning(
+ 'signature could not be verified', [
+ 'exception' => $e,
+ 'signedRequest' => $signedRequest,
+ 'signatoryManager' => get_class($signatoryManager)
+ ]
+ );
+ throw $e;
+ }
+
+ return $signedRequest;
+ }
+
+ /**
+ * confirm that the Signature is signed using the correct private key, using
+ * clear version of the Signature and the public key linked to the keyId
+ *
+ * @param IIncomingSignedRequest $signedRequest
+ * @param ISignatoryManager $signatoryManager
+ *
+ * @throws SignatoryNotFoundException
+ * @throws SignatureException
+ */
+ private function confirmIncomingRequestSignature(
+ IIncomingSignedRequest $signedRequest,
+ ISignatoryManager $signatoryManager,
+ int $ttlSignatory,
+ ): void {
+ $knownSignatory = null;
+ try {
+ $knownSignatory = $this->getStoredSignatory($signedRequest->getKeyId());
+ // refreshing ttl and compare with previous public key
+ if ($ttlSignatory > 0 && $knownSignatory->getLastUpdated() < (time() - $ttlSignatory)) {
+ $signatory = $this->getSaneRemoteSignatory($signatoryManager, $signedRequest);
+ $this->updateSignatoryMetadata($signatory);
+ $knownSignatory->setMetadata($signatory->getMetadata());
+ }
+
+ $signedRequest->setSignatory($knownSignatory);
+ $signedRequest->verify();
+ } catch (InvalidKeyOriginException $e) {
+ throw $e; // issue while requesting remote instance also means there is no 2nd try
+ } catch (SignatoryNotFoundException) {
+ // if no signatory in cache, we retrieve the one from the remote instance (using
+ // $signatoryManager), check its validity with current signature and store it
+ $signatory = $this->getSaneRemoteSignatory($signatoryManager, $signedRequest);
+ $signedRequest->setSignatory($signatory);
+ $signedRequest->verify();
+ $this->storeSignatory($signatory);
+ } catch (SignatureException) {
+ // if public key (from cache) is not valid, we try to refresh it (based on SignatoryType)
+ try {
+ $signatory = $this->getSaneRemoteSignatory($signatoryManager, $signedRequest);
+ } catch (SignatoryNotFoundException $e) {
+ $this->manageDeprecatedSignatory($knownSignatory);
+ throw $e;
+ }
+
+ $signedRequest->setSignatory($signatory);
+ try {
+ $signedRequest->verify();
+ } catch (InvalidSignatureException $e) {
+ $this->logger->debug('signature issue', ['signed' => $signedRequest, 'exception' => $e]);
+ throw $e;
+ }
+
+ $this->storeSignatory($signatory);
+ }
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @param ISignatoryManager $signatoryManager
+ * @param string $content body to be signed
+ * @param string $method needed in the signature
+ * @param string $uri needed in the signature
+ *
+ * @return IOutgoingSignedRequest
+ * @throws IdentityNotFoundException
+ * @throws SignatoryException
+ * @throws SignatoryNotFoundException
+ * @since 31.0.0
+ */
+ public function getOutgoingSignedRequest(
+ ISignatoryManager $signatoryManager,
+ string $content,
+ string $method,
+ string $uri,
+ ): IOutgoingSignedRequest {
+ $signedRequest = new OutgoingSignedRequest(
+ $content,
+ $signatoryManager,
+ $this->extractIdentityFromUri($uri),
+ $method,
+ parse_url($uri, PHP_URL_PATH) ?? '/'
+ );
+
+ $signedRequest->sign();
+
+ return $signedRequest;
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @param ISignatoryManager $signatoryManager
+ * @param array $payload original payload, will be used to sign and completed with new headers with
+ * signature elements
+ * @param string $method needed in the signature
+ * @param string $uri needed in the signature
+ *
+ * @return array new payload to be sent, including original payload and signature elements in headers
+ * @since 31.0.0
+ */
+ public function signOutgoingRequestIClientPayload(
+ ISignatoryManager $signatoryManager,
+ array $payload,
+ string $method,
+ string $uri,
+ ): array {
+ $signedRequest = $this->getOutgoingSignedRequest($signatoryManager, $payload['body'], $method, $uri);
+ $payload['headers'] = array_merge($payload['headers'], $signedRequest->getHeaders());
+
+ return $payload;
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @param string $host remote host
+ * @param string $account linked account, should be used when multiple signature can exist for the same
+ * host
+ *
+ * @return Signatory
+ * @throws SignatoryNotFoundException if entry does not exist in local database
+ * @since 31.0.0
+ */
+ public function getSignatory(string $host, string $account = ''): Signatory {
+ return $this->mapper->getByHost($host, $account);
+ }
+
+
+ /**
+ * @inheritDoc
+ *
+ * keyId is set using app config 'core/security.signature.identity'
+ *
+ * @param string $path
+ *
+ * @return string
+ * @throws IdentityNotFoundException is identity is not set in app config
+ * @since 31.0.0
+ */
+ public function generateKeyIdFromConfig(string $path): string {
+ if (!$this->appConfig->hasKey('core', self::APPCONFIG_IDENTITY, true)) {
+ throw new IdentityNotFoundException(self::APPCONFIG_IDENTITY . ' not set');
+ }
+
+ $identity = trim($this->appConfig->getValueString('core', self::APPCONFIG_IDENTITY, lazy: true), '/');
+
+ return 'https://' . $identity . '/' . ltrim($path, '/');
+ }
+
+ /**
+ * @inheritDoc
+ *
+ * @param string $uri
+ *
+ * @return string
+ * @throws IdentityNotFoundException if identity cannot be extracted
+ * @since 31.0.0
+ */
+ public function extractIdentityFromUri(string $uri): string {
+ return Signatory::extractIdentityFromUri($uri);
+ }
+
+ /**
+ * get remote signatory using the ISignatoryManager
+ * and confirm the validity of the keyId
+ *
+ * @param ISignatoryManager $signatoryManager
+ * @param IIncomingSignedRequest $signedRequest
+ *
+ * @return Signatory
+ * @throws InvalidKeyOriginException
+ * @throws SignatoryNotFoundException
+ * @see ISignatoryManager::getRemoteSignatory
+ */
+ private function getSaneRemoteSignatory(
+ ISignatoryManager $signatoryManager,
+ IIncomingSignedRequest $signedRequest,
+ ): Signatory {
+ $signatory = $signatoryManager->getRemoteSignatory($signedRequest->getOrigin());
+ if ($signatory === null) {
+ throw new SignatoryNotFoundException('empty result from getRemoteSignatory');
+ }
+ try {
+ if ($signatory->getKeyId() !== $signedRequest->getKeyId()) {
+ throw new InvalidKeyOriginException('keyId from signatory not related to the one from request');
+ }
+ } catch (SignatureElementNotFoundException) {
+ throw new InvalidKeyOriginException('missing keyId');
+ }
+ $signatory->setProviderId($signatoryManager->getProviderId());
+
+ return $signatory;
+ }
+
+ /**
+ * @param string $keyId
+ *
+ * @return Signatory
+ * @throws SignatoryNotFoundException
+ */
+ private function getStoredSignatory(string $keyId): Signatory {
+ return $this->mapper->getByKeyId($keyId);
+ }
+
+ /**
+ * @param Signatory $signatory
+ */
+ private function storeSignatory(Signatory $signatory): void {
+ try {
+ $this->insertSignatory($signatory);
+ } catch (DBException $e) {
+ if ($e->getReason() !== DBException::REASON_UNIQUE_CONSTRAINT_VIOLATION) {
+ $this->logger->warning('exception while storing signature', ['exception' => $e]);
+ throw $e;
+ }
+
+ try {
+ $this->updateKnownSignatory($signatory);
+ } catch (SignatoryNotFoundException $e) {
+ $this->logger->warning('strange behavior, signatory not found ?', ['exception' => $e]);
+ }
+ }
+ }
+
+ /**
+ * @param Signatory $signatory
+ */
+ private function insertSignatory(Signatory $signatory): void {
+ $time = time();
+ $signatory->setCreation($time);
+ $signatory->setLastUpdated($time);
+ $this->mapper->insert($signatory);
+ }
+
+ /**
+ * @param Signatory $signatory
+ *
+ * @throws SignatoryNotFoundException
+ * @throws SignatoryConflictException
+ */
+ private function updateKnownSignatory(Signatory $signatory): void {
+ $knownSignatory = $this->getStoredSignatory($signatory->getKeyId());
+ switch ($signatory->getType()) {
+ case SignatoryType::FORGIVABLE:
+ $this->deleteSignatory($knownSignatory->getKeyId());
+ $this->insertSignatory($signatory);
+ return;
+
+ case SignatoryType::REFRESHABLE:
+ $this->updateSignatoryPublicKey($signatory);
+ $this->updateSignatoryMetadata($signatory);
+ break;
+
+ case SignatoryType::TRUSTED:
+ // TODO: send notice to admin
+ throw new SignatoryConflictException();
+
+ case SignatoryType::STATIC:
+ // TODO: send warning to admin
+ throw new SignatoryConflictException();
+ }
+ }
+
+ /**
+ * This is called when a remote signatory does not exist anymore
+ *
+ * @param Signatory|null $knownSignatory NULL is not known
+ *
+ * @throws SignatoryConflictException
+ * @throws SignatoryNotFoundException
+ */
+ private function manageDeprecatedSignatory(?Signatory $knownSignatory): void {
+ switch ($knownSignatory?->getType()) {
+ case null: // unknown in local database
+ case SignatoryType::FORGIVABLE: // who cares ?
+ throw new SignatoryNotFoundException(); // meaning we just return the correct exception
+
+ case SignatoryType::REFRESHABLE:
+ // TODO: send notice to admin
+ throw new SignatoryConflictException(); // while it can be refreshed, it must exist
+
+ case SignatoryType::TRUSTED:
+ case SignatoryType::STATIC:
+ // TODO: send warning to admin
+ throw new SignatoryConflictException(); // no way.
+ }
+ }
+
+
+ private function updateSignatoryPublicKey(Signatory $signatory): void {
+ $this->mapper->updatePublicKey($signatory);
+ }
+
+ private function updateSignatoryMetadata(Signatory $signatory): void {
+ $this->mapper->updateMetadata($signatory);
+ }
+
+ private function deleteSignatory(string $keyId): void {
+ $this->mapper->deleteByKeyId($keyId);
+ }
+}
diff --git a/lib/private/Server.php b/lib/private/Server.php
index d57ddf61c03..a20c37732a7 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -8,6 +8,7 @@ namespace OC;
use bantu\IniGetWrapper\IniGetWrapper;
use NCU\Config\IUserConfig;
+use NCU\Security\Signature\ISignatureManager;
use OC\Accounts\AccountManager;
use OC\App\AppManager;
use OC\App\AppStore\Bundles\BundleFetcher;
@@ -103,6 +104,7 @@ use OC\Security\Hasher;
use OC\Security\Ip\RemoteAddress;
use OC\Security\RateLimiting\Limiter;
use OC\Security\SecureRandom;
+use OC\Security\Signature\SignatureManager;
use OC\Security\TrustedDomainHelper;
use OC\Security\VerificationToken\VerificationToken;
use OC\Session\CryptoWrapper;
@@ -1180,18 +1182,7 @@ class Server extends ServerContainer implements IServerContainer {
});
$this->registerAlias(\OCP\GlobalScale\IConfig::class, \OC\GlobalScale\Config::class);
-
- $this->registerService(ICloudFederationProviderManager::class, function (ContainerInterface $c) {
- return new CloudFederationProviderManager(
- $c->get(\OCP\IConfig::class),
- $c->get(IAppManager::class),
- $c->get(IClientService::class),
- $c->get(ICloudIdManager::class),
- $c->get(IOCMDiscoveryService::class),
- $c->get(LoggerInterface::class)
- );
- });
-
+ $this->registerAlias(ICloudFederationProviderManager::class, CloudFederationProviderManager::class);
$this->registerService(ICloudFederationFactory::class, function (Server $c) {
return new CloudFederationFactory();
});
@@ -1297,6 +1288,8 @@ class Server extends ServerContainer implements IServerContainer {
$this->registerAlias(IRichTextFormatter::class, \OC\RichObjectStrings\RichTextFormatter::class);
+ $this->registerAlias(ISignatureManager::class, SignatureManager::class);
+
$this->connectDispatcher();
}
diff --git a/lib/public/OCM/IOCMProvider.php b/lib/public/OCM/IOCMProvider.php
index ba2ab6ce759..a588d869655 100644
--- a/lib/public/OCM/IOCMProvider.php
+++ b/lib/public/OCM/IOCMProvider.php
@@ -6,7 +6,6 @@ declare(strict_types=1);
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-
namespace OCP\OCM;
use JsonSerializable;
@@ -120,6 +119,22 @@ interface IOCMProvider extends JsonSerializable {
*/
public function extractProtocolEntry(string $resourceName, string $protocol): string;
+ // /**
+ // * store signatory (public/private key pair) to sign outgoing/incoming request
+ // *
+ // * @param Signatory $signatory
+ // * @experimental 31.0.0
+ // */
+ // public function setSignatory(Signatory $signatory): void;
+
+ // /**
+ // * signatory (public/private key pair) used to sign outgoing/incoming request
+ // *
+ // * @return Signatory|null returns null if no Signatory available
+ // * @experimental 31.0.0
+ // */
+ // public function getSignatory(): ?Signatory;
+
/**
* import data from an array
*
@@ -134,13 +149,18 @@ interface IOCMProvider extends JsonSerializable {
/**
* @return array{
* enabled: bool,
- * apiVersion: string,
+ * apiVersion: '1.0-proposal1',
* endPoint: string,
+ * publicKey: array{
+ * keyId: string,
+ * publicKeyPem: string
+ * },
* resourceTypes: list<array{
* name: string,
* shareTypes: list<string>,
* protocols: array<string, string>
* }>,
+ * version: string
* }
* @since 28.0.0
*/
diff --git a/lib/unstable/Config/Exceptions/IncorrectTypeException.php b/lib/unstable/Config/Exceptions/IncorrectTypeException.php
index a5e4954cdb2..274c95d732a 100644
--- a/lib/unstable/Config/Exceptions/IncorrectTypeException.php
+++ b/lib/unstable/Config/Exceptions/IncorrectTypeException.php
@@ -12,7 +12,6 @@ use Exception;
/**
* @experimental 31.0.0
- * @since 31.0.0
*/
class IncorrectTypeException extends Exception {
}
diff --git a/lib/unstable/Config/Exceptions/TypeConflictException.php b/lib/unstable/Config/Exceptions/TypeConflictException.php
index c192b2c4f9d..c6825b7efcf 100644
--- a/lib/unstable/Config/Exceptions/TypeConflictException.php
+++ b/lib/unstable/Config/Exceptions/TypeConflictException.php
@@ -12,7 +12,6 @@ use Exception;
/**
* @experimental 31.0.0
- * @since 31.0.0
*/
class TypeConflictException extends Exception {
}
diff --git a/lib/unstable/Config/Exceptions/UnknownKeyException.php b/lib/unstable/Config/Exceptions/UnknownKeyException.php
index 5f83800cafc..a3ca88a7b72 100644
--- a/lib/unstable/Config/Exceptions/UnknownKeyException.php
+++ b/lib/unstable/Config/Exceptions/UnknownKeyException.php
@@ -12,7 +12,6 @@ use Exception;
/**
* @experimental 31.0.0
- * @since 31.0.0
*/
class UnknownKeyException extends Exception {
}
diff --git a/lib/unstable/Config/IUserConfig.php b/lib/unstable/Config/IUserConfig.php
index 56ba797b9dd..b9cbb65ad03 100644
--- a/lib/unstable/Config/IUserConfig.php
+++ b/lib/unstable/Config/IUserConfig.php
@@ -28,17 +28,14 @@ use NCU\Config\Exceptions\UnknownKeyException;
* during specific requests or actions to avoid loading the lazy values all the time.
*
* @experimental 31.0.0
- * @since 31.0.0
*/
interface IUserConfig {
/**
* @experimental 31.0.0
- * @since 31.0.0
*/
public const FLAG_SENSITIVE = 1; // value is sensitive
/**
* @experimental 31.0.0
- * @since 31.0.0
*/
public const FLAG_INDEXED = 2; // value should be indexed
@@ -53,7 +50,6 @@ interface IUserConfig {
* @return list<string> list of userIds
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function getUserIds(string $appId = ''): array;
@@ -68,7 +64,6 @@ interface IUserConfig {
* @return list<string> list of app ids
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function getApps(string $userId): array;
@@ -84,7 +79,6 @@ interface IUserConfig {
* @return list<string> list of stored config keys
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function getKeys(string $userId, string $app): array;
@@ -99,7 +93,6 @@ interface IUserConfig {
* @return bool TRUE if key exists
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function hasKey(string $userId, string $app, string $key, ?bool $lazy = false): bool;
@@ -115,7 +108,6 @@ interface IUserConfig {
* @throws UnknownKeyException if config key is not known
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function isSensitive(string $userId, string $app, string $key, ?bool $lazy = false): bool;
@@ -136,7 +128,6 @@ interface IUserConfig {
* @throws UnknownKeyException if config key is not known
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function isIndexed(string $userId, string $app, string $key, ?bool $lazy = false): bool;
@@ -154,7 +145,6 @@ interface IUserConfig {
* @see IUserConfig for details about lazy loading
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function isLazy(string $userId, string $app, string $key): bool;
@@ -172,7 +162,6 @@ interface IUserConfig {
* @return array<string, string|int|float|bool|array> [key => value]
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function getValues(string $userId, string $app, string $prefix = '', bool $filtered = false): array;
@@ -188,7 +177,6 @@ interface IUserConfig {
* @return array<string, string|int|float|bool|array> [key => value]
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function getAllValues(string $userId, bool $filtered = false): array;
@@ -204,7 +192,6 @@ interface IUserConfig {
* @return array<string, string|int|float|bool|array> [appId => value]
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function getValuesByApps(string $userId, string $key, bool $lazy = false, ?ValueType $typedAs = null): array;
@@ -222,7 +209,6 @@ interface IUserConfig {
* @return array<string, string|int|float|bool|array> [userId => value]
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function getValuesByUsers(string $app, string $key, ?ValueType $typedAs = null, ?array $userIds = null): array;
@@ -240,7 +226,6 @@ interface IUserConfig {
* @return Generator<string>
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function searchUsersByValueString(string $app, string $key, string $value, bool $caseInsensitive = false): Generator;
@@ -257,7 +242,6 @@ interface IUserConfig {
* @return Generator<string>
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function searchUsersByValueInt(string $app, string $key, int $value): Generator;
@@ -274,7 +258,6 @@ interface IUserConfig {
* @return Generator<string>
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function searchUsersByValues(string $app, string $key, array $values): Generator;
@@ -291,7 +274,6 @@ interface IUserConfig {
* @return Generator<string>
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function searchUsersByValueBool(string $app, string $key, bool $value): Generator;
@@ -309,7 +291,6 @@ interface IUserConfig {
* @return string stored config value or $default if not set in database
*
* @experimental 31.0.0
- * @since 31.0.0
*
* @see IUserConfig for explanation about lazy loading
* @see getValueInt()
@@ -333,7 +314,6 @@ interface IUserConfig {
* @return int stored config value or $default if not set in database
*
* @experimental 31.0.0
- * @since 31.0.0
*
* @see IUserConfig for explanation about lazy loading
* @see getValueString()
@@ -357,7 +337,6 @@ interface IUserConfig {
* @return float stored config value or $default if not set in database
*
* @experimental 31.0.0
- * @since 31.0.0
*
* @see IUserConfig for explanation about lazy loading
* @see getValueString()
@@ -381,7 +360,6 @@ interface IUserConfig {
* @return bool stored config value or $default if not set in database
*
* @experimental 31.0.0
- * @since 31.0.0
*
* @see IUserPrefences for explanation about lazy loading
* @see getValueString()
@@ -405,7 +383,6 @@ interface IUserConfig {
* @return array stored config value or $default if not set in database
*
* @experimental 31.0.0
- * @since 31.0.0
*
* @see IUserConfig for explanation about lazy loading
* @see getValueString()
@@ -431,7 +408,6 @@ interface IUserConfig {
* @throws IncorrectTypeException if config value type is not known
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function getValueType(string $userId, string $app, string $key, ?bool $lazy = null): ValueType;
@@ -451,7 +427,6 @@ interface IUserConfig {
* @throws IncorrectTypeException if config value type is not known
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function getValueFlags(string $userId, string $app, string $key, bool $lazy = false): int;
@@ -473,7 +448,6 @@ interface IUserConfig {
* @return bool TRUE if value was different, therefor updated in database
*
* @experimental 31.0.0
- * @since 31.0.0
*
* @see IUserConfig for explanation about lazy loading
* @see setValueInt()
@@ -506,7 +480,6 @@ interface IUserConfig {
* @return bool TRUE if value was different, therefor updated in database
*
* @experimental 31.0.0
- * @since 31.0.0
*
* @see IUserConfig for explanation about lazy loading
* @see setValueString()
@@ -534,7 +507,6 @@ interface IUserConfig {
* @return bool TRUE if value was different, therefor updated in database
*
* @experimental 31.0.0
- * @since 31.0.0
*
* @see IUserConfig for explanation about lazy loading
* @see setValueString()
@@ -561,7 +533,6 @@ interface IUserConfig {
* @return bool TRUE if value was different, therefor updated in database
*
* @experimental 31.0.0
- * @since 31.0.0
*
* @see IUserConfig for explanation about lazy loading
* @see setValueString()
@@ -589,7 +560,6 @@ interface IUserConfig {
* @return bool TRUE if value was different, therefor updated in database
*
* @experimental 31.0.0
- * @since 31.0.0
*
* @see IUserConfig for explanation about lazy loading
* @see setValueString()
@@ -612,7 +582,6 @@ interface IUserConfig {
* @return bool TRUE if database update were necessary
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function updateSensitive(string $userId, string $app, string $key, bool $sensitive): bool;
@@ -626,7 +595,6 @@ interface IUserConfig {
* @param bool $sensitive TRUE to set as sensitive, FALSE to unset
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function updateGlobalSensitive(string $app, string $key, bool $sensitive): void;
@@ -644,7 +612,6 @@ interface IUserConfig {
* @return bool TRUE if database update were necessary
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function updateIndexed(string $userId, string $app, string $key, bool $indexed): bool;
@@ -658,7 +625,6 @@ interface IUserConfig {
* @param bool $indexed TRUE to set as indexed, FALSE to unset
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function updateGlobalIndexed(string $app, string $key, bool $indexed): void;
@@ -673,7 +639,6 @@ interface IUserConfig {
* @return bool TRUE if database update was necessary
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function updateLazy(string $userId, string $app, string $key, bool $lazy): bool;
@@ -687,7 +652,6 @@ interface IUserConfig {
* @param bool $lazy TRUE to set as lazy loaded, FALSE to unset
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function updateGlobalLazy(string $app, string $key, bool $lazy): void;
@@ -714,7 +678,6 @@ interface IUserConfig {
* @throws UnknownKeyException if config key is not known in database
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function getDetails(string $userId, string $app, string $key): array;
@@ -726,7 +689,6 @@ interface IUserConfig {
* @param string $key config key
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function deleteUserConfig(string $userId, string $app, string $key): void;
@@ -737,7 +699,6 @@ interface IUserConfig {
* @param string $key config key
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function deleteKey(string $app, string $key): void;
@@ -747,7 +708,6 @@ interface IUserConfig {
* @param string $app id of the app
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function deleteApp(string $app): void;
@@ -757,7 +717,6 @@ interface IUserConfig {
* @param string $userId id of the user
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function deleteAllUserConfig(string $userId): void;
@@ -770,7 +729,6 @@ interface IUserConfig {
* @param bool $reload set to TRUE to refill cache instantly after clearing it
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function clearCache(string $userId, bool $reload = false): void;
@@ -779,7 +737,6 @@ interface IUserConfig {
* The cache will be rebuilt only the next time a user config is requested.
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function clearCacheAll(): void;
}
diff --git a/lib/unstable/Config/ValueType.php b/lib/unstable/Config/ValueType.php
index eddfda4c14e..4f6c4181a9c 100644
--- a/lib/unstable/Config/ValueType.php
+++ b/lib/unstable/Config/ValueType.php
@@ -15,37 +15,30 @@ use UnhandledMatchError;
* Listing of available value type for typed config value
*
* @experimental 31.0.0
- * @since 31.0.0
*/
enum ValueType: int {
/**
* @experimental 31.0.0
- * @since 31.0.0
*/
case MIXED = 0;
/**
* @experimental 31.0.0
- * @since 31.0.0
*/
case STRING = 1;
/**
* @experimental 31.0.0
- * @since 31.0.0
*/
case INT = 2;
/**
* @experimental 31.0.0
- * @since 31.0.0
*/
case FLOAT = 3;
/**
* @experimental 31.0.0
- * @since 31.0.0
*/
case BOOL = 4;
/**
* @experimental 31.0.0
- * @since 31.0.0
*/
case ARRAY = 5;
@@ -58,7 +51,6 @@ enum ValueType: int {
* @throws IncorrectTypeException
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public static function fromStringDefinition(string $definition): self {
try {
@@ -82,7 +74,6 @@ enum ValueType: int {
* @throws IncorrectTypeException
*
* @experimental 31.0.0
- * @since 31.0.0
*/
public function getDefinition(): string {
try {
diff --git a/lib/unstable/Security/Signature/Enum/DigestAlgorithm.php b/lib/unstable/Security/Signature/Enum/DigestAlgorithm.php
new file mode 100644
index 00000000000..465f33fd2c3
--- /dev/null
+++ b/lib/unstable/Security/Signature/Enum/DigestAlgorithm.php
@@ -0,0 +1,34 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace NCU\Security\Signature\Enum;
+
+/**
+ * list of available algorithm when generating digest from body
+ *
+ * @experimental 31.0.0
+ */
+enum DigestAlgorithm: string {
+ /** @experimental 31.0.0 */
+ case SHA256 = 'SHA-256';
+ /** @experimental 31.0.0 */
+ case SHA512 = 'SHA-512';
+
+ /**
+ * returns hashing algorithm to be used when generating digest
+ *
+ * @return string
+ * @experimental 31.0.0
+ */
+ public function getHashingAlgorithm(): string {
+ return match($this) {
+ self::SHA256 => 'sha256',
+ self::SHA512 => 'sha512',
+ };
+ }
+}
diff --git a/lib/unstable/Security/Signature/Enum/SignatoryStatus.php b/lib/unstable/Security/Signature/Enum/SignatoryStatus.php
new file mode 100644
index 00000000000..1e460aed449
--- /dev/null
+++ b/lib/unstable/Security/Signature/Enum/SignatoryStatus.php
@@ -0,0 +1,24 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace NCU\Security\Signature\Enum;
+
+/**
+ * current status of signatory. is it trustable or not ?
+ *
+ * - SYNCED = the remote instance is trustable.
+ * - BROKEN = the remote instance does not use the same key pairs than previously
+ *
+ * @experimental 31.0.0
+ */
+enum SignatoryStatus: int {
+ /** @experimental 31.0.0 */
+ case SYNCED = 1;
+ /** @experimental 31.0.0 */
+ case BROKEN = 9;
+}
diff --git a/lib/unstable/Security/Signature/Enum/SignatoryType.php b/lib/unstable/Security/Signature/Enum/SignatoryType.php
new file mode 100644
index 00000000000..de3e5568479
--- /dev/null
+++ b/lib/unstable/Security/Signature/Enum/SignatoryType.php
@@ -0,0 +1,30 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace NCU\Security\Signature\Enum;
+
+/**
+ * type of link between local and remote instance
+ *
+ * - FORGIVABLE = the keypair can be deleted and refreshed anytime; silently
+ * - REFRESHABLE = the keypair can be refreshed but a notice will be generated
+ * - TRUSTED = any changes of keypair will require human interaction, warning will be issued
+ * - STATIC = error will be issued on conflict, assume keypair cannot be reset.
+ *
+ * @experimental 31.0.0
+ */
+enum SignatoryType: int {
+ /** @experimental 31.0.0 */
+ case FORGIVABLE = 1; // no notice on refresh
+ /** @experimental 31.0.0 */
+ case REFRESHABLE = 4; // notice on refresh
+ /** @experimental 31.0.0 */
+ case TRUSTED = 8; // warning on refresh
+ /** @experimental 31.0.0 */
+ case STATIC = 9; // error on refresh
+}
diff --git a/lib/unstable/Security/Signature/Enum/SignatureAlgorithm.php b/lib/unstable/Security/Signature/Enum/SignatureAlgorithm.php
new file mode 100644
index 00000000000..5afa8a3f810
--- /dev/null
+++ b/lib/unstable/Security/Signature/Enum/SignatureAlgorithm.php
@@ -0,0 +1,21 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace NCU\Security\Signature\Enum;
+
+/**
+ * list of available algorithm when signing payload
+ *
+ * @experimental 31.0.0
+ */
+enum SignatureAlgorithm: string {
+ /** @experimental 31.0.0 */
+ case RSA_SHA256 = 'rsa-sha256';
+ /** @experimental 31.0.0 */
+ case RSA_SHA512 = 'rsa-sha512';
+}
diff --git a/lib/unstable/Security/Signature/Exceptions/IdentityNotFoundException.php b/lib/unstable/Security/Signature/Exceptions/IdentityNotFoundException.php
new file mode 100644
index 00000000000..c8c700033e6
--- /dev/null
+++ b/lib/unstable/Security/Signature/Exceptions/IdentityNotFoundException.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace NCU\Security\Signature\Exceptions;
+
+/**
+ * @experimental 31.0.0
+ */
+class IdentityNotFoundException extends SignatureException {
+}
diff --git a/lib/unstable/Security/Signature/Exceptions/IncomingRequestException.php b/lib/unstable/Security/Signature/Exceptions/IncomingRequestException.php
new file mode 100644
index 00000000000..c334090fdc3
--- /dev/null
+++ b/lib/unstable/Security/Signature/Exceptions/IncomingRequestException.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace NCU\Security\Signature\Exceptions;
+
+/**
+ * @experimental 31.0.0
+ */
+class IncomingRequestException extends SignatureException {
+}
diff --git a/lib/unstable/Security/Signature/Exceptions/InvalidKeyOriginException.php b/lib/unstable/Security/Signature/Exceptions/InvalidKeyOriginException.php
new file mode 100644
index 00000000000..3d8fa78077f
--- /dev/null
+++ b/lib/unstable/Security/Signature/Exceptions/InvalidKeyOriginException.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace NCU\Security\Signature\Exceptions;
+
+/**
+ * @experimental 31.0.0
+ */
+class InvalidKeyOriginException extends SignatureException {
+}
diff --git a/lib/unstable/Security/Signature/Exceptions/InvalidSignatureException.php b/lib/unstable/Security/Signature/Exceptions/InvalidSignatureException.php
new file mode 100644
index 00000000000..351637ef201
--- /dev/null
+++ b/lib/unstable/Security/Signature/Exceptions/InvalidSignatureException.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace NCU\Security\Signature\Exceptions;
+
+/**
+ * @experimental 31.0.0
+ */
+class InvalidSignatureException extends SignatureException {
+}
diff --git a/lib/unstable/Security/Signature/Exceptions/SignatoryConflictException.php b/lib/unstable/Security/Signature/Exceptions/SignatoryConflictException.php
new file mode 100644
index 00000000000..e078071e970
--- /dev/null
+++ b/lib/unstable/Security/Signature/Exceptions/SignatoryConflictException.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace NCU\Security\Signature\Exceptions;
+
+/**
+ * @experimental 31.0.0
+ */
+class SignatoryConflictException extends SignatoryException {
+}
diff --git a/lib/unstable/Security/Signature/Exceptions/SignatoryException.php b/lib/unstable/Security/Signature/Exceptions/SignatoryException.php
new file mode 100644
index 00000000000..92409ab3d98
--- /dev/null
+++ b/lib/unstable/Security/Signature/Exceptions/SignatoryException.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace NCU\Security\Signature\Exceptions;
+
+/**
+ * @experimental 31.0.0
+ */
+class SignatoryException extends SignatureException {
+}
diff --git a/lib/unstable/Security/Signature/Exceptions/SignatoryNotFoundException.php b/lib/unstable/Security/Signature/Exceptions/SignatoryNotFoundException.php
new file mode 100644
index 00000000000..0234b3e7d5c
--- /dev/null
+++ b/lib/unstable/Security/Signature/Exceptions/SignatoryNotFoundException.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace NCU\Security\Signature\Exceptions;
+
+/**
+ * @experimental 31.0.0
+ */
+class SignatoryNotFoundException extends SignatoryException {
+}
diff --git a/lib/unstable/Security/Signature/Exceptions/SignatureElementNotFoundException.php b/lib/unstable/Security/Signature/Exceptions/SignatureElementNotFoundException.php
new file mode 100644
index 00000000000..ca0fa1c2194
--- /dev/null
+++ b/lib/unstable/Security/Signature/Exceptions/SignatureElementNotFoundException.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace NCU\Security\Signature\Exceptions;
+
+/**
+ * @experimental 31.0.0
+ */
+class SignatureElementNotFoundException extends SignatureException {
+}
diff --git a/lib/unstable/Security/Signature/Exceptions/SignatureException.php b/lib/unstable/Security/Signature/Exceptions/SignatureException.php
new file mode 100644
index 00000000000..12353a8e61b
--- /dev/null
+++ b/lib/unstable/Security/Signature/Exceptions/SignatureException.php
@@ -0,0 +1,17 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace NCU\Security\Signature\Exceptions;
+
+use Exception;
+
+/**
+ * @experimental 31.0.0
+ */
+class SignatureException extends Exception {
+}
diff --git a/lib/unstable/Security/Signature/Exceptions/SignatureNotFoundException.php b/lib/unstable/Security/Signature/Exceptions/SignatureNotFoundException.php
new file mode 100644
index 00000000000..f015b07673b
--- /dev/null
+++ b/lib/unstable/Security/Signature/Exceptions/SignatureNotFoundException.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace NCU\Security\Signature\Exceptions;
+
+/**
+ * @experimental 31.0.0
+ */
+class SignatureNotFoundException extends SignatureException {
+}
diff --git a/lib/unstable/Security/Signature/IIncomingSignedRequest.php b/lib/unstable/Security/Signature/IIncomingSignedRequest.php
new file mode 100644
index 00000000000..5c06c41c394
--- /dev/null
+++ b/lib/unstable/Security/Signature/IIncomingSignedRequest.php
@@ -0,0 +1,66 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace NCU\Security\Signature;
+
+use NCU\Security\Signature\Exceptions\SignatoryNotFoundException;
+use NCU\Security\Signature\Exceptions\SignatureElementNotFoundException;
+use NCU\Security\Signature\Exceptions\SignatureException;
+use OCP\IRequest;
+
+/**
+ * model wrapping an actual incoming request, adding details about the signature and the
+ * authenticity of the origin of the request.
+ *
+ * This interface must not be implemented in your application but
+ * instead obtained from {@see ISignatureManager::getIncomingSignedRequest}.
+ *
+ * ```php
+ * $signedRequest = $this->signatureManager->getIncomingSignedRequest($mySignatoryManager);
+ * ```
+ *
+ * @see ISignatureManager for details on signature
+ * @experimental 31.0.0
+ */
+interface IIncomingSignedRequest extends ISignedRequest {
+ /**
+ * returns the base IRequest
+ *
+ * @return IRequest
+ * @experimental 31.0.0
+ */
+ public function getRequest(): IRequest;
+
+ /**
+ * get the hostname at the source of the base request.
+ * based on the keyId defined in the signature header.
+ *
+ * @return string
+ * @experimental 31.0.0
+ */
+ public function getOrigin(): string;
+
+ /**
+ * returns the keyId extracted from the signature headers.
+ * keyId is a mandatory entry in the headers of a signed request.
+ *
+ * @return string
+ * @throws SignatureElementNotFoundException
+ * @experimental 31.0.0
+ */
+ public function getKeyId(): string;
+
+ /**
+ * confirm the current signed request's identity is correct
+ *
+ * @throws SignatureException
+ * @throws SignatoryNotFoundException
+ * @experimental 31.0.0
+ */
+ public function verify(): void;
+}
diff --git a/lib/unstable/Security/Signature/IOutgoingSignedRequest.php b/lib/unstable/Security/Signature/IOutgoingSignedRequest.php
new file mode 100644
index 00000000000..e9af12ea4b4
--- /dev/null
+++ b/lib/unstable/Security/Signature/IOutgoingSignedRequest.php
@@ -0,0 +1,112 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace NCU\Security\Signature;
+
+use NCU\Security\Signature\Enum\SignatureAlgorithm;
+use NCU\Security\Signature\Exceptions\SignatoryException;
+use NCU\Security\Signature\Exceptions\SignatoryNotFoundException;
+
+/**
+ * extends ISignedRequest to add info requested at the generation of the signature
+ *
+ * This interface must not be implemented in your application but
+ * instead obtained from {@see ISignatureManager::getIncomingSignedRequest}.
+ *
+ * ```php
+ * $signedRequest = $this->signatureManager->getIncomingSignedRequest($mySignatoryManager);
+ * ```
+ *
+ * @see ISignatureManager for details on signature
+ * @experimental 31.0.0
+ */
+interface IOutgoingSignedRequest extends ISignedRequest {
+ /**
+ * set the host of the recipient of the request.
+ *
+ * @param string $host
+ * @return self
+ * @experimental 31.0.0
+ */
+ public function setHost(string $host): self;
+
+ /**
+ * get the host of the recipient of the request.
+ * - on incoming request, this is the local hostname of current instance.
+ * - on outgoing request, this is the remote instance.
+ *
+ * @return string
+ * @experimental 31.0.0
+ */
+ public function getHost(): string;
+
+ /**
+ * add a key/value pair to the headers of the request
+ *
+ * @param string $key
+ * @param string|int|float $value
+ *
+ * @return self
+ * @experimental 31.0.0
+ */
+ public function addHeader(string $key, string|int|float $value): self;
+
+ /**
+ * returns list of headers value that will be added to the base request
+ *
+ * @return array
+ * @experimental 31.0.0
+ */
+ public function getHeaders(): array;
+
+ /**
+ * set the ordered list of used headers in the Signature
+ *
+ * @param list<string> $list
+ *
+ * @return self
+ * @experimental 31.0.0
+ */
+ public function setHeaderList(array $list): self;
+
+ /**
+ * returns ordered list of used headers in the Signature
+ *
+ * @return list<string>
+ * @experimental 31.0.0
+ */
+ public function getHeaderList(): array;
+
+ /**
+ * set algorithm to be used to sign the signature
+ *
+ * @param SignatureAlgorithm $algorithm
+ *
+ * @return self
+ * @experimental 31.0.0
+ */
+ public function setAlgorithm(SignatureAlgorithm $algorithm): self;
+
+ /**
+ * returns the algorithm set to sign the signature
+ *
+ * @return SignatureAlgorithm
+ * @experimental 31.0.0
+ */
+ public function getAlgorithm(): SignatureAlgorithm;
+
+ /**
+ * sign outgoing request providing a certificate that it emanate from this instance
+ *
+ * @return self
+ * @throws SignatoryException
+ * @throws SignatoryNotFoundException
+ * @experimental 31.0.0
+ */
+ public function sign(): self;
+}
diff --git a/lib/unstable/Security/Signature/ISignatoryManager.php b/lib/unstable/Security/Signature/ISignatoryManager.php
new file mode 100644
index 00000000000..c16dace1bde
--- /dev/null
+++ b/lib/unstable/Security/Signature/ISignatoryManager.php
@@ -0,0 +1,73 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace NCU\Security\Signature;
+
+use NCU\Security\Signature\Model\Signatory;
+
+/**
+ * ISignatoryManager contains a group of method that will help
+ * - signing outgoing request
+ * - confirm the authenticity of incoming signed request.
+ *
+ * This interface must be implemented to generate a `SignatoryManager` to
+ * be used with {@see ISignatureManager}
+ *
+ * @experimental 31.0.0
+ */
+interface ISignatoryManager {
+ /**
+ * id of the signatory manager.
+ * This is used to store, confirm uniqueness and avoid conflict of the remote key pairs.
+ *
+ * Must be unique.
+ *
+ * @return string
+ * @experimental 31.0.0
+ */
+ public function getProviderId(): string;
+
+ /**
+ * options that might affect the way the whole process is handled:
+ * [
+ * 'bodyMaxSize' => 10000,
+ * 'ttl' => 300,
+ * 'ttlSignatory' => 86400*3,
+ * 'extraSignatureHeaders' => [],
+ * 'algorithm' => 'sha256',
+ * 'dateHeader' => "D, d M Y H:i:s T",
+ * ]
+ *
+ * @return array
+ * @experimental 31.0.0
+ */
+ public function getOptions(): array;
+
+ /**
+ * generate and returns local signatory including private and public key pair.
+ *
+ * Used to sign outgoing request
+ *
+ * @return Signatory
+ * @experimental 31.0.0
+ */
+ public function getLocalSignatory(): Signatory;
+
+ /**
+ * retrieve details and generate signatory from remote instance.
+ * If signatory cannot be found, returns NULL.
+ *
+ * Used to confirm authenticity of incoming request.
+ *
+ * @param string $remote
+ *
+ * @return Signatory|null must be NULL if no signatory is found
+ * @experimental 31.0.0
+ */
+ public function getRemoteSignatory(string $remote): ?Signatory;
+}
diff --git a/lib/unstable/Security/Signature/ISignatureManager.php b/lib/unstable/Security/Signature/ISignatureManager.php
new file mode 100644
index 00000000000..655454f67e7
--- /dev/null
+++ b/lib/unstable/Security/Signature/ISignatureManager.php
@@ -0,0 +1,136 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace NCU\Security\Signature;
+
+use NCU\Security\Signature\Exceptions\IdentityNotFoundException;
+use NCU\Security\Signature\Exceptions\IncomingRequestException;
+use NCU\Security\Signature\Exceptions\SignatoryNotFoundException;
+use NCU\Security\Signature\Exceptions\SignatureException;
+use NCU\Security\Signature\Exceptions\SignatureNotFoundException;
+use NCU\Security\Signature\Model\Signatory;
+
+/**
+ * ISignatureManager is a service integrated to core that provide tools
+ * to set/get authenticity of/from outgoing/incoming request.
+ *
+ * Quick description of the signature, added to the headers
+ * {
+ * "(request-target)": "post /path",
+ * "content-length": 385,
+ * "date": "Mon, 08 Jul 2024 14:16:20 GMT",
+ * "digest": "SHA-256=U7gNVUQiixe5BRbp4Tg0xCZMTcSWXXUZI2\\/xtHM40S0=",
+ * "host": "hostname.of.the.recipient",
+ * "Signature": "keyId=\"https://author.hostname/key\",algorithm=\"sha256\",headers=\"content-length date digest host\",signature=\"DzN12OCS1rsA[...]o0VmxjQooRo6HHabg==\""
+ * }
+ *
+ * 'content-length' is the total length of the data/content
+ * 'date' is the datetime the request have been initiated
+ * 'digest' is a checksum of the data/content
+ * 'host' is the hostname of the recipient of the request (remote when signing outgoing request, local on incoming request)
+ * 'Signature' contains the signature generated using the private key, and metadata:
+ * - 'keyId' is a unique id, formatted as an url. hostname is used to retrieve the public key via custom discovery
+ * - 'algorithm' define the algorithm used to generate signature
+ * - 'headers' contains a list of element used during the generation of the signature
+ * - 'signature' is the encrypted string, using local private key, of an array containing elements
+ * listed in 'headers' and their value. Some elements (content-length date digest host) are mandatory
+ * to ensure authenticity override protection.
+ *
+ * This interface can be used to inject {@see SignatureManager} in your code:
+ *
+ * ```php
+ * public function __construct(
+ * private ISignatureManager $signatureManager,
+ * ) {}
+ * ```
+ *
+ * instead obtained from {@see ISignatureManager::getIncomingSignedRequest}.
+ *
+ * @experimental 31.0.0
+ */
+interface ISignatureManager {
+ /**
+ * Extracting data from headers and body from the incoming request.
+ * Compare headers and body to confirm authenticity of remote instance.
+ * Returns details about the signed request or throws exception.
+ *
+ * Should be called from Controller.
+ *
+ * @param ISignatoryManager $signatoryManager used to get details about remote instance
+ * @param string|null $body if NULL, body will be extracted from php://input
+ *
+ * @return IIncomingSignedRequest
+ * @throws IncomingRequestException if anything looks wrong with the incoming request
+ * @throws SignatureNotFoundException if incoming request is not signed
+ * @throws SignatureException if signature could not be confirmed
+ * @experimental 31.0.0
+ */
+ public function getIncomingSignedRequest(ISignatoryManager $signatoryManager, ?string $body = null): IIncomingSignedRequest;
+
+ /**
+ * Preparing signature (and headers) to sign an outgoing request.
+ * Returns a IOutgoingSignedRequest containing all details to finalise the packaging of the whole payload
+ *
+ * @param ISignatoryManager $signatoryManager
+ * @param string $content body to be signed
+ * @param string $method needed in the signature
+ * @param string $uri needed in the signature
+ *
+ * @return IOutgoingSignedRequest
+ * @experimental 31.0.0
+ */
+ public function getOutgoingSignedRequest(ISignatoryManager $signatoryManager, string $content, string $method, string $uri): IOutgoingSignedRequest;
+
+ /**
+ * Complete the full process of signing and filling headers from payload when generating
+ * an outgoing request with IClient
+ *
+ * @param ISignatoryManager $signatoryManager
+ * @param array $payload original payload, will be used to sign and completed with new headers with signature elements
+ * @param string $method needed in the signature
+ * @param string $uri needed in the signature
+ *
+ * @return array new payload to be sent, including original payload and signature elements in headers
+ * @experimental 31.0.0
+ */
+ public function signOutgoingRequestIClientPayload(ISignatoryManager $signatoryManager, array $payload, string $method, string $uri): array;
+
+ /**
+ * returns remote signatory stored in local database, based on the remote host.
+ *
+ * @param string $host remote host
+ * @param string $account linked account, should be used when multiple signature can exist for the same host
+ *
+ * @return Signatory
+ * @throws SignatoryNotFoundException if entry does not exist in local database
+ * @experimental 31.0.0
+ */
+ public function getSignatory(string $host, string $account = ''): Signatory;
+
+ /**
+ * returns a fully formatted keyId, based on a fix hostname and path
+ *
+ * @param string $path
+ *
+ * @return string
+ * @throws IdentityNotFoundException if hostname is not set
+ * @experimental 31.0.0
+ */
+ public function generateKeyIdFromConfig(string $path): string;
+
+ /**
+ * returns hostname:port extracted from an uri
+ *
+ * @param string $uri
+ *
+ * @return string
+ * @throws IdentityNotFoundException if identity cannot be extracted
+ * @experimental 31.0.0
+ */
+ public function extractIdentityFromUri(string $uri): string;
+}
diff --git a/lib/unstable/Security/Signature/ISignedRequest.php b/lib/unstable/Security/Signature/ISignedRequest.php
new file mode 100644
index 00000000000..6bf5e7e7dbc
--- /dev/null
+++ b/lib/unstable/Security/Signature/ISignedRequest.php
@@ -0,0 +1,121 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace NCU\Security\Signature;
+
+use NCU\Security\Signature\Enum\DigestAlgorithm;
+use NCU\Security\Signature\Exceptions\SignatoryNotFoundException;
+use NCU\Security\Signature\Exceptions\SignatureElementNotFoundException;
+use NCU\Security\Signature\Model\Signatory;
+
+/**
+ * model that store data related to a possible signature.
+ * those details will be used:
+ * - to confirm authenticity of a signed incoming request
+ * - to sign an outgoing request
+ *
+ * This interface must not be implemented in your application:
+ * @see IIncomingSignedRequest
+ * @see IOutgoingSignedRequest
+ *
+ * @experimental 31.0.0
+ */
+interface ISignedRequest {
+ /**
+ * payload of the request
+ *
+ * @return string
+ * @experimental 31.0.0
+ */
+ public function getBody(): string;
+
+ /**
+ * get algorithm used to generate digest
+ *
+ * @return DigestAlgorithm
+ * @experimental 31.0.0
+ */
+ public function getDigestAlgorithm(): DigestAlgorithm;
+
+ /**
+ * checksum of the payload of the request
+ *
+ * @return string
+ * @experimental 31.0.0
+ */
+ public function getDigest(): string;
+
+ /**
+ * set the list of headers related to the signature of the request
+ *
+ * @param array $elements
+ *
+ * @return self
+ * @experimental 31.0.0
+ */
+ public function setSigningElements(array $elements): self;
+
+ /**
+ * get the list of elements in the Signature header of the request
+ *
+ * @return array
+ * @experimental 31.0.0
+ */
+ public function getSigningElements(): array;
+
+ /**
+ * @param string $key
+ *
+ * @return string
+ * @throws SignatureElementNotFoundException
+ * @experimental 31.0.0
+ */
+ public function getSigningElement(string $key): string;
+
+ /**
+ * returns data used to generate signature
+ *
+ * @return array
+ * @experimental 31.0.0
+ */
+ public function getSignatureData(): array;
+
+ /**
+ * get the signed version of the signature
+ *
+ * @return string
+ * @experimental 31.0.0
+ */
+ public function getSignature(): string;
+
+ /**
+ * set the signatory, containing keys and details, related to this request
+ *
+ * @param Signatory $signatory
+ * @return self
+ * @experimental 31.0.0
+ */
+ public function setSignatory(Signatory $signatory): self;
+
+ /**
+ * get the signatory, containing keys and details, related to this request
+ *
+ * @return Signatory
+ * @throws SignatoryNotFoundException
+ * @experimental 31.0.0
+ */
+ public function getSignatory(): Signatory;
+
+ /**
+ * returns if a signatory related to this request have been found and defined
+ *
+ * @return bool
+ * @experimental 31.0.0
+ */
+ public function hasSignatory(): bool;
+}
diff --git a/lib/unstable/Security/Signature/Model/Signatory.php b/lib/unstable/Security/Signature/Model/Signatory.php
new file mode 100644
index 00000000000..d42be9c4544
--- /dev/null
+++ b/lib/unstable/Security/Signature/Model/Signatory.php
@@ -0,0 +1,194 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace NCU\Security\Signature\Model;
+
+use JsonSerializable;
+use NCU\Security\Signature\Enum\SignatoryStatus;
+use NCU\Security\Signature\Enum\SignatoryType;
+use NCU\Security\Signature\Exceptions\IdentityNotFoundException;
+use OCP\AppFramework\Db\Entity;
+
+/**
+ * model that store keys and details related to host and in use protocol
+ * mandatory details are providerId, host, keyId and public key.
+ * private key is only used for local signatory, used to sign outgoing request
+ *
+ * the pair providerId+host is unique, meaning only one signatory can exist for each host
+ * and protocol
+ *
+ * @experimental 31.0.0
+ *
+ * @method void setProviderId(string $providerId)
+ * @method string getProviderId()
+ * @method string getKeyId()
+ * @method void setKeyIdSum(string $keyIdSum)
+ * @method string getKeyIdSum()
+ * @method void setPublicKey(string $publicKey)
+ * @method string getPublicKey()
+ * @method void setPrivateKey(string $privateKey)
+ * @method string getPrivateKey()
+ * @method void setHost(string $host)
+ * @method string getHost()
+ * @method int getType()
+ * @method void setType(int $type)
+ * @method int getStatus()
+ * @method void setStatus(int $status)
+ * @method void setAccount(string $account)
+ * @method string getAccount()
+ * @method void setMetadata(array $metadata)
+ * @method array getMetadata()
+ * @method void setCreation(int $creation)
+ * @method int getCreation()
+ * @method void setLastUpdated(int $creation)
+ * @method int getLastUpdated()
+ * @psalm-suppress PropertyNotSetInConstructor
+ */
+class Signatory extends Entity implements JsonSerializable {
+ protected string $keyId = '';
+ protected string $keyIdSum = '';
+ protected string $providerId = '';
+ protected string $host = '';
+ protected string $publicKey = '';
+ protected string $privateKey = '';
+ protected string $account = '';
+ protected int $type = 9;
+ protected int $status = 1;
+ protected array $metadata = [];
+ protected int $creation = 0;
+ protected int $lastUpdated = 0;
+
+ /**
+ * @param bool $local only set to TRUE when managing local signatory
+ *
+ * @experimental 31.0.0
+ */
+ public function __construct(
+ private readonly bool $local = false,
+ ) {
+ $this->addType('providerId', 'string');
+ $this->addType('host', 'string');
+ $this->addType('account', 'string');
+ $this->addType('keyId', 'string');
+ $this->addType('keyIdSum', 'string');
+ $this->addType('publicKey', 'string');
+ $this->addType('metadata', 'json');
+ $this->addType('type', 'integer');
+ $this->addType('status', 'integer');
+ $this->addType('creation', 'integer');
+ $this->addType('lastUpdated', 'integer');
+ }
+
+ /**
+ * @param string $keyId
+ *
+ * @experimental 31.0.0
+ * @throws IdentityNotFoundException if identity cannot be extracted from keyId
+ */
+ public function setKeyId(string $keyId): void {
+ // if set as local (for current instance), we apply some filters.
+ if ($this->local) {
+ // to avoid conflict with duplicate key pairs (ie generated url from the occ command), we enforce https as prefix
+ if (str_starts_with($keyId, 'http://')) {
+ $keyId = 'https://' . substr($keyId, 7);
+ }
+
+ // removing /index.php from generated url
+ $path = parse_url($keyId, PHP_URL_PATH);
+ if (str_starts_with($path, '/index.php/')) {
+ $pos = strpos($keyId, '/index.php');
+ if ($pos !== false) {
+ $keyId = substr_replace($keyId, '', $pos, 10);
+ }
+ }
+ }
+ $this->setter('keyId', [$keyId]); // needed to trigger the update in database
+ $this->setKeyIdSum(hash('sha256', $keyId));
+
+ $this->setHost(self::extractIdentityFromUri($this->getKeyId()));
+ }
+
+ /**
+ * @param SignatoryType $type
+ * @experimental 31.0.0
+ */
+ public function setSignatoryType(SignatoryType $type): void {
+ $this->setType($type->value);
+ }
+
+ /**
+ * @return SignatoryType
+ * @experimental 31.0.0
+ */
+ public function getSignatoryType(): SignatoryType {
+ return SignatoryType::from($this->getType());
+ }
+
+ /**
+ * @param SignatoryStatus $status
+ * @experimental 31.0.0
+ */
+ public function setSignatoryStatus(SignatoryStatus $status): void {
+ $this->setStatus($status->value);
+ }
+
+ /**
+ * @return SignatoryStatus
+ * @experimental 31.0.0
+ */
+ public function getSignatoryStatus(): SignatoryStatus {
+ return SignatoryStatus::from($this->getStatus());
+ }
+
+ /**
+ * update an entry in metadata
+ *
+ * @param string $key
+ * @param string|int|float|bool|array $value
+ * @experimental 31.0.0
+ */
+ public function setMetaValue(string $key, string|int|float|bool|array $value): void {
+ $this->metadata[$key] = $value;
+ $this->setter('metadata', [$this->metadata]);
+ }
+
+ /**
+ * @return array
+ * @experimental 31.0.0
+ */
+ public function jsonSerialize(): array {
+ return [
+ 'keyId' => $this->getKeyId(),
+ 'publicKeyPem' => $this->getPublicKey()
+ ];
+ }
+
+ /**
+ * static is needed to make this easily callable from outside the model
+ *
+ * @param string $uri
+ *
+ * @return string
+ * @throws IdentityNotFoundException if identity cannot be extracted
+ * @experimental 31.0.0
+ */
+ public static function extractIdentityFromUri(string $uri): string {
+ $identity = parse_url($uri, PHP_URL_HOST);
+ $port = parse_url($uri, PHP_URL_PORT);
+ if ($identity === null || $identity === false) {
+ throw new IdentityNotFoundException('cannot extract identity from ' . $uri);
+ }
+
+ if ($port !== null && $port !== false) {
+ $identity .= ':' . $port;
+ }
+
+ return $identity;
+ }
+
+}
diff --git a/version.php b/version.php
index 1b1c154f4a6..e87981f0ec2 100644
--- a/version.php
+++ b/version.php
@@ -9,7 +9,7 @@
// between betas, final and RCs. This is _not_ the public version number. Reset minor/patch level
// when updating major/minor version number.
-$OC_Version = [31, 0, 0, 5];
+$OC_Version = [31, 0, 0, 6];
// The human-readable string
$OC_VersionString = '31.0.0 dev';