diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 5e221e849..dc667e803 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -9,7 +9,7 @@ variables:
testsFolder: './_tests'
yarnCacheFolder: $(Pipeline.Workspace)/.yarn
nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages
- majorVersion: '1.28.1'
+ majorVersion: '1.35.0'
minorVersion: $[counter('minorVersion', 1)]
prowlarrVersion: '$(majorVersion).$(minorVersion)'
buildName: '$(Build.SourceBranchName).$(prowlarrVersion)'
@@ -19,7 +19,7 @@ variables:
nodeVersion: '20.X'
innoVersion: '6.2.2'
windowsImage: 'windows-2022'
- linuxImage: 'ubuntu-20.04'
+ linuxImage: 'ubuntu-22.04'
macImage: 'macOS-13'
trigger:
@@ -1169,12 +1169,12 @@ stages:
submodules: true
- powershell: Set-Service SCardSvr -StartupType Manual
displayName: Enable Windows Test Service
- - task: SonarCloudPrepare@2
+ - task: SonarCloudPrepare@3
condition: eq(variables['System.PullRequest.IsFork'], 'False')
inputs:
SonarCloud: 'SonarCloud'
organization: 'prowlarr'
- scannerMode: 'MSBuild'
+ scannerMode: 'dotnet'
projectKey: 'Prowlarr_Prowlarr'
projectName: 'Prowlarr'
projectVersion: '$(prowlarrVersion)'
@@ -1187,7 +1187,7 @@ stages:
./build.sh --backend -f net6.0 -r win-x64
TEST_DIR=_tests/net6.0/win-x64/publish/ ./test.sh Windows Unit Coverage
displayName: Coverage Unit Tests
- - task: SonarCloudAnalyze@2
+ - task: SonarCloudAnalyze@3
condition: eq(variables['System.PullRequest.IsFork'], 'False')
displayName: Publish SonarCloud Results
- task: reportgenerator@5.3.11
diff --git a/docs.sh b/docs.sh
index ccfde87a7..38b0e0fbc 100755
--- a/docs.sh
+++ b/docs.sh
@@ -3,15 +3,16 @@ set -e
FRAMEWORK="net6.0"
PLATFORM=$1
+ARCHITECTURE="${2:-x64}"
if [ "$PLATFORM" = "Windows" ]; then
- RUNTIME="win-x64"
+ RUNTIME="win-$ARCHITECTURE"
elif [ "$PLATFORM" = "Linux" ]; then
- RUNTIME="linux-x64"
+ RUNTIME="linux-$ARCHITECTURE"
elif [ "$PLATFORM" = "Mac" ]; then
- RUNTIME="osx-x64"
+ RUNTIME="osx-$ARCHITECTURE"
else
- echo "Platform must be provided as first arguement: Windows, Linux or Mac"
+ echo "Platform must be provided as first argument: Windows, Linux or Mac"
exit 1
fi
@@ -37,7 +38,7 @@ dotnet clean $slnFile -c Release
dotnet msbuild -restore $slnFile -p:Configuration=Debug -p:Platform=$platform -p:RuntimeIdentifiers=$RUNTIME -t:PublishAllRids
dotnet new tool-manifest
-dotnet tool install --version 6.6.2 Swashbuckle.AspNetCore.Cli
+dotnet tool install --version 7.3.2 Swashbuckle.AspNetCore.Cli
dotnet tool run swagger tofile --output ./src/Prowlarr.Api.V1/openapi.json "$outputFolder/$FRAMEWORK/$RUNTIME/$application" v1 &
diff --git a/frontend/build/webpack.config.js b/frontend/build/webpack.config.js
index 28c7b79a4..ceacc4f04 100644
--- a/frontend/build/webpack.config.js
+++ b/frontend/build/webpack.config.js
@@ -170,7 +170,7 @@ module.exports = (env) => {
loose: true,
debug: false,
useBuiltIns: 'entry',
- corejs: 3
+ corejs: '3.39'
}
]
]
diff --git a/frontend/src/Components/Form/EnhancedSelectInput.js b/frontend/src/Components/Form/EnhancedSelectInput.js
index 732e10f37..79b1c999c 100644
--- a/frontend/src/Components/Form/EnhancedSelectInput.js
+++ b/frontend/src/Components/Form/EnhancedSelectInput.js
@@ -20,6 +20,8 @@ import HintedSelectInputSelectedValue from './HintedSelectInputSelectedValue';
import TextInput from './TextInput';
import styles from './EnhancedSelectInput.css';
+const MINIMUM_DISTANCE_FROM_EDGE = 10;
+
function isArrowKey(keyCode) {
return keyCode === keyCodes.UP_ARROW || keyCode === keyCodes.DOWN_ARROW;
}
@@ -137,18 +139,9 @@ class EnhancedSelectInput extends Component {
// Listeners
onComputeMaxHeight = (data) => {
- const {
- top,
- bottom
- } = data.offsets.reference;
-
const windowHeight = window.innerHeight;
- if ((/^botton/).test(data.placement)) {
- data.styles.maxHeight = windowHeight - bottom;
- } else {
- data.styles.maxHeight = top;
- }
+ data.styles.maxHeight = windowHeight - MINIMUM_DISTANCE_FROM_EDGE;
return data;
};
@@ -460,6 +453,10 @@ class EnhancedSelectInput extends Component {
order: 851,
enabled: true,
fn: this.onComputeMaxHeight
+ },
+ preventOverflow: {
+ enabled: true,
+ boundariesElement: 'viewport'
}
}}
>
diff --git a/frontend/src/Components/Page/Sidebar/PageSidebarItem.css b/frontend/src/Components/Page/Sidebar/PageSidebarItem.css
index 5e3e3b52c..409062f97 100644
--- a/frontend/src/Components/Page/Sidebar/PageSidebarItem.css
+++ b/frontend/src/Components/Page/Sidebar/PageSidebarItem.css
@@ -24,6 +24,7 @@
composes: link;
padding: 10px 24px;
+ padding-left: 35px;
}
.isActiveLink {
@@ -41,10 +42,6 @@
text-align: center;
}
-.noIcon {
- margin-left: 25px;
-}
-
.status {
float: right;
}
diff --git a/frontend/src/Components/Page/Sidebar/PageSidebarItem.css.d.ts b/frontend/src/Components/Page/Sidebar/PageSidebarItem.css.d.ts
index 77e23c767..5bf0eb815 100644
--- a/frontend/src/Components/Page/Sidebar/PageSidebarItem.css.d.ts
+++ b/frontend/src/Components/Page/Sidebar/PageSidebarItem.css.d.ts
@@ -8,7 +8,6 @@ interface CssExports {
'isActiveParentLink': string;
'item': string;
'link': string;
- 'noIcon': string;
'status': string;
}
export const cssExports: CssExports;
diff --git a/frontend/src/Components/Page/Sidebar/PageSidebarItem.js b/frontend/src/Components/Page/Sidebar/PageSidebarItem.js
index 754071c79..8d0e4e790 100644
--- a/frontend/src/Components/Page/Sidebar/PageSidebarItem.js
+++ b/frontend/src/Components/Page/Sidebar/PageSidebarItem.js
@@ -63,9 +63,7 @@ class PageSidebarItem extends Component {
}
-
- {typeof title === 'function' ? title() : title}
-
+ {typeof title === 'function' ? title() : title}
{
!!StatusComponent &&
diff --git a/frontend/src/Components/Page/Toolbar/PageToolbarButton.css b/frontend/src/Components/Page/Toolbar/PageToolbarButton.css
index 0b6918296..e9a1b666d 100644
--- a/frontend/src/Components/Page/Toolbar/PageToolbarButton.css
+++ b/frontend/src/Components/Page/Toolbar/PageToolbarButton.css
@@ -22,11 +22,14 @@
display: flex;
align-items: center;
justify-content: center;
+ overflow: hidden;
height: 24px;
}
.label {
padding: 0 3px;
+ max-width: 100%;
+ max-height: 100%;
color: var(--toolbarLabelColor);
font-size: $extraSmallFontSize;
line-height: calc($extraSmallFontSize + 1px);
diff --git a/frontend/src/Components/Page/Toolbar/PageToolbarButton.js b/frontend/src/Components/Page/Toolbar/PageToolbarButton.js
index c93603aa9..675bdfd02 100644
--- a/frontend/src/Components/Page/Toolbar/PageToolbarButton.js
+++ b/frontend/src/Components/Page/Toolbar/PageToolbarButton.js
@@ -23,6 +23,7 @@ function PageToolbarButton(props) {
isDisabled && styles.isDisabled
)}
isDisabled={isDisabled || isSpinning}
+ title={label}
{...otherProps}
>
{
translations = data.Strings;
resolve(true);
- } catch (error) {
+ } catch {
resolve(false);
}
});
diff --git a/package.json b/package.json
index cf67c6b83..25960d641 100644
--- a/package.json
+++ b/package.json
@@ -23,10 +23,10 @@
"defaults"
],
"dependencies": {
- "@fortawesome/fontawesome-free": "6.6.0",
- "@fortawesome/fontawesome-svg-core": "6.6.0",
- "@fortawesome/free-regular-svg-icons": "6.6.0",
- "@fortawesome/free-solid-svg-icons": "6.6.0",
+ "@fortawesome/fontawesome-free": "6.7.1",
+ "@fortawesome/fontawesome-svg-core": "6.7.1",
+ "@fortawesome/free-regular-svg-icons": "6.7.1",
+ "@fortawesome/free-solid-svg-icons": "6.7.1",
"@fortawesome/react-fontawesome": "0.2.2",
"@juggle/resize-observer": "3.4.0",
"@microsoft/signalr": "6.0.25",
@@ -81,30 +81,30 @@
"redux-thunk": "2.4.2",
"reselect": "4.1.8",
"stacktrace-js": "2.0.2",
- "typescript": "5.1.6"
+ "typescript": "5.7.2"
},
"devDependencies": {
- "@babel/core": "7.25.8",
- "@babel/eslint-parser": "7.25.8",
- "@babel/plugin-proposal-export-default-from": "7.25.8",
+ "@babel/core": "7.26.0",
+ "@babel/eslint-parser": "7.25.9",
+ "@babel/plugin-proposal-export-default-from": "7.25.9",
"@babel/plugin-syntax-dynamic-import": "7.8.3",
- "@babel/preset-env": "7.25.8",
- "@babel/preset-react": "7.25.7",
- "@babel/preset-typescript": "7.25.7",
+ "@babel/preset-env": "7.26.0",
+ "@babel/preset-react": "7.26.3",
+ "@babel/preset-typescript": "7.26.0",
"@types/lodash": "4.14.195",
"@types/react-document-title": "2.0.10",
"@types/react-router-dom": "5.3.3",
"@types/react-text-truncate": "0.19.0",
"@types/react-window": "1.8.8",
"@types/webpack-livereload-plugin": "2.3.6",
- "@typescript-eslint/eslint-plugin": "6.21.0",
- "@typescript-eslint/parser": "6.21.0",
+ "@typescript-eslint/eslint-plugin": "8.18.1",
+ "@typescript-eslint/parser": "8.18.1",
"are-you-es5": "2.1.2",
"autoprefixer": "10.4.20",
"babel-loader": "9.2.1",
"babel-plugin-inline-classnames": "2.0.1",
"babel-plugin-transform-react-remove-prop-types": "0.4.24",
- "core-js": "3.38.1",
+ "core-js": "3.39.0",
"css-loader": "6.7.3",
"css-modules-typescript-loader": "4.0.1",
"eslint": "8.57.1",
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index e161b9952..ce3672c38 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -221,7 +221,7 @@
<_UsingDefaultRuntimeIdentifier>true
- osx-x64
+ osx-$(Architecture)
diff --git a/src/NzbDrone.Automation.Test/Prowlarr.Automation.Test.csproj b/src/NzbDrone.Automation.Test/Prowlarr.Automation.Test.csproj
index bb0b5fcc4..78c8b7d0f 100644
--- a/src/NzbDrone.Automation.Test/Prowlarr.Automation.Test.csproj
+++ b/src/NzbDrone.Automation.Test/Prowlarr.Automation.Test.csproj
@@ -4,7 +4,7 @@
-
+
diff --git a/src/NzbDrone.Common.Test/InstrumentationTests/CleanseLogMessageFixture.cs b/src/NzbDrone.Common.Test/InstrumentationTests/CleanseLogMessageFixture.cs
index 857834d3f..9e2b31d87 100644
--- a/src/NzbDrone.Common.Test/InstrumentationTests/CleanseLogMessageFixture.cs
+++ b/src/NzbDrone.Common.Test/InstrumentationTests/CleanseLogMessageFixture.cs
@@ -30,6 +30,7 @@ namespace NzbDrone.Common.Test.InstrumentationTests
[TestCase(@"https://anthelion.me/api.php?api_key=2b51db35e1910123321025a12b9933d2&o=json&t=movie&q=&tmdb=&imdb=&cat=&limit=100&offset=0")]
[TestCase(@"https://avistaz.to/api/v1/jackett/auth: username=mySecret&password=mySecret&pid=mySecret")]
[TestCase(@"https://www.sharewood.tv/api/2b51db35e1910123321025a12b9933d2/last-torrents")]
+ [TestCase(@"https://example.org/rss/torrents?rsskey=2b51db35e1910123321025a12b9933d2&search=")]
// Indexer and Download Client Responses
diff --git a/src/NzbDrone.Common/ArchiveService.cs b/src/NzbDrone.Common/ArchiveService.cs
index 800d240ab..d420bbbc0 100644
--- a/src/NzbDrone.Common/ArchiveService.cs
+++ b/src/NzbDrone.Common/ArchiveService.cs
@@ -42,17 +42,18 @@ namespace NzbDrone.Common
public void CreateZip(string path, IEnumerable files)
{
- using (var zipFile = ZipFile.Create(path))
+ _logger.Debug("Creating archive {0}", path);
+
+ using var zipFile = ZipFile.Create(path);
+
+ zipFile.BeginUpdate();
+
+ foreach (var file in files)
{
- zipFile.BeginUpdate();
-
- foreach (var file in files)
- {
- zipFile.Add(file, Path.GetFileName(file));
- }
-
- zipFile.CommitUpdate();
+ zipFile.Add(file, Path.GetFileName(file));
}
+
+ zipFile.CommitUpdate();
}
private void ExtractZip(string compressedFile, string destination)
diff --git a/src/NzbDrone.Common/Instrumentation/CleanseLogMessage.cs b/src/NzbDrone.Common/Instrumentation/CleanseLogMessage.cs
index e4b4384b2..393d6613a 100644
--- a/src/NzbDrone.Common/Instrumentation/CleanseLogMessage.cs
+++ b/src/NzbDrone.Common/Instrumentation/CleanseLogMessage.cs
@@ -10,7 +10,7 @@ namespace NzbDrone.Common.Instrumentation
private static readonly Regex[] CleansingRules =
{
// Url
- new (@"(?<=[?&: ;])(apikey|api_key|(?:(?:access|api)[-_]?)?token|pass(?:key|wd)?|auth|authkey|user|u?id|api|[a-z_]*apikey|account|pid|pwd)=(?[^&=""]+?)(?=[ ""&=]|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
+ new (@"(?<=[?&: ;])(apikey|api_key|(?:(?:access|api)[-_]?)?token|pass(?:key|wd)?|auth|authkey|rsskey|user|u?id|api|[a-z_]*apikey|account|pid|pwd)=(?[^&=""]+?)(?=[ ""&=]|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"(?<=[?& ;])[^=]*?(_?(?[^&=]+?)(?= |&|$|;)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"rss(24h)?\.torrentleech\.org/(?!rss)(?[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"torrentleech\.org/rss/download/[0-9]+/(?[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
diff --git a/src/NzbDrone.Common/Instrumentation/CleansingClefLogLayout.cs b/src/NzbDrone.Common/Instrumentation/CleansingClefLogLayout.cs
new file mode 100644
index 000000000..f110b96ac
--- /dev/null
+++ b/src/NzbDrone.Common/Instrumentation/CleansingClefLogLayout.cs
@@ -0,0 +1,21 @@
+using System.Text;
+using NLog;
+using NLog.Layouts.ClefJsonLayout;
+using NzbDrone.Common.EnvironmentInfo;
+
+namespace NzbDrone.Common.Instrumentation;
+
+public class CleansingClefLogLayout : CompactJsonLayout
+{
+ protected override void RenderFormattedMessage(LogEventInfo logEvent, StringBuilder target)
+ {
+ base.RenderFormattedMessage(logEvent, target);
+
+ if (RuntimeInfo.IsProduction)
+ {
+ var result = CleanseLogMessage.Cleanse(target.ToString());
+ target.Clear();
+ target.Append(result);
+ }
+ }
+}
diff --git a/src/NzbDrone.Common/Instrumentation/CleansingConsoleLogLayout.cs b/src/NzbDrone.Common/Instrumentation/CleansingConsoleLogLayout.cs
new file mode 100644
index 000000000..f894a4df5
--- /dev/null
+++ b/src/NzbDrone.Common/Instrumentation/CleansingConsoleLogLayout.cs
@@ -0,0 +1,26 @@
+using System.Text;
+using NLog;
+using NLog.Layouts;
+using NzbDrone.Common.EnvironmentInfo;
+
+namespace NzbDrone.Common.Instrumentation;
+
+public class CleansingConsoleLogLayout : SimpleLayout
+{
+ public CleansingConsoleLogLayout(string format)
+ : base(format)
+ {
+ }
+
+ protected override void RenderFormattedMessage(LogEventInfo logEvent, StringBuilder target)
+ {
+ base.RenderFormattedMessage(logEvent, target);
+
+ if (RuntimeInfo.IsProduction)
+ {
+ var result = CleanseLogMessage.Cleanse(target.ToString());
+ target.Clear();
+ target.Append(result);
+ }
+ }
+}
diff --git a/src/NzbDrone.Common/Instrumentation/NzbDroneFileTarget.cs b/src/NzbDrone.Common/Instrumentation/CleansingFileTarget.cs
similarity index 87%
rename from src/NzbDrone.Common/Instrumentation/NzbDroneFileTarget.cs
rename to src/NzbDrone.Common/Instrumentation/CleansingFileTarget.cs
index 84658cf74..f74d1fca4 100644
--- a/src/NzbDrone.Common/Instrumentation/NzbDroneFileTarget.cs
+++ b/src/NzbDrone.Common/Instrumentation/CleansingFileTarget.cs
@@ -4,7 +4,7 @@ using NLog.Targets;
namespace NzbDrone.Common.Instrumentation
{
- public class NzbDroneFileTarget : FileTarget
+ public class CleansingFileTarget : FileTarget
{
protected override void RenderFormattedMessage(LogEventInfo logEvent, StringBuilder target)
{
diff --git a/src/NzbDrone.Common/Instrumentation/NzbDroneLogger.cs b/src/NzbDrone.Common/Instrumentation/NzbDroneLogger.cs
index 80793e812..d9fdd5b25 100644
--- a/src/NzbDrone.Common/Instrumentation/NzbDroneLogger.cs
+++ b/src/NzbDrone.Common/Instrumentation/NzbDroneLogger.cs
@@ -3,7 +3,6 @@ using System.Diagnostics;
using System.IO;
using NLog;
using NLog.Config;
-using NLog.Layouts.ClefJsonLayout;
using NLog.Targets;
using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Extensions;
@@ -13,9 +12,11 @@ namespace NzbDrone.Common.Instrumentation
{
public static class NzbDroneLogger
{
- private const string FILE_LOG_LAYOUT = @"${date:format=yyyy-MM-dd HH\:mm\:ss.f}|${level}|${logger}|${message}${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}";
- public const string ConsoleLogLayout = "[${level}] ${logger}: ${message} ${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}";
- public static CompactJsonLayout ClefLogLayout = new CompactJsonLayout();
+ private const string FileLogLayout = @"${date:format=yyyy-MM-dd HH\:mm\:ss.f}|${level}|${logger}|${message}${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}";
+ private const string ConsoleFormat = "[${level}] ${logger}: ${message} ${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}";
+
+ private static readonly CleansingConsoleLogLayout CleansingConsoleLayout = new (ConsoleFormat);
+ private static readonly CleansingClefLogLayout ClefLogLayout = new ();
private static bool _isConfigured;
@@ -119,11 +120,7 @@ namespace NzbDrone.Common.Instrumentation
? formatEnumValue
: ConsoleLogFormat.Standard;
- coloredConsoleTarget.Layout = logFormat switch
- {
- ConsoleLogFormat.Clef => ClefLogLayout,
- _ => ConsoleLogLayout
- };
+ ConfigureConsoleLayout(coloredConsoleTarget, logFormat);
var loggingRule = new LoggingRule("*", level, coloredConsoleTarget);
@@ -140,7 +137,7 @@ namespace NzbDrone.Common.Instrumentation
private static void RegisterAppFile(IAppFolderInfo appFolderInfo, string name, string fileName, int maxArchiveFiles, LogLevel minLogLevel)
{
- var fileTarget = new NzbDroneFileTarget();
+ var fileTarget = new CleansingFileTarget();
fileTarget.Name = name;
fileTarget.FileName = Path.Combine(appFolderInfo.GetLogFolder(), fileName);
@@ -153,7 +150,7 @@ namespace NzbDrone.Common.Instrumentation
fileTarget.MaxArchiveFiles = maxArchiveFiles;
fileTarget.EnableFileDelete = true;
fileTarget.ArchiveNumbering = ArchiveNumberingMode.Rolling;
- fileTarget.Layout = FILE_LOG_LAYOUT;
+ fileTarget.Layout = FileLogLayout;
var loggingRule = new LoggingRule("*", minLogLevel, fileTarget);
@@ -172,7 +169,7 @@ namespace NzbDrone.Common.Instrumentation
fileTarget.ConcurrentWrites = false;
fileTarget.ConcurrentWriteAttemptDelay = 50;
fileTarget.ConcurrentWriteAttempts = 100;
- fileTarget.Layout = FILE_LOG_LAYOUT;
+ fileTarget.Layout = FileLogLayout;
var loggingRule = new LoggingRule("*", LogLevel.Trace, fileTarget);
@@ -217,6 +214,15 @@ namespace NzbDrone.Common.Instrumentation
{
return GetLogger(obj.GetType());
}
+
+ public static void ConfigureConsoleLayout(ColoredConsoleTarget target, ConsoleLogFormat format)
+ {
+ target.Layout = format switch
+ {
+ ConsoleLogFormat.Clef => NzbDroneLogger.ClefLogLayout,
+ _ => NzbDroneLogger.CleansingConsoleLayout
+ };
+ }
}
public enum ConsoleLogFormat
diff --git a/src/NzbDrone.Common/Instrumentation/Sentry/SentryTarget.cs b/src/NzbDrone.Common/Instrumentation/Sentry/SentryTarget.cs
index 843f904a6..3a4737f74 100644
--- a/src/NzbDrone.Common/Instrumentation/Sentry/SentryTarget.cs
+++ b/src/NzbDrone.Common/Instrumentation/Sentry/SentryTarget.cs
@@ -119,7 +119,7 @@ namespace NzbDrone.Common.Instrumentation.Sentry
o.Environment = BuildInfo.Branch;
// Crash free run statistics (sends a ping for healthy and for crashes sessions)
- o.AutoSessionTracking = true;
+ o.AutoSessionTracking = false;
// Caches files in the event device is offline
// Sentry creates a 'sentry' sub directory, no need to concat here
@@ -148,7 +148,7 @@ namespace NzbDrone.Common.Instrumentation.Sentry
_debounce = new SentryDebounce();
// initialize to true and reconfigure later
- // Otherwise it will default to false and any errors occuring
+ // Otherwise it will default to false and any errors occurring
// before config file gets read will not be filtered
FilterEvents = true;
SentryEnabled = true;
@@ -207,9 +207,7 @@ namespace NzbDrone.Common.Instrumentation.Sentry
private void OnError(Exception ex)
{
- var webException = ex as WebException;
-
- if (webException != null)
+ if (ex is WebException webException)
{
var response = webException.Response as HttpWebResponse;
var statusCode = response?.StatusCode;
diff --git a/src/NzbDrone.Common/Processes/ProcessProvider.cs b/src/NzbDrone.Common/Processes/ProcessProvider.cs
index 5db0565e0..c68207a09 100644
--- a/src/NzbDrone.Common/Processes/ProcessProvider.cs
+++ b/src/NzbDrone.Common/Processes/ProcessProvider.cs
@@ -6,6 +6,7 @@ using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
+using System.Text;
using NLog;
using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Model;
@@ -117,7 +118,9 @@ namespace NzbDrone.Common.Processes
UseShellExecute = false,
RedirectStandardError = true,
RedirectStandardOutput = true,
- RedirectStandardInput = true
+ RedirectStandardInput = true,
+ StandardOutputEncoding = Encoding.UTF8,
+ StandardErrorEncoding = Encoding.UTF8
};
if (environmentVariables != null)
@@ -313,7 +316,7 @@ namespace NzbDrone.Common.Processes
processInfo = new ProcessInfo();
processInfo.Id = process.Id;
processInfo.Name = process.ProcessName;
- processInfo.StartPath = process.MainModule.FileName;
+ processInfo.StartPath = process.MainModule?.FileName;
if (process.Id != GetCurrentProcessId() && process.HasExited)
{
diff --git a/src/NzbDrone.Common/Prowlarr.Common.csproj b/src/NzbDrone.Common/Prowlarr.Common.csproj
index c43b60a4c..106890399 100644
--- a/src/NzbDrone.Common/Prowlarr.Common.csproj
+++ b/src/NzbDrone.Common/Prowlarr.Common.csproj
@@ -5,20 +5,21 @@
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
+
+
-
+
diff --git a/src/NzbDrone.Core.Test/IndexerTests/AnimeBytesTests/AnimeBytesFixture.cs b/src/NzbDrone.Core.Test/IndexerTests/AnimeBytesTests/AnimeBytesFixture.cs
index a2453592f..ae7eaa762 100644
--- a/src/NzbDrone.Core.Test/IndexerTests/AnimeBytesTests/AnimeBytesFixture.cs
+++ b/src/NzbDrone.Core.Test/IndexerTests/AnimeBytesTests/AnimeBytesFixture.cs
@@ -122,7 +122,7 @@ namespace NzbDrone.Core.Test.IndexerTests.AnimeBytesTests
var fifthTorrentInfo = releases.ElementAt(28) as TorrentInfo;
- fifthTorrentInfo.Title.Should().Be("[-ZR-] Dr. STONE: STONE WARS S02 [Web][MKV][h264][1080p][AAC 2.0][Dual Audio][Softsubs (-ZR-)]");
+ fifthTorrentInfo.Title.Should().Be("[-ZR-] Dr. STONE: STONE WARS 2021 S02 [Web][MKV][h264][1080p][AAC 2.0][Dual Audio][Softsubs (-ZR-)]");
fifthTorrentInfo.DownloadProtocol.Should().Be(DownloadProtocol.Torrent);
fifthTorrentInfo.DownloadUrl.Should().Be("https://animebytes.tv/torrent/944509/download/somepass");
fifthTorrentInfo.InfoUrl.Should().Be("https://animebytes.tv/torrent/944509/group");
diff --git a/src/NzbDrone.Core.Test/IndexerTests/FileListTests/FileListFixture.cs b/src/NzbDrone.Core.Test/IndexerTests/FileListTests/FileListFixture.cs
index 3699a9d0c..b6f06d180 100644
--- a/src/NzbDrone.Core.Test/IndexerTests/FileListTests/FileListFixture.cs
+++ b/src/NzbDrone.Core.Test/IndexerTests/FileListTests/FileListFixture.cs
@@ -55,7 +55,7 @@ namespace NzbDrone.Core.Test.IndexerTests.FileListTests
torrentInfo.InfoUrl.Should().Be("https://filelist.io/details.php?id=665873");
torrentInfo.CommentUrl.Should().BeNullOrEmpty();
torrentInfo.Indexer.Should().Be(Subject.Definition.Name);
- torrentInfo.PublishDate.Should().Be(DateTime.Parse("2020-01-25 20:20:19"));
+ torrentInfo.PublishDate.Should().Be(DateTime.Parse("2020-01-25 19:20:19"));
torrentInfo.Size.Should().Be(8300512414);
torrentInfo.InfoHash.Should().Be(null);
torrentInfo.MagnetUrl.Should().Be(null);
diff --git a/src/NzbDrone.Core.Test/IndexerTests/HDBitsTests/HDBitsFixture.cs b/src/NzbDrone.Core.Test/IndexerTests/HDBitsTests/HDBitsFixture.cs
index 39d628d79..06326d162 100644
--- a/src/NzbDrone.Core.Test/IndexerTests/HDBitsTests/HDBitsFixture.cs
+++ b/src/NzbDrone.Core.Test/IndexerTests/HDBitsTests/HDBitsFixture.cs
@@ -26,15 +26,15 @@ namespace NzbDrone.Core.Test.IndexerTests.HDBitsTests
[SetUp]
public void Setup()
{
- Subject.Definition = new IndexerDefinition()
+ Subject.Definition = new IndexerDefinition
{
Name = "HdBits",
- Settings = new HDBitsSettings() { ApiKey = "fakekey" }
+ Settings = new HDBitsSettings { ApiKey = "fakekey" }
};
_movieSearchCriteria = new MovieSearchCriteria
{
- Categories = new int[] { 2000, 2010 },
+ Categories = new[] { 2000, 2010 },
ImdbId = "0076759"
};
}
@@ -52,7 +52,7 @@ namespace NzbDrone.Core.Test.IndexerTests.HDBitsTests
var torrents = (await Subject.Fetch(_movieSearchCriteria)).Releases;
torrents.Should().HaveCount(2);
- torrents.First().Should().BeOfType();
+ torrents.First().Should().BeOfType();
var first = torrents.First() as TorrentInfo;
diff --git a/src/NzbDrone.Core/Backup/BackupService.cs b/src/NzbDrone.Core/Backup/BackupService.cs
index 14fc91efc..051d045bb 100644
--- a/src/NzbDrone.Core/Backup/BackupService.cs
+++ b/src/NzbDrone.Core/Backup/BackupService.cs
@@ -66,12 +66,19 @@ namespace NzbDrone.Core.Backup
{
_logger.ProgressInfo("Starting Backup");
+ var backupFolder = GetBackupFolder(backupType);
+
_diskProvider.EnsureFolder(_backupTempFolder);
- _diskProvider.EnsureFolder(GetBackupFolder(backupType));
+ _diskProvider.EnsureFolder(backupFolder);
+
+ if (!_diskProvider.FolderWritable(backupFolder))
+ {
+ throw new UnauthorizedAccessException($"Backup folder {backupFolder} is not writable");
+ }
var dateNow = DateTime.Now;
var backupFilename = $"prowlarr_backup_v{BuildInfo.Version}_{dateNow:yyyy.MM.dd_HH.mm.ss}.zip";
- var backupPath = Path.Combine(GetBackupFolder(backupType), backupFilename);
+ var backupPath = Path.Combine(backupFolder, backupFilename);
Cleanup();
diff --git a/src/NzbDrone.Core/Configuration/ConfigFileProvider.cs b/src/NzbDrone.Core/Configuration/ConfigFileProvider.cs
index b9f4f23d2..f4715b203 100644
--- a/src/NzbDrone.Core/Configuration/ConfigFileProvider.cs
+++ b/src/NzbDrone.Core/Configuration/ConfigFileProvider.cs
@@ -274,7 +274,7 @@ namespace NzbDrone.Core.Configuration
{
var instanceName = _appOptions.InstanceName ?? GetValue("InstanceName", BuildInfo.AppName);
- if (instanceName.ContainsIgnoreCase(BuildInfo.AppName))
+ if (instanceName.Contains(BuildInfo.AppName, StringComparison.OrdinalIgnoreCase))
{
return instanceName;
}
diff --git a/src/NzbDrone.Core/Datastore/BasicRepository.cs b/src/NzbDrone.Core/Datastore/BasicRepository.cs
index dc76a5a31..796e277b7 100644
--- a/src/NzbDrone.Core/Datastore/BasicRepository.cs
+++ b/src/NzbDrone.Core/Datastore/BasicRepository.cs
@@ -254,7 +254,7 @@ namespace NzbDrone.Core.Datastore
protected void Delete(SqlBuilder builder)
{
- var sql = builder.AddDeleteTemplate(typeof(TModel)).LogQuery();
+ var sql = builder.AddDeleteTemplate(typeof(TModel));
using (var conn = _database.OpenConnection())
{
diff --git a/src/NzbDrone.Core/Datastore/Migration/042_myanonamouse_freeleech_wedge_options.cs b/src/NzbDrone.Core/Datastore/Migration/042_myanonamouse_freeleech_wedge_options.cs
new file mode 100644
index 000000000..5a93488d5
--- /dev/null
+++ b/src/NzbDrone.Core/Datastore/Migration/042_myanonamouse_freeleech_wedge_options.cs
@@ -0,0 +1,60 @@
+using System.Collections.Generic;
+using System.Data;
+using Dapper;
+using FluentMigrator;
+using Newtonsoft.Json.Linq;
+using NzbDrone.Common.Serializer;
+using NzbDrone.Core.Datastore.Migration.Framework;
+
+namespace NzbDrone.Core.Datastore.Migration
+{
+ [Migration(042)]
+ public class myanonamouse_freeleech_wedge_options : NzbDroneMigrationBase
+ {
+ protected override void MainDbUpgrade()
+ {
+ Execute.WithConnection(MigrateIndexersToWedgeOptions);
+ }
+
+ private void MigrateIndexersToWedgeOptions(IDbConnection conn, IDbTransaction tran)
+ {
+ var updated = new List();
+
+ using (var cmd = conn.CreateCommand())
+ {
+ cmd.Transaction = tran;
+ cmd.CommandText = "SELECT \"Id\", \"Settings\" FROM \"Indexers\" WHERE \"Implementation\" = 'MyAnonamouse'";
+
+ using (var reader = cmd.ExecuteReader())
+ {
+ while (reader.Read())
+ {
+ var id = reader.GetInt32(0);
+ var settings = Json.Deserialize(reader.GetString(1));
+
+ if (settings.ContainsKey("freeleech") && settings.Value("freeleech").Type == JTokenType.Boolean)
+ {
+ var optionValue = settings.Value("freeleech") switch
+ {
+ true => 2, // Required
+ _ => 0 // Never
+ };
+
+ settings.Remove("freeleech");
+ settings.Add("useFreeleechWedge", optionValue);
+ }
+
+ updated.Add(new
+ {
+ Id = id,
+ Settings = settings.ToJson()
+ });
+ }
+ }
+ }
+
+ var updateSql = "UPDATE \"Indexers\" SET \"Settings\" = @Settings WHERE \"Id\" = @Id";
+ conn.Execute(updateSql, updated, transaction: tran);
+ }
+ }
+}
diff --git a/src/NzbDrone.Core/Download/Clients/Aria2/Aria2.cs b/src/NzbDrone.Core/Download/Clients/Aria2/Aria2.cs
index ae076c14b..3085dbf63 100644
--- a/src/NzbDrone.Core/Download/Clients/Aria2/Aria2.cs
+++ b/src/NzbDrone.Core/Download/Clients/Aria2/Aria2.cs
@@ -7,6 +7,7 @@ using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Indexers;
+using NzbDrone.Core.Localization;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Validation;
@@ -25,8 +26,9 @@ namespace NzbDrone.Core.Download.Clients.Aria2
ISeedConfigProvider seedConfigProvider,
IConfigService configService,
IDiskProvider diskProvider,
+ ILocalizationService localizationService,
Logger logger)
- : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
+ : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
{
_proxy = proxy;
}
diff --git a/src/NzbDrone.Core/Download/Clients/Blackhole/TorrentBlackhole.cs b/src/NzbDrone.Core/Download/Clients/Blackhole/TorrentBlackhole.cs
index f8fd44e97..9e22a7460 100644
--- a/src/NzbDrone.Core/Download/Clients/Blackhole/TorrentBlackhole.cs
+++ b/src/NzbDrone.Core/Download/Clients/Blackhole/TorrentBlackhole.cs
@@ -8,6 +8,7 @@ using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Indexers;
+using NzbDrone.Core.Localization;
using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.Download.Clients.Blackhole
@@ -20,8 +21,9 @@ namespace NzbDrone.Core.Download.Clients.Blackhole
ISeedConfigProvider seedConfigProvider,
IConfigService configService,
IDiskProvider diskProvider,
+ ILocalizationService localizationService,
Logger logger)
- : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
+ : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
{
}
diff --git a/src/NzbDrone.Core/Download/Clients/Blackhole/UsenetBlackhole.cs b/src/NzbDrone.Core/Download/Clients/Blackhole/UsenetBlackhole.cs
index 0f0364e61..0b64150ee 100644
--- a/src/NzbDrone.Core/Download/Clients/Blackhole/UsenetBlackhole.cs
+++ b/src/NzbDrone.Core/Download/Clients/Blackhole/UsenetBlackhole.cs
@@ -7,6 +7,7 @@ using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http;
using NzbDrone.Core.Configuration;
+using NzbDrone.Core.Localization;
using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.Download.Clients.Blackhole
@@ -16,8 +17,9 @@ namespace NzbDrone.Core.Download.Clients.Blackhole
public UsenetBlackhole(IHttpClient httpClient,
IConfigService configService,
IDiskProvider diskProvider,
+ ILocalizationService localizationService,
Logger logger)
- : base(httpClient, configService, diskProvider, logger)
+ : base(httpClient, configService, diskProvider, localizationService, logger)
{
}
diff --git a/src/NzbDrone.Core/Download/Clients/Deluge/Deluge.cs b/src/NzbDrone.Core/Download/Clients/Deluge/Deluge.cs
index ca63ba0e7..90bd6ba1f 100644
--- a/src/NzbDrone.Core/Download/Clients/Deluge/Deluge.cs
+++ b/src/NzbDrone.Core/Download/Clients/Deluge/Deluge.cs
@@ -9,6 +9,7 @@ using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Indexers;
+using NzbDrone.Core.Localization;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Validation;
@@ -23,8 +24,9 @@ namespace NzbDrone.Core.Download.Clients.Deluge
ISeedConfigProvider seedConfigProvider,
IConfigService configService,
IDiskProvider diskProvider,
+ ILocalizationService localizationService,
Logger logger)
- : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
+ : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
{
_proxy = proxy;
}
diff --git a/src/NzbDrone.Core/Download/Clients/DownloadStation/TorrentDownloadStation.cs b/src/NzbDrone.Core/Download/Clients/DownloadStation/TorrentDownloadStation.cs
index 482e86e30..97afe9480 100644
--- a/src/NzbDrone.Core/Download/Clients/DownloadStation/TorrentDownloadStation.cs
+++ b/src/NzbDrone.Core/Download/Clients/DownloadStation/TorrentDownloadStation.cs
@@ -10,6 +10,7 @@ using NzbDrone.Common.Extensions;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Download.Clients.DownloadStation.Proxies;
using NzbDrone.Core.Indexers;
+using NzbDrone.Core.Localization;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.ThingiProvider;
using NzbDrone.Core.Validation;
@@ -33,8 +34,9 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation
ISeedConfigProvider seedConfigProvider,
IConfigService configService,
IDiskProvider diskProvider,
+ ILocalizationService localizationService,
Logger logger)
- : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
+ : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
{
_dsInfoProxy = dsInfoProxy;
_dsTaskProxySelector = dsTaskProxySelector;
diff --git a/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs b/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs
index 4661c6518..e78f5f5d2 100644
--- a/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs
+++ b/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs
@@ -9,6 +9,7 @@ using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Download.Clients.DownloadStation.Proxies;
+using NzbDrone.Core.Localization;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.ThingiProvider;
using NzbDrone.Core.Validation;
@@ -31,8 +32,9 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation
IHttpClient httpClient,
IConfigService configService,
IDiskProvider diskProvider,
+ ILocalizationService localizationService,
Logger logger)
- : base(httpClient, configService, diskProvider, logger)
+ : base(httpClient, configService, diskProvider, localizationService, logger)
{
_dsInfoProxy = dsInfoProxy;
_dsTaskProxySelector = dsTaskProxySelector;
diff --git a/src/NzbDrone.Core/Download/Clients/Flood/Flood.cs b/src/NzbDrone.Core/Download/Clients/Flood/Flood.cs
index 845b4fa1c..5d39d7b5f 100644
--- a/src/NzbDrone.Core/Download/Clients/Flood/Flood.cs
+++ b/src/NzbDrone.Core/Download/Clients/Flood/Flood.cs
@@ -8,6 +8,7 @@ using NzbDrone.Common.Extensions;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Download.Clients.Flood.Models;
using NzbDrone.Core.Indexers;
+using NzbDrone.Core.Localization;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.ThingiProvider;
@@ -22,8 +23,9 @@ namespace NzbDrone.Core.Download.Clients.Flood
ISeedConfigProvider seedConfigProvider,
IConfigService configService,
IDiskProvider diskProvider,
+ ILocalizationService localizationService,
Logger logger)
- : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
+ : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
{
_proxy = proxy;
}
diff --git a/src/NzbDrone.Core/Download/Clients/FreeboxDownload/TorrentFreeboxDownload.cs b/src/NzbDrone.Core/Download/Clients/FreeboxDownload/TorrentFreeboxDownload.cs
index cec808592..00e7e06b4 100644
--- a/src/NzbDrone.Core/Download/Clients/FreeboxDownload/TorrentFreeboxDownload.cs
+++ b/src/NzbDrone.Core/Download/Clients/FreeboxDownload/TorrentFreeboxDownload.cs
@@ -6,6 +6,7 @@ using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Indexers;
+using NzbDrone.Core.Localization;
using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.Download.Clients.FreeboxDownload
@@ -19,8 +20,9 @@ namespace NzbDrone.Core.Download.Clients.FreeboxDownload
ISeedConfigProvider seedConfigProvider,
IConfigService configService,
IDiskProvider diskProvider,
+ ILocalizationService localizationService,
Logger logger)
- : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
+ : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
{
_proxy = proxy;
}
diff --git a/src/NzbDrone.Core/Download/Clients/Hadouken/Hadouken.cs b/src/NzbDrone.Core/Download/Clients/Hadouken/Hadouken.cs
index b5aa1eb06..560c40eb3 100644
--- a/src/NzbDrone.Core/Download/Clients/Hadouken/Hadouken.cs
+++ b/src/NzbDrone.Core/Download/Clients/Hadouken/Hadouken.cs
@@ -6,6 +6,7 @@ using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Indexers;
+using NzbDrone.Core.Localization;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Validation;
@@ -20,8 +21,9 @@ namespace NzbDrone.Core.Download.Clients.Hadouken
ISeedConfigProvider seedConfigProvider,
IConfigService configService,
IDiskProvider diskProvider,
+ ILocalizationService localizationService,
Logger logger)
- : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
+ : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
{
_proxy = proxy;
}
diff --git a/src/NzbDrone.Core/Download/Clients/NzbVortex/NzbVortex.cs b/src/NzbDrone.Core/Download/Clients/NzbVortex/NzbVortex.cs
index e1088780d..a87460d71 100644
--- a/src/NzbDrone.Core/Download/Clients/NzbVortex/NzbVortex.cs
+++ b/src/NzbDrone.Core/Download/Clients/NzbVortex/NzbVortex.cs
@@ -7,6 +7,7 @@ using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http;
using NzbDrone.Core.Configuration;
+using NzbDrone.Core.Localization;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Validation;
@@ -20,8 +21,9 @@ namespace NzbDrone.Core.Download.Clients.NzbVortex
IHttpClient httpClient,
IConfigService configService,
IDiskProvider diskProvider,
+ ILocalizationService localizationService,
Logger logger)
- : base(httpClient, configService, diskProvider, logger)
+ : base(httpClient, configService, diskProvider, localizationService, logger)
{
_proxy = proxy;
}
diff --git a/src/NzbDrone.Core/Download/Clients/Nzbget/Nzbget.cs b/src/NzbDrone.Core/Download/Clients/Nzbget/Nzbget.cs
index b286bf922..49ada68e6 100644
--- a/src/NzbDrone.Core/Download/Clients/Nzbget/Nzbget.cs
+++ b/src/NzbDrone.Core/Download/Clients/Nzbget/Nzbget.cs
@@ -10,6 +10,7 @@ using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Exceptions;
+using NzbDrone.Core.Localization;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Validation;
@@ -18,15 +19,14 @@ namespace NzbDrone.Core.Download.Clients.Nzbget
public class Nzbget : UsenetClientBase
{
private readonly INzbgetProxy _proxy;
- private readonly string[] _successStatus = { "SUCCESS", "NONE" };
- private readonly string[] _deleteFailedStatus = { "HEALTH", "DUPE", "SCAN", "COPY", "BAD" };
public Nzbget(INzbgetProxy proxy,
IHttpClient httpClient,
IConfigService configService,
IDiskProvider diskProvider,
+ ILocalizationService localizationService,
Logger logger)
- : base(httpClient, configService, diskProvider, logger)
+ : base(httpClient, configService, diskProvider, localizationService, logger)
{
_proxy = proxy;
}
diff --git a/src/NzbDrone.Core/Download/Clients/Pneumatic/Pneumatic.cs b/src/NzbDrone.Core/Download/Clients/Pneumatic/Pneumatic.cs
index a0b1e85fd..99f80ab22 100644
--- a/src/NzbDrone.Core/Download/Clients/Pneumatic/Pneumatic.cs
+++ b/src/NzbDrone.Core/Download/Clients/Pneumatic/Pneumatic.cs
@@ -8,6 +8,7 @@ using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Indexers;
+using NzbDrone.Core.Localization;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model;
@@ -17,8 +18,9 @@ namespace NzbDrone.Core.Download.Clients.Pneumatic
{
public Pneumatic(IConfigService configService,
IDiskProvider diskProvider,
+ ILocalizationService localizationService,
Logger logger)
- : base(configService, diskProvider, logger)
+ : base(configService, diskProvider, localizationService, logger)
{
}
diff --git a/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrent.cs b/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrent.cs
index 6555ce6cc..3d1863784 100644
--- a/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrent.cs
+++ b/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrent.cs
@@ -8,6 +8,7 @@ using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Indexers;
+using NzbDrone.Core.Localization;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Validation;
@@ -30,8 +31,9 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
IConfigService configService,
IDiskProvider diskProvider,
ICacheManager cacheManager,
+ ILocalizationService localizationService,
Logger logger)
- : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
+ : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
{
_proxySelector = proxySelector;
diff --git a/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs b/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs
index 584e392b2..246262527 100644
--- a/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs
+++ b/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs
@@ -9,6 +9,7 @@ using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Exceptions;
+using NzbDrone.Core.Localization;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Validation;
@@ -22,8 +23,9 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
IHttpClient httpClient,
IConfigService configService,
IDiskProvider diskProvider,
+ ILocalizationService localizationService,
Logger logger)
- : base(httpClient, configService, diskProvider, logger)
+ : base(httpClient, configService, diskProvider, localizationService, logger)
{
_proxy = proxy;
}
diff --git a/src/NzbDrone.Core/Download/Clients/Transmission/Transmission.cs b/src/NzbDrone.Core/Download/Clients/Transmission/Transmission.cs
index c62a1f6ff..ad14de894 100644
--- a/src/NzbDrone.Core/Download/Clients/Transmission/Transmission.cs
+++ b/src/NzbDrone.Core/Download/Clients/Transmission/Transmission.cs
@@ -5,6 +5,7 @@ using NLog;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Indexers;
+using NzbDrone.Core.Localization;
namespace NzbDrone.Core.Download.Clients.Transmission
{
@@ -15,8 +16,9 @@ namespace NzbDrone.Core.Download.Clients.Transmission
ISeedConfigProvider seedConfigProvider,
IConfigService configService,
IDiskProvider diskProvider,
+ ILocalizationService localizationService,
Logger logger)
- : base(proxy, torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
+ : base(proxy, torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
{
}
diff --git a/src/NzbDrone.Core/Download/Clients/Transmission/TransmissionBase.cs b/src/NzbDrone.Core/Download/Clients/Transmission/TransmissionBase.cs
index f5cf1fed9..977e3bfee 100644
--- a/src/NzbDrone.Core/Download/Clients/Transmission/TransmissionBase.cs
+++ b/src/NzbDrone.Core/Download/Clients/Transmission/TransmissionBase.cs
@@ -6,6 +6,7 @@ using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Indexers;
+using NzbDrone.Core.Localization;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Validation;
@@ -20,8 +21,9 @@ namespace NzbDrone.Core.Download.Clients.Transmission
ISeedConfigProvider seedConfigProvider,
IConfigService configService,
IDiskProvider diskProvider,
+ ILocalizationService localizationService,
Logger logger)
- : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
+ : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
{
_proxy = proxy;
}
diff --git a/src/NzbDrone.Core/Download/Clients/Transmission/TransmissionProxy.cs b/src/NzbDrone.Core/Download/Clients/Transmission/TransmissionProxy.cs
index 2c2334f44..76f8684e0 100644
--- a/src/NzbDrone.Core/Download/Clients/Transmission/TransmissionProxy.cs
+++ b/src/NzbDrone.Core/Download/Clients/Transmission/TransmissionProxy.cs
@@ -4,6 +4,7 @@ using System.Net;
using Newtonsoft.Json.Linq;
using NLog;
using NzbDrone.Common.Cache;
+using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http;
using NzbDrone.Common.Serializer;
@@ -208,7 +209,7 @@ namespace NzbDrone.Core.Download.Clients.Transmission
private void AuthenticateClient(HttpRequestBuilder requestBuilder, TransmissionSettings settings, bool reauthenticate = false)
{
- var authKey = string.Format("{0}:{1}", requestBuilder.BaseUrl, settings.Password);
+ var authKey = $"{requestBuilder.BaseUrl}:{settings.Password}";
var sessionId = _authSessionIDCache.Find(authKey);
@@ -220,24 +221,26 @@ namespace NzbDrone.Core.Download.Clients.Transmission
authLoginRequest.SuppressHttpError = true;
var response = _httpClient.Execute(authLoginRequest);
- if (response.StatusCode == HttpStatusCode.MovedPermanently)
- {
- var url = response.Headers.GetSingleValue("Location");
- throw new DownloadClientException("Remote site redirected to " + url);
- }
- else if (response.StatusCode == HttpStatusCode.Conflict)
+ switch (response.StatusCode)
{
- sessionId = response.Headers.GetSingleValue("X-Transmission-Session-Id");
+ case HttpStatusCode.MovedPermanently:
+ var url = response.Headers.GetSingleValue("Location");
- if (sessionId == null)
- {
- throw new DownloadClientException("Remote host did not return a Session Id.");
- }
- }
- else
- {
- throw new DownloadClientAuthenticationException("Failed to authenticate with Transmission.");
+ throw new DownloadClientException("Remote site redirected to " + url);
+ case HttpStatusCode.Forbidden:
+ throw new DownloadClientException($"Failed to authenticate with Transmission. It may be necessary to add {BuildInfo.AppName}'s IP address to RPC whitelist.");
+ case HttpStatusCode.Conflict:
+ sessionId = response.Headers.GetSingleValue("X-Transmission-Session-Id");
+
+ if (sessionId == null)
+ {
+ throw new DownloadClientException("Remote host did not return a Session Id.");
+ }
+
+ break;
+ default:
+ throw new DownloadClientAuthenticationException("Failed to authenticate with Transmission.");
}
_logger.Debug("Transmission authentication succeeded.");
diff --git a/src/NzbDrone.Core/Download/Clients/Vuze/Vuze.cs b/src/NzbDrone.Core/Download/Clients/Vuze/Vuze.cs
index 79f5df0e4..3b87962bb 100644
--- a/src/NzbDrone.Core/Download/Clients/Vuze/Vuze.cs
+++ b/src/NzbDrone.Core/Download/Clients/Vuze/Vuze.cs
@@ -4,6 +4,7 @@ using NzbDrone.Common.Disk;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Download.Clients.Transmission;
using NzbDrone.Core.Indexers;
+using NzbDrone.Core.Localization;
namespace NzbDrone.Core.Download.Clients.Vuze
{
@@ -16,8 +17,9 @@ namespace NzbDrone.Core.Download.Clients.Vuze
ISeedConfigProvider seedConfigProvider,
IConfigService configService,
IDiskProvider diskProvider,
+ ILocalizationService localizationService,
Logger logger)
- : base(proxy, torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
+ : base(proxy, torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
{
}
diff --git a/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrent.cs b/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrent.cs
index 5218f9ebe..628ebdf52 100644
--- a/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrent.cs
+++ b/src/NzbDrone.Core/Download/Clients/rTorrent/RTorrent.cs
@@ -10,6 +10,7 @@ using NzbDrone.Core.Configuration;
using NzbDrone.Core.Download.Clients.rTorrent;
using NzbDrone.Core.Exceptions;
using NzbDrone.Core.Indexers;
+using NzbDrone.Core.Localization;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.ThingiProvider;
using NzbDrone.Core.Validation;
@@ -27,8 +28,9 @@ namespace NzbDrone.Core.Download.Clients.RTorrent
IConfigService configService,
IDiskProvider diskProvider,
IRTorrentDirectoryValidator rTorrentDirectoryValidator,
+ ILocalizationService localizationService,
Logger logger)
- : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
+ : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
{
_proxy = proxy;
_rTorrentDirectoryValidator = rTorrentDirectoryValidator;
diff --git a/src/NzbDrone.Core/Download/Clients/uTorrent/UTorrent.cs b/src/NzbDrone.Core/Download/Clients/uTorrent/UTorrent.cs
index ef12042fb..98ad41eec 100644
--- a/src/NzbDrone.Core/Download/Clients/uTorrent/UTorrent.cs
+++ b/src/NzbDrone.Core/Download/Clients/uTorrent/UTorrent.cs
@@ -7,7 +7,9 @@ using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Indexers;
+using NzbDrone.Core.Localization;
using NzbDrone.Core.Parser.Model;
+using NzbDrone.Core.ThingiProvider;
using NzbDrone.Core.Validation;
namespace NzbDrone.Core.Download.Clients.UTorrent
@@ -21,8 +23,9 @@ namespace NzbDrone.Core.Download.Clients.UTorrent
ISeedConfigProvider seedConfigProvider,
IConfigService configService,
IDiskProvider diskProvider,
+ ILocalizationService localizationService,
Logger logger)
- : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, logger)
+ : base(torrentFileInfoReader, seedConfigProvider, configService, diskProvider, localizationService, logger)
{
_proxy = proxy;
}
@@ -72,6 +75,9 @@ namespace NzbDrone.Core.Download.Clients.UTorrent
}
public override string Name => "uTorrent";
+
+ public override ProviderMessage Message => new (_localizationService.GetLocalizedString("DownloadClientUTorrentProviderMessage"), ProviderMessageType.Warning);
+
public override bool SupportsCategories => true;
protected override void Test(List failures)
diff --git a/src/NzbDrone.Core/Download/DownloadClientBase.cs b/src/NzbDrone.Core/Download/DownloadClientBase.cs
index 7659c32a6..9a7da6fd6 100644
--- a/src/NzbDrone.Core/Download/DownloadClientBase.cs
+++ b/src/NzbDrone.Core/Download/DownloadClientBase.cs
@@ -8,6 +8,7 @@ using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Indexers;
+using NzbDrone.Core.Localization;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.ThingiProvider;
using NzbDrone.Core.Validation;
@@ -19,6 +20,7 @@ namespace NzbDrone.Core.Download
{
protected readonly IConfigService _configService;
protected readonly IDiskProvider _diskProvider;
+ protected readonly ILocalizationService _localizationService;
protected readonly Logger _logger;
public abstract string Name { get; }
@@ -40,10 +42,12 @@ namespace NzbDrone.Core.Download
protected DownloadClientBase(IConfigService configService,
IDiskProvider diskProvider,
+ ILocalizationService localizationService,
Logger logger)
{
_configService = configService;
_diskProvider = diskProvider;
+ _localizationService = localizationService;
_logger = logger;
}
diff --git a/src/NzbDrone.Core/Download/TorrentClientBase.cs b/src/NzbDrone.Core/Download/TorrentClientBase.cs
index 322cc206b..217e70a31 100644
--- a/src/NzbDrone.Core/Download/TorrentClientBase.cs
+++ b/src/NzbDrone.Core/Download/TorrentClientBase.cs
@@ -8,6 +8,7 @@ using NzbDrone.Common.Extensions;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Exceptions;
using NzbDrone.Core.Indexers;
+using NzbDrone.Core.Localization;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.ThingiProvider;
@@ -24,8 +25,9 @@ namespace NzbDrone.Core.Download
ISeedConfigProvider seedConfigProvider,
IConfigService configService,
IDiskProvider diskProvider,
+ ILocalizationService localizationService,
Logger logger)
- : base(configService, diskProvider, logger)
+ : base(configService, diskProvider, localizationService, logger)
{
_torrentFileInfoReader = torrentFileInfoReader;
_seedConfigProvider = seedConfigProvider;
diff --git a/src/NzbDrone.Core/Download/UsenetClientBase.cs b/src/NzbDrone.Core/Download/UsenetClientBase.cs
index ac62359aa..1e85ffbb9 100644
--- a/src/NzbDrone.Core/Download/UsenetClientBase.cs
+++ b/src/NzbDrone.Core/Download/UsenetClientBase.cs
@@ -5,6 +5,7 @@ using NzbDrone.Common.Disk;
using NzbDrone.Common.Http;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Indexers;
+using NzbDrone.Core.Localization;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.ThingiProvider;
@@ -19,8 +20,9 @@ namespace NzbDrone.Core.Download
protected UsenetClientBase(IHttpClient httpClient,
IConfigService configService,
IDiskProvider diskProvider,
+ ILocalizationService localizationService,
Logger logger)
- : base(configService, diskProvider, logger)
+ : base(configService, diskProvider, localizationService, logger)
{
_httpClient = httpClient;
}
diff --git a/src/NzbDrone.Core/History/HistoryService.cs b/src/NzbDrone.Core/History/HistoryService.cs
index 144258272..e78e5d229 100644
--- a/src/NzbDrone.Core/History/HistoryService.cs
+++ b/src/NzbDrone.Core/History/HistoryService.cs
@@ -224,7 +224,7 @@ namespace NzbDrone.Core.History
if (message.Release.PublishDate != DateTime.MinValue)
{
- history.Data.Add("PublishedDate", message.Release.PublishDate.ToString("s") + "Z");
+ history.Data.Add("PublishedDate", message.Release.PublishDate.ToUniversalTime().ToString("s") + "Z");
}
_historyRepository.Insert(history);
diff --git a/src/NzbDrone.Core/Indexers/Definitions/AnimeBytes.cs b/src/NzbDrone.Core/Indexers/Definitions/AnimeBytes.cs
index 37729fd00..f45ff4173 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/AnimeBytes.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/AnimeBytes.cs
@@ -232,7 +232,7 @@ namespace NzbDrone.Core.Indexers.Definitions
if (queryCats.Any() && searchCriteria is TvSearchCriteria { Season: > 0 })
{
// Avoid searching for specials if it's a non-zero season search
- queryCats.RemoveAll(cat => cat is "anime[tv_special]" or "anime[ova]" or "anime[ona]" or "anime[dvd_special]" or "anime[bd_special]");
+ queryCats.RemoveAll(cat => cat is "anime[tv_special]" or "anime[ova]" or "anime[dvd_special]" or "anime[bd_special]");
}
if (queryCats.Any())
@@ -301,6 +301,8 @@ namespace NzbDrone.Core.Indexers.Definitions
};
private static readonly HashSet ExcludedFileExtensions = new (StringComparer.OrdinalIgnoreCase) { ".mka", ".mds", ".md5", ".nfo", ".sfv", ".ass", ".mks", ".srt", ".ssa", ".sup", ".jpeg", ".jpg", ".png", ".otf", ".ttf" };
+ private static readonly string[] PropertiesSeparator = { " | ", " / " };
+
private readonly AnimeBytesSettings _settings;
public AnimeBytesParser(AnimeBytesSettings settings)
@@ -324,6 +326,11 @@ namespace NzbDrone.Core.Indexers.Definitions
var response = STJson.Deserialize(indexerResponse.Content);
+ if (response.Error.IsNotNullOrWhiteSpace())
+ {
+ throw new IndexerException(indexerResponse, "Unexpected response from indexer request: {0}", response.Error);
+ }
+
if (response.Matches == 0)
{
return releaseInfos.ToArray();
@@ -393,38 +400,48 @@ namespace NzbDrone.Core.Indexers.Definitions
var minimumSeedTime = 259200 + (int)(size / (int)Math.Pow(1024, 3) * 18000);
var propertyList = WebUtility.HtmlDecode(torrent.Property)
- .Split(new[] { " | ", " / " }, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries)
+ .Split(PropertiesSeparator, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries)
.ToList();
propertyList.RemoveAll(p => ExcludedProperties.Any(p.ContainsIgnoreCase));
var properties = propertyList.ToHashSet();
- if (torrent.Files.Any(f => f.FileName.ContainsIgnoreCase("Remux")))
- {
- var resolutionProperty = properties.FirstOrDefault(RemuxResolutions.ContainsIgnoreCase);
-
- if (resolutionProperty.IsNotNullOrWhiteSpace())
- {
- properties.Add($"{resolutionProperty} Remux");
- }
- }
-
- if (properties.Any(p => p.StartsWithIgnoreCase("M2TS")))
+ if (properties.Any(p => p.StartsWith("M2TS", StringComparison.Ordinal)))
{
properties.Add("BR-DISK");
}
- if (_settings.ExcludeRaw &&
- properties.Any(p => p.StartsWithIgnoreCase("RAW") || p.Contains("BR-DISK")))
+ var isBluRayDisk = properties.Any(p => p.Equals("RAW", StringComparison.Ordinal) || p.StartsWith("M2TS", StringComparison.Ordinal) || p.StartsWith("ISO", StringComparison.Ordinal));
+
+ if (_settings.ExcludeRaw && isBluRayDisk)
{
continue;
}
+ properties = properties
+ .Select(property =>
+ {
+ if (isBluRayDisk)
+ {
+ property = Regex.Replace(property, @"\b(H\.?265)\b", "HEVC", RegexOptions.Compiled | RegexOptions.IgnoreCase);
+ property = Regex.Replace(property, @"\b(H\.?264)\b", "AVC", RegexOptions.Compiled | RegexOptions.IgnoreCase);
+ }
+
+ if (torrent.Files.Any(f => f.FileName.ContainsIgnoreCase("Remux"))
+ && RemuxResolutions.ContainsIgnoreCase(property))
+ {
+ property += " Remux";
+ }
+
+ return property;
+ })
+ .ToHashSet();
+
int? season = null;
int? episode = null;
var releaseInfo = _settings.EnableSonarrCompatibility && categoryName == "Anime" ? "S01" : "";
- var editionTitle = torrent.EditionData.EditionTitle;
+ var editionTitle = torrent.EditionData?.EditionTitle;
if (editionTitle.IsNotNullOrWhiteSpace())
{
@@ -569,7 +586,7 @@ namespace NzbDrone.Core.Indexers.Definitions
if (_settings.UseFilenameForSingleEpisodes)
{
- var files = torrent.Files;
+ var files = torrent.Files.ToList();
if (files.Count > 1)
{
@@ -607,11 +624,13 @@ namespace NzbDrone.Core.Indexers.Definitions
}
}
+ var useYearInTitle = year is > 0 && torrent.Files.Any(f => f.FileName.Contains(year.Value.ToString()));
+
foreach (var title in synonyms)
{
var releaseTitle = groupName is "Movie" or "Live Action Movie" ?
$"{releaseGroup}{title} {year} {infoString}" :
- $"{releaseGroup}{title} {releaseInfo} {infoString}";
+ $"{releaseGroup}{title}{(useYearInTitle ? $" {year}" : string.Empty)} {releaseInfo} {infoString}";
var guid = new Uri(details + "?nh=" + HashUtil.CalculateMd5(title));
@@ -650,7 +669,7 @@ namespace NzbDrone.Core.Indexers.Definitions
{
var advancedSeasonRegex = new Regex(@"\b(?:(?\d+)(?:st|nd|rd|th) Season|Season (?\d+))\b", RegexOptions.Compiled | RegexOptions.IgnoreCase);
var seasonCharactersRegex = new Regex(@"(I{2,})$", RegexOptions.Compiled);
- var seasonNumberRegex = new Regex(@"\b(?[2-9])$", RegexOptions.Compiled);
+ var seasonNumberRegex = new Regex(@"\b(?[2-9])$", RegexOptions.Compiled);
foreach (var title in titles)
{
@@ -755,7 +774,9 @@ namespace NzbDrone.Core.Indexers.Definitions
public int Matches { get; set; }
[JsonPropertyName("Groups")]
- public AnimeBytesGroup[] Groups { get; set; }
+ public IReadOnlyCollection Groups { get; set; }
+
+ public string Error { get; set; }
}
public class AnimeBytesGroup
@@ -783,16 +804,16 @@ namespace NzbDrone.Core.Indexers.Definitions
public string Image { get; set; }
[JsonPropertyName("SynonymnsV2")]
- public Dictionary Synonymns { get; set; }
+ public IReadOnlyDictionary Synonymns { get; set; }
[JsonPropertyName("Description")]
public string Description { get; set; }
[JsonPropertyName("Tags")]
- public List Tags { get; set; }
+ public IReadOnlyCollection Tags { get; set; }
[JsonPropertyName("Torrents")]
- public List Torrents { get; set; }
+ public IReadOnlyCollection Torrents { get; set; }
}
public class AnimeBytesTorrent
@@ -831,7 +852,7 @@ namespace NzbDrone.Core.Indexers.Definitions
public int FileCount { get; set; }
[JsonPropertyName("FileList")]
- public List Files { get; set; }
+ public IReadOnlyCollection Files { get; set; }
[JsonPropertyName("UploadTime")]
public string UploadTime { get; set; }
diff --git a/src/NzbDrone.Core/Indexers/Definitions/AnimeTorrents.cs b/src/NzbDrone.Core/Indexers/Definitions/AnimeTorrents.cs
index 7ba07ab80..14b64979b 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/AnimeTorrents.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/AnimeTorrents.cs
@@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text.RegularExpressions;
-using System.Threading.Tasks;
using AngleSharp.Html.Parser;
using NLog;
using NzbDrone.Common.Extensions;
@@ -44,46 +43,19 @@ namespace NzbDrone.Core.Indexers.Definitions
return new AnimeTorrentsParser(Settings, Capabilities.Categories);
}
- protected override async Task DoLogin()
- {
- UpdateCookies(null, null);
-
- var loginUrl = Settings.BaseUrl + "login.php";
-
- var loginPage = await ExecuteAuth(new HttpRequest(loginUrl));
-
- var requestBuilder = new HttpRequestBuilder(loginUrl)
- {
- LogResponseContent = true,
- AllowAutoRedirect = true
- };
-
- var authLoginRequest = requestBuilder
- .Post()
- .SetCookies(loginPage.GetCookies())
- .AddFormParameter("username", Settings.Username)
- .AddFormParameter("password", Settings.Password)
- .AddFormParameter("form", "login")
- .AddFormParameter("rememberme[]", "1")
- .SetHeader("Content-Type", "application/x-www-form-urlencoded")
- .SetHeader("Referer", loginUrl)
- .Build();
-
- var response = await ExecuteAuth(authLoginRequest);
-
- if (response.Content == null || !response.Content.Contains("logout.php"))
- {
- throw new IndexerAuthException("AnimeTorrents authentication failed");
- }
-
- UpdateCookies(response.GetCookies(), DateTime.Now.AddDays(30));
-
- _logger.Debug("AnimeTorrents authentication succeeded");
- }
-
protected override bool CheckIfLoginNeeded(HttpResponse httpResponse)
{
- return httpResponse.Content.Contains("Access Denied!") || httpResponse.Content.Contains("login.php");
+ if (httpResponse.Content.Contains("Access Denied!") || httpResponse.Content.Contains("login.php"))
+ {
+ throw new IndexerAuthException("AnimeTorrents authentication with cookies failed.");
+ }
+
+ return false;
+ }
+
+ protected override IDictionary GetCookies()
+ {
+ return CookieUtil.CookieHeaderToDictionary(Settings.Cookie);
}
private IndexerCapabilities SetCapabilities()
@@ -119,6 +91,7 @@ namespace NzbDrone.Core.Indexers.Definitions
caps.Categories.AddCategoryMapping(17, NewznabStandardCategory.BooksComics, "Doujinshi");
caps.Categories.AddCategoryMapping(18, NewznabStandardCategory.BooksComics, "Doujinshi 18+");
caps.Categories.AddCategoryMapping(19, NewznabStandardCategory.Audio, "OST");
+ caps.Categories.AddCategoryMapping(20, NewznabStandardCategory.AudioAudiobook, "Audiobooks");
return caps;
}
@@ -291,7 +264,7 @@ namespace NzbDrone.Core.Indexers.Definitions
var qTitleLink = row.QuerySelector("td:nth-of-type(2) a:nth-of-type(1)");
var title = qTitleLink?.TextContent.Trim();
- // If we search an get no results, we still get a table just with no info.
+ // If we search and get no results, we still get a table just with no info.
if (title.IsNullOrWhiteSpace())
{
break;
@@ -306,6 +279,8 @@ namespace NzbDrone.Core.Indexers.Definitions
var connections = row.QuerySelector("td:nth-of-type(8)").TextContent.Trim().Split('/', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
var seeders = ParseUtil.CoerceInt(connections[0]);
+ var leechers = ParseUtil.CoerceInt(connections[1]);
+ var grabs = ParseUtil.CoerceInt(connections[2]);
var categoryLink = row.QuerySelector("td:nth-of-type(1) a")?.GetAttribute("href") ?? string.Empty;
var categoryId = ParseUtil.GetArgumentFromQueryString(categoryLink, "cat");
@@ -327,17 +302,17 @@ namespace NzbDrone.Core.Indexers.Definitions
PublishDate = publishedDate,
Size = ParseUtil.GetBytes(row.QuerySelector("td:nth-of-type(6)").TextContent.Trim()),
Seeders = seeders,
- Peers = ParseUtil.CoerceInt(connections[1]) + seeders,
- Grabs = ParseUtil.CoerceInt(connections[2]),
+ Peers = leechers + seeders,
+ Grabs = grabs,
DownloadVolumeFactor = downloadVolumeFactor,
UploadVolumeFactor = 1,
Genres = row.QuerySelectorAll("td:nth-of-type(2) a.tortags").Select(t => t.TextContent.Trim()).ToList()
};
- var uLFactorImg = row.QuerySelector("img[alt*=\"x Multiplier Torrent\"]");
- if (uLFactorImg != null)
+ var uploadFactor = row.QuerySelector("img[alt*=\"x Multiplier Torrent\"]")?.GetAttribute("alt");
+ if (uploadFactor != null)
{
- release.UploadVolumeFactor = ParseUtil.CoerceDouble(uLFactorImg.GetAttribute("alt").Split('x')[0]);
+ release.UploadVolumeFactor = ParseUtil.CoerceDouble(uploadFactor.Split('x')[0]);
}
releaseInfos.Add(release);
@@ -349,7 +324,7 @@ namespace NzbDrone.Core.Indexers.Definitions
public Action, DateTime?> CookiesUpdater { get; set; }
}
- public class AnimeTorrentsSettings : UserPassTorrentBaseSettings
+ public class AnimeTorrentsSettings : CookieTorrentBaseSettings
{
public AnimeTorrentsSettings()
{
@@ -360,7 +335,7 @@ namespace NzbDrone.Core.Indexers.Definitions
[FieldDefinition(4, Label = "Freeleech Only", Type = FieldType.Checkbox, HelpText = "Show freeleech torrents only")]
public bool FreeleechOnly { get; set; }
- [FieldDefinition(5, Label = "Downloadable Only", Type = FieldType.Checkbox, HelpText = "Search downloadable torrents only (enable this only if your account class is Newbie)")]
+ [FieldDefinition(5, Label = "Downloadable Only", Type = FieldType.Checkbox, HelpText = "Search downloadable torrents only (enable this only if your account class is Newbie)", Advanced = true)]
public bool DownloadableOnly { get; set; }
}
}
diff --git a/src/NzbDrone.Core/Indexers/Definitions/BeyondHD.cs b/src/NzbDrone.Core/Indexers/Definitions/BeyondHD.cs
index f9194f00a..3fc4a3328 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/BeyondHD.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/BeyondHD.cs
@@ -55,7 +55,7 @@ namespace NzbDrone.Core.Indexers.Definitions
return FilterReleasesByQuery(cleanReleases, searchCriteria).ToList();
}
- private IndexerCapabilities SetCapabilities()
+ private static IndexerCapabilities SetCapabilities()
{
var caps = new IndexerCapabilities
{
@@ -69,7 +69,8 @@ namespace NzbDrone.Core.Indexers.Definitions
},
Flags = new List
{
- IndexerFlag.Internal
+ IndexerFlag.Internal,
+ IndexerFlag.Exclusive,
}
};
@@ -91,7 +92,7 @@ namespace NzbDrone.Core.Indexers.Definitions
_capabilities = capabilities;
}
- private IEnumerable GetPagedRequests(SearchCriteriaBase searchCriteria, string term, string imdbId = null, int tmdbId = 0)
+ private IEnumerable GetPagedRequests(SearchCriteriaBase searchCriteria, string searchTerm, string imdbId = null, int tmdbId = 0)
{
var body = new Dictionary
{
@@ -128,9 +129,9 @@ namespace NzbDrone.Core.Indexers.Definitions
body.Add("tmdb_id", tmdbId);
}
- if (term.IsNotNullOrWhiteSpace())
+ if (searchTerm.IsNotNullOrWhiteSpace())
{
- body.Add("search", term);
+ body.Add("search", searchTerm.Trim());
}
var cats = _capabilities.Categories.MapTorznabCapsToTrackers(searchCriteria.Categories);
@@ -198,7 +199,16 @@ namespace NzbDrone.Core.Indexers.Definitions
{
var pageableRequests = new IndexerPageableRequestChain();
- pageableRequests.Add(GetPagedRequests(searchCriteria, searchCriteria.SanitizedTvSearchString, searchCriteria.FullImdbId));
+ var searchTerm = searchCriteria.SanitizedTvSearchString;
+
+ if (searchCriteria.Season is > 0 &&
+ searchCriteria.Episode.IsNotNullOrWhiteSpace() &&
+ DateTime.TryParseExact($"{searchCriteria.Season} {searchCriteria.Episode}", "yyyy MM/dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out var showDate))
+ {
+ searchTerm = $"{searchCriteria.SanitizedSearchTerm} {showDate.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)}";
+ }
+
+ pageableRequests.Add(GetPagedRequests(searchCriteria, searchTerm, searchCriteria.FullImdbId));
return pageableRequests;
}
@@ -275,13 +285,6 @@ namespace NzbDrone.Core.Indexers.Definitions
var details = row.InfoUrl;
var link = row.DownloadLink;
- var flags = new HashSet();
-
- if (row.Internal)
- {
- flags.Add(IndexerFlag.Internal);
- }
-
var release = new TorrentInfo
{
Title = row.Name,
@@ -291,7 +294,7 @@ namespace NzbDrone.Core.Indexers.Definitions
Guid = details,
Categories = _categories.MapTrackerCatDescToNewznab(row.Category),
PublishDate = DateTime.Parse(row.CreatedAt, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal),
- IndexerFlags = flags,
+ IndexerFlags = GetIndexerFlags(row),
Size = row.Size,
Grabs = row.Grabs,
Seeders = row.Seeders,
@@ -301,6 +304,8 @@ namespace NzbDrone.Core.Indexers.Definitions
UploadVolumeFactor = 1,
MinimumRatio = 1,
MinimumSeedTime = 172800, // 120 hours
+ Languages = row.Audios?.Split(",", StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries).ToList() ?? new List(),
+ Subs = row.Subtitles?.Split(",", StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries).ToList() ?? new List(),
};
// BHD can return crazy values for tmdb
@@ -319,6 +324,23 @@ namespace NzbDrone.Core.Indexers.Definitions
.ToArray();
}
+ private static HashSet GetIndexerFlags(BeyondHDTorrent item)
+ {
+ var flags = new HashSet();
+
+ if (item.Internal)
+ {
+ flags.Add(IndexerFlag.Internal);
+ }
+
+ if (item.Exclusive)
+ {
+ flags.Add(IndexerFlag.Exclusive);
+ }
+
+ return flags;
+ }
+
public Action, DateTime?> CookiesUpdater { get; set; }
}
@@ -450,9 +472,13 @@ namespace NzbDrone.Core.Indexers.Definitions
[JsonPropertyName("times_completed")]
public int Grabs { get; set; }
+
public int Seeders { get; set; }
public int Leechers { get; set; }
+ public string Audios { get; set; }
+ public string Subtitles { get; set; }
+
[JsonPropertyName("created_at")]
public string CreatedAt { get; set; }
@@ -478,6 +504,8 @@ namespace NzbDrone.Core.Indexers.Definitions
public bool Limited { get; set; }
+ public bool Exclusive { get; set; }
+
public bool Internal { get; set; }
}
}
diff --git a/src/NzbDrone.Core/Indexers/Definitions/BroadcastheNet/BroadcastheNetParser.cs b/src/NzbDrone.Core/Indexers/Definitions/BroadcastheNet/BroadcastheNetParser.cs
index 394fed9ad..60c2c0a58 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/BroadcastheNet/BroadcastheNetParser.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/BroadcastheNet/BroadcastheNetParser.cs
@@ -88,7 +88,7 @@ namespace NzbDrone.Core.Indexers.BroadcastheNet
Guid = $"BTN-{torrent.TorrentID}",
InfoUrl = $"{protocol}//broadcasthe.net/torrents.php?id={torrent.GroupID}&torrentid={torrent.TorrentID}",
DownloadUrl = RegexProtocol.Replace(torrent.DownloadURL, protocol),
- Title = CleanReleaseName(torrent.ReleaseName),
+ Title = GetTitle(torrent),
Categories = _categories.MapTrackerCatToNewznab(torrent.Resolution),
InfoHash = torrent.InfoHash,
Size = torrent.Size,
@@ -136,9 +136,17 @@ namespace NzbDrone.Core.Indexers.BroadcastheNet
return releaseInfos;
}
- private string CleanReleaseName(string releaseName)
+ private static string GetTitle(BroadcastheNetTorrent torrent)
{
- return releaseName.Replace("\\", "");
+ var releaseName = torrent.ReleaseName.Replace("\\", "");
+
+ if (torrent.Container.ToUpperInvariant() is "M2TS" or "ISO")
+ {
+ releaseName = Regex.Replace(releaseName, @"\b(H\.?265)\b", "HEVC", RegexOptions.Compiled);
+ releaseName = Regex.Replace(releaseName, @"\b(H\.?264)\b", "AVC", RegexOptions.Compiled);
+ }
+
+ return releaseName;
}
}
}
diff --git a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannBase.cs b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannBase.cs
index 6abdd710e..9e2c6e06b 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannBase.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannBase.cs
@@ -8,6 +8,7 @@ using System.Text;
using System.Text.RegularExpressions;
using AngleSharp.Dom;
using Microsoft.AspNetCore.WebUtilities;
+using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NLog;
using NzbDrone.Common.Extensions;
@@ -214,19 +215,19 @@ namespace NzbDrone.Core.Indexers.Definitions.Cardigann
if (selector.Selector != null)
{
var selectorSelector = ApplyGoTemplateText(selector.Selector.TrimStart('.'), variables);
- selectorSelector = JsonParseFieldSelector(parentObj, selectorSelector);
+ var fieldSelector = JsonParseFieldSelector(parentObj, selectorSelector);
JToken selection = null;
- if (selectorSelector != null)
+ if (fieldSelector != null)
{
- selection = parentObj.SelectToken(selectorSelector);
+ selection = parentObj.SelectToken(fieldSelector);
}
if (selection == null)
{
if (required)
{
- throw new Exception(string.Format("Selector \"{0}\" didn't match {1}", selectorSelector, parentObj.ToString()));
+ throw new Exception($"Selector \"{selectorSelector}\" didn't match {parentObj.ToString(Formatting.None)}");
}
return null;
@@ -234,7 +235,7 @@ namespace NzbDrone.Core.Indexers.Definitions.Cardigann
if (selection.Type is JTokenType.Array)
{
- // turn this json array into a comma delimited string
+ // turn this json array into a comma-delimited string
var valueArray = selection.Value();
value = string.Join(",", valueArray);
}
@@ -259,7 +260,7 @@ namespace NzbDrone.Core.Indexers.Definitions.Cardigann
{
if (required)
{
- throw new Exception($"None of the case selectors \"{string.Join(",", selector.Case)}\" matched {parentObj}");
+ throw new Exception($"None of the case selectors \"{string.Join(",", selector.Case)}\" matched {parentObj.ToString(Formatting.None)}");
}
return null;
diff --git a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs
index 28be1c3e5..4b96e25ed 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs
@@ -105,7 +105,7 @@ namespace NzbDrone.Core.Indexers.Definitions.Cardigann
}
catch (Exception ex)
{
- _logger.Trace(ex, "Failed to parse JSON rows count.");
+ _logger.Debug(ex, "Failed to parse JSON rows count.");
}
}
diff --git a/src/NzbDrone.Core/Indexers/Definitions/FileList/FileListParser.cs b/src/NzbDrone.Core/Indexers/Definitions/FileList/FileListParser.cs
index a15751ab7..6d91d930d 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/FileList/FileListParser.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/FileList/FileListParser.cs
@@ -77,7 +77,7 @@ public class FileListParser : IParseIndexerResponse
InfoUrl = GetInfoUrl(id),
Seeders = row.Seeders,
Peers = row.Leechers + row.Seeders,
- PublishDate = DateTime.Parse(row.UploadDate + " +0200", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal),
+ PublishDate = DateTime.Parse(row.UploadDate + " +0300", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal),
Description = row.SmallDescription,
Genres = row.SmallDescription.Split(',', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries).ToList(),
ImdbId = imdbId,
@@ -101,7 +101,7 @@ public class FileListParser : IParseIndexerResponse
var url = new HttpUri(_settings.BaseUrl)
.CombinePath("/download.php")
.AddQueryParam("id", torrentId.ToString())
- .AddQueryParam("passkey", _settings.Passkey);
+ .AddQueryParam("passkey", _settings.Passkey.Trim());
return url.FullUri;
}
diff --git a/src/NzbDrone.Core/Indexers/Definitions/Gazelle/GazelleApi.cs b/src/NzbDrone.Core/Indexers/Definitions/Gazelle/GazelleApi.cs
index 0703a00d2..89df33663 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/Gazelle/GazelleApi.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/Gazelle/GazelleApi.cs
@@ -95,3 +95,8 @@ public class GazelleIndexResponse
public string Authkey { get; set; }
public string Passkey { get; set; }
}
+
+public class GazelleErrorResponse
+{
+ public string Error { get; init; }
+}
diff --git a/src/NzbDrone.Core/Indexers/Definitions/Gazelle/GazelleParser.cs b/src/NzbDrone.Core/Indexers/Definitions/Gazelle/GazelleParser.cs
index b5253ed6f..1682dea35 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/Gazelle/GazelleParser.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/Gazelle/GazelleParser.cs
@@ -4,6 +4,7 @@ using System.Linq;
using System.Net;
using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http;
+using NzbDrone.Common.Serializer;
using NzbDrone.Core.Indexers.Exceptions;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model;
@@ -32,7 +33,9 @@ public class GazelleParser : IParseIndexerResponse
// Remove cookie cache
CookiesUpdater(null, null);
- throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request");
+ STJson.TryDeserialize(indexerResponse.Content, out var errorResponse);
+
+ throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request: {errorResponse?.Error ?? "Check the logs for more information."}");
}
if (!indexerResponse.HttpResponse.Headers.ContentType.Contains(HttpAccept.Json.Value))
diff --git a/src/NzbDrone.Core/Indexers/Definitions/GreatPosterWall.cs b/src/NzbDrone.Core/Indexers/Definitions/GreatPosterWall.cs
index 4b8302e5a..29e01057f 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/GreatPosterWall.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/GreatPosterWall.cs
@@ -7,6 +7,7 @@ using Newtonsoft.Json;
using NLog;
using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http;
+using NzbDrone.Common.Serializer;
using NzbDrone.Core.Annotations;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Indexers.Definitions.Gazelle;
@@ -148,7 +149,9 @@ public class GreatPosterWallParser : GazelleParser
throw new IndexerException(indexerResponse, $"Redirected to {indexerResponse.HttpResponse.RedirectUrl} from indexer request");
}
- throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request");
+ STJson.TryDeserialize(indexerResponse.Content, out var errorResponse);
+
+ throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request: {errorResponse?.Error ?? "Check the logs for more information."}");
}
if (!indexerResponse.HttpResponse.Headers.ContentType.Contains(HttpAccept.Json.Value))
diff --git a/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBits.cs b/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBits.cs
index 84ea1be25..b4d924511 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBits.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBits.cs
@@ -32,7 +32,7 @@ namespace NzbDrone.Core.Indexers.Definitions.HDBits
return new HDBitsParser(Settings, Capabilities.Categories);
}
- private IndexerCapabilities SetCapabilities()
+ private static IndexerCapabilities SetCapabilities()
{
var caps = new IndexerCapabilities
{
@@ -43,6 +43,11 @@ namespace NzbDrone.Core.Indexers.Definitions.HDBits
MovieSearchParams = new List
{
MovieSearchParam.Q, MovieSearchParam.ImdbId
+ },
+ Flags = new List
+ {
+ IndexerFlag.Internal,
+ IndexerFlag.Exclusive,
}
};
diff --git a/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsApi.cs b/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsApi.cs
index c66c6213e..5f8b947ae 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsApi.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsApi.cs
@@ -85,6 +85,9 @@ namespace NzbDrone.Core.Indexers.Definitions.HDBits
[JsonProperty(PropertyName = "type_origin")]
public int TypeOrigin { get; set; }
+ [JsonProperty(PropertyName = "type_exclusive")]
+ public int TypeExclusive { get; set; }
+
[JsonProperty(PropertyName = "imdb")]
public ImdbInfo ImdbInfo { get; set; }
diff --git a/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsInfo.cs b/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsInfo.cs
deleted file mode 100644
index 412295abf..000000000
--- a/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsInfo.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using NzbDrone.Core.Parser.Model;
-
-namespace NzbDrone.Core.Indexers.Definitions.HDBits
-{
- public class HDBitsInfo : TorrentInfo
- {
- public bool? Internal { get; set; }
- }
-}
diff --git a/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsParser.cs b/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsParser.cs
index b157aaf9b..8b0b55319 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsParser.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/HDBits/HDBitsParser.cs
@@ -62,16 +62,8 @@ namespace NzbDrone.Core.Indexers.Definitions.HDBits
}
var id = result.Id;
- var internalRelease = result.TypeOrigin == 1;
- var flags = new HashSet();
-
- if (internalRelease)
- {
- flags.Add(IndexerFlag.Internal);
- }
-
- releaseInfos.Add(new HDBitsInfo
+ releaseInfos.Add(new TorrentInfo
{
Guid = $"HDBits-{id}",
Title = GetTitle(result),
@@ -85,28 +77,43 @@ namespace NzbDrone.Core.Indexers.Definitions.HDBits
Files = (int)result.NumFiles,
Peers = result.Leechers + result.Seeders,
PublishDate = result.Added.ToUniversalTime(),
- Internal = internalRelease,
Year = result.ImdbInfo?.Year ?? 0,
ImdbId = result.ImdbInfo?.Id ?? 0,
TvdbId = result.TvdbInfo?.Id ?? 0,
DownloadVolumeFactor = GetDownloadVolumeFactor(result),
UploadVolumeFactor = GetUploadVolumeFactor(result),
- IndexerFlags = flags
+ IndexerFlags = GetIndexerFlags(result)
});
}
return releaseInfos.ToArray();
}
- public Action, DateTime?> CookiesUpdater { get; set; }
-
private string GetTitle(TorrentQueryResponse item)
{
- return _settings.UseFilenames && item.FileName.IsNotNullOrWhiteSpace()
+ // Use release name for XXX content and full discs
+ return item.TypeCategory != 7 && item.TypeMedium != 1 && _settings.UseFilenames && item.FileName.IsNotNullOrWhiteSpace()
? item.FileName.Replace(".torrent", "", StringComparison.InvariantCultureIgnoreCase)
: item.Name;
}
+ private static HashSet GetIndexerFlags(TorrentQueryResponse item)
+ {
+ var flags = new HashSet();
+
+ if (item.TypeOrigin == 1)
+ {
+ flags.Add(IndexerFlag.Internal);
+ }
+
+ if (item.TypeExclusive == 1)
+ {
+ flags.Add(IndexerFlag.Exclusive);
+ }
+
+ return flags;
+ }
+
private double GetDownloadVolumeFactor(TorrentQueryResponse item)
{
if (item.FreeLeech == "yes")
@@ -153,5 +160,7 @@ namespace NzbDrone.Core.Indexers.Definitions.HDBits
return url.FullUri;
}
+
+ public Action, DateTime?> CookiesUpdater { get; set; }
}
}
diff --git a/src/NzbDrone.Core/Indexers/Definitions/IPTorrents.cs b/src/NzbDrone.Core/Indexers/Definitions/IPTorrents.cs
index d000c8206..d77c26935 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/IPTorrents.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/IPTorrents.cs
@@ -403,10 +403,13 @@ namespace NzbDrone.Core.Indexers.Definitions
private static string CleanTitle(string title)
{
- // drop invalid chars that seems to have cropped up in some titles. #6582
+ // Drop invalid chars that seems to have cropped up in some titles. #6582
title = Regex.Replace(title, @"[\u0000-\u0008\u000A-\u001F\u0100-\uFFFF]", string.Empty, RegexOptions.Compiled);
title = Regex.Replace(title, @"[\(\[\{]REQ(UEST(ED)?)?[\)\]\}]", string.Empty, RegexOptions.Compiled | RegexOptions.IgnoreCase);
+ // Drop languages between brackets conflicting with anime release group parsing
+ title = Regex.Replace(title, @"^\[[a-z0-9 ._-]+\][-._ ](?.*-[a-z0-9]+)$", "${title}", RegexOptions.Compiled | RegexOptions.IgnoreCase);
+
return title.Trim(' ', '-', ':');
}
}
diff --git a/src/NzbDrone.Core/Indexers/Definitions/Knaben.cs b/src/NzbDrone.Core/Indexers/Definitions/Knaben.cs
index 3e8ca3294..286ef1a1a 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/Knaben.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/Knaben.cs
@@ -23,7 +23,8 @@ namespace NzbDrone.Core.Indexers.Definitions
public class Knaben : TorrentIndexerBase
{
public override string Name => "Knaben";
- public override string[] IndexerUrls => new[] { "https://knaben.eu/" };
+ public override string[] IndexerUrls => new[] { "https://knaben.org/" };
+ public override string[] LegacyUrls => new[] { "https://knaben.eu/" };
public override string Description => "Knaben is a Public torrent meta-search engine";
public override IndexerPrivacy Privacy => IndexerPrivacy.Public;
public override IndexerCapabilities Capabilities => SetCapabilities();
@@ -145,7 +146,7 @@ namespace NzbDrone.Core.Indexers.Definitions
public class KnabenRequestGenerator : IIndexerRequestGenerator
{
- private const string API_SEARCH_ENDPOINT = "https://api.knaben.eu/v1";
+ private const string ApiSearchEndpoint = "https://api.knaben.org/v1";
private readonly IndexerCapabilities _capabilities;
@@ -226,7 +227,7 @@ namespace NzbDrone.Core.Indexers.Definitions
body.Add("categories", categories.Select(int.Parse).Distinct().ToArray());
}
- var request = new HttpRequest(API_SEARCH_ENDPOINT, HttpAccept.Json)
+ var request = new HttpRequest(ApiSearchEndpoint, HttpAccept.Json)
{
Headers =
{
diff --git a/src/NzbDrone.Core/Indexers/Definitions/MyAnonamouse.cs b/src/NzbDrone.Core/Indexers/Definitions/MyAnonamouse.cs
index 94a41a699..dad8fe8e8 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/MyAnonamouse.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/MyAnonamouse.cs
@@ -16,6 +16,7 @@ using NzbDrone.Common.Http;
using NzbDrone.Common.Serializer;
using NzbDrone.Core.Annotations;
using NzbDrone.Core.Configuration;
+using NzbDrone.Core.Exceptions;
using NzbDrone.Core.Indexers.Exceptions;
using NzbDrone.Core.Indexers.Settings;
using NzbDrone.Core.IndexerSearch.Definitions;
@@ -36,8 +37,8 @@ namespace NzbDrone.Core.Indexers.Definitions
public override bool SupportsPagination => true;
public override int PageSize => 100;
public override IndexerCapabilities Capabilities => SetCapabilities();
+
private readonly ICacheManager _cacheManager;
- private static readonly Regex TorrentIdRegex = new Regex(@"tor/download.php\?tid=(?\d+)$");
public MyAnonamouse(IIndexerHttpClient httpClient, IEventAggregator eventAggregator, IIndexerStatusService indexerStatusService, IConfigService configService, Logger logger, ICacheManager cacheManager)
: base(httpClient, eventAggregator, indexerStatusService, configService, logger)
@@ -59,39 +60,66 @@ namespace NzbDrone.Core.Indexers.Definitions
{
var downloadLink = link.RemoveQueryParam("canUseToken");
- if (Settings.Freeleech && bool.TryParse(link.GetQueryParam("canUseToken"), out var canUseToken) && canUseToken)
+ if (Settings.UseFreeleechWedge is (int)MyAnonamouseFreeleechWedgeAction.Preferred or (int)MyAnonamouseFreeleechWedgeAction.Required &&
+ bool.TryParse(link.GetQueryParam("canUseToken"), out var canUseToken) && canUseToken)
{
- _logger.Debug("Attempting to use freeleech token for {0}", downloadLink.AbsoluteUri);
+ _logger.Debug("Attempting to use freeleech wedge for {0}", downloadLink.AbsoluteUri);
- var idMatch = TorrentIdRegex.Match(downloadLink.AbsoluteUri);
- if (idMatch.Success)
+ if (int.TryParse(link.GetQueryParam("tid"), out var torrentId) && torrentId > 0)
{
- var id = int.Parse(idMatch.Groups["id"].Value);
var timestamp = DateTimeOffset.Now.ToUnixTimeSeconds();
var freeleechUrl = Settings.BaseUrl + $"json/bonusBuy.php/{timestamp}";
- var freeleechRequest = new HttpRequestBuilder(freeleechUrl)
+ var freeleechRequestBuilder = new HttpRequestBuilder(freeleechUrl)
+ .Accept(HttpAccept.Json)
.AddQueryParam("spendtype", "personalFL")
- .AddQueryParam("torrentid", id)
- .AddQueryParam("timestamp", timestamp.ToString())
- .Build();
+ .AddQueryParam("torrentid", torrentId)
+ .AddQueryParam("timestamp", timestamp.ToString());
- var indexerReq = new IndexerRequest(freeleechRequest);
- var response = await FetchIndexerResponse(indexerReq).ConfigureAwait(false);
- var resource = Json.Deserialize(response.Content);
+ freeleechRequestBuilder.LogResponseContent = true;
+
+ var cookies = GetCookies();
+
+ if (cookies != null && cookies.Any())
+ {
+ freeleechRequestBuilder.SetCookies(cookies);
+ }
+
+ var freeleechRequest = freeleechRequestBuilder.Build();
+
+ var freeleechResponse = await _httpClient.ExecuteProxiedAsync(freeleechRequest, Definition).ConfigureAwait(false);
+
+ var resource = Json.Deserialize(freeleechResponse.Content);
if (resource.Success)
{
- _logger.Debug("Successfully to used freeleech token for torrentid {0}", id);
+ _logger.Debug("Successfully used freeleech wedge for torrentid {0}.", torrentId);
+ }
+ else if (resource.Error.IsNotNullOrWhiteSpace() && resource.Error.ContainsIgnoreCase("This Torrent is VIP"))
+ {
+ _logger.Debug("{0} is already VIP, continuing downloading: {1}", torrentId, resource.Error);
+ }
+ else if (resource.Error.IsNotNullOrWhiteSpace() && resource.Error.ContainsIgnoreCase("This is already a personal freeleech"))
+ {
+ _logger.Debug("{0} is already a personal freeleech, continuing downloading: {1}", torrentId, resource.Error);
}
else
{
- _logger.Debug("Failed to use freeleech token: {0}", resource.Error);
+ _logger.Warn("Failed to purchase freeleech wedge for {0}: {1}", torrentId, resource.Error);
+
+ if (Settings.UseFreeleechWedge == (int)MyAnonamouseFreeleechWedgeAction.Preferred)
+ {
+ _logger.Debug("'Use Freeleech Wedge' option set to preferred, continuing downloading: '{0}'", downloadLink.AbsoluteUri);
+ }
+ else
+ {
+ throw new ReleaseUnavailableException($"Failed to buy freeleech wedge and 'Use Freeleech Wedge' is set to required, aborting download: '{downloadLink.AbsoluteUri}'");
+ }
}
}
else
{
- _logger.Debug("Could not get torrent id from link {0}, skipping freeleech", downloadLink.AbsoluteUri);
+ _logger.Warn("Could not get torrent id from link {0}, skipping use of freeleech wedge.", downloadLink.AbsoluteUri);
}
}
@@ -294,14 +322,21 @@ namespace NzbDrone.Core.Indexers.Definitions
parameters.Set("tor[srchIn][filenames]", "true");
}
- var catList = _capabilities.Categories.MapTorznabCapsToTrackers(searchCriteria.Categories);
+ if (_settings.SearchLanguages.Any())
+ {
+ foreach (var (language, index) in _settings.SearchLanguages.Select((value, index) => (value, index)))
+ {
+ parameters.Set($"tor[browse_lang][{index}]", language.ToString());
+ }
+ }
+
+ var catList = _capabilities.Categories.MapTorznabCapsToTrackers(searchCriteria.Categories).Distinct().ToList();
+
if (catList.Any())
{
- var index = 0;
- foreach (var cat in catList)
+ foreach (var (category, index) in catList.Select((value, index) => (value, index)))
{
- parameters.Set("tor[cat][" + index + "]", cat);
- index++;
+ parameters.Set($"tor[cat][{index}]", category);
}
}
else
@@ -441,6 +476,11 @@ namespace NzbDrone.Core.Indexers.Definitions
return releaseInfos.ToArray();
}
+ if (jsonResponse.Data == null)
+ {
+ throw new IndexerException(indexerResponse, "Unexpected response content from indexer request: {0}", jsonResponse.Message ?? "Check the logs for more information.");
+ }
+
var hasUserVip = HasUserVip(httpResponse.GetCookies());
foreach (var item in jsonResponse.Data)
@@ -523,7 +563,7 @@ namespace NzbDrone.Core.Indexers.Definitions
.CombinePath("/tor/download.php")
.AddQueryParam("tid", torrentId);
- if (_settings.Freeleech && canUseToken)
+ if (_settings.UseFreeleechWedge is (int)MyAnonamouseFreeleechWedgeAction.Preferred or (int)MyAnonamouseFreeleechWedgeAction.Required && canUseToken)
{
url = url.AddQueryParam("canUseToken", "true");
}
@@ -548,8 +588,11 @@ namespace NzbDrone.Core.Indexers.Definitions
_logger.Debug("Fetching user data: {0}", request.Url.FullUri);
var response = _httpClient.ExecuteProxied(request, _definition);
+
var jsonResponse = JsonConvert.DeserializeObject(response.Content);
+ _logger.Trace("Current user class: '{0}'", jsonResponse.UserClass);
+
return jsonResponse.UserClass?.Trim();
},
TimeSpan.FromHours(1));
@@ -579,6 +622,8 @@ namespace NzbDrone.Core.Indexers.Definitions
SearchInDescription = false;
SearchInSeries = false;
SearchInFilenames = false;
+ SearchLanguages = Array.Empty();
+ UseFreeleechWedge = (int)MyAnonamouseFreeleechWedgeAction.Never;
}
[FieldDefinition(2, Type = FieldType.Textbox, Label = "Mam Id", HelpText = "Mam Session Id (Created Under Preferences -> Security)")]
@@ -587,18 +632,21 @@ namespace NzbDrone.Core.Indexers.Definitions
[FieldDefinition(3, Type = FieldType.Select, Label = "Search Type", SelectOptions = typeof(MyAnonamouseSearchType), HelpText = "Specify the desired search type")]
public int SearchType { get; set; }
- [FieldDefinition(4, Type = FieldType.Checkbox, Label = "Use Freeleech Wedges", HelpText = "Use freeleech wedges to make grabbed torrents personal freeleech")]
- public bool Freeleech { get; set; }
-
- [FieldDefinition(5, Type = FieldType.Checkbox, Label = "Search in description", HelpText = "Search text in the description")]
+ [FieldDefinition(4, Type = FieldType.Checkbox, Label = "Search in description", HelpText = "Search text in the description")]
public bool SearchInDescription { get; set; }
- [FieldDefinition(6, Type = FieldType.Checkbox, Label = "Search in series", HelpText = "Search text in the series")]
+ [FieldDefinition(5, Type = FieldType.Checkbox, Label = "Search in series", HelpText = "Search text in the series")]
public bool SearchInSeries { get; set; }
- [FieldDefinition(7, Type = FieldType.Checkbox, Label = "Search in filenames", HelpText = "Search text in the filenames")]
+ [FieldDefinition(6, Type = FieldType.Checkbox, Label = "Search in filenames", HelpText = "Search text in the filenames")]
public bool SearchInFilenames { get; set; }
+ [FieldDefinition(7, Type = FieldType.Select, Label = "Search Languages", SelectOptions = typeof(MyAnonamouseSearchLanguages), HelpText = "Specify the desired languages. If unspecified, all options are used.")]
+ public IEnumerable SearchLanguages { get; set; }
+
+ [FieldDefinition(8, Type = FieldType.Select, Label = "Use Freeleech Wedges", SelectOptions = typeof(MyAnonamouseFreeleechWedgeAction), HelpText = "Use freeleech wedges to make grabbed torrents personal freeleech")]
+ public int UseFreeleechWedge { get; set; }
+
public override NzbDroneValidationResult Validate()
{
return new NzbDroneValidationResult(Validator.Validate(this));
@@ -626,6 +674,210 @@ namespace NzbDrone.Core.Indexers.Definitions
NotVip = 5,
}
+ public enum MyAnonamouseSearchLanguages
+ {
+ [FieldOption(Label="English")]
+ English = 1,
+
+ [FieldOption(Label="Afrikaans")]
+ Afrikaans = 17,
+
+ [FieldOption(Label="Arabic")]
+ Arabic = 32,
+
+ [FieldOption(Label="Bengali")]
+ Bengali = 35,
+
+ [FieldOption(Label="Bosnian")]
+ Bosnian = 51,
+
+ [FieldOption(Label="Bulgarian")]
+ Bulgarian = 18,
+
+ [FieldOption(Label="Burmese")]
+ Burmese = 6,
+
+ [FieldOption(Label="Cantonese")]
+ Cantonese = 44,
+
+ [FieldOption(Label="Catalan")]
+ Catalan = 19,
+
+ [FieldOption(Label="Chinese")]
+ Chinese = 2,
+
+ [FieldOption(Label="Croatian")]
+ Croatian = 49,
+
+ [FieldOption(Label="Czech")]
+ Czech = 20,
+
+ [FieldOption(Label="Danish")]
+ Danish = 21,
+
+ [FieldOption(Label="Dutch")]
+ Dutch = 22,
+
+ [FieldOption(Label="Estonian")]
+ Estonian = 61,
+
+ [FieldOption(Label="Farsi")]
+ Farsi = 39,
+
+ [FieldOption(Label="Finnish")]
+ Finnish = 23,
+
+ [FieldOption(Label="French")]
+ French = 36,
+
+ [FieldOption(Label="German")]
+ German = 37,
+
+ [FieldOption(Label="Greek")]
+ Greek = 26,
+
+ [FieldOption(Label="Greek, Ancient")]
+ GreekAncient = 59,
+
+ [FieldOption(Label="Gujarati")]
+ Gujarati = 3,
+
+ [FieldOption(Label="Hebrew")]
+ Hebrew = 27,
+
+ [FieldOption(Label="Hindi")]
+ Hindi = 8,
+
+ [FieldOption(Label="Hungarian")]
+ Hungarian = 28,
+
+ [FieldOption(Label="Icelandic")]
+ Icelandic = 63,
+
+ [FieldOption(Label="Indonesian")]
+ Indonesian = 53,
+
+ [FieldOption(Label="Irish")]
+ Irish = 56,
+
+ [FieldOption(Label="Italian")]
+ Italian = 43,
+
+ [FieldOption(Label="Japanese")]
+ Japanese = 38,
+
+ [FieldOption(Label="Javanese")]
+ Javanese = 12,
+
+ [FieldOption(Label="Kannada")]
+ Kannada = 5,
+
+ [FieldOption(Label="Korean")]
+ Korean = 41,
+
+ [FieldOption(Label="Lithuanian")]
+ Lithuanian = 50,
+
+ [FieldOption(Label="Latin")]
+ Latin = 46,
+
+ [FieldOption(Label="Latvian")]
+ Latvian = 62,
+
+ [FieldOption(Label="Malay")]
+ Malay = 33,
+
+ [FieldOption(Label="Malayalam")]
+ Malayalam = 58,
+
+ [FieldOption(Label="Manx")]
+ Manx = 57,
+
+ [FieldOption(Label="Marathi")]
+ Marathi = 9,
+
+ [FieldOption(Label="Norwegian")]
+ Norwegian = 48,
+
+ [FieldOption(Label="Polish")]
+ Polish = 45,
+
+ [FieldOption(Label="Portuguese")]
+ Portuguese = 34,
+
+ [FieldOption(Label="Brazilian Portuguese (BP)")]
+ BrazilianPortuguese = 52,
+
+ [FieldOption(Label="Punjabi")]
+ Punjabi = 14,
+
+ [FieldOption(Label="Romanian")]
+ Romanian = 30,
+
+ [FieldOption(Label="Russian")]
+ Russian = 16,
+
+ [FieldOption(Label="Scottish Gaelic")]
+ ScottishGaelic = 24,
+
+ [FieldOption(Label="Sanskrit")]
+ Sanskrit = 60,
+
+ [FieldOption(Label="Serbian")]
+ Serbian = 31,
+
+ [FieldOption(Label="Slovenian")]
+ Slovenian = 54,
+
+ [FieldOption(Label="Spanish")]
+ Spanish = 4,
+
+ [FieldOption(Label="Castilian Spanish")]
+ CastilianSpanish = 55,
+
+ [FieldOption(Label="Swedish")]
+ Swedish = 40,
+
+ [FieldOption(Label="Tagalog")]
+ Tagalog = 29,
+
+ [FieldOption(Label="Tamil")]
+ Tamil = 11,
+
+ [FieldOption(Label="Telugu")]
+ Telugu = 10,
+
+ [FieldOption(Label="Thai")]
+ Thai = 7,
+
+ [FieldOption(Label="Turkish")]
+ Turkish = 42,
+
+ [FieldOption(Label="Ukrainian")]
+ Ukrainian = 25,
+
+ [FieldOption(Label="Urdu")]
+ Urdu = 15,
+
+ [FieldOption(Label="Vietnamese")]
+ Vietnamese = 13,
+
+ [FieldOption(Label="Other")]
+ Other = 47,
+ }
+
+ public enum MyAnonamouseFreeleechWedgeAction
+ {
+ [FieldOption(Label = "Never", Hint = "Do not buy as freeleech")]
+ Never = 0,
+
+ [FieldOption(Label = "Preferred", Hint = "Buy and use wedge if possible")]
+ Preferred = 1,
+
+ [FieldOption(Label = "Required", Hint = "Abort download if unable to buy wedge")]
+ Required = 2,
+ }
+
public class MyAnonamouseTorrent
{
public int Id { get; set; }
@@ -655,7 +907,8 @@ namespace NzbDrone.Core.Indexers.Definitions
public class MyAnonamouseResponse
{
public string Error { get; set; }
- public List Data { get; set; }
+ public IReadOnlyCollection Data { get; set; }
+ public string Message { get; set; }
}
public class MyAnonamouseBuyPersonalFreeleechResponse
@@ -666,7 +919,7 @@ namespace NzbDrone.Core.Indexers.Definitions
public class MyAnonamouseUserDataResponse
{
- [JsonProperty(PropertyName = "class")]
+ [JsonProperty(PropertyName = "classname")]
public string UserClass { get; set; }
}
}
diff --git a/src/NzbDrone.Core/Indexers/Definitions/Nebulance.cs b/src/NzbDrone.Core/Indexers/Definitions/Nebulance.cs
index 9f2333ea1..dcc26338e 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/Nebulance.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/Nebulance.cs
@@ -322,7 +322,7 @@ namespace NzbDrone.Core.Indexers.Definitions
ApiKey = "";
}
- [FieldDefinition(4, Label = "ApiKey", HelpText = "IndexerNebulanceSettingsApiKeyHelpText")]
+ [FieldDefinition(2, Label = "ApiKey", HelpText = "IndexerNebulanceSettingsApiKeyHelpText", Privacy = PrivacyLevel.ApiKey)]
public string ApiKey { get; set; }
}
diff --git a/src/NzbDrone.Core/Indexers/Definitions/Newznab/NewznabRequestGenerator.cs b/src/NzbDrone.Core/Indexers/Definitions/Newznab/NewznabRequestGenerator.cs
index f9ab56128..ad3f48b07 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/Newznab/NewznabRequestGenerator.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/Newznab/NewznabRequestGenerator.cs
@@ -128,7 +128,7 @@ namespace NzbDrone.Core.Indexers.Newznab
parameters.Set("tvdbid", searchCriteria.TvdbId.Value.ToString());
}
- if (searchCriteria.TmdbId.HasValue && capabilities.TvSearchTvdbAvailable)
+ if (searchCriteria.TmdbId.HasValue && capabilities.TvSearchTmdbAvailable)
{
parameters.Set("tmdbid", searchCriteria.TmdbId.Value.ToString());
}
diff --git a/src/NzbDrone.Core/Indexers/Definitions/NorBits.cs b/src/NzbDrone.Core/Indexers/Definitions/NorBits.cs
index a62d88c5e..e989a5c6a 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/NorBits.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/NorBits.cs
@@ -27,7 +27,7 @@ public class NorBits : TorrentIndexerBase
public override string[] IndexerUrls => new[] { "https://norbits.net/" };
public override string Description => "NorBits is a Norwegian Private site for MOVIES / TV / GENERAL";
public override string Language => "nb-NO";
- public override Encoding Encoding => Encoding.GetEncoding("iso-8859-1");
+ public override Encoding Encoding => Encoding.UTF8;
public override IndexerPrivacy Privacy => IndexerPrivacy.Private;
public override IndexerCapabilities Capabilities => SetCapabilities();
@@ -129,26 +129,14 @@ public class NorBits : TorrentIndexerBase
}
};
- caps.Categories.AddCategoryMapping("main_cat[]=1&sub2_cat[]=49", NewznabStandardCategory.MoviesUHD, "Filmer - UHD-2160p");
- caps.Categories.AddCategoryMapping("main_cat[]=1&sub2_cat[]=19", NewznabStandardCategory.MoviesHD, "Filmer - HD-1080p/i");
- caps.Categories.AddCategoryMapping("main_cat[]=1&sub2_cat[]=20", NewznabStandardCategory.MoviesHD, "Filmer - HD-720p");
- caps.Categories.AddCategoryMapping("main_cat[]=1&sub2_cat[]=22", NewznabStandardCategory.MoviesSD, "Filmer - SD");
- caps.Categories.AddCategoryMapping("main_cat[]=2&sub2_cat[]=49", NewznabStandardCategory.TVUHD, "TV - UHD-2160p");
- caps.Categories.AddCategoryMapping("main_cat[]=2&sub2_cat[]=19", NewznabStandardCategory.TVHD, "TV - HD-1080p/i");
- caps.Categories.AddCategoryMapping("main_cat[]=2&sub2_cat[]=20", NewznabStandardCategory.TVHD, "TV - HD-720p");
- caps.Categories.AddCategoryMapping("main_cat[]=2&sub2_cat[]=22", NewznabStandardCategory.TVSD, "TV - SD");
+ caps.Categories.AddCategoryMapping("main_cat[]=1", NewznabStandardCategory.Movies, "Filmer");
+ caps.Categories.AddCategoryMapping("main_cat[]=2", NewznabStandardCategory.TV, "TV");
caps.Categories.AddCategoryMapping("main_cat[]=3", NewznabStandardCategory.PC, "Programmer");
caps.Categories.AddCategoryMapping("main_cat[]=4", NewznabStandardCategory.Console, "Spill");
- caps.Categories.AddCategoryMapping("main_cat[]=5&sub2_cat[]=42", NewznabStandardCategory.AudioMP3, "Musikk - 192");
- caps.Categories.AddCategoryMapping("main_cat[]=5&sub2_cat[]=43", NewznabStandardCategory.AudioMP3, "Musikk - 256");
- caps.Categories.AddCategoryMapping("main_cat[]=5&sub2_cat[]=44", NewznabStandardCategory.AudioMP3, "Musikk - 320");
- caps.Categories.AddCategoryMapping("main_cat[]=5&sub2_cat[]=45", NewznabStandardCategory.AudioMP3, "Musikk - VBR");
- caps.Categories.AddCategoryMapping("main_cat[]=5&sub2_cat[]=46", NewznabStandardCategory.AudioLossless, "Musikk - Lossless");
+ caps.Categories.AddCategoryMapping("main_cat[]=5", NewznabStandardCategory.Audio, "Musikk");
caps.Categories.AddCategoryMapping("main_cat[]=6", NewznabStandardCategory.Books, "Tidsskrift");
caps.Categories.AddCategoryMapping("main_cat[]=7", NewznabStandardCategory.AudioAudiobook, "Lydbøker");
- caps.Categories.AddCategoryMapping("main_cat[]=8&sub2_cat[]=19", NewznabStandardCategory.AudioVideo, "Musikkvideoer - HD-1080p/i");
- caps.Categories.AddCategoryMapping("main_cat[]=8&sub2_cat[]=20", NewznabStandardCategory.AudioVideo, "Musikkvideoer - HD-720p");
- caps.Categories.AddCategoryMapping("main_cat[]=8&sub2_cat[]=22", NewznabStandardCategory.AudioVideo, "Musikkvideoer - SD");
+ caps.Categories.AddCategoryMapping("main_cat[]=8", NewznabStandardCategory.AudioVideo, "Musikkvideoer");
caps.Categories.AddCategoryMapping("main_cat[]=40", NewznabStandardCategory.AudioOther, "Podcasts");
return caps;
@@ -190,7 +178,7 @@ public class NorBitsRequestGenerator : IIndexerRequestGenerator
}
else if (!string.IsNullOrWhiteSpace(term))
{
- searchTerm = "search=" + term.UrlEncode(Encoding.GetEncoding(28591));
+ searchTerm = "search=" + term.UrlEncode(Encoding.UTF8);
}
searchUrl += "?" + searchTerm + "&" + parameters.GetQueryString();
@@ -277,20 +265,17 @@ public class NorBitsParser : IParseIndexerResponse
foreach (var row in rows)
{
- var link = _settings.BaseUrl + row.QuerySelector("td:nth-of-type(2) > a[href*=\"download.php?id=\"]")?.GetAttribute("href").TrimStart('/');
+ var link = _settings.BaseUrl + row.QuerySelector("td:nth-of-type(2) > a[href*=\"download.php?id=\"]")?.GetAttribute("href")?.TrimStart('/');
var qDetails = row.QuerySelector("td:nth-of-type(2) > a[href*=\"details.php?id=\"]");
- var title = qDetails?.GetAttribute("title").Trim();
- var details = _settings.BaseUrl + qDetails?.GetAttribute("href").TrimStart('/');
+ var title = qDetails?.GetAttribute("title")?.Trim();
+ var details = _settings.BaseUrl + qDetails?.GetAttribute("href")?.TrimStart('/');
- var mainCategory = row.QuerySelector("td:nth-of-type(1) > div > a[href*=\"main_cat[]\"]")?.GetAttribute("href")?.Split('?').Last();
- var secondCategory = row.QuerySelector("td:nth-of-type(1) > div > a[href*=\"sub2_cat[]\"]")?.GetAttribute("href")?.Split('?').Last();
+ var catQuery = row.QuerySelector("td:nth-of-type(1) a[href*=\"main_cat[]\"]")?.GetAttribute("href")?.Split('?').Last().Split('&', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
+ var category = catQuery?.FirstOrDefault(x => x.StartsWith("main_cat[]=", StringComparison.OrdinalIgnoreCase));
- var categoryList = new[] { mainCategory, secondCategory };
- var cat = string.Join("&", categoryList.Where(c => !string.IsNullOrWhiteSpace(c)));
-
- var seeders = ParseUtil.CoerceInt(row.QuerySelector("td:nth-of-type(9)").TextContent);
- var leechers = ParseUtil.CoerceInt(row.QuerySelector("td:nth-of-type(10)").TextContent);
+ var seeders = ParseUtil.CoerceInt(row.QuerySelector("td:nth-of-type(9)")?.TextContent);
+ var leechers = ParseUtil.CoerceInt(row.QuerySelector("td:nth-of-type(10)")?.TextContent);
var release = new TorrentInfo
{
@@ -298,7 +283,7 @@ public class NorBitsParser : IParseIndexerResponse
InfoUrl = details,
DownloadUrl = link,
Title = title,
- Categories = _categories.MapTrackerCatToNewznab(cat),
+ Categories = _categories.MapTrackerCatToNewznab(category),
Size = ParseUtil.GetBytes(row.QuerySelector("td:nth-of-type(7)")?.TextContent),
Files = ParseUtil.CoerceInt(row.QuerySelector("td:nth-of-type(3) > a")?.TextContent.Trim()),
Grabs = ParseUtil.CoerceInt(row.QuerySelector("td:nth-of-type(8)")?.FirstChild?.TextContent.Trim()),
diff --git a/src/NzbDrone.Core/Indexers/Definitions/Orpheus.cs b/src/NzbDrone.Core/Indexers/Definitions/Orpheus.cs
index 14ee4a518..7075e170b 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/Orpheus.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/Orpheus.cs
@@ -8,6 +8,7 @@ using FluentValidation;
using NLog;
using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http;
+using NzbDrone.Common.Serializer;
using NzbDrone.Core.Annotations;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Indexers.Definitions.Gazelle;
@@ -252,7 +253,9 @@ namespace NzbDrone.Core.Indexers.Definitions
if (indexerResponse.HttpResponse.StatusCode != HttpStatusCode.OK)
{
- throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request");
+ STJson.TryDeserialize(indexerResponse.Content, out var errorResponse);
+
+ throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request: {errorResponse?.Error ?? "Check the logs for more information."}");
}
if (!indexerResponse.HttpResponse.Headers.ContentType.Contains(HttpAccept.Json.Value))
diff --git a/src/NzbDrone.Core/Indexers/Definitions/PassThePopcorn/PassThePopcorn.cs b/src/NzbDrone.Core/Indexers/Definitions/PassThePopcorn/PassThePopcorn.cs
index 177c4f1b2..7426157ab 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/PassThePopcorn/PassThePopcorn.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/PassThePopcorn/PassThePopcorn.cs
@@ -1,3 +1,4 @@
+using System;
using System.Collections.Generic;
using NLog;
using NzbDrone.Core.Configuration;
@@ -15,6 +16,7 @@ namespace NzbDrone.Core.Indexers.Definitions.PassThePopcorn
public override bool SupportsSearch => true;
public override bool SupportsPagination => true;
public override int PageSize => 50;
+ public override TimeSpan RateLimit => TimeSpan.FromSeconds(4);
public override IndexerCapabilities Capabilities => SetCapabilities();
diff --git a/src/NzbDrone.Core/Indexers/Definitions/PassThePopcorn/PassThePopcornParser.cs b/src/NzbDrone.Core/Indexers/Definitions/PassThePopcorn/PassThePopcornParser.cs
index 997ba97e0..7b6fe586e 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/PassThePopcorn/PassThePopcornParser.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/PassThePopcorn/PassThePopcornParser.cs
@@ -56,6 +56,19 @@ namespace NzbDrone.Core.Indexers.Definitions.PassThePopcorn
{
foreach (var torrent in result.Torrents)
{
+ // skip non-freeleech results when freeleech only is set
+ var downloadVolumeFactor = torrent.FreeleechType?.ToUpperInvariant() switch
+ {
+ "FREELEECH" or "NEUTRAL LEECH" => 0,
+ "HALF LEECH" => 0.5,
+ _ => 1
+ };
+
+ if (_settings.FreeleechOnly && downloadVolumeFactor != 0.0)
+ {
+ continue;
+ }
+
var id = torrent.Id;
var title = torrent.ReleaseName;
@@ -78,6 +91,12 @@ namespace NzbDrone.Core.Indexers.Definitions.PassThePopcorn
categories.Add(NewznabStandardCategory.TV);
}
+ var uploadVolumeFactor = torrent.FreeleechType?.ToUpperInvariant() switch
+ {
+ "NEUTRAL LEECH" => 0,
+ _ => 1
+ };
+
torrentInfos.Add(new TorrentInfo
{
Guid = $"PassThePopcorn-{id}",
@@ -94,13 +113,8 @@ namespace NzbDrone.Core.Indexers.Definitions.PassThePopcorn
ImdbId = result.ImdbId.IsNotNullOrWhiteSpace() ? int.Parse(result.ImdbId) : 0,
Scene = torrent.Scene,
IndexerFlags = flags,
- DownloadVolumeFactor = torrent.FreeleechType?.ToUpperInvariant() switch
- {
- "FREELEECH" => 0,
- "HALF LEECH" => 0.5,
- _ => 1
- },
- UploadVolumeFactor = 1,
+ DownloadVolumeFactor = downloadVolumeFactor,
+ UploadVolumeFactor = uploadVolumeFactor,
MinimumRatio = 1,
MinimumSeedTime = 345600,
Genres = result.Tags ?? new List(),
diff --git a/src/NzbDrone.Core/Indexers/Definitions/Redacted.cs b/src/NzbDrone.Core/Indexers/Definitions/Redacted.cs
index 761b101a0..963bb5a2a 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/Redacted.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/Redacted.cs
@@ -8,6 +8,7 @@ using FluentValidation;
using NLog;
using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http;
+using NzbDrone.Common.Serializer;
using NzbDrone.Core.Annotations;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Indexers.Definitions.Gazelle;
@@ -252,7 +253,9 @@ namespace NzbDrone.Core.Indexers.Definitions
if (indexerResponse.HttpResponse.StatusCode != HttpStatusCode.OK)
{
- throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request");
+ STJson.TryDeserialize(indexerResponse.Content, out var errorResponse);
+
+ throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request: {errorResponse?.Error ?? "Check the logs for more information."}");
}
if (!indexerResponse.HttpResponse.Headers.ContentType.Contains(HttpAccept.Json.Value))
diff --git a/src/NzbDrone.Core/Indexers/Definitions/RuTracker.cs b/src/NzbDrone.Core/Indexers/Definitions/RuTracker.cs
index 2ec548258..44f6bae38 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/RuTracker.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/RuTracker.cs
@@ -30,7 +30,7 @@ namespace NzbDrone.Core.Indexers.Definitions
"https://rutracker.net/",
"https://rutracker.nl/"
};
- public override string Description => "RuTracker.org is a Semi-Private Russian torrent site with a thriving file-sharing community";
+ public override string Description => "RuTracker.org is a RUSSIAN Semi-Private site with a thriving file-sharing community";
public override string Language => "ru-RU";
public override Encoding Encoding => Encoding.GetEncoding("windows-1251");
public override IndexerPrivacy Privacy => IndexerPrivacy.SemiPrivate;
@@ -144,6 +144,7 @@ namespace NzbDrone.Core.Indexers.Definitions
SupportsRawSearch = true
};
+ // Note: When refreshing the categories use the tracker.php page and NOT the search.php page!
caps.Categories.AddCategoryMapping(22, NewznabStandardCategory.Movies, "Наше кино");
caps.Categories.AddCategoryMapping(941, NewznabStandardCategory.Movies, "|- Кино СССР");
caps.Categories.AddCategoryMapping(1666, NewznabStandardCategory.Movies, "|- Детские отечественные фильмы");
@@ -933,6 +934,8 @@ namespace NzbDrone.Core.Indexers.Definitions
caps.Categories.AddCategoryMapping(1224, NewznabStandardCategory.AudioLossless, "|- Авторская песня (lossless)");
caps.Categories.AddCategoryMapping(1225, NewznabStandardCategory.AudioMP3, "|- Авторская песня (lossy)");
caps.Categories.AddCategoryMapping(1226, NewznabStandardCategory.Audio, "|- Менестрели и ролевики (lossy и lossless)");
+ caps.Categories.AddCategoryMapping(782, NewznabStandardCategory.Audio, "Лейбл- и сцен-паки. Неофициальные сборники и ремастеринги. AI-музыка");
+ caps.Categories.AddCategoryMapping(577, NewznabStandardCategory.Audio, "|- AI-Music - музыка ИИ, нейросетей (lossy и lossless)");
caps.Categories.AddCategoryMapping(1842, NewznabStandardCategory.AudioLossless, "Label Packs (lossless)");
caps.Categories.AddCategoryMapping(1648, NewznabStandardCategory.AudioMP3, "Label packs, Scene packs (lossy)");
caps.Categories.AddCategoryMapping(134, NewznabStandardCategory.AudioLossless, "|- Неофициальные сборники и ремастеринги (lossless)");
@@ -1292,7 +1295,6 @@ namespace NzbDrone.Core.Indexers.Definitions
caps.Categories.AddCategoryMapping(650, NewznabStandardCategory.PCMobileOther, "Игры для мобильных устройств");
caps.Categories.AddCategoryMapping(2149, NewznabStandardCategory.PCMobileAndroid, "|- Игры для Android");
caps.Categories.AddCategoryMapping(2420, NewznabStandardCategory.ConsoleOther, "|- Игры для Oculus Quest");
- caps.Categories.AddCategoryMapping(1001, NewznabStandardCategory.PC, "|- Игры для Java");
caps.Categories.AddCategoryMapping(1004, NewznabStandardCategory.PCMobileOther, "|- Игры для Symbian");
caps.Categories.AddCategoryMapping(1002, NewznabStandardCategory.PCMobileOther, "|- Игры для Windows Mobile");
caps.Categories.AddCategoryMapping(240, NewznabStandardCategory.OtherMisc, "Игровое видео");
@@ -1308,7 +1310,6 @@ namespace NzbDrone.Core.Indexers.Definitions
caps.Categories.AddCategoryMapping(1379, NewznabStandardCategory.PC, "|- Операционные системы (Linux, Unix)");
caps.Categories.AddCategoryMapping(1381, NewznabStandardCategory.PC, "|- Программное обеспечение (Linux, Unix)");
caps.Categories.AddCategoryMapping(1473, NewznabStandardCategory.PC, "|- Другие ОС и ПО под них");
- caps.Categories.AddCategoryMapping(1195, NewznabStandardCategory.PC, "Тестовые диски для настройки аудио/видео аппаратуры");
caps.Categories.AddCategoryMapping(1013, NewznabStandardCategory.PC, "Системные программы");
caps.Categories.AddCategoryMapping(1028, NewznabStandardCategory.PC, "|- Работа с жёстким диском");
caps.Categories.AddCategoryMapping(1029, NewznabStandardCategory.PC, "|- Резервное копирование");
@@ -1350,6 +1351,7 @@ namespace NzbDrone.Core.Indexers.Definitions
caps.Categories.AddCategoryMapping(1018, NewznabStandardCategory.PC, "|- Шаблоны для сайтов и CMS");
caps.Categories.AddCategoryMapping(1058, NewznabStandardCategory.PC, "|- Разное (Веб-разработка и программирование)");
caps.Categories.AddCategoryMapping(1016, NewznabStandardCategory.PC, "Программы для работы с мультимедиа и 3D");
+ caps.Categories.AddCategoryMapping(1195, NewznabStandardCategory.PC, "|- Тестовые диски для настройки аудио/видео аппаратуры");
caps.Categories.AddCategoryMapping(1079, NewznabStandardCategory.PC, "|- Программные комплекты");
caps.Categories.AddCategoryMapping(1080, NewznabStandardCategory.PC, "|- Плагины для программ компании Adobe");
caps.Categories.AddCategoryMapping(1081, NewznabStandardCategory.PC, "|- Графические редакторы");
@@ -1750,7 +1752,7 @@ namespace NzbDrone.Core.Indexers.Definitions
title = Regex.Replace(title, @"(\([\p{IsCyrillic}\W]+)\s/\s(.+?)\)", string.Empty, RegexOptions.Compiled | RegexOptions.IgnoreCase);
// Remove VO, MVO and DVO from titles
- var vo = new Regex(@".VO\s\(.+?\)");
+ var vo = new Regex(@"((?:\dx\s)?(?:[A-Z])?VO\s\(.+?\))");
title = vo.Replace(title, string.Empty);
// Remove R5 and (R5) from release names
@@ -1758,7 +1760,7 @@ namespace NzbDrone.Core.Indexers.Definitions
title = r5.Replace(title, "$1");
// Remove Sub languages from release names
- title = Regex.Replace(title, @"(\bSub\b.*$|\b[\+]*Sub[\+]*\b)", string.Empty);
+ title = Regex.Replace(title, @"(\bSub\b[^+]*\b|\b[\+]*Sub[\+]*\b)", string.Empty);
}
// language fix: all rutracker releases contains russian track
diff --git a/src/NzbDrone.Core/Indexers/Definitions/SecretCinema.cs b/src/NzbDrone.Core/Indexers/Definitions/SecretCinema.cs
index 709868b14..e8d8b1584 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/SecretCinema.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/SecretCinema.cs
@@ -6,6 +6,7 @@ using System.Text.RegularExpressions;
using NLog;
using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http;
+using NzbDrone.Common.Serializer;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Indexers.Definitions.Gazelle;
using NzbDrone.Core.Indexers.Exceptions;
@@ -19,7 +20,7 @@ public class SecretCinema : GazelleBase
{
public override string Name => "Secret Cinema";
public override string[] IndexerUrls => new[] { "https://secret-cinema.pw/" };
- public override string Description => "A tracker for rare movies.";
+ public override string Description => "Secret Cinema is a Private ratioless site for rare MOVIES.";
public override IndexerPrivacy Privacy => IndexerPrivacy.Private;
public override IndexerCapabilities Capabilities => SetCapabilities();
@@ -78,7 +79,9 @@ public class SecretCinemaParser : IParseIndexerResponse
// Remove cookie cache
CookiesUpdater(null, null);
- throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request");
+ STJson.TryDeserialize(indexerResponse.Content, out var errorResponse);
+
+ throw new IndexerException(indexerResponse, $"Unexpected response status {indexerResponse.HttpResponse.StatusCode} code from indexer request: {errorResponse?.Error ?? "Check the logs for more information."}");
}
if (!indexerResponse.HttpResponse.Headers.ContentType.Contains(HttpAccept.Json.Value))
@@ -148,7 +151,7 @@ public class SecretCinemaParser : IParseIndexerResponse
if (torrent.RemasterTitle.IsNotNullOrWhiteSpace())
{
- release.Title += $" [{torrent.RemasterTitle.Trim()}]";
+ release.Title += $" [{WebUtility.HtmlDecode(torrent.RemasterTitle).Trim()}]";
}
// Replace media formats with standards
diff --git a/src/NzbDrone.Core/Indexers/Definitions/SpeedApp/SpeedAppBase.cs b/src/NzbDrone.Core/Indexers/Definitions/SpeedApp/SpeedAppBase.cs
index f0170d868..244a9c286 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/SpeedApp/SpeedAppBase.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/SpeedApp/SpeedAppBase.cs
@@ -262,7 +262,7 @@ namespace NzbDrone.Core.Indexers.Definitions
return jsonResponse.Resource.Select(torrent => new TorrentInfo
{
- Guid = torrent.Id.ToString(),
+ Guid = torrent.Url,
Title = CleanTitle(torrent.Name),
Description = torrent.ShortDescription,
Size = torrent.Size,
diff --git a/src/NzbDrone.Core/Indexers/Definitions/TorrentDay.cs b/src/NzbDrone.Core/Indexers/Definitions/TorrentDay.cs
index 9371c8aa0..aa02c4578 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/TorrentDay.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/TorrentDay.cs
@@ -7,6 +7,7 @@ using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http;
using NzbDrone.Core.Annotations;
using NzbDrone.Core.Configuration;
+using NzbDrone.Core.Indexers.Exceptions;
using NzbDrone.Core.Indexers.Settings;
using NzbDrone.Core.IndexerSearch.Definitions;
using NzbDrone.Core.Messaging.Events;
@@ -52,7 +53,7 @@ namespace NzbDrone.Core.Indexers.Definitions
public override IParseIndexerResponse GetParser()
{
- return new TorrentDayParser(Settings, Capabilities.Categories);
+ return new TorrentDayParser(Settings, Capabilities.Categories, _logger);
}
protected override IDictionary GetCookies()
@@ -228,15 +229,29 @@ namespace NzbDrone.Core.Indexers.Definitions
{
private readonly TorrentDaySettings _settings;
private readonly IndexerCapabilitiesCategories _categories;
+ private readonly Logger _logger;
- public TorrentDayParser(TorrentDaySettings settings, IndexerCapabilitiesCategories categories)
+ public TorrentDayParser(TorrentDaySettings settings, IndexerCapabilitiesCategories categories, Logger logger)
{
_settings = settings;
_categories = categories;
+ _logger = logger;
}
public IList ParseResponse(IndexerResponse indexerResponse)
{
+ if (indexerResponse.HttpResponse.HasHttpRedirect)
+ {
+ _logger.Warn("Redirected to {0} from indexer request", indexerResponse.HttpResponse.RedirectUrl);
+
+ if (indexerResponse.HttpResponse.RedirectUrl.ContainsIgnoreCase("/login.php"))
+ {
+ throw new IndexerException(indexerResponse, "We are being redirected to the login page. Most likely your session expired or was killed. Recheck your cookie and try testing the indexer.");
+ }
+
+ throw new IndexerException(indexerResponse, "Redirected to {0} from indexer request", indexerResponse.HttpResponse.RedirectUrl);
+ }
+
var torrentInfos = new List();
var rows = JsonConvert.DeserializeObject(indexerResponse.Content);
diff --git a/src/NzbDrone.Core/Indexers/Definitions/XSpeeds.cs b/src/NzbDrone.Core/Indexers/Definitions/XSpeeds.cs
index 381441434..72d4f1c2b 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/XSpeeds.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/XSpeeds.cs
@@ -121,8 +121,15 @@ public class XSpeeds : TorrentIndexerBase
caps.Categories.AddCategoryMapping(112, NewznabStandardCategory.MoviesOther, "Anime Movies");
caps.Categories.AddCategoryMapping(111, NewznabStandardCategory.MoviesOther, "Anime TV");
caps.Categories.AddCategoryMapping(150, NewznabStandardCategory.PC, "Apps");
- caps.Categories.AddCategoryMapping(80, NewznabStandardCategory.AudioAudiobook, "Audiobooks");
- caps.Categories.AddCategoryMapping(48, NewznabStandardCategory.Books, "Books Magazines");
+ caps.Categories.AddCategoryMapping(156, NewznabStandardCategory.TV, "AV1");
+ caps.Categories.AddCategoryMapping(156, NewznabStandardCategory.Movies, "AV1");
+ caps.Categories.AddCategoryMapping(159, NewznabStandardCategory.Movies, "Movie Boxsets AV1");
+ caps.Categories.AddCategoryMapping(158, NewznabStandardCategory.Movies, "Movies AV1");
+ caps.Categories.AddCategoryMapping(157, NewznabStandardCategory.TV, "TV AV1");
+ caps.Categories.AddCategoryMapping(160, NewznabStandardCategory.TV, "TV Boxsets AV1");
+ caps.Categories.AddCategoryMapping(153, NewznabStandardCategory.Books, "Books");
+ caps.Categories.AddCategoryMapping(154, NewznabStandardCategory.AudioAudiobook, "Audiobooks");
+ caps.Categories.AddCategoryMapping(155, NewznabStandardCategory.Books, "Books & Magazines");
caps.Categories.AddCategoryMapping(68, NewznabStandardCategory.MoviesOther, "Cams/TS");
caps.Categories.AddCategoryMapping(140, NewznabStandardCategory.TVDocumentary, "Documentary");
caps.Categories.AddCategoryMapping(10, NewznabStandardCategory.MoviesDVD, "DVDR");
@@ -154,6 +161,7 @@ public class XSpeeds : TorrentIndexerBase
caps.Categories.AddCategoryMapping(146, NewznabStandardCategory.MoviesSD, "Movies SD");
caps.Categories.AddCategoryMapping(13, NewznabStandardCategory.Audio, "Music");
caps.Categories.AddCategoryMapping(135, NewznabStandardCategory.AudioLossless, "Music/FLAC");
+ caps.Categories.AddCategoryMapping(151, NewznabStandardCategory.Audio, "Karaoke");
caps.Categories.AddCategoryMapping(136, NewznabStandardCategory.Audio, "Music Boxset");
caps.Categories.AddCategoryMapping(148, NewznabStandardCategory.AudioVideo, "Music Videos");
caps.Categories.AddCategoryMapping(9, NewznabStandardCategory.Other, "Other");
diff --git a/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs b/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs
index fde23c691..4a8014c63 100644
--- a/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs
+++ b/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs
@@ -250,7 +250,11 @@ namespace NzbDrone.Core.Indexers
{
var response = await _httpClient.ExecuteProxiedAsync(request, Definition);
- if (response.StatusCode is HttpStatusCode.MovedPermanently or HttpStatusCode.Found or HttpStatusCode.SeeOther)
+ if (response.StatusCode is HttpStatusCode.MovedPermanently
+ or HttpStatusCode.Found
+ or HttpStatusCode.SeeOther
+ or HttpStatusCode.TemporaryRedirect
+ or HttpStatusCode.PermanentRedirect)
{
var autoRedirectChain = new List { request.Url.ToString() };
diff --git a/src/NzbDrone.Core/Indexers/IndexerFlag.cs b/src/NzbDrone.Core/Indexers/IndexerFlag.cs
index 26a65e96c..cfa3d35de 100644
--- a/src/NzbDrone.Core/Indexers/IndexerFlag.cs
+++ b/src/NzbDrone.Core/Indexers/IndexerFlag.cs
@@ -63,6 +63,7 @@ namespace NzbDrone.Core.Indexers
}
public static IndexerFlag Internal => new ("internal", "Uploader is an internal release group");
+ public static IndexerFlag Exclusive => new ("exclusive", "An exclusive release that must not be uploaded anywhere else");
public static IndexerFlag FreeLeech => new ("freeleech", "Download doesn't count toward ratio");
public static IndexerFlag NeutralLeech => new ("neutralleech", "Download and upload doesn't count toward ratio");
public static IndexerFlag HalfLeech => new ("halfleech", "Release counts 50% to ratio");
diff --git a/src/NzbDrone.Core/Instrumentation/ReconfigureLogging.cs b/src/NzbDrone.Core/Instrumentation/ReconfigureLogging.cs
index 346b6acf1..ac0cd085b 100644
--- a/src/NzbDrone.Core/Instrumentation/ReconfigureLogging.cs
+++ b/src/NzbDrone.Core/Instrumentation/ReconfigureLogging.cs
@@ -95,7 +95,7 @@ namespace NzbDrone.Core.Instrumentation
private void ReconfigureFile()
{
- foreach (var target in LogManager.Configuration.AllTargets.OfType())
+ foreach (var target in LogManager.Configuration.AllTargets.OfType())
{
target.MaxArchiveFiles = _configFileProvider.LogRotate;
target.ArchiveAboveSize = _configFileProvider.LogSizeLimit.Megabytes();
@@ -120,11 +120,7 @@ namespace NzbDrone.Core.Instrumentation
{
var format = _configFileProvider.ConsoleLogFormat;
- consoleTarget.Layout = format switch
- {
- ConsoleLogFormat.Clef => NzbDroneLogger.ClefLogLayout,
- _ => NzbDroneLogger.ConsoleLogLayout
- };
+ NzbDroneLogger.ConfigureConsoleLayout(consoleTarget, format);
}
}
diff --git a/src/NzbDrone.Core/Localization/Core/bg.json b/src/NzbDrone.Core/Localization/Core/bg.json
index b1a0d993f..913275a68 100644
--- a/src/NzbDrone.Core/Localization/Core/bg.json
+++ b/src/NzbDrone.Core/Localization/Core/bg.json
@@ -376,5 +376,46 @@
"ActiveIndexers": "Активни индиксатори",
"AddApplication": "добави приложение",
"Season": "Причина",
- "CurrentlyInstalled": "Понастоящем инсталиран"
+ "CurrentlyInstalled": "Понастоящем инсталиран",
+ "DownloadClientSettingsAddPaused": "Добави на пауза",
+ "Encoding": "Кодиране",
+ "Episode": "епизод",
+ "Applications": "Приложения",
+ "Publisher": "Издател",
+ "Id": "ИН",
+ "Theme": "Тема",
+ "Label": "Етикет",
+ "Categories": "Категории",
+ "Album": "албум",
+ "Artist": "изпълнител",
+ "AddConnection": "Добави връзка",
+ "AddConnectionImplementation": "Добави връзка - {implementationName}",
+ "AddDownloadClientImplementation": "Добави клиент за изтегляне - {implementationName}",
+ "AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Потвърдете новата парола",
+ "Default": "Подразбиране",
+ "Any": "Всеки",
+ "ApplicationUrlHelpText": "Външният URL адрес на това приложение, включително http(s)://, порт и основно URL",
+ "Database": "База данни",
+ "Destination": "Дестинация",
+ "DownloadClientAriaSettingsDirectoryHelpText": "Незадължително локация за изтеглянията, оставете празно, за да използвате локацията по подразбиране на Aria2",
+ "DownloadClientDelugeSettingsUrlBaseHelpText": "Добавя префикс към url адреса на deluge json, вижте {url}",
+ "Directory": "Директория",
+ "AddIndexerImplementation": "Добави индексатор - {implementationName}",
+ "AuthenticationRequiredHelpText": "Променете за кои заявки се изисква удостоверяване. Не променяйте, освен ако не разбирате рисковете.",
+ "AuthenticationRequiredPasswordHelpTextWarning": "Въведете нова парола",
+ "DownloadClientDownloadStationSettingsDirectoryHelpText": "Незадължителна споделена папка, в която да се поставят изтеглянията, оставете празно, за да използвате местоположението по подразбиране на Download Station",
+ "DownloadClientFloodSettingsAdditionalTags": "Допълнителни тагове",
+ "DownloadClientFloodSettingsAdditionalTagsHelpText": "Добавя свойствата на медията като тагове. Напътствията са примери.",
+ "DownloadClientFloodSettingsTagsHelpText": "Първоначални тагове на изтегляне. За да бъде разпознато едно изтегляне, то трябва да има всички начални тагове. По този начин се избягват конфликти с необвързани с приложение изтегляния.",
+ "ApplicationURL": "URL адрес на приложението",
+ "AuthenticationRequired": "Изисква се удостоверяване",
+ "ApplyChanges": "Прилагане на промените",
+ "ApiKeyValidationHealthCheckMessage": "Моля, актуализирайте API ключа си така, че да съдържа поне {length} знака. Можете да направите това чрез настройките или конфигурационния файл",
+ "AppUpdated": "{appName} Актуализиран",
+ "AppUpdatedVersion": "{appName} е актуализиранa до версия `{version}`, за да получите най-новите промени, ще трябва да презаредите {appName}",
+ "Donate": "Дарете",
+ "AddCustomFilter": "Добави персонализиран филтър",
+ "AuthenticationMethod": "Метод за удостоверяване",
+ "AuthenticationMethodHelpTextWarning": "Моля, изберете валиден метод за удостоверяване",
+ "BlackholeFolderHelpText": "Папка, в която {appName} ще съхранява файла {extension}"
}
diff --git a/src/NzbDrone.Core/Localization/Core/ca.json b/src/NzbDrone.Core/Localization/Core/ca.json
index 608973a41..83a720b51 100644
--- a/src/NzbDrone.Core/Localization/Core/ca.json
+++ b/src/NzbDrone.Core/Localization/Core/ca.json
@@ -484,7 +484,7 @@
"InfoUrl": "URL d'informació",
"PublishedDate": "Data de publicació",
"Redirected": "Redirecció",
- "AllSearchResultsHiddenByFilter": "Tots els resultats estan ocults pel filtre aplicat",
+ "AllSearchResultsHiddenByFilter": "Tots els resultats estan ocults pel filtre aplicat.",
"HealthMessagesInfoBox": "Podeu trobar més informació sobre la causa d'aquests missatges de comprovació de salut fent clic a l'enllaç wiki (icona del llibre) al final de la fila o consultant els vostres [registres]({link}). Si teniu problemes per a interpretar aquests missatges, podeu posar-vos en contacte amb el nostre suport als enllaços següents.",
"AptUpdater": "Utilitzeu apt per a instal·lar l'actualització",
"DockerUpdater": "actualitzeu el contenidor Docker per a rebre l'actualització",
@@ -500,5 +500,245 @@
"UpdateAppDirectlyLoadError": "No es pot actualitzar {appName} directament,",
"WouldYouLikeToRestoreBackup": "Voleu restaurar la còpia de seguretat '{name}'?",
"InstallLatest": "Instal·la l'últim",
- "CurrentlyInstalled": "Instal·lat actualment"
+ "CurrentlyInstalled": "Instal·lat actualment",
+ "DownloadClientSettingsAddPaused": "Afegeix pausats",
+ "Install": "Instal·la",
+ "DownloadClientFloodSettingsAdditionalTags": "Etiquetes addicionals",
+ "DownloadClientFreeboxSettingsApiUrl": "URL de l'API",
+ "DownloadClientFreeboxSettingsAppId": "Identificador de l'aplicació",
+ "PreviouslyInstalled": "Instal·lat anteriorment",
+ "PasswordConfirmation": "Confirmeu la contrasenya",
+ "IndexerHDBitsSettingsOriginsHelpText": "Si no s'especifica, s'utilitzen totes les opcions.",
+ "MinimumSeeders": "Seeders mínims",
+ "SeedRatio": "Ràtio de la llavor",
+ "ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Si un torrent està bloquejat per un hash, pot ser que no es rebutgi correctament durant el RSS/Search per a alguns indexadors, habilitant això permetrà que es rebutgi després que s'agafi el torrent, però abans que s'enviï al client.",
+ "SeedTime": "Temps de la llavor",
+ "DefaultCategory": "Categoria predeterminada",
+ "IndexerVipExpiredHealthCheckMessage": "Els beneficis VIP de l'indexador han caducat: {indexerNames}",
+ "MassEditor": "Editor de masses",
+ "NoSearchResultsFound": "No s'han trobat resultats de cerca, proveu de realitzar una nova cerca a continuació.",
+ "NotSupported": "No suportat",
+ "OverrideAndAddToDownloadClient": "Sobreescriu i afegeix al client de baixada",
+ "PackSeedTime": "Temps de la llavor del paquet",
+ "SearchAllIndexers": "Cerca tots els indexadors",
+ "SearchIndexers": "Cerca indexadors",
+ "SeedTimeHelpText": "L'hora en què un torrent s'ha de sembrar abans d'aturar-se, buit és el predeterminat de l'aplicació",
+ "SettingsIndexerLogging": "Registre de l'indexador millorat",
+ "TotalIndexerSuccessfulGrabs": "Indexador total correcte",
+ "BookSearch": "Cerca de llibres",
+ "ClearHistoryMessageText": "Esteu segur que voleu netejar tot l'historial de {appName}?",
+ "IndexerGazelleGamesSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
+ "ClearHistory": "Neteja l'historial",
+ "IndexerTorrentSyndikatSettingsApiKeyHelpText": "Clau de l'API del lloc",
+ "IndexerGazelleGamesSettingsApiKeyHelpText": "Clau API del lloc (trobada a Configuració => Accés)",
+ "IndexerBeyondHDSettingsRssKeyHelpText": "Clau RSS del lloc (trobada a Seguretat => Clau RSS)",
+ "ApplicationsLoadError": "No s'ha pogut carregar la llista d'aplicacions",
+ "BookSearchTypes": "Tipus de cerca de llibres",
+ "DownloadClientCategory": "Baixa la categoria del client",
+ "IndexerAuth": "Autor de l'indexador",
+ "IndexerBeyondHDSettingsLimitedOnly": "Només limitat",
+ "IndexerBeyondHDSettingsRefundOnly": "Només el reemborsament",
+ "IndexerBeyondHDSettingsRefundOnlyHelpText": "Cerca només el reemborsament",
+ "IndexerBeyondHDSettingsRewindOnlyHelpText": "Cerca només el rebobinat",
+ "IndexerBeyondHDSettingsSearchTypes": "Tipus de cerca",
+ "IndexerBeyondHDSettingsSearchTypesHelpText": "Seleccioneu els tipus de llançaments que us interessin. Si no hi ha cap seleccionat, s'utilitzen totes les opcions.",
+ "IndexerDownloadClientHelpText": "Especifiqueu quin client de baixada s'utilitza per a les captures fetes a {appName} des d'aquest indexador",
+ "IndexerGazelleGamesSettingsApiKeyHelpTextWarning": "Ha de tenir permisos d'usuari i torrents",
+ "IndexerGazelleGamesSettingsSearchGroupNames": "Cerca noms de grup",
+ "IndexerHDBitsSettingsFreeleechOnlyHelpText": "Mostra només els llançaments de freeleech",
+ "IndexerHDBitsSettingsUseFilenames": "Utilitza els noms de fitxer",
+ "IndexerHDBitsSettingsUseFilenamesHelpText": "Marqueu aquesta opció si voleu utilitzar noms de fitxer torrent com a títols de llançament",
+ "IndexerHDBitsSettingsUsernameHelpText": "Nom d'usuari del lloc",
+ "IndexerHealthCheckNoIndexers": "No hi ha indexadors activats, {appName} no retornarà els resultats de la cerca",
+ "IndexerHistoryLoadError": "Error en carregar l'historial de l'indexador",
+ "IndexerIPTorrentsSettingsCookieUserAgent": "Agent d'usuari de la galeta",
+ "IndexerIPTorrentsSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
+ "IndexerInfo": "Informació de l'indexador",
+ "IndexerNebulanceSettingsApiKeyHelpText": "Clau API de la Configuració de l'usuari . Claus Api. La clau ha de tenir permisos de llista i baixada",
+ "IndexerNewznabSettingsVipExpirationHelpText": "Data d'entrada (yyyy-mm-dd) per a la caducitat VIP o en blanc, {appName} notificarà 1 setmana des de la caducitat de VIP",
+ "IndexerNoDefinitionCheckHealthCheckMessage": "Els indexadors no tenen definició i no funcionaran: {indexerNames}. Suprimiu i (o torneu a afegir) a {appName}.",
+ "IndexerObsoleteCheckMessage": "Els indexadors estan obsolets o s'han actualitzat: {0}. Suprimiu i (o torneu a afegir) a {appName}",
+ "IndexerPassThePopcornSettingsApiKeyHelpText": "Clau de l'API del lloc",
+ "IndexerRss": "Indexador RSS",
+ "IndexerSettingsGrabLimitHelpText": "El nombre màxim de captures especificat per la unitat respectiva que {appName} permetrà al lloc",
+ "IndexerSettingsPackSeedTimeIndexerHelpText": "L'hora en què un paquet (temporada o discografia) s'ha de sembrar el torrent abans d'aturar-se, buit és el valor predeterminat de l'aplicació",
+ "IndexerSettingsPreferMagnetUrl": "Prefereix l'URL de l'imant",
+ "IndexerSettingsPreferMagnetUrlHelpText": "Quan està activat, aquest indexador preferirà l'ús d'URLs magnet per a les captures amb enllaços de reserva a torrents",
+ "IndexerSettingsQueryLimitHelpText": "El nombre màxim de consultes especificat per la unitat respectiva que {appName} permetrà al lloc",
+ "InitialFailure": "Fallada inicial",
+ "NoIndexerCategories": "No s'ha trobat cap categoria per a aquest indexador",
+ "RepeatSearch": "Cerca repetida",
+ "SettingsLogRotateHelpText": "Nombre màxim de fitxers de registre a mantenir desats a la carpeta de registres",
+ "SyncProfile": "Perfil de sincronització",
+ "TotalUserAgentGrabs": "Total d'agents d'usuari",
+ "UnableToLoadAppProfiles": "No s'han pogut carregar els perfils de l'aplicació",
+ "VipExpiration": "Caducitat VIP",
+ "IndexerOrpheusSettingsApiKeyHelpText": "Clau API del lloc (trobada a Configuració => Accés)",
+ "IndexerRedactedSettingsApiKeyHelpText": "Clau API del lloc (trobada a Configuració => Accés)",
+ "ProwlarrSupportsAnyIndexer": "{appName} admet molts indexadors, a més de qualsevol indexador que utilitzi l'estàndard Newznab/Torznab utilitzant 'Generic Newznab' (per usenet) o 'Generic Torznab' (per torrents). Cerca i selecciona el teu indexador des de sota.",
+ "DownloadClientSettingsDefaultCategorySubFolderHelpText": "Categoria alternativa predeterminada si no hi ha cap categoria assignada per a un llançament. Afegir una categoria específica a {appName} evita conflictes amb baixades no relacionades amb {appName}. L'ús d'una categoria és opcional, però molt recomanable.",
+ "AppProfileSelectHelpText": "Els perfils d'aplicació s'utilitzen per controlar RSS, la cerca automàtica i la configuració de cerca interactiva en sincronitzar aplicacions",
+ "AudioSearch": "Cerca d'àudio",
+ "IndexerSettingsAppsMinimumSeeders": "Aplicacions de cercadors mínims",
+ "DeleteApplication": "Suprimeix l'aplicació",
+ "DownloadClientSettingsPriorityItemHelpText": "Prioritat a usar en capturar elements",
+ "DownloadClientSettingsDefaultCategoryHelpText": "Categoria alternativa predeterminada si no hi ha cap categoria assignada per a un llançament. Afegir una categoria específica a {appName} evita conflictes amb baixades no relacionades amb {appName}. L'ús d'una categoria és opcional, però molt recomanable.",
+ "EditCategory": "Edita la categoria",
+ "IndexerQuery": "Consulta de l'indexador",
+ "IndexerSettingsBaseUrl": "Url base",
+ "IndexerSettingsCookieHelpText": "Cookie del lloc",
+ "IndexerSettingsLimitsUnitHelpText": "La unitat de temps per comptar els límits per indexador",
+ "IndexerSettingsPackSeedTime": "Temps de la llavor del paquet",
+ "IndexerSite": "Lloc indexador",
+ "IndexerTagsHelpTextWarning": "Les etiquetes s'han d'utilitzar amb precaució, poden tenir efectes no desitjats. Un indexador amb una etiqueta només sincronitzarà amb aplicacions amb la mateixa etiqueta.",
+ "IndexerSettingsSummary": "Configura diversos paràmetres globals de l'indexador.",
+ "ManageApplications": "Gestiona les aplicacions",
+ "PackSeedTimeHelpText": "L'hora en què un paquet (temporada o discografia) s'ha de sembrar el torrent abans d'aturar-se, buit és el valor predeterminat de l'aplicació",
+ "PreferMagnetUrl": "Prefereix l'URL de l'imant",
+ "PreferMagnetUrlHelpText": "Quan està activat, aquest indexador preferirà l'ús d'URLs magnet per a les captures amb enllaços de reserva a torrents",
+ "ProwlarrDownloadClientsInAppOnlyAlert": "Els clients de baixada només són per a les cerques a l'aplicació {appName} i no sincronitzen amb les aplicacions. No hi ha plans per afegir aquesta funcionalitat.",
+ "IndexerBeyondHDSettingsRewindOnly": "Només rebobina",
+ "ProxyValidationUnableToConnect": "No s'ha pogut connectar al servidor intermediari: {exceptionMessage}. Comprova els detalls del registre que envolta aquest error",
+ "QueryOptions": "Opcions de la consulta",
+ "TestAllApps": "Prova totes les aplicacions",
+ "TotalHostQueries": "Total de consultes de l'amfitrió",
+ "AverageGrabs": "Mitjana d'herba",
+ "AverageQueries": "Mitjana de consultes",
+ "FilterPlaceHolder": "Cerca indexadors",
+ "IndexerBeyondHDSettingsLimitedOnlyHelpText": "Cerca només freeleech (Limited UL)",
+ "IndexerBeyondHDSettingsApiKeyHelpText": "Clau API del lloc (trobada a Seguretat => Clau API)",
+ "IndexerSettingsVipExpiration": "Caducitat VIP",
+ "IndexerVipExpiringHealthCheckMessage": "Els beneficis VIP de l'indexador expiraran aviat: {indexerNames}",
+ "LastFailure": "Darrera fallada",
+ "MovieSearch": "Cerca de pel·lícules",
+ "MovieSearchTypes": "Tipus de cerca de pel·lícules",
+ "MusicSearchTypes": "Tipus de cerca de música",
+ "QueryType": "Tipus de consulta",
+ "RssQueries": "Consultes RSS",
+ "SyncLevelFull": "Sincronització completa: mantindrà els indexadors d'aquesta aplicació completament sincronitzats. Els canvis fets als indexadors a {appName} se sincronitzen amb aquesta aplicació. Qualsevol canvi fet a indexadors remotament dins d'aquesta aplicació serà anul·lat per {appName} en la següent sincronització.",
+ "TotalHostGrabs": "Total d'amfitrions",
+ "TotalQueries": "Total de consultes",
+ "NoApplicationsFound": "No s'ha trobat cap aplicació",
+ "SyncProfiles": "Sincronitza els perfils",
+ "TorznabUrl": "Url Torznab",
+ "TvSearch": "Cerca de TV",
+ "DeleteIndexerProxy": "Suprimeix el servidor intermediari de l'indexador",
+ "DisabledUntil": "Desactivat fins",
+ "GrabTitle": "Captura el títol",
+ "SettingsIndexerLoggingHelpText": "Registra dades addicionals de l'indexador",
+ "SyncLevel": "Nivell de sincronització",
+ "AdvancedSettingsHiddenClickToShow": "Configuració avançada oculta, feu clic per mostrar",
+ "AdvancedSettingsShownClickToHide": "Configuració avançada mostrada, feu clic per amagar",
+ "AppsMinimumSeeders": "Aplicacions de cercadors mínims",
+ "AppsMinimumSeedersHelpText": "«Mínims filtradors requerits per les Aplicacions perquè l'indexador s'agafi",
+ "CountIndexersAvailable": "{count} indexador(s) disponible",
+ "HistoryCleanup": "Neteja de l'historial",
+ "HistoryDetails": "Detalls de l'historial",
+ "SettingsFilterSentryEventsHelpText": "Filtra els esdeveniments d'error d'usuari coneguts perquè s'enviïn com a Analytics",
+ "MappedCategories": "Categories assignades",
+ "AppSettingsSummary": "Aplicacions i paràmetres per configurar com {appName} interactua amb els vostres programes PVR",
+ "ConnectSettingsSummary": "Notificacions i scripts personalitzats",
+ "DeleteClientCategory": "Suprimeix la categoria del client de baixada",
+ "FullSync": "Sincronització completa",
+ "IndexerAlreadySetup": "Almenys una instància de l'indexador ja està configurada",
+ "RawSearchSupported": "S'admet la cerca RAW",
+ "RssFeed": "Canal RSS",
+ "SearchTypes": "Tipus de cerca",
+ "SeedRatioHelpText": "La relació a la qual ha d'arribar un torrent abans d'aturar-se, buida és la predeterminada de l'aplicació",
+ "SemiPrivate": "Semi-Privada",
+ "TotalIndexerQueries": "Total de consultes de l'indexador",
+ "TotalUserAgentQueries": "Total de consultes d'agents d'usuari",
+ "GoToApplication": "Ves a l'aplicació",
+ "Url": "Url",
+ "AreYouSureYouWantToDeleteIndexer": "Esteu segur que voleu suprimir '{name}' de {appName}?",
+ "AverageResponseTimesMs": "Temps mitjà de resposta de l'indexador (ms)",
+ "FoundCountReleases": "S'han trobat {itemCount} versions",
+ "AuthQueries": "Consultes d'Autorització",
+ "BasicSearch": "Cerca bàsica",
+ "IndexerName": "Nom de l'indexador",
+ "IndexerStatus": "Estat de l'indexador",
+ "IndexerTagsHelpText": "Utilitzeu etiquetes per especificar els intermediaris de l'indexador o a quines aplicacions se sincronitza l'indexador.",
+ "NewznabUrl": "Url Newznab",
+ "SearchCountIndexers": "Cerca {count} indexador",
+ "UnableToLoadDevelopmentSettings": "No s'han pogut carregar els paràmetres de desenvolupament",
+ "SettingsFilterSentryEvents": "Filtra els esdeveniments d'anàlisi",
+ "ApplicationTagsHelpText": "Sincronitza els indexadors d'aquesta aplicació que tenen una o més etiquetes coincidents. Si no es llisten etiquetes aquí, llavors no s'impedirà la sincronització d'indexadors a causa de les seves etiquetes.",
+ "ApplicationTagsHelpTextWarning": "Les etiquetes s'han d'utilitzar amb precaució, poden tenir efectes no desitjats. Una aplicació amb una etiqueta només sincronitzarà amb els indexadors que tinguin la mateixa etiqueta.",
+ "DeleteSelectedApplications": "Suprimeix les aplicacions seleccionades",
+ "DownloadClientsSettingsSummary": "Baixa la configuració dels clients per a la integració a la cerca de la interfície d'usuari {appName}",
+ "ElapsedTime": "Temps transcorregut",
+ "EnableIndexer": "Habilita l'indexador",
+ "EnableRssHelpText": "Habilita el canal RSS per a l'indexador",
+ "IncludeManualGrabsHelpText": "Inclou les notes manuals fetes a {appName}",
+ "IndexerFailureRate": "Taxa de fallada de l'indexador",
+ "ProwlarrSupportsAnyDownloadClient": "{appName} admet qualsevol dels clients de baixada que es llisten a continuació.",
+ "TotalGrabs": "Grabs totals",
+ "IndexerDetails": "Detalls de l'indexador",
+ "IndexerPriorityHelpText": "Prioritat de l'indexador des de l'1 (el més alt) fins al 50 (el més oest). Per defecte: 25.",
+ "IndexerProxy": "Servidor intermediari de l'indexador",
+ "UISettingsSummary": "Opcions de data, idioma i color defectuoses",
+ "IndexerCategories": "Categories de l'indexador",
+ "IndexerPassThePopcornSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
+ "SearchCapabilities": "Capacitats de cerca",
+ "SearchType": "Tipus de cerca",
+ "SettingsLogSql": "Registre Sql",
+ "SyncLevelAddRemove": "Afegeix i elimina només: quan s'afegeixen o s'eliminen els indexadors de {appName}, s'actualitzarà aquesta aplicació remota.",
+ "IndexerProxies": "Propis de l'indexador",
+ "ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Sincronitza les fulles del torrent de la llista de blocs en bloc mentre s'agafa",
+ "CertificateValidationHelpText": "Canvia l'estricta validació de la certificació HTTPS",
+ "IndexerDisabled": "Indexador desactivat",
+ "IndexerFileListSettingsPasskeyHelpText": "Contrasenya del lloc (Aquesta és la cadena alfanumèrica a l'URL del seguidor que es mostra al client de baixada)",
+ "IndexerSettingsQueryLimit": "Límit de consulta",
+ "IndexerHDBitsSettingsPasskeyHelpText": "Contrasenya dels detalls de l'usuari",
+ "IndexerSettingsPasskey": "Clau de pas",
+ "ClickToChangeQueryOptions": "Feu clic per a canviar les opcions de consulta",
+ "EnabledRedirected": "Activat, redirigit",
+ "Parameters": "Paràmetres",
+ "QueryResults": "Resultats de la consulta",
+ "RedirectHelpText": "Redirigeix la sol·licitud de baixada entrant per a l'indexador i passa la captura directament en lloc de intermediaris a través de {appName}",
+ "UnableToLoadIndexerProxies": "No s'han pogut carregar els intermediaris de l'indexador",
+ "IndexerId": "ID de l'indexador",
+ "IndexerAlphaRatioSettingsExcludeScene": "Exclou l'escena",
+ "IndexerAlphaRatioSettingsExcludeSceneHelpText": "Exclou els llançaments d'escenes dels resultats",
+ "IndexerAlphaRatioSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
+ "IndexerBeyondHDSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
+ "IndexerFileListSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
+ "IndexerFileListSettingsUsernameHelpText": "Nom d'usuari del lloc",
+ "IndexerGazelleGamesSettingsSearchGroupNamesHelpText": "Cerca publicacions per noms de grup",
+ "IndexerHDBitsSettingsOrigins": "Orígens",
+ "IndexerIPTorrentsSettingsCookieUserAgentHelpText": "Agent d'usuari associat a la cookie utilitzada des del navegador",
+ "IndexerNewznabSettingsApiKeyHelpText": "Clau de l'API del lloc",
+ "IndexerNzbIndexSettingsApiKeyHelpText": "Clau de l'API del lloc",
+ "IndexerSettingsAppsMinimumSeedersHelpText": "«Mínims filtradors requerits per les Aplicacions perquè l'indexador s'agafi",
+ "IndexerSettingsFreeleechOnly": "Només Freeleech",
+ "IndexerSettingsGrabLimit": "Límit de captura",
+ "IndexerSettingsLimitsUnit": "Unitats de límits",
+ "IndexerSettingsRssKey": "Clau RSS",
+ "SelectIndexers": "Selecciona els indexadors",
+ "SettingsSqlLoggingHelpText": "Registra totes les consultes SQL de {appName}",
+ "SyncAppIndexers": "Sincronitza els indexadors d'aplicacions",
+ "AppProfileInUse": "Perfil d'aplicació en ús",
+ "DeleteAppProfile": "Suprimeix el perfil de l'aplicació",
+ "TVSearchTypes": "Tipus de cerca de TV",
+ "IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
+ "IndexerMTeamTpSettingsApiKeyHelpText": "Clau API del Lloc (trobada a Tauler de control de l'usuari => Seguretat => Laboratori)",
+ "MinimumSeedersHelpText": "Visors mínims requerits per l'aplicació perquè l'indexador s'agafi",
+ "NoIndexerHistory": "No s'ha trobat cap historial per a aquest indexador",
+ "SearchQueries": "Cerca consultes",
+ "SettingsConsoleLogLevel": "Nivell de registre de la consola",
+ "IndexerPassThePopcornSettingsGoldenPopcornOnly": "Només blat de moro daurat",
+ "IndexerPassThePopcornSettingsGoldenPopcornOnlyHelpText": "Cerca només els llançaments Golden Popcorn",
+ "Open": "Obre",
+ "ProwlarrDownloadClientsAlert": "Si voleu fer cerques directament dins de {appName}, heu d'afegir Clients de Baixades. En cas contrari, no cal afegir-les aquí. Per a les cerques des de les teves Apps, els clients de descàrrega configurats s'utilitzen en el seu lloc.",
+ "Website": "Lloc web",
+ "DownloadClientQbittorrentSettingsUseSslHelpText": "Utilitza una connexió segura. Vegeu Opcions -> Interfície web -> 'Utilitza HTTPS en comptes d'HTTP' a qBittorrent.",
+ "IndexerAvistazSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
+ "IndexerAvistazSettingsPasswordHelpText": "Contrasenya del lloc",
+ "IndexerAvistazSettingsPidHelpText": "PID de la pàgina del meu compte o del meu perfil",
+ "IndexerAvistazSettingsUsernameHelpText": "Nom d'usuari del lloc",
+ "IndexerAvistazSettingsUsernameHelpTextWarning": "Només el rang de membre i superior pot utilitzar l'API en aquest indexador.",
+ "SelectedCountOfCountReleases": "S'han seleccionat {selectedCount} de les versions {itemCount}",
+ "SettingsLogRotate": "Rotació del registre",
+ "AreYouSureYouWantToDeleteCategory": "Esteu segur que voleu suprimir la categoria assignada?",
+ "Book": "Llibre"
}
diff --git a/src/NzbDrone.Core/Localization/Core/cs.json b/src/NzbDrone.Core/Localization/Core/cs.json
index bd43f56f7..21975a02e 100644
--- a/src/NzbDrone.Core/Localization/Core/cs.json
+++ b/src/NzbDrone.Core/Localization/Core/cs.json
@@ -1,7 +1,7 @@
{
"Add": "Přidat",
- "CertificateValidation": "Ověření certifikátu",
- "DeleteBackupMessageText": "Opravdu chcete odstranit zálohu '{name}'?",
+ "CertificateValidation": "Ověřování certifikátu",
+ "DeleteBackupMessageText": "Opravdu chcete odstranit zálohu ‚{name}‘?",
"YesCancel": "Ano, zrušit",
"About": "O aplikaci",
"Component": "Komponenta",
@@ -18,12 +18,12 @@
"Usenet": "Usenet",
"AddDownloadClient": "Přidat klienta pro stahování",
"Backups": "Zálohy",
- "CancelPendingTask": "Opravdu chcete zrušit tento nevyřízený úkol?",
+ "CancelPendingTask": "Opravdu chcete zrušit tento úkol čekající na vyřízení?",
"MovieIndexScrollBottom": "Rejstřík filmů: Posun dolů",
"ProxyType": "Typ serveru proxy",
"Reddit": "Reddit",
"ErrorLoadingContents": "Chyba při načítání obsahu",
- "IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Všechny indexery nejsou k dispozici z důvodu selhání po dobu delší než 6 hodin",
+ "IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Všechny indexery jsou nedostupné z důvodu selhání déle než 6 hodin",
"RemovedFromTaskQueue": "Odebráno z fronty úkolů",
"ResetAPIKey": "Resetovat klíč API",
"SSLCertPassword": "Heslo SSL Cert",
@@ -35,27 +35,27 @@
"Warn": "Varovat",
"Wiki": "Wiki",
"Connections": "Připojení",
- "DeleteDownloadClientMessageText": "Opravdu chcete odstranit klienta pro stahování '{name}'?",
- "Details": "Detaily",
+ "DeleteDownloadClientMessageText": "Opravdu chcete odstranit klienta pro stahování ‚{name}‘?",
+ "Details": "Podrobnosti",
"Disabled": "Zakázáno",
- "Docker": "Přístavní dělník",
+ "Docker": "Docker",
"Donations": "Dary",
- "DownloadClientSettings": "Stáhněte si nastavení klienta",
- "DownloadClientStatusAllClientHealthCheckMessage": "Všichni klienti pro stahování nejsou kvůli chybám k dispozici",
- "DownloadClientStatusSingleClientHealthCheckMessage": "Stahování klientů není k dispozici z důvodu selhání: {downloadClientNames}",
+ "DownloadClientSettings": "Nastavení klienta pro stahování",
+ "DownloadClientStatusAllClientHealthCheckMessage": "Všichni klienti pro stahování jsou nedostupní z důvodu selhání",
+ "DownloadClientStatusSingleClientHealthCheckMessage": "Klienti pro stahování jsou nedostupní z důvodu selhání: {downloadClientNames}",
"Folder": "Složka",
- "Grabs": "Urvat",
+ "Grabs": "Získané",
"NoIssuesWithYourConfiguration": "Žádné problémy s vaší konfigurací",
"HideAdvanced": "Skrýt pokročilé",
"Host": "Hostitel",
"Hostname": "Název hostitele",
- "IncludeHealthWarningsHelpText": "Zahrnout zdravotní varování",
+ "IncludeHealthWarningsHelpText": "Včetně varování ohledně zdraví",
"Indexer": "Indexer",
"IndexerFlags": "Příznaky indexeru",
- "IndexerPriority": "Priorita indexování",
- "IndexerPriorityHelpText": "Priorita indexování od 1 (nejvyšší) do 50 (nejnižší). Výchozí: 25.",
+ "IndexerPriority": "Priorita indexeru",
+ "IndexerPriorityHelpText": "Priorita indexeru od 1 (Nejvyšší) do 50 (Nejnižší). Výchozí: 25.",
"Indexers": "Indexery",
- "IndexerStatusAllUnavailableHealthCheckMessage": "Všechny indexery nejsou k dispozici z důvodu selhání",
+ "IndexerStatusAllUnavailableHealthCheckMessage": "Všechny indexery jsou nedostupné z důvodu selhání",
"LastWriteTime": "Čas posledního zápisu",
"Level": "Úroveň",
"LogLevel": "Úroveň protokolu",
@@ -69,23 +69,23 @@
"UnselectAll": "Odznačit vše",
"UpdateStartupNotWritableHealthCheckMessage": "Aktualizaci nelze nainstalovat, protože spouštěcí složku „{startupFolder}“ nelze zapisovat uživatelem „{userName}“.",
"Version": "Verze",
- "AnalyticsEnabledHelpText": "Odesílejte anonymní informace o použití a chybách na servery {appName}u. To zahrnuje informace o vašem prohlížeči, které stránky {appName} WebUI používáte, hlášení chyb a také verzi operačního systému a běhového prostředí. Tyto informace použijeme k upřednostnění funkcí a oprav chyb.",
+ "AnalyticsEnabledHelpText": "Odesílejte anonymní informace o použití a chybách na servery {appName}u. To zahrnuje informace o vašem prohlížeči, které stránky webového rozhraní {appName}u používáte, hlášení chyb a také verzi operačního systému a běhového prostředí. Tyto informace použijeme k určení priorit funkcí a oprav chyb.",
"ApiKey": "Klíč API",
"AppDataDirectory": "Adresář AppData",
"AppDataLocationHealthCheckMessage": "Aktualizace nebude možná, aby se zabránilo odstranění AppData při aktualizaci",
- "ApplicationStatusCheckAllClientMessage": "Všechny seznamy nejsou k dispozici z důvodu selhání",
- "ApplicationStatusCheckSingleClientMessage": "Seznamy nejsou k dispozici z důvodu selhání: {0}",
+ "ApplicationStatusCheckAllClientMessage": "Všechny aplikace jsou nedostupné z důvodu selhání",
+ "ApplicationStatusCheckSingleClientMessage": "Aplikace nedostupné z důvodu selhání: {0}",
"Apply": "Použít",
"Branch": "Větev",
- "BranchUpdate": "Pobočka, která se má použít k aktualizaci {appName}",
- "EditIndexer": "Upravit indexátor",
+ "BranchUpdate": "Větev použitá k aktualizaci {appName}u",
+ "EditIndexer": "Upravit indexer",
"ForMoreInformationOnTheIndividualDownloadClients": "Další informace o jednotlivých klientech pro stahování získáte kliknutím na informační tlačítka.",
- "General": "Všeobecné",
- "CloseCurrentModal": "Zavřít aktuální modální",
+ "General": "Obecné",
+ "CloseCurrentModal": "Zavřít aktuální modální okno",
"Columns": "Sloupce",
- "ConnectionLost": "Spojení ztraceno",
+ "ConnectionLost": "Ztráta spojení",
"ConnectSettings": "Nastavení připojení",
- "Custom": "Zvyk",
+ "Custom": "Vlastní",
"Error": "Chyba",
"Failed": "Selhalo",
"FeatureRequests": "Žádosti o funkce",
@@ -93,9 +93,9 @@
"Files": "Soubory",
"Filter": "Filtr",
"Fixed": "Pevný",
- "FocusSearchBox": "Zaostřovací vyhledávací pole",
+ "FocusSearchBox": "Zaměřit vyhledávací pole",
"GeneralSettingsSummary": "Port, SSL, uživatelské jméno / heslo, proxy, analytika a aktualizace",
- "History": "Dějiny",
+ "History": "Historie",
"HomePage": "Domovská stránka",
"SettingsEnableColorImpairedModeHelpText": "Upravený styl umožňující uživatelům s barevným postižením lépe rozlišovat barevně kódované informace",
"SettingsLongDateFormat": "Long Date Format",
@@ -105,8 +105,8 @@
"Tasks": "Úkoly",
"Test": "Test",
"UnableToLoadTags": "Značky nelze načíst",
- "IndexerProxyStatusAllUnavailableHealthCheckMessage": "Všechny indexery nejsou k dispozici z důvodu selhání",
- "ApplyTags": "Použít značky",
+ "IndexerProxyStatusAllUnavailableHealthCheckMessage": "Všechny proxy indexerů jsou nedostupné z důvodu selhání",
+ "ApplyTags": "Použít štítky",
"MoreInfo": "Více informací",
"System": "Systém",
"Enabled": "Povoleno",
@@ -121,7 +121,7 @@
"NoLinks": "Žádné odkazy",
"Presets": "Předvolby",
"Priority": "Přednost",
- "Grabbed": "Popadl",
+ "Grabbed": "Získáno",
"Health": "Zdraví",
"LogLevelTraceHelpTextWarning": "Trasování protokolování by mělo být povoleno pouze dočasně",
"ProxyBadRequestHealthCheckMessage": "Nepodařilo se otestovat proxy. StatusCode: {statusCode}",
@@ -171,19 +171,19 @@
"UseProxy": "Použij proxy",
"Username": "Uživatelské jméno",
"Yesterday": "Včera",
- "AutomaticSearch": "Vyhledat automaticky",
- "BackupFolderHelpText": "Relativní cesty budou v adresáři AppData společnosti {appName}",
+ "AutomaticSearch": "Automatické vyhledávání",
+ "BackupFolderHelpText": "Relativní cesty budou v adresáři AppData {appName}u",
"BackupIntervalHelpText": "Interval mezi automatickými zálohami",
- "BackupNow": "Ihned zálohovat",
+ "BackupNow": "Zálohovat nyní",
"BackupRetentionHelpText": "Automatické zálohy starší než doba uchovávání budou automaticky vyčištěny",
- "BeforeUpdate": "Před zálohováním",
+ "BeforeUpdate": "Před aktualizací",
"BindAddress": "Vázat adresu",
- "BindAddressHelpText": "Platná IP adresa, localhost nebo '*' pro všechna rozhraní",
- "BranchUpdateMechanism": "Větev používaná externím aktualizačním mechanismem",
+ "BindAddressHelpText": "Platná IP adresa, localhost nebo ‚*‘ pro všechna rozhraní",
+ "BranchUpdateMechanism": "Větev použitá externím aktualizačním mechanismem",
"BypassProxyForLocalAddresses": "Obcházení proxy serveru pro místní adresy",
- "DeleteIndexerProxyMessageText": "Opravdu chcete smazat značku „{0}“?",
- "DeleteTag": "Smazat značku",
- "IndexerProxyStatusUnavailableHealthCheckMessage": "Indexery nedostupné z důvodu selhání: {indexerProxyNames}",
+ "DeleteIndexerProxyMessageText": "Opravdu chcete odstranit proxy indexeru ‚{name}‘?",
+ "DeleteTag": "Odstranit štítek",
+ "IndexerProxyStatusUnavailableHealthCheckMessage": "Proxy indexerů nedostupné z důvodu selhání: {indexerProxyNames}",
"Name": "název",
"New": "Nový",
"Protocol": "Protokol",
@@ -201,9 +201,9 @@
"BackupsLoadError": "Nelze načíst zálohy",
"DownloadClientsLoadError": "Nelze načíst klienty pro stahování",
"UnableToLoadGeneralSettings": "Nelze načíst obecná nastavení",
- "DeleteNotification": "Smazat oznámení",
+ "DeleteNotification": "Odstranit oznámení",
"EnableAutomaticSearch": "Povolit automatické vyhledávání",
- "EnableInteractiveSearchHelpText": "Bude použito při použití interaktivního vyhledávání",
+ "EnableInteractiveSearchHelpText": "Použije se při interaktivním vyhledávání",
"GeneralSettings": "Obecné nastavení",
"InteractiveSearch": "Interaktivní vyhledávání",
"Interval": "Interval",
@@ -222,50 +222,50 @@
"SettingsShowRelativeDates": "Zobrazit relativní data",
"SettingsShowRelativeDatesHelpText": "Zobrazit relativní (dnes / včera / atd.) Nebo absolutní data",
"SystemTimeHealthCheckMessage": "Systémový čas je vypnutý o více než 1 den. Naplánované úlohy nemusí fungovat správně, dokud nebude čas opraven",
- "AddingTag": "Přidání značky",
+ "AddingTag": "Přidávání štítku",
"Age": "Stáří",
"All": "Vše",
- "AllIndexersHiddenDueToFilter": "Všechny filmy jsou skryty kvůli použitému filtru.",
+ "AllIndexersHiddenDueToFilter": "Všechny indexery jsou skryty kvůli použitému filtru.",
"Analytics": "Analýzy",
"EnableRss": "Povolit RSS",
"NoChange": "Žádná změna",
"Authentication": "Ověřování",
- "AuthenticationMethodHelpText": "Vyžadovat uživatelské jméno a heslo pro přístup k {appName}",
+ "AuthenticationMethodHelpText": "Vyžadovat uživatelské jméno a heslo pro přístup k {appName}u",
"Automatic": "Automatický",
"Backup": "Záloha",
"Cancel": "Zrušit",
- "CertificateValidationHelpText": "Změňte, jak přísné je ověření certifikace HTTPS",
+ "CertificateValidationHelpText": "Změňte přísnost ověřování certifikace HTTPS",
"ChangeHasNotBeenSavedYet": "Změna ještě nebyla uložena",
- "Clear": "Vyčistit",
+ "Clear": "Vymazat",
"ClientPriority": "Priorita klienta",
"CloneProfile": "Klonovat profil",
"Close": "Zavřít",
"CouldNotConnectSignalR": "Nelze se připojit k SignalR, uživatelské rozhraní se neaktualizuje",
"CustomFilters": "Vlastní filtry",
- "Date": "datum",
- "Dates": "Termíny",
+ "Date": "Datum",
+ "Dates": "Data",
"DatabaseMigration": "Migrace databáze",
- "Delete": "Vymazat",
- "DeleteApplicationMessageText": "Opravdu chcete smazat oznámení „{0}“?",
+ "Delete": "Odstranit",
+ "DeleteApplicationMessageText": "Opravdu chcete odstranit aplikaci ‚{name}‘?",
"DeleteBackup": "Odstranit zálohu",
- "DeleteDownloadClient": "Odstranit staženého klienta",
- "DeleteNotificationMessageText": "Opravdu chcete smazat oznámení '{name}'?",
- "DeleteTagMessageText": "Opravdu chcete smazat značku „{0}“?",
- "Discord": "Svár",
- "DownloadClient": "Stáhnout klienta",
- "DownloadClients": "Stáhnout klienty",
+ "DeleteDownloadClient": "Odstranit klienta pro stahování",
+ "DeleteNotificationMessageText": "Opravdu chcete odstranit oznámení ‚{name}‘?",
+ "DeleteTagMessageText": "Opravdu chcete odstranit štítek ‚{label}‘?",
+ "Discord": "Discord",
+ "DownloadClient": "Klient pro stahování",
+ "DownloadClients": "Klienti pro stahování",
"Edit": "Upravit",
- "Enable": "Umožnit",
- "EnableAutomaticSearchHelpText": "Použije se, když se automatické vyhledávání provádí pomocí uživatelského rozhraní nebo {appName}",
+ "Enable": "Povolit",
+ "EnableAutomaticSearchHelpText": "Použije se při automatickém vyhledávání prostřednictvím uživatelského rozhraní nebo pomocí {appName}",
"EnableInteractiveSearch": "Povolit interaktivní vyhledávání",
"EnableSSL": "Povolit SSL",
"EnableSslHelpText": " Vyžaduje restartování spuštěné jako správce, aby se projevilo",
"Events": "Události",
"EventType": "Typ události",
"Exception": "Výjimka",
- "ExistingTag": "Stávající značka",
+ "ExistingTag": "Stávající štítek",
"IllRestartLater": "Restartuji později",
- "IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexery nedostupné z důvodu selhání po dobu delší než 6 hodin: {indexerNames}",
+ "IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexery nedostupné z důvodu selhání déle než 6 hodin: {indexerNames}",
"IndexerStatusUnavailableHealthCheckMessage": "Indexery nedostupné z důvodu selhání: {indexerNames}",
"SettingsTimeFormat": "Časový formát",
"ShowAdvanced": "Zobrazit pokročilé",
@@ -307,9 +307,9 @@
"UnsavedChanges": "Neuložené změny",
"UpdateAutomaticallyHelpText": "Automaticky stahovat a instalovat aktualizace. Stále budete moci instalovat ze systému: Aktualizace",
"NetCore": ".NET Core",
- "Filters": "Filtr",
- "HistoryCleanupDaysHelpText": "Nastavením na 0 zakážete automatické čištění",
- "HistoryCleanupDaysHelpTextWarning": "Soubory v koši starší než vybraný počet dní budou automaticky vyčištěny",
+ "Filters": "Filtry",
+ "HistoryCleanupDaysHelpText": "Nastavte na 0 pro zakázání automatického čištění",
+ "HistoryCleanupDaysHelpTextWarning": "Položky historie starší než vybraný počet dní se vyčistí automaticky",
"MaintenanceRelease": "Údržbové vydání: opravy chyb a další vylepšení. Další podrobnosti najdete v GitHub Commit History",
"OnGrab": "Chyť",
"OnHealthIssue": "K otázce zdraví",
@@ -319,10 +319,10 @@
"No": "Ne",
"UnableToLoadIndexers": "Nelze načíst indexery",
"Yes": "Ano",
- "GrabReleases": "Uchopte uvolnění",
- "ApplicationLongTermStatusCheckSingleClientMessage": "Indexery nedostupné z důvodu selhání po dobu delší než 6 hodin: {0}",
- "ApplicationLongTermStatusCheckAllClientMessage": "Všechny indexery nejsou k dispozici z důvodu selhání po dobu delší než 6 hodin",
- "Ended": "Skončil",
+ "GrabReleases": "Získat vydání",
+ "ApplicationLongTermStatusCheckSingleClientMessage": "Aplikace nedostupné z důvodu selhání déle než 6 hodin: {0}",
+ "ApplicationLongTermStatusCheckAllClientMessage": "Všechny aplikace jsou nedostupné z důvodu selhání déle než 6 hodin",
+ "Ended": "Ukončeno",
"LastDuration": "lastDuration",
"LastExecution": "Poslední poprava",
"NextExecution": "Další spuštění",
@@ -331,47 +331,47 @@
"Replace": "Nahradit",
"OnLatestVersion": "Nejnovější verze aplikace {appName} je již nainstalována",
"More": "Více",
- "ApplyTagsHelpTextAdd": "Přidat: Přidá značky k již existujícímu seznamu",
- "ApplyTagsHelpTextHowToApplyApplications": "Jak použít značky na vybrané filmy",
- "DeleteSelectedDownloadClients": "Odstranit klienta pro stahování",
- "DeleteSelectedIndexersMessageText": "Opravdu chcete smazat {count} vybraný(ch) indexer(ů)?",
- "DeleteSelectedApplicationsMessageText": "Opravdu chcete odstranit indexer „{0}“?",
- "DeleteSelectedDownloadClientsMessageText": "Opravdu chcete smazat {count} vybraných klientů pro stahování?",
+ "ApplyTagsHelpTextAdd": "Přidat: Přidat štítky do existujícího seznamu štítků",
+ "ApplyTagsHelpTextHowToApplyApplications": "Jak použít štítky na vybrané aplikace",
+ "DeleteSelectedDownloadClients": "Odstranit klienty pro stahování",
+ "DeleteSelectedIndexersMessageText": "Opravdu chcete odstranit {count} vybraných indexerů?",
+ "DeleteSelectedApplicationsMessageText": "Opravdu chcete odstranit {count} vybraných aplikací?",
+ "DeleteSelectedDownloadClientsMessageText": "Opravdu chcete odstranit {count} vybraných klientů pro stahování?",
"Year": "Rok",
- "ApplyTagsHelpTextRemove": "Odebrat: Odebrat zadané značky",
- "DownloadClientPriorityHelpText": "Upřednostněte více klientů pro stahování. Round-Robin se používá pro klienty se stejnou prioritou.",
- "ApplyTagsHelpTextHowToApplyIndexers": "Jak použít značky na vybrané indexery",
- "ApplyTagsHelpTextReplace": "Nahradit: Nahradit značky zadanými značkami (prázdné pole vymaže všechny značky)",
+ "ApplyTagsHelpTextRemove": "Odebrat: Odebrat zadané štítky",
+ "DownloadClientPriorityHelpText": "Upřednostněte více klientů pro stahování. Pro klienty se stejnou prioritou se používá funkce Round-Robin.",
+ "ApplyTagsHelpTextHowToApplyIndexers": "Jak použít štítky na vybrané indexery",
+ "ApplyTagsHelpTextReplace": "Nahradit: Nahradit štítky zadanými štítky (prázdné pole vymaže všechny štítky)",
"Track": "Stopa",
- "Genre": "Žánry",
+ "Genre": "Žánr",
"ConnectionLostReconnect": "{appName} se pokusí připojit automaticky, nebo můžete kliknout na tlačítko znovunačtení níže.",
"RecentChanges": "Nedávné změny",
"WhatsNew": "Co je nového?",
- "DeleteAppProfileMessageText": "Opravdu chcete smazat kvalitní profil {0}",
- "ConnectionLostToBackend": "{appName} ztratil spojení s backendem a pro obnovení funkčnosti bude třebaho znovu načíst.",
+ "DeleteAppProfileMessageText": "Opravdu chcete odstranit profil aplikace ‚{name}‘?",
+ "ConnectionLostToBackend": "{appName} ztratil spojení s backendem a pro obnovení funkčnosti bude potřeba ho znovu načíst.",
"minutes": "Minut",
"ApplicationURL": "URL aplikace",
- "ApplicationUrlHelpText": "Externí adresa URL této aplikace včetně http(s)://, portu a základní adresy URL",
+ "ApplicationUrlHelpText": "Externí adresa URL této aplikace včetně http(s)://, portu a základu URL",
"ApplyChanges": "Použít změny",
"ApiKeyValidationHealthCheckMessage": "Aktualizujte svůj klíč API tak, aby měl alespoň {length} znaků. Můžete to provést prostřednictvím nastavení nebo konfiguračního souboru",
"AppUpdated": "{appName} aktualizován",
- "AddDownloadClientImplementation": "Přidat klienta pro stahování - {implementationName}",
- "AuthenticationRequired": "Vyžadované ověření",
- "AuthenticationRequiredHelpText": "Změnit, pro které požadavky je vyžadováno ověření. Pokud nerozumíte rizikům, neměňte je.",
+ "AddDownloadClientImplementation": "Přidat klienta pro stahování – {implementationName}",
+ "AuthenticationRequired": "Vyžadováno ověření",
+ "AuthenticationRequiredHelpText": "Změnit, pro které požadavky je vyžadováno ověření. Neměňte, pokud nerozumíte rizikům.",
"AddCustomFilter": "Přidat vlastní filtr",
"AddConnection": "Přidat spojení",
- "AddConnectionImplementation": "Přidat spojení - {implementationName}",
- "AddIndexerImplementation": "Přidat indexer - {implementationName}",
+ "AddConnectionImplementation": "Přidat spojení – {implementationName}",
+ "AddIndexerImplementation": "Přidat indexer – {implementationName}",
"Publisher": "Vydavatel",
"Categories": "Kategorie",
"Notification": "Oznámení",
- "AddApplicationImplementation": "Přidat spojení - {implementationName}",
- "AddIndexerProxyImplementation": "Přidat indexátor - {implementationName}",
+ "AddApplicationImplementation": "Přidat aplikaci – {implementationName}",
+ "AddIndexerProxyImplementation": "Přidat proxy server indexeru – {implementationName}",
"Artist": "Umělec",
"EditIndexerImplementation": "Upravit indexer - {implementationName}",
- "Episode": "epizoda",
- "NotificationStatusAllClientHealthCheckMessage": "Všechny seznamy nejsou k dispozici z důvodu selhání",
- "NotificationStatusSingleClientHealthCheckMessage": "Seznamy nejsou k dispozici z důvodu selhání: {notificationNames}",
+ "Episode": "Epizoda",
+ "NotificationStatusAllClientHealthCheckMessage": "Všechna oznámení jsou nedostupná z důvodu selhání",
+ "NotificationStatusSingleClientHealthCheckMessage": "Oznámení nedostupná z důvodu selhání: {notificationNames}",
"Application": "Aplikace",
"AppUpdatedVersion": "{appName} byl aktualizován na verzi `{version}`, abyste získali nejnovější změny, musíte znovu načíst {appName}",
"Encoding": "Kódování",
@@ -382,49 +382,49 @@
"Album": "Album",
"Applications": "Aplikace",
"Connect": "Oznámení",
- "EditConnectionImplementation": "Přidat spojení - {implementationName}",
+ "EditConnectionImplementation": "Upravit připojení - {implementationName}",
"EditDownloadClientImplementation": "Upravit klienta pro stahování - {implementationName}",
"AuthForm": "Formuláře (přihlašovací stránka)",
"Clone": "Klonovat",
"DefaultNameCopiedProfile": "{name} - Kopírovat",
"DisabledForLocalAddresses": "Zakázáno pro místní adresy",
- "EditApplicationImplementation": "Přidat spojení - {implementationName}",
+ "EditApplicationImplementation": "Upravit aplikaci - {implementationName}",
"None": "Žádný",
"ResetAPIKeyMessageText": "Opravdu chcete resetovat klíč API?",
"Database": "Databáze",
- "CountDownloadClientsSelected": "{count} vybraných klientů ke stahování",
+ "CountDownloadClientsSelected": "{count} vybraných klientů pro stahování",
"CountIndexersSelected": "{count} vybraných indexerů",
- "EditIndexerProxyImplementation": "Přidat indexátor - {implementationName}",
+ "EditIndexerProxyImplementation": "Upravit proxy indexeru - {implementationName}",
"AuthBasic": "Základní (vyskakovací okno prohlížeče)",
- "AuthenticationRequiredWarning": "Aby se zabránilo vzdálenému přístupu bez ověření, vyžaduje nyní {appName} povolení ověření. Ověřování z místních adres můžete volitelně zakázat.",
+ "AuthenticationRequiredWarning": "Aby se zabránilo vzdálenému přístupu bez ověření, vyžaduje nyní {appName}, aby bylo povoleno ověřování. Volitelně můžete zakázat ověřování z místních adres.",
"RestartProwlarr": "Restartujte {appName}",
"Duration": "Trvání",
"EditSelectedDownloadClients": "Upravit vybrané klienty pro stahování",
"EditSelectedIndexers": "Upravit vybrané indexery",
"AuthenticationMethod": "Metoda ověřování",
- "AuthenticationRequiredPasswordHelpTextWarning": "Vložte nové heslo",
- "AuthenticationRequiredUsernameHelpTextWarning": "Vložte nové uživatelské jméno",
- "AuthenticationMethodHelpTextWarning": "Prosím vyberte platnou metodu ověřování",
+ "AuthenticationRequiredPasswordHelpTextWarning": "Zadejte nové heslo",
+ "AuthenticationRequiredUsernameHelpTextWarning": "Zadejte nové uživatelské jméno",
+ "AuthenticationMethodHelpTextWarning": "Vyberte platnou metodu ověřování",
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Potvrďte nové heslo",
"days": "dnů",
"Id": "ID",
- "CountApplicationsSelected": "Vybráno {0} kolekcí",
- "IndexerHDBitsSettingsCodecs": "Kodek",
+ "CountApplicationsSelected": "{count} vybraných aplikací",
+ "IndexerHDBitsSettingsCodecs": "Kodeky",
"IndexerHDBitsSettingsMediums": "Střední",
"Directory": "Adresář",
- "CustomFilter": "Vlastní filtry",
+ "CustomFilter": "Vlastní filtr",
"ProxyValidationBadRequest": "Nepodařilo se otestovat proxy. StatusCode: {statusCode}",
"Default": "Výchozí",
- "GrabRelease": "Uchopte uvolnění",
+ "GrabRelease": "Získat vydání",
"Category": "Kategorie",
- "BlackholeFolderHelpText": "Složka do které {appName} uloží {extension} soubor",
- "DownloadClientSettingsUrlBaseHelpText": "Přidá předponu do {connectionName} url, jako např. {url}",
+ "BlackholeFolderHelpText": "Složka, do které {appName} uloží soubor {extension}",
+ "DownloadClientSettingsUrlBaseHelpText": "Přidá předponu k url {clientName}, například {url}",
"Any": "Jakákoliv",
"BuiltIn": "Vestavěný",
"Script": "Skript",
"PublishedDate": "Datum zveřejnění",
- "AllSearchResultsHiddenByFilter": "Všechny výsledky jsou schovány použitým filtrem",
- "DockerUpdater": "aktualizujte kontejner dockeru, abyste aktualizaci obdrželi",
+ "AllSearchResultsHiddenByFilter": "Všechny výsledky vyhledávání jsou skryty použitým filtrem.",
+ "DockerUpdater": "Aktualizujte kontejner dockeru, abyste získali aktualizaci",
"Download": "Stažení",
"ErrorRestoringBackup": "Chyba při obnovování zálohy",
"ExternalUpdater": "{appName} je nakonfigurován pro použití externího aktualizačního mechanismu",
@@ -432,9 +432,212 @@
"NoEventsFound": "Nebyly nalezeny žádné události",
"RestartReloadNote": "Poznámka: {appName} se během procesu obnovy automaticky restartuje a znovu načte uživatelské rozhraní.",
"UpdateAppDirectlyLoadError": "{appName} nelze aktualizovat přímo,",
- "AptUpdater": "K instalaci aktualizace použijte apt",
+ "AptUpdater": "K instalaci aktualizace používat apt",
"InstallLatest": "Nainstalujte nejnovější",
"Stats": "Postavení",
"CurrentlyInstalled": "Aktuálně nainstalováno",
- "Mixed": "Pevný"
+ "Mixed": "Pevný",
+ "ActiveIndexers": "Aktivní indexery",
+ "ActiveApps": "Aktivní aplikace",
+ "AppSettingsSummary": "Aplikace a nastavení pro konfiguraci interakce {appName}u s vašimi programy PVR",
+ "ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Pokud je torrent blokován pomocí hash, nemusí být u některých indexerů správně odmítnut během RSS/vyhledávání. Povolení této funkce umožní jeho odmítnutí po zachycení torrentu, ale před jeho odesláním klientovi.",
+ "ApplicationsLoadError": "Nelze načíst seznam aplikací",
+ "AppProfileInUse": "Používaný profil aplikace",
+ "AppsMinimumSeedersHelpText": "Minimální počet seederů požadovaných aplikacemi pro indexer, výchozí hodnota synchronizačního profilu je prázdná",
+ "AverageGrabs": "Průměrné získání",
+ "AverageQueries": "Průměrné dotazy",
+ "AdvancedSettingsShownClickToHide": "Rozšířená nastavení jsou zobrazená, klikněte pro skrytí",
+ "AdvancedSettingsHiddenClickToShow": "Rozšířená nastavení jsou skrytá, klikněte pro zobrazení",
+ "AppsMinimumSeeders": "Minimální počet seederů aplikací",
+ "AddNewIndexer": "Přidat nový indexer",
+ "AddToDownloadClient": "Přidat vydání do klienta pro stahování",
+ "AddIndexerProxy": "Přidat proxy server indexeru",
+ "AppProfileSelectHelpText": "Profily aplikace slouží k ovládání nastavení RSS, automatického vyhledávání a interaktivního vyhledávání při synchronizaci aplikace",
+ "BookSearch": "Vyhledávání knihy",
+ "ClearHistory": "Vymazat historii",
+ "Auth": "Ověřování",
+ "ConnectSettingsSummary": "Oznámení a vlastní skripty",
+ "AreYouSureYouWantToDeleteIndexer": "Opravdu chcete odstranit ‚{name}‘ z {appName}u?",
+ "AuthQueries": "Ověřovací dotazy",
+ "CountIndexersAvailable": "{count} dostupných indexerů",
+ "ApplicationTagsHelpText": "Synchronizovat s touto aplikací indexery, které mají jeden nebo více shodných štítků. Pokud zde nejsou uvedeny žádné štítky, nebude synchronizace žádných indexerů znemožněna kvůli jejich štítkům.",
+ "ApplicationTagsHelpTextWarning": "Štítky je potřeba používat opatrně, mohou mít nechtěné účinky. Aplikace se štítkem se bude synchronizovat pouze s indexery se stejným štítkem.",
+ "BasicSearch": "Základní vyhledávání",
+ "ClearHistoryMessageText": "Opravdu chcete vymazat celou historii {appName}u?",
+ "AddDownloadClientToProwlarr": "Přidání klienta pro stahování umožňuje {appName} odesílat vydání přímo z uživatelského rozhraní při ručním vyhledávání.",
+ "AddRemoveOnly": "Pouze přidat a odebrat",
+ "AudioSearch": "Vyhledávání audia",
+ "ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Synchronizovat odmítnuté blokované hashe torrentů při získávání",
+ "Apps": "Aplikace",
+ "ClickToChangeQueryOptions": "Kliknutím změníte možnosti dotazu",
+ "Author": "Autor",
+ "AverageResponseTimesMs": "Průměrné doby odezvy indexerů (ms)",
+ "Book": "Kniha",
+ "BookSearchTypes": "Typy vyhledávání knihy",
+ "AddApplication": "Přidat aplikaci",
+ "AddSyncProfile": "Přidat synchronizační profil",
+ "AddedToDownloadClient": "Vydání přidáno do klienta",
+ "AddCategory": "Přidat kategorii",
+ "AreYouSureYouWantToDeleteCategory": "Opravdu chcete odstranit namapovanou kategorii?",
+ "DownloadClientRTorrentSettingsUrlPath": "Cesta URL",
+ "DefaultCategory": "Výchozí kategorie",
+ "DownloadClientFloodSettingsUrlBaseHelpText": "Přidá předponu do Flood API, například {url}",
+ "DownloadClientFreeboxSettingsApiUrl": "URL API",
+ "DownloadClientSettingsInitialState": "Počáteční stav",
+ "DownloadClientSettingsPriorityItemHelpText": "Priorita použitá při získávání položek",
+ "FailedToFetchSettings": "Nepodařilo se načíst nastavení",
+ "GrabTitle": "Získat název",
+ "DownloadClientNzbgetSettingsAddPausedHelpText": "Tato volba vyžaduje NzbGet verze alespoň 16.0",
+ "EnableRssHelpText": "Povolit kanál RSS pro indexer",
+ "DeleteApplication": "Odstranit aplikaci",
+ "DeleteSelectedApplications": "Odstranit vybrané aplikace",
+ "DeleteSelectedIndexers": "Odstranit vybrané indexery",
+ "DevelopmentSettings": "Nastavení pro vývoj",
+ "DisabledUntil": "Zakázáno do",
+ "DownloadClientCategory": "Kategorie klienta pro stahování",
+ "DownloadClientDelugeSettingsUrlBaseHelpText": "Přidá předponu do url adresy json deluge, viz {url}",
+ "DownloadClientDownloadStationSettingsDirectoryHelpText": "Volitelná sdílená složka pro stahování, ponechte prázdné pro použití výchozího umístění Download Station",
+ "DownloadClientFloodSettingsAdditionalTags": "Další štítky",
+ "DownloadClientFloodSettingsAdditionalTagsHelpText": "Přidá vlastnosti médií jako štítky. Nápovědy jsou příklady.",
+ "DownloadClientFloodSettingsTagsHelpText": "Počáteční štítky stahování. Aby bylo stahování rozpoznáno, musí mít všechny počáteční štítky. Tím se zabrání konfliktům s nesouvisejícími stahováními.",
+ "DownloadClientFreeboxSettingsAppId": "ID aplikace",
+ "DownloadClientFreeboxSettingsAppToken": "Token aplikace",
+ "DownloadClientFreeboxSettingsAppTokenHelpText": "Token aplikace získaný při vytváření přístupu k Freebox API (tj. ‚app_token‘)",
+ "DownloadClientFreeboxSettingsHostHelpText": "Název hostitele nebo IP adresa hostitele Freeboxu, výchozí hodnota je ‚{url}‘ (funguje pouze ve stejné síti)",
+ "DownloadClientFreeboxSettingsPortHelpText": "Port použitý pro přístup k rozhraní Freeboxu, výchozí hodnota je ‚{port}‘",
+ "DownloadClientPneumaticSettingsNzbFolder": "Složka Nzb",
+ "DownloadClientPneumaticSettingsNzbFolderHelpText": "Tato složka bude muset být dostupná z XBMC",
+ "DownloadClientQbittorrentSettingsContentLayout": "Rozvržení obsahu",
+ "DownloadClientQbittorrentSettingsSequentialOrderHelpText": "Stahovat v postupném pořadí (qBittorrent 4.1.0+)",
+ "DownloadClientQbittorrentSettingsSequentialOrder": "Postupné pořadí",
+ "DownloadClientRTorrentSettingsAddStoppedHelpText": "Povolení přidá torrenty a magnety do rTorrentu v zastaveném stavu. To může způsobit poškození souborů magnet.",
+ "DownloadClientRTorrentSettingsDirectoryHelpText": "Volitelné umístění pro stahování, ponechte prázdné pro použití výchozího umístění rTorrentu",
+ "DownloadClientSettingsAddPaused": "Přidat pozastavené",
+ "DownloadClientSettingsDefaultCategorySubFolderHelpText": "Výchozí záložní kategorie, pokud pro vydání neexistuje žádná namapovaná kategorie. Přidáním kategorie specifické pro {appName} se zabrání konfliktům s nesouvisejícími stahováními, která nejsou {appName}. Použití kategorie je nepovinné, ale důrazně se doporučuje. Vytvoří podadresář [kategorie] ve výstupním adresáři.",
+ "DownloadClientSettingsUseSslHelpText": "Při připojení k {clientName} použít zabezpečené připojení",
+ "DownloadClientTransmissionSettingsDirectoryHelpText": "Volitelné umístění pro stahování, ponechte prázdné pro použití výchozího umístění Transmission",
+ "DownloadClientTransmissionSettingsUrlBaseHelpText": "Přidá předponu k url {clientName} rpc, např. {url}, výchozí hodnota je ‚{defaultUrl}‘",
+ "DownloadClientsSettingsSummary": "Konfigurace klientů pro stahování pro integraci do vyhledávání v uživatelském rozhraní {appName}",
+ "ElapsedTime": "Uplynulý čas",
+ "EnableIndexer": "Povolit indexer",
+ "External": "Externí",
+ "FullSync": "Úplná synchronizace",
+ "HealthMessagesInfoBox": "Další informace o příčině těchto zpráv o kontrole zdraví najdete kliknutím na odkaz wiki (ikona knihy) na konci řádku nebo kontrolou [logů]({link}). Pokud máte potíže s interpretací těchto zpráv, můžete se obrátit na naši podporu, a to na níže uvedených odkazech.",
+ "Implementation": "Implementace",
+ "DeleteClientCategory": "Odstranit kategorii klienta pro stahování",
+ "DownloadClientRTorrentSettingsAddStopped": "Přidat zastavené",
+ "DeleteIndexerProxy": "Odstranit proxy indexerů",
+ "Description": "Popis",
+ "IncludeManualGrabsHelpText": "Včetně ručních získání provedených v {appName}",
+ "GoToApplication": "Přejít na aplikaci",
+ "DownloadClientAriaSettingsDirectoryHelpText": "Volitelné umístění pro stahování, ponechte prázdné pro použití výchozího umístění Aria2",
+ "DownloadClientPneumaticSettingsStrmFolderHelpText": "Soubory .strm v této složce budou importovány pomocí drone",
+ "Destination": "Cíl",
+ "DownloadClientQbittorrentSettingsFirstAndLastFirstHelpText": "Stahovat nejprve první a poslední kusy (qBittorrent 4.1.0+)",
+ "DeleteSelectedIndexer": "Odstranit vybraný indexer",
+ "DownloadClientPneumaticSettingsStrmFolder": "Složka Strm",
+ "DownloadClientQbittorrentSettingsFirstAndLastFirst": "Nejprve první a poslední",
+ "DownloadClientFreeboxSettingsApiUrlHelpText": "Definujte základní adresu URL Freebox API s verzí API, např. ‚{url}‘, výchozí hodnota je ‚{defaultApiUrl}‘",
+ "HistoryCleanup": "Vyčištění historie",
+ "DownloadClientFreeboxSettingsAppIdHelpText": "ID aplikace zadané při vytváření přístupu k Freebox API (tj. ‚app_id‘)",
+ "DownloadClientQbittorrentSettingsContentLayoutHelpText": "Zda použít rozvržení obsahu nakonfigurované v qBittorrentu, původní rozvržení z torrentu nebo vždy vytvořit podsložku (qBittorrent 4.3.2+)",
+ "DownloadClientQbittorrentSettingsInitialStateHelpText": "Počáteční stav torrentů přidaných do qBittorrentu. Pamatujte, že vynucené torrenty nedodržují omezení týkající se seedů",
+ "DownloadClientQbittorrentSettingsUseSslHelpText": "Používat zabezpečené připojení. Viz Možnosti -> WebUI -> Webové uživatelské rozhraní -> ‚Použít HTTPS místo HTTP‘ v qBittorrentu.",
+ "FilterPlaceHolder": "Hledat indexery",
+ "FoundCountReleases": "Nalezeno {itemCount} vydání",
+ "DownloadClientRTorrentSettingsUrlPathHelpText": "Cesta ke koncovému bodu XMLRPC, viz {url}. Při použití ruTorrentu je to obvykle RPC2 nebo [cesta k ruTorrentu]{url2}.",
+ "DownloadClientSettingsDefaultCategoryHelpText": "Výchozí záložní kategorie, pokud pro vydání neexistuje žádná namapovaná kategorie. Přidáním kategorie specifické pro {appName} se zabrání konfliktům s nesouvisejícími stahováními, která nejsou {appName}. Použití kategorie je nepovinné, ale důrazně se doporučuje.",
+ "DownloadClientSettingsInitialStateHelpText": "Počáteční stav pro torrenty přidané do {clientName}",
+ "EditCategory": "Upravit kategorii",
+ "HistoryDetails": "Podrobnosti o historii",
+ "Donate": "Darovat",
+ "DownloadClientSettingsDestinationHelpText": "Ručně určuje cíl stahování, pro použití výchozího nastavení nechte prázdné",
+ "EnabledRedirected": "Povoleno, Přesměrováno",
+ "EditSyncProfile": "Upravit profil synchronizace",
+ "DeleteAppProfile": "Odstranit profil aplikace",
+ "IndexerSettingsAppsMinimumSeeders": "Minimální počet seederů aplikací",
+ "UsenetBlackholeNzbFolder": "Složka Nzb",
+ "SearchIndexers": "Hledat indexery",
+ "IndexerSettingsAppsMinimumSeedersHelpText": "Minimální počet seederů požadovaných aplikacemi pro indexer, výchozí hodnota synchronizačního profilu je prázdná",
+ "IndexerProxy": "Proxy indexeru",
+ "IndexerBeyondHDSettingsRssKeyHelpText": "Klíč RSS ze stránky (Naleznete v Moje zabezpečení => Klíč RSS)",
+ "IndexerHDBitsSettingsCodecsHelpText": "Pokud není zadáno, použijí se všechny možnosti.",
+ "IndexerHDBitsSettingsUsernameHelpText": "Uživatelské jméno stránky",
+ "IndexerAvistazSettingsUsernameHelpTextWarning": "Rozhraní API v tomto indexeru mohou používat pouze hodnosti člen a vyšší.",
+ "IndexerBeyondHDSettingsApiKeyHelpText": "Klíč API ze stránky (Naleznete v Moje zabezpečení => Klíč API)",
+ "IndexerBeyondHDSettingsFreeleechOnlyHelpText": "Hledat pouze freeleech vydání",
+ "IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Hledat pouze freeleech vydání",
+ "IndexerProxies": "Proxy indexeru",
+ "IndexerGazelleGamesSettingsFreeleechOnlyHelpText": "Hledat pouze freeleech vydání",
+ "IndexerHistoryLoadError": "Chyba při načítání historie indexeru",
+ "IndexerId": "ID indexeru",
+ "IndexerNoDefinitionCheckHealthCheckMessage": "Indexery nemají žádnou definici a nebudou fungovat: {indexerNames}. Odeberte je a (nebo) znovu přidejte do {appName}.",
+ "IndexerAlphaRatioSettingsExcludeSceneHelpText": "Vyloučit vydání SCENE z výsledků",
+ "IndexerAlreadySetup": "Alespoň jedna instance indexeru je již nastavena",
+ "IndexerAvistazSettingsPasswordHelpText": "Heslo stránky",
+ "IndexerAvistazSettingsPidHelpText": "PID ze stránky Můj účet nebo Můj profil",
+ "IndexerAvistazSettingsUsernameHelpText": "Uživatelské jméno stránky",
+ "IndexerBeyondHDSettingsLimitedOnly": "Pouze omezené",
+ "IndexerBeyondHDSettingsLimitedOnlyHelpText": "Hledat pouze freeleech (Omezené nahrávání)",
+ "IndexerCategories": "Kategorie indexeru",
+ "IndexerDisabled": "Indexer zakázán",
+ "IndexerDownloadClientHealthCheckMessage": "Indexery s neplatnými klienty pro stahování: {indexerNames}.",
+ "IndexerDownloadClientHelpText": "Určete, který klient pro stahování se použije pro grabování v rámci {appName} z tohoto indexeru",
+ "IndexerFailureRate": "Míra selhání indexeru",
+ "IndexerFileListSettingsFreeleechOnlyHelpText": "Hledat pouze freeleech vydání",
+ "IndexerFileListSettingsPasskeyHelpText": "Přístupový klíč stránky (Jedná se o alfanumerický řetězec v url adrese trackeru zobrazené v klientovi pro stahování)",
+ "IndexerGazelleGamesSettingsApiKeyHelpText": "Klíč API ze stránky (Naleznete v Nastavení => Nastavení přístupu)",
+ "IndexerGazelleGamesSettingsSearchGroupNames": "Hledat názvy skupin",
+ "IndexerHDBitsSettingsFreeleechOnlyHelpText": "Zobrazit pouze freeleech vydání",
+ "IndexerHDBitsSettingsOriginsHelpText": "Pokud není zadáno, použijí se všechny možnosti.",
+ "IndexerHDBitsSettingsUseFilenames": "Použít názvy souborů",
+ "IndexerHealthCheckNoIndexers": "Nejsou povoleny žádné indexery, {appName} nevrátí výsledky vyhledávání",
+ "IndexerIPTorrentsSettingsCookieUserAgent": "Uživatelský agent cookie",
+ "IndexerIPTorrentsSettingsCookieUserAgentHelpText": "Uživatelský agent přidružený cookie použitý z prohlížeče",
+ "IndexerIPTorrentsSettingsFreeleechOnlyHelpText": "Hledat pouze freeleech vydání",
+ "IndexerNebulanceSettingsApiKeyHelpText": "Klíč API z Nastavení uživatele > Klíče API. Klíč musí mít oprávnění Seznam a Stáhnout",
+ "IndexerNewznabSettingsAdditionalParametersHelpText": "Dodatečné parametry Newznab",
+ "IndexerNewznabSettingsApiKeyHelpText": "Klíč API stránky",
+ "IndexerObsoleteCheckMessage": "Indexery jsou zastaralé nebo byly aktualizovány: {0}. Odeberte je a (nebo) znovu přidejte do {appName}",
+ "IndexerOrpheusSettingsApiKeyHelpText": "Klíč API ze stránky (Naleznete v Nastavení => Nastavení přístupu)",
+ "IndexerPassThePopcornSettingsApiUserHelpText": "Tato nastavení naleznete v nastavení zabezpečení PassThePopcorn (Upravit profil > Zabezpečení).",
+ "IndexerPassThePopcornSettingsFreeleechOnlyHelpText": "Hledat pouze freeleech vydání",
+ "IndexerRedactedSettingsApiKeyHelpText": "Klíč API ze stránky (Naleznete v Nastavení => Nastavení přístupu)",
+ "IndexerRss": "RSS indexeru",
+ "LastFailure": "Poslední selhání",
+ "IndexerSettingsAdditionalParameters": "Dodatečné parametry",
+ "IndexerSettingsApiPath": "Cesta k API",
+ "IndexerSettingsApiUser": "Uživatel API",
+ "IndexerAuth": "Ověření indexeru",
+ "IndexerInfo": "Informace o indexeru",
+ "IndexerName": "Název indexeru",
+ "IndexerDetails": "Podrobnosti indexeru",
+ "IndexerHDBitsSettingsPasskeyHelpText": "Přístupový klíč z Podrobnosti o uživateli",
+ "IndexerQuery": "Dotaz na indexer",
+ "IndexerAlphaRatioSettingsExcludeScene": "Vyloučit SCENE",
+ "IndexerAlphaRatioSettingsFreeleechOnlyHelpText": "Hledat pouze freeleech vydání",
+ "IndexerBeyondHDSettingsSearchTypes": "Hledat typy",
+ "IndexerBeyondHDSettingsSearchTypesHelpText": "Vyberte typy vydání, které vás zajímají. Pokud není vybrán žádný, použijí se všechny možnosti.",
+ "IndexerFileListSettingsUsernameHelpText": "Uživatelské jméno stránky",
+ "IndexerGazelleGamesSettingsApiKeyHelpTextWarning": "Musí mít oprávnění Uživatel a Torrenty",
+ "IndexerGazelleGamesSettingsSearchGroupNamesHelpText": "Hledat vydání podle názvů skupin",
+ "IndexerHDBitsSettingsMediumsHelpText": "Pokud není zadáno, použijí se všechny možnosti.",
+ "IndexerHDBitsSettingsUseFilenamesHelpText": "Zaškrtněte tuto možnost, pokud chcete používat názvy souborů torrentů jako názvy vydání",
+ "IndexerNewznabSettingsVipExpirationHelpText": "Zadejte datum (rrrr-mm-dd) pro vypršení VIP nebo prázdné, {appName} bude upozorňovat 1 týden před vypršením VIP",
+ "IndexerNzbIndexSettingsApiKeyHelpText": "Klíč API stránky",
+ "IndexerPassThePopcornSettingsApiKeyHelpText": "Klíč API stránky",
+ "IndexerMTeamTpSettingsApiKeyHelpText": "Klíč API ze stránky (Naleznete v Uživatelský ovládací panel => Zabezpečení => Laboratoř)",
+ "IndexerPassThePopcornSettingsGoldenPopcornOnly": "Pouze Golden Popcorn",
+ "IndexerPassThePopcornSettingsGoldenPopcornOnlyHelpText": "Hledat pouze vydání Golden Popcorn",
+ "IndexerSettingsApiPathHelpText": "Cesta k api, obvykle {url}",
+ "IndexerAvistazSettingsFreeleechOnlyHelpText": "Hledat pouze freeleech vydání",
+ "InitialFailure": "Úvodní selhání",
+ "IndexerTorrentSyndikatSettingsApiKeyHelpText": "Klíč API stránky",
+ "SearchTypes": "Hledat typy",
+ "NotificationTriggersHelpText": "Vyber, které události mají vyvolat toto upozornění",
+ "IndexerSettingsBaseUrl": "Základní URL",
+ "DownloadClientUTorrentProviderMessage": "uTorrent má historii zahrnování kryptoměnových těžařů, malwaru a reklam, důrazně vám doporučujeme zvolit jiného klienta.",
+ "IndexerSettingsBaseUrlHelpText": "Vyberte, jakou základní URL bude {appName} používat pro požadavky na web",
+ "IndexerSettingsPackSeedTimeIndexerHelpText": "Doba, po kterou by měl být balíček (sezóna nebo diskografie) torrentu seedován před zastavením, prázdné pole znamená výchozí nastavení aplikace",
+ "PackSeedTimeHelpText": "Doba, po kterou by měl být balíček (sezóna nebo diskografie) torrentu seedován před zastavením, prázdné pole znamená výchozí nastavení aplikace"
}
diff --git a/src/NzbDrone.Core/Localization/Core/da.json b/src/NzbDrone.Core/Localization/Core/da.json
index 1d1e2df7d..1a118a8af 100644
--- a/src/NzbDrone.Core/Localization/Core/da.json
+++ b/src/NzbDrone.Core/Localization/Core/da.json
@@ -424,5 +424,9 @@
"AdvancedSettingsHiddenClickToShow": "Avancerede indstillinger er skjult. Klik for at vise",
"AdvancedSettingsShownClickToHide": "Avancerede indstillinger vises. Klik for at skjule",
"ApiKeyValidationHealthCheckMessage": "Opdater din API-nøgle til at være på mindste {length} karakterer. Dette kan gøres i indstillingerne eller i konfigurationsfilen",
- "AppProfileInUse": "App-profil i brug"
+ "AppProfileInUse": "App-profil i brug",
+ "Episode": "afsnit",
+ "Artist": "kunstner",
+ "Id": "ID",
+ "Encoding": "Indkodning"
}
diff --git a/src/NzbDrone.Core/Localization/Core/de.json b/src/NzbDrone.Core/Localization/Core/de.json
index 1e2c052f2..b07ede40b 100644
--- a/src/NzbDrone.Core/Localization/Core/de.json
+++ b/src/NzbDrone.Core/Localization/Core/de.json
@@ -87,13 +87,13 @@
"Delete": "Löschen",
"DeleteAppProfile": "App-Profil löschen",
"DeleteApplication": "Applikation löschen",
- "DeleteApplicationMessageText": "Wirklich die Applikation '{0}' löschen?",
+ "DeleteApplicationMessageText": "Bist du sicher, dass du die Anwendung „{name}“ löschen möchtest?",
"DeleteBackup": "Sicherung löschen",
"DeleteBackupMessageText": "Soll das Backup '{name}' wirklich gelöscht werden?",
"DeleteDownloadClient": "Download-Client löschen",
"DeleteDownloadClientMessageText": "Bist du sicher, dass du den Download Client '{name}' wirklich löschen willst?",
"DeleteIndexerProxy": "Indexer Proxy löschen",
- "DeleteIndexerProxyMessageText": "Tag '{0}' wirklich löschen?",
+ "DeleteIndexerProxyMessageText": "Bist du sicher, dass du den Indexer-Proxy „{name}“ löschen möchtest?",
"DeleteNotification": "Benachrichtigung löschen",
"DeleteNotificationMessageText": "Bist du sicher, dass du die Benachrichtigung '{name}' wirklich löschen willst?",
"DeleteTag": "Tag löschen",
@@ -165,7 +165,7 @@
"HomePage": "Hauptseite",
"Host": "Host",
"Hostname": "Hostname",
- "Id": "Id",
+ "Id": "ID",
"IgnoredAddresses": "Ignorierte Adressen",
"IllRestartLater": "Später neustarten",
"IncludeHealthWarningsHelpText": "Zustandswarnung",
@@ -193,7 +193,7 @@
"IndexerSite": "Indexer-Seite",
"IndexerStatusAllUnavailableHealthCheckMessage": "Alle Indexer sind aufgrund von Fehlern nicht verfügbar",
"IndexerStatusUnavailableHealthCheckMessage": "Indexer nicht verfügbar aufgrund von Fehlern: {indexerNames}",
- "IndexerTagsHelpText": "Benutze Tags, um Indexer-Proxies zu spezifizieren, mit welchen Apps der Indexer synchronisiert oder um Indexer zu organisieren.",
+ "IndexerTagsHelpText": "Verwende Tags, um Indexer-Proxys oder die Apps, mit denen der Indexer synchronisiert wird, anzugeben.",
"IndexerVipExpiredHealthCheckMessage": "Die VIP Indexer Vorteile sind abgelaufen: {indexerNames}",
"IndexerVipExpiringHealthCheckMessage": "Die Indexer VIP Vorteile verfallen bald: {indexerNames}",
"Indexers": "Indexer",
@@ -254,7 +254,7 @@
"Ok": "Ok",
"OnApplicationUpdate": "Bei Anwendungsaktualisierung",
"OnApplicationUpdateHelpText": "Bei Anwendungsaktualisierung",
- "OnGrab": "Bei Erfassung",
+ "OnGrab": "Bei Release-Grabs",
"OnHealthIssue": "Bei Gesundheitsproblem",
"OnHealthIssueHelpText": "Zustandsproblem",
"OpenBrowserOnStart": "Browser beim Start öffnen",
@@ -276,7 +276,7 @@
"Privacy": "Privatsphäre",
"Private": "Privat",
"Protocol": "Protokoll",
- "ProwlarrSupportsAnyDownloadClient": "Jeder Downloader der den Newznab-Standard verwendet oder unten aufgelistet ist wird untertützt.",
+ "ProwlarrSupportsAnyDownloadClient": "{appName} unterstützt jeden der unten aufgeführten Download-Clients.",
"ProwlarrSupportsAnyIndexer": "{appName} unterstützt alle Indexer, welcher den Newznab/Torznab Standard implementiert (verwende 'Generic Newznab' (für Usenet) oder 'Generic Torznab' (für Torrents)) und darüber hinaus viele weitere Indexer. Wählen Sie im Folgenden Ihren Indexer aus der Liste.",
"Proxies": "Proxies",
"Proxy": "Proxy",
@@ -395,7 +395,7 @@
"TestAllClients": "Prüfe alle Clients",
"TestAllIndexers": "Prüfe alle Indexer",
"OnLatestVersion": "Die neueste Version von {appName} ist bereits installiert",
- "ThemeHelpText": "Ändere das UI-Theme der Anwendung. Das 'Auto'-Theme verwendet dein Betriebssystem-Theme, um den hellen oder dunklen Modus einzustellen. Inspiriert von {0}",
+ "ThemeHelpText": "Ändere das UI-Design der Anwendung, das 'Auto'-Design verwendet das Betriebssystem-Design, um den Hell- oder Dunkelmodus festzulegen. Inspiriert von {inspiredBy}.",
"Time": "Zeit",
"Title": "Titel",
"Today": "Heute",
@@ -406,7 +406,7 @@
"Type": "Typ",
"UI": "Oberfläche",
"UILanguage": "Oberflächen Sprache ( UI Language )",
- "UILanguageHelpText": "Sprache für die gesamte Oberfläche",
+ "UILanguageHelpText": "Sprache, die {appName} für die Benutzeroberfläche verwenden wird",
"UILanguageHelpTextWarning": "Webseite muss neu geladen werden",
"UISettings": "Benutzeroberflächen Einstellungen",
"UISettingsSummary": "Optionen für Datum, Sprache und Farbbeinträchtigungen",
@@ -461,7 +461,7 @@
"ApplyChanges": "Änderungen anwenden",
"CountIndexersSelected": "{count} Indexer ausgewählt",
"DeleteSelectedDownloadClients": "Lösche Download Client(s)",
- "DeleteSelectedApplicationsMessageText": "Indexer '{0}' wirklich löschen?",
+ "DeleteSelectedApplicationsMessageText": "Bist du sicher, dass du {count} ausgewählte Anwendung(en) löschen möchtest?",
"DeleteSelectedDownloadClientsMessageText": "Sind Sie sicher, dass Sie {count} ausgewählte Download-Clients löschen möchten?",
"DeleteSelectedIndexersMessageText": "Sind Sie sicher, dass Sie {count} ausgewählte(n) Indexer löschen möchten?",
"EditSelectedDownloadClients": "Ausgewählte Download Clienten bearbeiten",
@@ -518,7 +518,7 @@
"ActiveApps": "Aktive Apps",
"ActiveIndexers": "Aktive Indexer",
"AppsMinimumSeeders": "Apps Mindestanzahl von Seedern",
- "ApplicationTagsHelpText": "Synchronisiere Indexer für diese Anwendung die keine passenden Tags oder mindestens 1 passendes Tag haben",
+ "ApplicationTagsHelpText": "Indexer mit dieser Anwendung synchronisieren, die mindestens einen übereinstimmenden Tag haben. Wenn hier keine Tags aufgeführt sind, wird kein Indexer aufgrund seiner Tags von der Synchronisierung ausgeschlossen.",
"ApplicationTagsHelpTextWarning": "Tags sollten mit Vorsicht verwendet werden, da sie ungewollte Effekte haben können. Eine Anwendung mit einem Tag synchronisiert nur Indexer die den Gleichen Tag haben.",
"AddApplicationImplementation": "Anwendung hinzufügen - {implementationName}",
"AddConnectionImplementation": "Verbindung hinzufügen - {implementationName}",
@@ -670,5 +670,141 @@
"SeedRatio": "Seed-Verhältnis",
"SeedTime": "Seed-Zeit",
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Wenn ein Torrent durch einen Hash blockiert wird, wird er möglicherweise nicht korrekt abgelehnt während RSS/Recherche für einige Indexer. Diese Option aktiviert die Ablehnung des Torrents nach dem Abrufen, aber bevor er an den Client gesendet wird.",
- "IndexerHDBitsSettingsOriginsHelpText": "Wenn nicht angegeben, werden alle Optionen verwendet."
+ "IndexerHDBitsSettingsOriginsHelpText": "Wenn nicht angegeben, werden alle Optionen verwendet.",
+ "IndexerSettingsGrabLimit": "Grab-Limit",
+ "IndexerBeyondHDSettingsLimitedOnlyHelpText": "Nur nach Freeleech suchen (Begrenztes UL)",
+ "IndexerFileListSettingsPasskeyHelpText": "Site Passkey (Dies ist die alphanumerische Zeichenfolge in der Tracker-URL, die in deinem Download-Client angezeigt wird)",
+ "IndexerIPTorrentsSettingsCookieUserAgent": "Cookie-Benutzer-Agent",
+ "DownloadClientSettingsDefaultCategorySubFolderHelpText": "Standard-Fallback-Kategorie, wenn für eine Veröffentlichung keine zugeordnete Kategorie existiert. Das Hinzufügen einer für {appName} spezifischen Kategorie vermeidet Konflikte mit nicht verwandten {appName}-Downloads. Die Verwendung einer Kategorie ist optional, aber dringend empfohlen. Eine [Kategorie]-Unterverzeichnis wird im Ausgabeverzeichnis erstellt.",
+ "IndexerBeyondHDSettingsRssKeyHelpText": "RSS-Schlüssel von der Website (zu finden unter Mein Sicherheitsbereich => RSS-Schlüssel)",
+ "IndexerHDBitsSettingsUseFilenamesHelpText": "Aktiviere diese Option, wenn du Torrent-Dateinamen als Releasetitel verwenden möchtest",
+ "IndexerSettingsAppsMinimumSeedersHelpText": "Minimale benötigte Seeder von den Anwendungen, damit der Indexer greifen kann; leer ist die Standardeinstellung des Sync-Profils",
+ "IndexerGazelleGamesSettingsApiKeyHelpText": "API-Schlüssel von der Seite (Zu finden unter Einstellungen => Zugriffseinstellungen)",
+ "IndexerPassThePopcornSettingsApiUserHelpText": "Diese Einstellungen findest du in deinen PassThePopcorn-Sicherheitseinstellungen (Profil bearbeiten > Sicherheit).",
+ "IndexerSettingsQueryLimitHelpText": "Die maximale Anzahl an Queries, die {appName} der Seite gemäß der jeweiligen Einheit erlauben wird",
+ "IndexerRedactedSettingsApiKeyHelpText": "API-Schlüssel von der Seite (Zu finden unter Einstellungen => Zugriffseinstellungen)",
+ "IndexerSettingsQueryLimit": "Query Limit",
+ "PackSeedTimeHelpText": "Die Zeit, die ein Pack (Season oder Diskographie)-Torrent gesät werden soll, bevor er gestoppt wird. Leer ist die Standardeinstellung der App",
+ "TotalIndexerSuccessfulGrabs": "Gesamtanzahl erfolgreicher Indexer-Suchanfragen",
+ "ProwlarrDownloadClientsInAppOnlyAlert": "Download-Clients sind nur für In-App-Suchen in {appName} und synchronisieren sich nicht mit Apps. Es sind keine Pläne vorgesehen, eine solche Funktionalität hinzuzufügen.",
+ "TotalUserAgentGrabs": "Gesamtanzahl der User-Agent-Grabs",
+ "DefaultCategory": "Standardkategorie",
+ "IndexerDownloadClientHelpText": "Gib an, welcher Download-Client für Grab-Vorgänge, die innerhalb von {appName} von diesem Indexer durchgeführt werden, verwendet wird",
+ "IndexerHistoryLoadError": "Fehler beim Laden der Indexer-Historie",
+ "IndexerNzbIndexSettingsApiKeyHelpText": "Website-API-Key",
+ "IndexerPassThePopcornSettingsApiKeyHelpText": "Website-API-Key",
+ "IndexerPassThePopcornSettingsGoldenPopcornOnlyHelpText": "Sucher nur Golden Popcorn Releases",
+ "IndexerSettingsCookieHelpText": "Website Cookie",
+ "IndexerSettingsPackSeedTimeIndexerHelpText": "Die Zeit, die ein Pack (Season oder Diskographie)-Torrent gesät werden soll, bevor er gestoppt wird. Leer ist die Standardeinstellung der App",
+ "SearchAllIndexers": "Alle Indexer durchsuchen",
+ "SearchCountIndexers": "Suche {count} Indexer(s)",
+ "SeedTimeHelpText": "Die Zeit, die ein Torrent gesät werden soll, bevor er gestoppt wird. Leer ist die Standardeinstellung der App",
+ "IndexerGazelleGamesSettingsFreeleechOnlyHelpText": "Suche nur Freeleech-Releases",
+ "IndexerNewznabSettingsVipExpirationHelpText": "Gib das Datum (yyyy-mm-dd) für das VIP-Ablaufdatum ein oder lasse es leer, {appName} benachrichtigt eine Woche vor Ablauf des VIP",
+ "ProxyValidationUnableToConnect": "Kann nicht mit dem Proxy verbunden werden: {exceptionMessage}. Überprüfe das Protokoll rund um diesen Fehler für Details",
+ "IndexerId": "Indexer ID",
+ "OnGrabHelpText": "Bei Release Grab",
+ "AuthQueries": "Authentifizierungsanfragen",
+ "PackSeedTime": "Pack-Seed-Zeit",
+ "DeleteSelectedApplications": "Ausgewählte Anwendungen löschen",
+ "DownloadClientSettingsDefaultCategoryHelpText": "Standard-Fallback-Kategorie, wenn für eine Veröffentlichung keine zugeordnete Kategorie existiert. Das Hinzufügen einer für {appName} spezifischen Kategorie vermeidet Konflikte mit nicht verwandten {appName}-Downloads. Die Verwendung einer Kategorie ist optional, aber dringend empfohlen.",
+ "FoundCountReleases": "{itemCount} Veröffentlichungen gefunden",
+ "IncludeManualGrabsHelpText": "Manuelle Abrufe, die innerhalb von {appName} gemacht wurden, einbeziehen",
+ "IndexerAlphaRatioSettingsFreeleechOnlyHelpText": "Nur nach Freeleech-Veröffentlichungen suchen",
+ "IndexerBeyondHDSettingsApiKeyHelpText": "API-Schlüssel von der Website (zu finden in „Meine Sicherheit“ => „API-Schlüssel“)",
+ "IndexerBeyondHDSettingsFreeleechOnlyHelpText": "Nur nach Freeleech-Releases suchen",
+ "IndexerBeyondHDSettingsRefundOnlyHelpText": "Nur nach Rückerstattungen suchen",
+ "IndexerDisabled": "Indexer deaktiviert",
+ "IndexerFileListSettingsFreeleechOnlyHelpText": "Suche nur Freeleech-Releases",
+ "IndexerGazelleGamesSettingsSearchGroupNamesHelpText": "Suche Veröffentlichungen nach Gruppennamen",
+ "IndexerNebulanceSettingsApiKeyHelpText": "API-Schlüssel aus den Benutzereinstellungen > API-Schlüssel. Der Schlüssel muss List- und Download-Berechtigungen haben",
+ "IndexerSettingsGrabLimitHelpText": "Die maximale Anzahl an Grabs, die {appName} der Seite erlauben wird, wie von der jeweiligen Einheit festgelegt",
+ "IndexerSettingsLimitsUnit": "Limits-Einheit",
+ "IndexerSettingsLimitsUnitHelpText": "Die Zeiteinheit zur Berechnung der Limits pro Indexer",
+ "IndexerStatus": "Indexer Status",
+ "LastFailure": "Letzter Fehler",
+ "ManageApplications": "Applikationen verwalten",
+ "NoApplicationsFound": "Keine Applikationen gefunden",
+ "NoIndexerCategories": "Keine Kategorien für diesen Indexer gefunden",
+ "NoIndexerHistory": "Keine Historie für diesen Indexer gefunden",
+ "Open": "Offen",
+ "OverrideAndAddToDownloadClient": "Überschreiben und zum Download-Client hinzufügen",
+ "PreferMagnetUrl": "Magnet URL bevorzugen",
+ "PreferMagnetUrlHelpText": "Wenn aktiviert, wird dieser Indexer die Verwendung von Magnet-URLs für Grabs bevorzugen, mit Rückfall auf Torrent-Links",
+ "RssQueries": "RSS Anfragen",
+ "TotalHostGrabs": "Gesamtanzahl der Host-Grabs",
+ "TotalHostQueries": "Gesamtanzahl der Host-Suchanfragen",
+ "SeedRatioHelpText": "Das Verhältnis, das ein Torrent erreichen sollte, bevor er gestoppt wird. Leer ist die Standardeinstellung der App",
+ "AverageGrabs": "Durchschnittliche Abrufe",
+ "AverageQueries": "Durchschnittliche Anfragen",
+ "SelectedCountOfCountReleases": "Ausgewählt {selectedCount} von {itemCount} Releases",
+ "NewznabUrl": "Newznab Url",
+ "QueryType": "Abfragetyp",
+ "DisabledUntil": "Deaktiviert bis",
+ "MappedCategories": "Zuordnete Kategorien",
+ "AreYouSureYouWantToDeleteIndexer": "Bist du sicher, dass du „{name}“ aus {appName} löschen möchtest?",
+ "TotalIndexerQueries": "Gesamtanzahl der Indexer-Suchanfragen",
+ "ProwlarrDownloadClientsAlert": "Wenn du beabsichtigst, direkt innerhalb von {appName} zu suchen, musst du Download-Clients hinzufügen. Andernfalls musst du sie hier nicht hinzufügen. Für Suchen aus deinen Apps werden stattdessen die dort konfigurierten Download-Clients verwendet.",
+ "AppsMinimumSeedersHelpText": "Mindestanzahl an Seedern, die von der Anwendung für den Indexer erforderlich ist, um herunterzuladen. Leer bedeutet, dass das Standardprofil der Synchronisierung verwendet wird",
+ "CountIndexersAvailable": "{count} Indexer verfügbar",
+ "DeleteClientCategory": "Download-Client-Kategorie löschen",
+ "DeleteSelectedIndexer": "Ausgewählten Indexer löschen",
+ "TotalGrabs": "Gesamtanzahl der Grabs",
+ "DownloadClientCategory": "Download-Client-Kategorie",
+ "EditCategory": "Kategorie bearbeiten",
+ "IndexerSettingsApiUser": "API Benutzer",
+ "RssFeed": "RSS Feed",
+ "InitialFailure": "Initialer Fehler",
+ "ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Blockierte Torrent-Hashes beim Abrufen synchron ablehnen",
+ "DeleteSelectedIndexers": "Ausgewählte Indexer löschen",
+ "IndexerHDBitsSettingsPasskeyHelpText": "Passkey aus den Benutzerdetails",
+ "IndexerSettingsPasskey": "Pass Key",
+ "ClickToChangeQueryOptions": "Klicken, um Abfrageoptionen zu ändern",
+ "IndexerCategories": "Indexer-Kategorien",
+ "SearchQueries": "Suchanfragen",
+ "IndexerAlphaRatioSettingsExcludeScene": "SCENE ausschließen",
+ "IndexerAlphaRatioSettingsExcludeSceneHelpText": "SCENE-Veröffentlichungen aus den Ergebnissen ausschließen",
+ "IndexerBeyondHDSettingsRefundOnly": "Nur Rückerstattung",
+ "IndexerFileListSettingsUsernameHelpText": "Website-Benutzername",
+ "IndexerGazelleGamesSettingsApiKeyHelpTextWarning": "Muss Benutzer- und Torrents-Berechtigungen haben",
+ "IndexerHDBitsSettingsFreeleechOnlyHelpText": "Zeige nur Freeleech-Releases",
+ "IndexerHDBitsSettingsUsernameHelpText": "Webseite-Benutzername",
+ "IndexerIPTorrentsSettingsFreeleechOnlyHelpText": "Suche nur Freeleech-Releases",
+ "IndexerNewznabSettingsApiKeyHelpText": "Website API Key",
+ "IndexerOrpheusSettingsApiKeyHelpText": "API-Schlüssel von der Seite (Zu finden unter Einstellungen => Zugriffseinstellungen)",
+ "IndexerPassThePopcornSettingsFreeleechOnlyHelpText": "Suche nur Freeleech-Releases",
+ "IndexerTorrentSyndikatSettingsApiKeyHelpText": "Website-API-Schlüssel",
+ "AreYouSureYouWantToDeleteCategory": "Bist du sicher, dass du die zugeordnete Kategorie löschen möchtest?",
+ "DownloadClientSettingsPriorityItemHelpText": "Priorität, die beim Abrufen von Elementen verwendet werden soll",
+ "GoToApplication": "Zur Anwendung gehen",
+ "HistoryDetails": "Historie-Details",
+ "IndexerBeyondHDSettingsLimitedOnly": "Nur begrenzt",
+ "IndexerHDBitsSettingsOrigins": "Ursprünge",
+ "IndexerHDBitsSettingsUseFilenames": "Verwende Dateinamen",
+ "IndexerIPTorrentsSettingsCookieUserAgentHelpText": "User-Agent, der mit dem Cookie aus dem Browser verwendet wird",
+ "IndexerNewznabSettingsAdditionalParametersHelpText": "Zusätzliche Newznab-Parameter",
+ "IndexerSettingsPackSeedTime": "Pack-Seed-Zeit",
+ "IndexerSettingsRssKey": "RSS Schlüssel",
+ "IndexerMTeamTpSettingsApiKeyHelpText": "API-Schlüssel von der Seite (Zu finden im Benutzersteuerungsfeld => Sicherheit => Labor)",
+ "IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Suche nur Freeleech-Releases",
+ "IndexerSettingsFreeleechOnly": "Nur Freeleech",
+ "IndexerSettingsPreferMagnetUrl": "Magnet-URL bevorzugen",
+ "IndexerSettingsPreferMagnetUrlHelpText": "Wenn aktiviert, bevorzugt dieser Indexer die Verwendung von Magnet-URLs für Grabs mit Rückfall auf Torrent-Links",
+ "TorznabUrl": "Torznab Url",
+ "IndexerPassThePopcornSettingsGoldenPopcornOnly": "Nur Golden Popcorn",
+ "IndexerSettingsBaseUrl": "Basis Url",
+ "IndexerAvistazSettingsFreeleechOnlyHelpText": "Nur nach Freeleech-Veröffentlichungen suchen",
+ "IndexerAvistazSettingsPasswordHelpText": "Website-Passwort",
+ "IndexerAvistazSettingsPidHelpText": "PID aus der „Mein Konto“- oder „Mein Profil“-Seite",
+ "IndexerAvistazSettingsUsernameHelpText": "Website-Benutzername",
+ "IndexerAvistazSettingsUsernameHelpTextWarning": "Nur Mitglieder mit Rang „Mitglied“ und höher können die API auf diesem Indexer nutzen.",
+ "IndexerBeyondHDSettingsRewindOnly": "Nur zurückspulen",
+ "IndexerBeyondHDSettingsRewindOnlyHelpText": "Nur Rückwärtssuche",
+ "IndexerBeyondHDSettingsSearchTypesHelpText": "Wähle die Arten von Veröffentlichungen aus, die dich interessieren. Wenn keine ausgewählt sind, werden alle Optionen verwendet.",
+ "IndexerFailureRate": "Indexer-Fehlerrate",
+ "IndexerGazelleGamesSettingsSearchGroupNames": "Suche Gruppennamen",
+ "IndexerSettingsBaseUrlHelpText": "Wähle die Basis-Url aus, die {appName} für Anfragen an die Seite verwenden soll",
+ "RepeatSearch": "Suche wiederholen",
+ "AverageResponseTimesMs": "Durchschnittliche Indexer-Antwortzeiten (ms)",
+ "BasicSearch": "Einfache Suche"
}
diff --git a/src/NzbDrone.Core/Localization/Core/en.json b/src/NzbDrone.Core/Localization/Core/en.json
index 5e74f61d0..2565fdf01 100644
--- a/src/NzbDrone.Core/Localization/Core/en.json
+++ b/src/NzbDrone.Core/Localization/Core/en.json
@@ -241,6 +241,7 @@
"DownloadClientStatusSingleClientHealthCheckMessage": "Download clients unavailable due to failures: {downloadClientNames}",
"DownloadClientTransmissionSettingsDirectoryHelpText": "Optional location to put downloads in, leave blank to use the default Transmission location",
"DownloadClientTransmissionSettingsUrlBaseHelpText": "Adds a prefix to the {clientName} rpc url, eg {url}, defaults to '{defaultUrl}'",
+ "DownloadClientUTorrentProviderMessage": "uTorrent has a history of including cryptominers, malware and ads, we strongly encourage you to choose a different client.",
"DownloadClients": "Download Clients",
"DownloadClientsLoadError": "Unable to load download clients",
"DownloadClientsSettingsSummary": "Download clients configuration for integration into {appName} UI search",
diff --git a/src/NzbDrone.Core/Localization/Core/es.json b/src/NzbDrone.Core/Localization/Core/es.json
index 919dd5353..e7981a69e 100644
--- a/src/NzbDrone.Core/Localization/Core/es.json
+++ b/src/NzbDrone.Core/Localization/Core/es.json
@@ -806,5 +806,6 @@
"InstallMajorVersionUpdateMessageLink": "Por favor revisa [{domain}]({url}) para más información.",
"FailedToFetchSettings": "Error al recuperar la configuración",
"CurrentlyInstalled": "Actualmente instalado",
- "PreviouslyInstalled": "Previamente instalado"
+ "PreviouslyInstalled": "Previamente instalado",
+ "DownloadClientUTorrentProviderMessage": "uTorrent tiene un amplio historial de incluir criptomineros, malware y publicidad, por lo que recomendamos encarecidamente que elijas un cliente diferente."
}
diff --git a/src/NzbDrone.Core/Localization/Core/fa.json b/src/NzbDrone.Core/Localization/Core/fa.json
index 0967ef424..c0f9f6513 100644
--- a/src/NzbDrone.Core/Localization/Core/fa.json
+++ b/src/NzbDrone.Core/Localization/Core/fa.json
@@ -1 +1,13 @@
-{}
+{
+ "ApiKey": "کلید API",
+ "NetCore": ".NET",
+ "Add": "افزودن",
+ "About": "درباره",
+ "Actions": "اقدامات",
+ "Docker": "Docker",
+ "AddConnection": "افزودن پیوند",
+ "AddConnectionImplementation": "افزودن پیوند - {implementationName}",
+ "AddDownloadClientImplementation": "افزودن کلاینت دانلود - {implementationName}",
+ "Torrents": "تورنت ها",
+ "Usenet": "Usenet"
+}
diff --git a/src/NzbDrone.Core/Localization/Core/fi.json b/src/NzbDrone.Core/Localization/Core/fi.json
index 3031f6fe0..0236ce555 100644
--- a/src/NzbDrone.Core/Localization/Core/fi.json
+++ b/src/NzbDrone.Core/Localization/Core/fi.json
@@ -4,12 +4,12 @@
"LogLevel": "Lokikirjauksen laajuus",
"MovieIndexScrollTop": "Elokuvakirjasto: vieritä ylös",
"Apply": "Käytä",
- "ClientPriority": "Lataustyökalun painotus",
- "IndexerPriorityHelpText": "Tietolähteen painotus, 1– 50 (korkein-alin). Oletusarvo on 25. Käytetään muutoin tasaveroisten julkaisujen kaappauspäätökseen. Kaikkia käytössä olevia tietolähteitä käytetään edelleen RSS-synkronointiin ja hakuun.",
+ "ClientPriority": "Latauspalvelun painotus",
+ "IndexerPriorityHelpText": "Hakupalvelun painotus, 1– 50 (korkein-alin). Oletusarvo on 25.",
"Manual": "Manuaalinen",
"Add": "Lisää",
"Reload": "Lataa uudelleen",
- "Indexers": "Tietolähteet",
+ "Indexers": "Hakupalvelut",
"MovieIndexScrollBottom": "Elokuvakirjasto: vieritä alas",
"SSLCertPassword": "SSL-varmenteen salasana",
"Style": "Ulkoasu",
@@ -25,16 +25,16 @@
"SettingsTimeFormat": "Kellonajan esitys",
"Message": "Viesti",
"Seeders": "Jakajat",
- "TestAll": "Kaikkien testaus",
- "AddDownloadClient": "Lisää lataustyökalu",
+ "TestAll": "Koesta kaikki",
+ "AddDownloadClient": "Lisää latauspalvelu",
"CustomFilters": "Omat suodattimet",
"DeleteTag": "Poista tunniste",
"EnableRss": "Käytä RSS-syötettä",
"Filter": "Suodatus",
"Fixed": "Korjattu",
"FocusSearchBox": "Kohdista hakukenttä",
- "ForMoreInformationOnTheIndividualDownloadClients": "Saat yksittäisestä lataustyökalusta lisätietoja painamalla sen ohessa olevaa \"Lisätietoja\"-painiketta.",
- "HideAdvanced": "Piilota lisäasetukset",
+ "ForMoreInformationOnTheIndividualDownloadClients": "Saat lisätietoja yksittäisistä latauspalveluista painamalla niiden ohessa olevia lisätietopainikkeita.",
+ "HideAdvanced": "Laajenna asetukset",
"History": "Historia",
"MIA": "Puuttuu",
"New": "Uutta",
@@ -45,21 +45,21 @@
"Refresh": "Päivitä",
"RefreshMovie": "Päivitä elokuva",
"ReleaseBranchCheckOfficialBranchMessage": "\"{0}\" ei ole kelvollinen {appName}-julkaisuhaara ja tämän vuoksi et saa päivityksiä.",
- "RestartRequiredHelpTextWarning": "Käyttöönotto vaatii in uudelleenkäynnistyksen.",
+ "RestartRequiredHelpTextWarning": "Käyttöönotto vaatii sovelluksen uudelleenkäynnistyksen.",
"Result": "Tulos",
"Settings": "Asetukset",
"SettingsLongDateFormat": "Pitkän päiväyksen esitys",
"SettingsShortDateFormat": "Lyhyen päiväyksen esitys",
"UnselectAll": "Tyhjennä valinnat",
"UpdateStartupTranslocationHealthCheckMessage": "Päivitystä ei voida asentaa, koska käynnistyskansio \"{startupFolder}\" sijaitsee \"App Translocation\" -kansiossa.",
- "UpdateUiNotWritableHealthCheckMessage": "Päivityksen asennus ei onnistu, koska käyttäjällä \"{userName}\" ei ole kirjoitusoikeutta käyttöliittymäkansioon \"{uiFolder}\".",
+ "UpdateUiNotWritableHealthCheckMessage": "Päivityksen asennus ei onnistu, koska käyttäjällä {userName} ei ole kirjoitusoikeutta käyttöliittymäkansioon \"{uiFolder}\".",
"UpdateMechanismHelpText": "Käytä {appName}in sisäänrakennettua päivitystoimintoa tai komentosarjaa.",
"Enable": "Käytä",
"UI": "Käyttöliittymä",
"Usenet": "Usenet",
"BackupNow": "Varmuuskopioi nyt",
"NoBackupsAreAvailable": "Varmuuskopioita ei ole käytettävissä",
- "UpdateStartupNotWritableHealthCheckMessage": "Päivitystä ei voida asentaa, koska käyttäjällä \"{userName}\" ei ole kirjoitusoikeutta käynnistyskansioon \"{startupFolder}\".",
+ "UpdateStartupNotWritableHealthCheckMessage": "Päivitystä ei voida asentaa, koska käyttäjällä {userName} ei ole kirjoitusoikeutta käynnistyskansioon \"{startupFolder}\".",
"Updates": "Päivitykset",
"UpdateScriptPathHelpText": "Polku komentosarjaan, joka käsittelee puretun päivitystiedoston ja hoitaa asennuksen loppuosuuden.",
"Uptime": "Käyttöaika",
@@ -70,12 +70,12 @@
"NoTagsHaveBeenAddedYet": "Tunnisteita ei ole vielä lisätty.",
"ApplyTags": "Tunnistetoimenpide",
"Authentication": "Tunnistautuminen",
- "AuthenticationMethodHelpText": "Vaadi {appName}in käyttöön käyttäjätunnus ja salasana",
+ "AuthenticationMethodHelpText": "Vaadi {appName}in käyttöön käyttäjätunnus ja salasana.",
"BindAddressHelpText": "Toimiva IP-osoite, localhost tai * (tähti) kaikille verkkoliitännöille.",
"Close": "Sulje",
- "DeleteNotification": "Poista ilmoitus",
+ "DeleteNotification": "Poista ilmoituspalvelu",
"Docker": "Docker",
- "DownloadClient": "Lataustyökalu",
+ "DownloadClient": "Latauspalvelu",
"Language": "Kieli",
"Search": "Haku",
"Details": "Tiedot",
@@ -88,14 +88,14 @@
"Logs": "Lokitiedot",
"Mechanism": "Mekanismi",
"Name": "Nimi",
- "NoLinks": "Ei linkkejä",
+ "NoLinks": "Kytköksiä ei ole",
"Peers": "Vertaiset",
"Presets": "Esiasetukset",
"Priority": "Painotus",
"Protocol": "Protokolla",
"ProxyBadRequestHealthCheckMessage": "Välityspalvelintesti epäonnistui. Tilakoodi: {statusCode}.",
"ProxyFailedToTestHealthCheckMessage": "Välityspalvelintesti epäonnistui: {url}",
- "ProxyResolveIpHealthCheckMessage": "Määritetyn välityspalvelimen \"{0}\" IP-osoitteen selvitys epäonnistui.",
+ "ProxyResolveIpHealthCheckMessage": "Määritetyn välityspalvelimen \"{proxyHostName}\" IP-osoitteen selvitys epäonnistui.",
"ProxyPasswordHelpText": "Käyttäjätunnus ja salasana tulee täyttää vain tarvittaessa. Mikäli näitä ei ole, tulee kentät jättää tyhjiksi.",
"ProxyType": "Välityspalvelimen tyyppi",
"ProxyUsernameHelpText": "Käyttäjätunnus ja salasana tulee täyttää vain tarvittaessa. Mikäli näitä ei ole, tulee kentät jättää tyhjiksi.",
@@ -111,18 +111,18 @@
"RestartNow": "Käynnistä uudelleen nyt",
"Restore": "Palauta",
"Rss": "RSS",
- "RssIsNotSupportedWithThisIndexer": "RSS-syötettä ei ole käytettävissä tälle tietolähteelle",
+ "RssIsNotSupportedWithThisIndexer": "Tämän hakupalvelun kanssa ei voida käyttää RSS-syötettä.",
"ScriptPath": "Komentosarjan sijainti",
"Security": "Suojaus",
"SuggestTranslationChange": "Ehdota käännösmuutosta",
"System": "Järjestelmä",
- "SystemTimeHealthCheckMessage": "Järjestelmän ajassa on ainakin vuorokauden heitto eivätkä ajoitetut tehtävät tämän vuoksi toimi oikein ennen kuin se on korjattu.",
- "TagCannotBeDeletedWhileInUse": "Tunnistetta ei voi poistaa, koska se on käytössä",
- "TagIsNotUsedAndCanBeDeleted": "Tunnistetta ei ole määritetty millekään kohteelle, joten sen voi poistaa.",
+ "SystemTimeHealthCheckMessage": "Järjestelmän aika on ainakin vuorokauden pielessä, eivätkä ajoitetut tehtävät toimi oikein ennen kuin se on korjattu.",
+ "TagCannotBeDeletedWhileInUse": "Tunnistetta ei voida poistaa kun se on käytössä.",
+ "TagIsNotUsedAndCanBeDeleted": "Tunniste ei ole käytössä ja voidaan poistaa.",
"TagsSettingsSummary": "Täältä näet kaikki tunnisteet käyttökohteineen ja voit poistaa käyttämättömät tunnisteet.",
"Tasks": "Tehtävät",
- "Test": "Testaa",
- "TestAllClients": "Lataustyökalujen testaus",
+ "Test": "Koesta",
+ "TestAllClients": "Koesta palvelut",
"Time": "Aika",
"Title": "Nimike",
"Tomorrow": "Huomenna",
@@ -130,52 +130,52 @@
"Torrents": "Torrentit",
"Type": "Tyyppi",
"UILanguage": "Käyttöliittymän kieli",
- "UnableToAddANewApplicationPleaseTryAgain": "Uuden sovelluksen lisäys epäonnistui. Yritä uudelleen.",
- "UnableToAddANewIndexerPleaseTryAgain": "Uuden tietolähteen lisäys epäonnistui. Yritä uudelleen.",
- "UnableToAddANewIndexerProxyPleaseTryAgain": "Uuden tiedonhaun välityspalvelimen lisäys epäonnistui. Yritä uudelleen.",
- "BackupsLoadError": "Varmuuskopioiden lataus epäonnistui",
- "DownloadClientsLoadError": "Lataustyökalujen lataus ei onistu",
- "UnableToLoadGeneralSettings": "Virhe ladattaessa yleisiä asetuksia",
+ "UnableToAddANewApplicationPleaseTryAgain": "Virhe lisättäessä sovellusta. Yritä uudelleen.",
+ "UnableToAddANewIndexerPleaseTryAgain": "Uuden hakupalvelun lisääminen epäonnistui. Yritä uudelleen.",
+ "UnableToAddANewIndexerProxyPleaseTryAgain": "Virhe lisättäessä tiedonhaun välityspalvelinta. Yritä uudelleen.",
+ "BackupsLoadError": "Virhe ladattaessa varmuuskopioita.",
+ "DownloadClientsLoadError": "Virhe ladattaessa latauspalveluita.",
+ "UnableToLoadGeneralSettings": "Yleisasetusten lataus epäonnistui",
"UpdateAutomaticallyHelpText": "Lataa ja asenna päivitykset automaattisesti. Voit myös edelleen suorittaa asennuksen järjestelmäasetusten päivitykset-osiosta.",
"Added": "Lisäysaika",
- "AddIndexer": "Lisää tietolähde",
+ "AddIndexer": "Lisää hakupalvelu",
"AddingTag": "Tunniste lisätään",
"Age": "Ikä",
"All": "Kaikki",
- "AllIndexersHiddenDueToFilter": "Aktiivinen suodatin on piilottanut kaikki tietolähteet.",
+ "AllIndexersHiddenDueToFilter": "Aktiivinen suodatin on piilottanut kaikki hakupalvelut.",
"Analytics": "Analytiikka",
"AnalyticsEnabledHelpText": "Lähetä nimettömiä käyttö- ja virhetietoja {appName}in palvelimille. Tämä sisältää tietoja selaimestasi, käyttöliittymän sivujen käytöstä, virheraportoinnista, käyttöjärjestelmästä ja suoritusalustasta. Käytämme näitä tietoja ominaisuuksien ja vikakorjausten painotukseen.",
"ApiKey": "Rajapinnan avain",
"AppDataDirectory": "AppData-kansio",
"DatabaseMigration": "Tietokannan siirto",
"Delete": "Poista",
- "DeleteIndexerProxyMessageText": "Haluatko varmasti poistaa tietolähdevälityspalvelimen \"{name}\"?",
+ "DeleteIndexerProxyMessageText": "Haluatko varmasti poistaa hakupalveluvälityspalvelimen \"{name}\"?",
"DeleteNotificationMessageText": "Haluatko varmasti poistaa ilmoituspalvelun \"{name}\"?",
"Disabled": "Ei käytössä",
- "DownloadClients": "Lataustyökalut",
- "DownloadClientSettings": "Lataustyökalujen asetukset",
- "DownloadClientStatusAllClientHealthCheckMessage": "Lataustyökaluja ei ole ongelmien vuoksi käytettävissä",
+ "DownloadClients": "Latauspalvelut",
+ "DownloadClientSettings": "Latauspalveluasetukset",
+ "DownloadClientStatusAllClientHealthCheckMessage": "Latauspalveluita ei ole ongelmien vuoksi käytettävissä",
"Mode": "Tila",
"MoreInfo": "Lisätietoja",
"SelectAll": "Valitse kaikki",
"SendAnonymousUsageData": "Lähetä nimettömiä käyttötietoja",
"SetTags": "Tunnisteiden määritys",
"SettingsEnableColorImpairedMode": "Heikentyneen värinäön tila",
- "ShowAdvanced": "Näytä lisäasetukset",
+ "ShowAdvanced": "Supista asetukset",
"ShowSearchHelpText": "Näytä hakupainike osoitettaessa.",
"Shutdown": "Sammuta",
"Size": "Koko",
"Sort": "Järjestys",
- "UnableToAddANewDownloadClientPleaseTryAgain": "Uuden lataustyökalun lisäys epäonnistui. Yitä uudelleen.",
+ "UnableToAddANewDownloadClientPleaseTryAgain": "Latauspalvelun lisääminen epäonnistui. Yritä uudelleen.",
"AppDataLocationHealthCheckMessage": "Päivityksiä ei sallita, jotta AppData-kansion poistaminen päivityksen yhteydessä voidaan estää",
- "UnableToLoadHistory": "Historian lataus epäonnistui.",
- "UnableToLoadNotifications": "Virhe ladattaessa kytköksiä",
- "UnableToLoadTags": "Tunnisteiden lataus ei onnistu",
- "UnableToLoadUISettings": "Virhe ladattaesssa käyttöliittymän asetuksia",
+ "UnableToLoadHistory": "Virhe ladattaessa historiaa.",
+ "UnableToLoadNotifications": "Virhe ladattaessa ilmoituspalveluita.",
+ "UnableToLoadTags": "Virhe ladattaessa tunnisteita.",
+ "UnableToLoadUISettings": "Virhe ladattaessa käyttöliittymäasetuksia.",
"UnsavedChanges": "Muutoksia ei ole tallennettu",
"Yesterday": "Eilen",
- "ConnectionLost": "Ei yhteyttä",
- "DeleteDownloadClientMessageText": "Haluatko varmasti poistaa lataustyökalun \"{name}\"?",
+ "ConnectionLost": "Yhteys menetettiin",
+ "DeleteDownloadClientMessageText": "Haluatko varmasti poistaa latauspalvelun \"{name}\"?",
"DeleteTagMessageText": "Haluatko varmasti poistaa tunnisteen \"{label}\"?",
"Discord": "Discord",
"Donations": "Lahjoitukset",
@@ -202,18 +202,18 @@
"SettingsShowRelativeDates": "Suhteellisten päiväysten esitys",
"SettingsShowRelativeDatesHelpText": "Korvaa absoluuttiset päiväykset suhteellisilla päiväyksillä (tänään/eilen/yms.).",
"ShowSearch": "Näytä haku",
- "Source": "Lähdekoodi",
+ "Source": "Lähde",
"SSLPort": "SSL-portti",
"StartTypingOrSelectAPathBelow": "Aloita kirjoitus tai valitse sijainti alta",
"StartupDirectory": "Käynnistyskansio",
"TableOptions": "Taulukkonäkymän asetukset",
- "TableOptionsColumnsMessage": "Valitse näytettävät sarakkeet ja niiden järjestys",
- "TagsHelpText": "Käytetään vähintään yhdellä täsmäävällä tunnisteella merkityille tietolähteille. Käytä kaikille jättämällä tyhjäksi.",
- "UnableToAddANewAppProfilePleaseTryAgain": "Uuden sovellusprofiilin lisäys epäonnistui. Yritä uudelleen.",
- "UnableToAddANewNotificationPleaseTryAgain": "Kytköksen lisäys epäonnistui. Yritä uudelleen.",
+ "TableOptionsColumnsMessage": "Valitse näytettävät sarakkeet ja niiden järjestys.",
+ "TagsHelpText": "Käytetään vähintään yhdellä täsmäävällä tunnisteella merkityille hakupalveluille.",
+ "UnableToAddANewAppProfilePleaseTryAgain": "Virhe lisättäessä sovellusprofiilia. Yritä uudelleen.",
+ "UnableToAddANewNotificationPleaseTryAgain": "Ilmoituspalvelun lisääminen epäonnistui. Yritä uudelleen.",
"Version": "Versio",
"View": "Näkymä",
- "Warn": "Varoitus",
+ "Warn": "Varoita",
"Wiki": "Wiki",
"Port": "Portti",
"Automatic": "Automaattinen",
@@ -221,39 +221,39 @@
"Backup": "Varmuuskopiointi",
"BackupFolderHelpText": "Suhteelliset tiedostosijainnit ovat {appName}in AppData-kansiossa.",
"BackupIntervalHelpText": "Tietokannan ja asetusten automaattisen varmuuskopioinnin ajoitus.",
- "BackupRetentionHelpText": "Säilytysjaksoa vanhemmat varmuuskopiot siivotaan automaattisesti.",
+ "BackupRetentionHelpText": "Säilytysaikaa vanhemmat varmuuskopiot siivotaan automaattisesti.",
"Backups": "Varmuuskopiot",
"BeforeUpdate": "Ennen päivitystä",
"BindAddress": "Sidososoite",
"Branch": "Haara",
- "BranchUpdate": "{appName}in versiopäivityksiin käytettävä kehityshaara",
+ "BranchUpdate": "{appName}in versiopäivityksiin käytettävä kehityshaara.",
"BranchUpdateMechanism": "Ulkoisen päivitysratkaisun käyttämä kehityshaara.",
"BypassProxyForLocalAddresses": "Ohjaa paikalliset osoitteet välityspalvelimen ohi",
"Cancel": "Peruuta",
- "CancelPendingTask": "Haluatko varmasti perua tämän odottavan tehtävän?",
+ "CancelPendingTask": "Haluatko varmasti perua odottavan tehtävän?",
"CertificateValidation": "Varmenteen vahvistus",
- "CertificateValidationHelpText": "Muuta HTTPS-varmennevahvistuksen tarkkuutta. Älä muuta, jollet ymmärrä tähän liittyviä riskejä.",
+ "CertificateValidationHelpText": "Määritä HTTPS-varmennevahvistuksen tiukkuus. Älä muuta, jos et ymmärrä riskejä.",
"ChangeHasNotBeenSavedYet": "Muutosta ei ole vielä tallennettu",
"Clear": "Tyhjennä",
"CloneProfile": "Monista profiili",
"CloseCurrentModal": "Sulje nykyinen ikkuna",
"Columns": "Sarakkeet",
"Component": "Komponentti",
- "Connections": "Yhteydet",
- "ConnectSettings": "Kytkösasetukset",
- "CouldNotConnectSignalR": "SignalR-kirjastoa ei tavoitettu, eikä käyttöliittymää päivitetä",
+ "Connections": "Ilmoituspalvelut",
+ "ConnectSettings": "Ilmoituspavelun asetukset",
+ "CouldNotConnectSignalR": "SignalR-kirjastoa ei tavoitettu, eikä käyttöliittymä päivity.",
"Custom": "Mukautettu",
"DeleteApplicationMessageText": "Haluatko varmasti poistaa sovelluksen \"{name}\"?",
"DeleteBackup": "Poista varmuuskopio",
"DeleteBackupMessageText": "Haluatko varmasti poistaa varmuuskopion \"{name}\"?",
- "DeleteDownloadClient": "Poista lataustyökalu",
- "DownloadClientStatusSingleClientHealthCheckMessage": "Lataustyökaluja ei ole ongelmien vuoksi käytettävissä: {downloadClientNames}",
- "EditIndexer": "Muokkaa tietolähdettä",
+ "DeleteDownloadClient": "Poista latauspalvelu",
+ "DownloadClientStatusSingleClientHealthCheckMessage": "Latauspalveluita ei ole ongelmien vuoksi käytettävissä: {downloadClientNames}",
+ "EditIndexer": "Muokkaa hakupalvelua",
"EnableAutomaticSearch": "Käytä automaattihakua",
"EnableInteractiveSearch": "Käytä manuaalihakuun",
"EnableInteractiveSearchHelpText": "Profiilia käytetään manuaalihakuun.",
"EnableSSL": "SSL-salaus",
- "EnableSslHelpText": " Käyttöönotto vaatii uudelleenkäynnistyksen järjestelmänvavojan oikeuksilla.",
+ "EnableSslHelpText": " Käyttöönotto vaatii uudelleenkäynnistyksen järjestelmänvalvojan oikeuksilla.",
"Error": "Virhe",
"ErrorLoadingContents": "Virhe ladattaessa sisältöjä",
"Events": "Tapahtumat",
@@ -268,26 +268,26 @@
"Grabs": "Kaappaukset",
"Health": "Terveys",
"Level": "Taso",
- "NoIssuesWithYourConfiguration": "Kokoonpanossasi ei ole ongelmia",
+ "NoIssuesWithYourConfiguration": "Kokoonpanossasi ei ole ongelmia.",
"HomePage": "Verkkosivusto",
"Host": "Osoite",
"Hostname": "Osoite",
"IncludeHealthWarningsHelpText": "Sisällytä kuntovaroitukset",
- "Indexer": "Tietolähde",
- "IndexerFlags": "Tietolähteen liput",
- "IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Mikään tietolähde ei ole käytettävissä yli 6 tuntia kestäneiden virheiden vuoksi.",
- "IndexerLongTermStatusUnavailableHealthCheckMessage": "Tietolähteet eivät ole käytettävissä yli 6 tuntia kestäneiden virheiden vuoksi: {indexerNames}",
- "IndexerPriority": "Tietolähteiden painotus",
+ "Indexer": "Hakupalvelu",
+ "IndexerFlags": "Hakupalvelun liput",
+ "IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Mikään hakupalvelu ei ole käytettävissä yli kuusi tuntia kestäneiden virheiden vuoksi.",
+ "IndexerLongTermStatusUnavailableHealthCheckMessage": "Hakupalvelut eivät ole käytettävissä yli kuusi tuntia kestäneiden virheiden vuoksi: {indexerNames}.",
+ "IndexerPriority": "Hakupalveluiden painotus",
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "Välityspalvelimet eivät ole käytettävissä virheiden vuoksi",
- "IndexerStatusAllUnavailableHealthCheckMessage": "Tietolähteet eivät ole käytettävissä virheiden vuoksi",
- "IndexerStatusUnavailableHealthCheckMessage": "Tietolähteet eivät ole käytettävissä virheiden vuoksi: {indexerNames}",
+ "IndexerStatusAllUnavailableHealthCheckMessage": "Hakupalvelut eivät ole virheiden vuoksi käytettävissä.",
+ "IndexerStatusUnavailableHealthCheckMessage": "Hakupalvelut eivät ole virheiden vuoksi käytettävissä: {indexerNames}.",
"NoChange": "Ei muutosta",
"NoLogFiles": "Lokitiedostoja ei ole",
"SSLCertPasswordHelpText": "PFX-tiedoston salasana",
"SSLCertPath": "SSL-varmenteen sijainti",
"SSLCertPathHelpText": "PFX-tiedoston sijainti",
"Status": "Tila",
- "NotificationTriggers": "Laukaisimet",
+ "NotificationTriggers": "Ilmoituksen laukaisijat",
"NoUpdatesAreAvailable": "Päivityksiä ei ole saatavilla",
"OAuthPopupMessage": "Selaimesi estää ponnahdukset",
"Ok": "Ok",
@@ -303,46 +303,46 @@
"RestoreBackup": "Palauta varmuuskopio",
"Retention": "Säilytys",
"UILanguageHelpText": "{appName}in käyttöliittymän kieli.",
- "UILanguageHelpTextWarning": "Selaimen sivupäivitys vaaditaan",
+ "UILanguageHelpTextWarning": "Vaatii selaimen sivupäivityksen (F5).",
"UISettings": "Käyttöliittymän asetukset",
- "DownloadClientsSettingsSummary": "{appName}in käyttöliittymästä suoritettavien hakujen yhteydessä käytettävät lataustyökalumääritykset.",
- "ProwlarrSupportsAnyDownloadClient": "{appName} tukee alla listatuja lataustyökaluja.",
- "AddDownloadClientToProwlarr": "Lisäämällä lataustyökalun {appName} voi käynnistää lataukset suoraan käyttöliittymästä manuaalisen haun yhteydessä.",
- "RedirectHelpText": "Uudelleenohjaa tietolähteeltä saapuvat latauspyynnöt ja välitä kaappaus suoraan välittämättä sitä {appName}in välityksellä.",
+ "DownloadClientsSettingsSummary": "{appName}in käyttöliittymästä suoritettavien hakujen yhteydessä käytettävät latauspalvelut.",
+ "ProwlarrSupportsAnyDownloadClient": "{appName} tukee kaikkia alla listatuja latauspalveluita.",
+ "AddDownloadClientToProwlarr": "Lisäämällä latauspalvelun {appName} voi lähettää julkaisut suoraan käyttöliittymästä manuaalihaun tuloksista.",
+ "RedirectHelpText": "Uudelleenohjaa hakupalvelulta saapuvat latauspyynnöt ja välitä kaappaus suoraan välittämättä sitä {appName}in kautta.",
"FullSync": "Täysi synkronointi",
- "SyncLevelFull": "Täysi synkronointi: Pitää sovelluksen tietolähteet täysin synkronoituna. Tietolähteisiin {appName}issa tehdyt muutokset synkronoidaan etäsovelluksen kanssa ja kaikki etäsovelluksessa tehdyt muutokset korvataan seuraavan synkronoinnin yhteydessä.",
- "EnableIndexer": "Tietolähteen tila",
- "FilterPlaceHolder": "Suodata tietolähteitä",
- "IndexerHealthCheckNoIndexers": "Yhtään tietolähdettä ei ole käytössä, eikä {appName} tämän vuoksi löydä tuloksia.",
- "IndexerObsoleteCheckMessage": "Tietolähteet ovat poistuneet tai ne ovat muuttuneet: {0}. Poista ja/tai lisää ne {appName}iin uudelleen.",
+ "SyncLevelFull": "Täysi synkronointi: Pitää sovelluksen hakupalvelut täysin synkronoituna. Hakupalveluihin {appName}issa tehdyt muutokset synkronoidaan etäsovelluksen kanssa ja kaikki etäsovelluksessa tehdyt muutokset korvataan seuraavan synkronoinnin yhteydessä.",
+ "EnableIndexer": "Ota hakupalvelu käyttöön",
+ "FilterPlaceHolder": "Suodata palveluita",
+ "IndexerHealthCheckNoIndexers": "Yhtään hakupalvelua ei ole käytössä, eikä {appName} tämän vuoksi löydä tuloksia.",
+ "IndexerObsoleteCheckMessage": "Hakupalvelut ovat poistuneet tai ne ovat muuttuneet: {0}. Poista tai lisää ne {appName}iin uudelleen.",
"IndexerProxy": "Tiedonhaun välityspalvelin",
- "IndexerSettingsSummary": "Määritä useita globaaleita tietolähdeasetuksia, kuten välityspalvelimia.",
- "IndexerVipExpiringHealthCheckMessage": "Tietolähteen VIP-edut erääntyvät pian: {indexerNames}",
- "ProwlarrSupportsAnyIndexer": "{appName} tukee Newznab- ja Torznab-yhteensopivien tietolähteiden ohella myös useita muita lähteitä vaihtoehdoilla \"Yleinen Newznab\" (Usenetille) ja 'Yleinen Torznab' (torrenteille).",
- "SettingsIndexerLogging": "Tehostettu tietolähteiden valvonta",
+ "IndexerSettingsSummary": "Määritä useita globaaleita hakupalveluasetuksia, kuten välityspalvelimia.",
+ "IndexerVipExpiringHealthCheckMessage": "Hakupalvelun VIP-edut päättyvät pian: {indexerNames}.",
+ "ProwlarrSupportsAnyIndexer": "{appName} tukee Newznab- ja Torznab-yhteensopivien hakupalveluiden ohella myös useita muita palveluita vaihtoehdoilla \"Yleinen Newznab\" (Usenetille) ja 'Yleinen Torznab' (torrenteille).",
+ "SettingsIndexerLogging": "Tehostettu hakupalveluiden valvonta",
"AddIndexerProxy": "Lisää tiedonhaun välityspalvelin",
"UISettingsSummary": "Kalenterin, päiväyksen ja kellonajan sekä kielen ja heikentyneelle värinäölle sopivan tilan asetukset.",
- "SettingsIndexerLoggingHelpText": "Kirjaa tarkempia tietoja tietolähteiden toiminnasta, mukaanlukien vastaukset",
+ "SettingsIndexerLoggingHelpText": "Kirjaa tarkempia tietoja hakupalveluiden toiminnasta, mukaanlukien vastaukset",
"IndexerTagsHelpText": "Tunnisteilla voit kohdistaa tiedonhaun välityspalvelimia ja määrittää mihin sovelluksiin ne synkronoidaan.",
- "UnableToLoadAppProfiles": "Sovellusprofiilien lataus epäonnistui",
- "AppProfileSelectHelpText": "Sovellusprofiilieilla määritetään tietolähteelle sovellussynkronoinnin yhteydessä aktivoitavat hakutavat (RSS/automaatti/manuaali).",
- "IndexerQuery": "Tietolähteen kysely",
- "IndexerRss": "Tietolähteen RSS",
- "SearchIndexers": "Etsi tietolähteistä",
+ "UnableToLoadAppProfiles": "Virhe ladattaessa sovellusprofiileja.",
+ "AppProfileSelectHelpText": "Sovellusprofiilieilla määritetään hakupalvelulle sovellussynkronoinnin yhteydessä aktivoitavat hakutavat (RSS/automaatti/manuaali).",
+ "IndexerQuery": "Hakupalvelukysely",
+ "IndexerRss": "Hakupalvelun RSS",
+ "SearchIndexers": "Etsi hakupalveluista",
"AddRemoveOnly": "Ainoastaan lisää/poista",
- "IndexerVipExpiredHealthCheckMessage": "Tietolähteen VIP-edut ovat erääntyneet: {indexerNames}",
+ "IndexerVipExpiredHealthCheckMessage": "Hakupalvelun VIP-edut ovat päättyneet: {indexerNames}.",
"MaintenanceRelease": "Huoltojulkaisu: korjauksia ja muita parannuksia. Lue lisää Githubin muutoshistoriasta.",
"Query": "Kysely",
"Redirect": "Uudelleenohjaus",
"RestartProwlarr": "Käynnistä {appName} uudelleen",
"SyncLevel": "Synkronoinnin laajuus",
- "SyncLevelAddRemove": "Vain lisäys/poisto: Kun {appName}in tietolähteitä lisätään tai poistetaan, päivittyy myös etäsovellus.",
- "SyncAppIndexers": "Synkronoi tietolähteet",
- "TestAllApps": "Testaa kaikki sovellukset",
- "UnableToLoadIndexerProxies": "Tiedonhaun välityspalvelimia ei voitu ladata",
- "AddedToDownloadClient": "Julkaisu lisättiin lataustyökaluun",
- "AddNewIndexer": "Lisää uusi tietolähde",
- "AddToDownloadClient": "Lisää julkaisu lataustyökaluun",
+ "SyncLevelAddRemove": "Vain lisäys/poisto: Kun {appName}in hakupalveluita lisätään tai poistetaan, päivittyy myös tämä etäsovellus.",
+ "SyncAppIndexers": "Synkronoi sovelluksiin",
+ "TestAllApps": "Koesta sovellukset",
+ "UnableToLoadIndexerProxies": "Virhe ladattaessa tiedonhaun välityspalvelimia.",
+ "AddedToDownloadClient": "Julkaisu lisättiin latauspalveluun",
+ "AddNewIndexer": "Lisää uusi hakupalvelu",
+ "AddToDownloadClient": "Lisää julkaisu latauspalveluun",
"NoSearchResultsFound": "Tuloksia ei löytynyt. Yritä uutta hakua alta.",
"Notification": "Ilmoitus",
"DeleteIndexerProxy": "Poista tiedonhaun välityspalvelin",
@@ -351,7 +351,7 @@
"SettingsLogRotate": "Lokitiedostojen kierrätys",
"SettingsLogSql": "Kirjaa SQL",
"SettingsSqlLoggingHelpText": "Kirjaa kaikki {appName}in SQL-kyselyt",
- "ConnectSettingsSummary": "Ilmoitukset, kuten viestintä mediapalvelimille ja soittimille, sekä omat komentosarjat.",
+ "ConnectSettingsSummary": "Yhteydet ilmoituspalveluihin ja mukautetut komentosarjat.",
"DevelopmentSettings": "Kehittäjäasetukset",
"Description": "Kuvaus",
"Id": "ID",
@@ -365,16 +365,16 @@
"Category": "Kategoria",
"ClearHistory": "Tyhjennä historia",
"ClearHistoryMessageText": "Haluatko varmasti tyhjentää kaiken {appName}-historian?",
- "Connect": "Kytkökset",
- "EnableRssHelpText": "Käytä tietolähteelle RSS-syötettä.",
+ "Connect": "Ilmoituspalvelut",
+ "EnableRssHelpText": "Käytä hakupalvelulle RSS-syötettä.",
"DeleteApplication": "Poista sovellus",
"DeleteAppProfile": "Poista sovellusprofiili",
- "IndexerProxies": "Tiedonhaun välityspalvelimet",
- "IndexerAuth": "Tietolähteen todennus",
- "Notifications": "Kytkökset",
- "NotificationTriggersHelpText": "Valitse tämän ilmoituksen laukaisevat tapahtumat.",
+ "IndexerProxies": "Hakupalveluiden välityspalvelimet",
+ "IndexerAuth": "Hakupalvelun todennus",
+ "Notifications": "Ilmoituspalvelut",
+ "NotificationTriggersHelpText": "Valitse ilmoituksen laukaisevat tapahtumat.",
"Stats": "Tilastot",
- "UnableToLoadDevelopmentSettings": "Kehittäjäasetusten lataus epäonnistui",
+ "UnableToLoadDevelopmentSettings": "Virhe ladattaessa kehittäjäasetuksia.",
"AppSettingsSummary": "Sovellukset ja asetukset, joilla määritetään miten {appName} viestii PVR-sovellustesi kanssa.",
"Privacy": "Yksityisyys",
"NetCore": ".NET",
@@ -387,54 +387,54 @@
"Filters": "Suodattimet",
"OnGrab": "Kun julkaisu kaapataan",
"OnHealthIssue": "Vakausongelmat",
- "HistoryCleanupDaysHelpText": "Arvo \"0\" (nolla) poistaa automaattisen tyhjennyksen käytöstä.",
+ "HistoryCleanupDaysHelpText": "Poista automaattinen tyhjennys käytöstä asettamalla arvoksi 0.",
"HistoryCleanupDaysHelpTextWarning": "Tässä määritettyä aikaa vanhemmat tiedostot poistetaan automaattisesti roskakorista pysyvästi.",
- "TestAllIndexers": "Tietolähteiden testaus",
+ "TestAllIndexers": "Koesta palvelut",
"UserAgentProvidedByTheAppThatCalledTheAPI": "User-Agent-tiedon ilmoitti rajapinnan kanssa viestinyt sovellus.",
"Categories": "Kategoriat",
"Database": "Tietokanta",
"HistoryCleanup": "Historian siivous",
- "IndexerAlreadySetup": "Tietolähteestä on määritetty jo ainakin yksi instanssi",
- "IndexerInfo": "Tietolähteen tiedot",
- "MassEditor": "Joukkoeditori",
+ "IndexerAlreadySetup": "Hakupalvelusta on määritetty jo ainakin yksi instanssi.",
+ "IndexerInfo": "Hakupalvelun tiedot",
+ "MassEditor": "Massamuokkaus",
"OnApplicationUpdate": "Kun sovellus päivitetään",
"OnApplicationUpdateHelpText": "Kun sovellus päivitetään",
"Proxies": "Välityspalvelimet",
"Public": "Julkinen",
"SemiPrivate": "Osittain yksityinen",
- "ApplicationsLoadError": "Sovelluslistausta ei voitu ladata",
+ "ApplicationsLoadError": "Virhe ladattaessa sovelluslistaa.",
"Url": "URL",
"Website": "Verkkosivusto",
- "IndexerNoDefinitionCheckHealthCheckMessage": "Tietolähteillä ei ole määritystä, eivätkä ne toimi: {indexerNames}. Poista ja/tai lisää {appName}iin uudelleen",
+ "IndexerNoDefinitionCheckHealthCheckMessage": "Hakupalveluiden määritykset puuttuvat, eivätkä ne toimi: {indexerNames}. Poista tai lisää ne {appName}iin uudelleen.",
"Private": "Yksityinen",
"QueryResults": "Kyselyn tulokset",
"Application": "Sovellus",
"GrabReleases": "Kaappaa julkaisu(t)",
"Link": "Linkki",
- "SearchTypes": "Mitä etsitään",
- "UnableToLoadIndexers": "Tietolähteiden lataus epäonnistui",
+ "SearchTypes": "Etsittävät tyypit",
+ "UnableToLoadIndexers": "Virhe ladattaessa hakupalveluita.",
"Yes": "Kyllä",
"MappedDrivesRunningAsService": "Yhdistetyt verkkoasemat eivät ole käytettävissä kun sovellus suoritetaan Windows-palveluna. Saat lisätietoja UKK:sta.",
"No": "Ei",
- "BookSearchTypes": "Kirjojen hakutyypit",
- "IndexerDetails": "Tietolähteen tiedot",
- "IndexerName": "Tietolähteen nimi",
- "IndexerSite": "Tietolähteen sivusto",
- "MovieSearchTypes": "Elokuvien hakutyypit",
- "MusicSearchTypes": "Musiikin hakutyypit",
+ "BookSearchTypes": "Etsittävät kirjatyypit",
+ "IndexerDetails": "Hakupalvelun tiedot",
+ "IndexerName": "Hakupalvelun nimi",
+ "IndexerSite": "Hakupalvelun sivusto",
+ "MovieSearchTypes": "Etsittävät elokuvatyypit",
+ "MusicSearchTypes": "Etsittävät musiikkityypit",
"NotSupported": "Ei tuettu",
"RawSearchSupported": "Raakahaku tuettu",
"SearchCapabilities": "Hakuominaisuudet",
- "TVSearchTypes": "Televisiosarjojen hakutyypit",
+ "TVSearchTypes": "Etsittävät sarja-/jaksotyypit",
"MinimumSeeders": "Jakajien vähimmäismäärä",
- "MinimumSeedersHelpText": "Sovelluksen edellyttämä jakajien vähimmäismäärä tietolähteestä kaappaukseen.",
+ "MinimumSeedersHelpText": "Sovelluksen edellyttämä hakupalvelusta kaapattavien kohteiden jakajien (seed) vähimmäismäärä.",
"SyncProfile": "Synkronointiprofiili",
"SyncProfiles": "Synkronointiprofiilit",
"AddSyncProfile": "Lisää synkronointiprofiili",
"EditSyncProfile": "Muokkaa synkronointiprofiilia",
"InstanceName": "Instanssin nimi",
"InstanceNameHelpText": "Instanssin nimi välilehdellä ja järjestelmälokissa.",
- "ThemeHelpText": "Vaihda sovelluksen käyttöliittymän ulkoasua. \"Automaattinen\" vaihtaa vaalean ja tumman tilan välillä käyttöjärjestelmän teeman mukaan. Innoittanut Theme.Park.",
+ "ThemeHelpText": "Vaihda sovelluksen käyttöliittymän ulkoasua. \"Automaattinen\" vaihtaa vaalean ja tumman tilan välillä käyttöjärjestelmän teeman mukaan. Innoittanut {inspiredBy}.",
"Duration": "Kesto",
"ElapsedTime": "Kulunut aika",
"EnabledRedirected": "Kulunut, uudelleenohjattu",
@@ -449,38 +449,38 @@
"ApplicationLongTermStatusCheckAllClientMessage": "Sovellukset eivät ole käytettävissä yli 6 tuntia kestäneiden virheiden vuoksi.",
"ApplicationLongTermStatusCheckSingleClientMessage": "Sovellukset eivät ole käytettävissä yli 6 tuntia kestäneiden virheiden vuoksi: {0}",
"AreYouSureYouWantToDeleteCategory": "Haluatko varmasti poistaa kohdistetun kategorian?",
- "DeleteClientCategory": "Poista lataustyökalukategoria",
- "DownloadClientCategory": "Lataustyökalukategoria",
+ "DeleteClientCategory": "Poista latauspalvelukategoria",
+ "DownloadClientCategory": "Latauspalvelukategoria",
"MappedCategories": "Kohdistetut kategoriat",
"AuthenticationRequired": "Vaadi tunnistautuminen",
"Remove": "Poista",
"Replace": "Korvaa",
- "OnLatestVersion": "{appName}in uusin versio on jo asennettu",
+ "OnLatestVersion": "Uusin {appName}-versio on jo asennettu",
"ApplicationURL": "Sovelluksen URL",
"ApplicationUrlHelpText": "Tämän sovelluksen ulkoinen URL-osoite, johon sisältyy http(s)://, portti ja URL-perusta.",
"Track": "Valvo",
- "CountIndexersSelected": "{count} tietolähde(ttä) on valittu",
- "DeleteSelectedDownloadClients": "Poista lataustyökalu(t)",
+ "CountIndexersSelected": "{count} hakupalvelu(a) on valittu",
+ "DeleteSelectedDownloadClients": "Poista valitut latauspalvelu(t)",
"DeleteSelectedApplicationsMessageText": "Haluatko varmasti poistaa {count} valit(un/tua) sovellu(sta/ksen)?",
- "DeleteSelectedDownloadClientsMessageText": "Haluatko varmasti poistaa {count} valit(n/tua) lataustyökalu(n/a)?",
- "DeleteSelectedIndexersMessageText": "Haluatko varmasti poistaa {count} valit(un/tua) tietoläh(teen/dettä)?",
+ "DeleteSelectedDownloadClientsMessageText": "Haluatko varmasti poistaa {count} valittua latauspalvelua?",
+ "DeleteSelectedIndexersMessageText": "Haluatko varmasti poistaa {count} valit(un/tua) hakupalvelu(n/a)?",
"Publisher": "Julkasija",
- "SelectIndexers": "Valitse tietolähteet",
+ "SelectIndexers": "Palveluiden monivalinta",
"Year": "Vuosi",
"Genre": "Lajityyppi",
"More": "Lisää",
"Season": "Kausi",
"ApplyTagsHelpTextAdd": "– \"Lisää\" syötetyt tunnisteet aiempiin tunnisteisiin",
- "ApplyTagsHelpTextHowToApplyApplications": "Tunnisteiden käyttäminen valituille sovelluksille",
- "ApplyTagsHelpTextHowToApplyIndexers": "Tunnisteiden käyttö valituissa tietolähteissä",
+ "ApplyTagsHelpTextHowToApplyApplications": "Tunnisteiden käyttö valituille sovelluksille:",
+ "ApplyTagsHelpTextHowToApplyIndexers": "Tunnisteiden käyttö valituille hakupalveluille:",
"ApplyTagsHelpTextRemove": "- \"Poista\" tyhjentää syötetyt tunnisteet",
- "ApplyTagsHelpTextReplace": "- \"Korvaa\" nykyiset tunnisteet syötetyillä tai tyhjennä kaikki tunnisteet jättämällä tyhjäksi",
- "DownloadClientPriorityHelpText": "Lautaustyökalujen painotus, 1– 50 (korkein-alin). Oletusarvo on 1 ja tasaveroiset erotetaan Round-Robin-tekniikalla.",
+ "ApplyTagsHelpTextReplace": "– \"Korvaa\" nykyiset tunnisteet syötetyillä tai tyhjennä kaikki tunnisteet jättämällä tyhjäksi.",
+ "DownloadClientPriorityHelpText": "Useiden latauspalveluiden painotus, 1–50 (korkein-alin). Oletusarvo on 1 ja tasaveroiset erotetaan Round-Robin-tekniikalla.",
"Album": "Albumi",
"Artist": "Esittäjä",
"Author": "Kirjailija",
"Book": "Kirja",
- "UpdateAvailableHealthCheckMessage": "Uusi päivitys on saatavilla",
+ "UpdateAvailableHealthCheckMessage": "Uusi päivitys on saatavilla: {version}",
"Episode": "Jakso",
"Label": "Nimi",
"Theme": "Teema",
@@ -490,44 +490,44 @@
"WhatsNew": "Mikä on uutta?",
"ConnectionLostToBackend": "{appName} kadotti yhteyden taustajärjestelmään ja se on käynnistettävä uudelleen.",
"minutes": "minuuttia",
- "AddConnection": "Lisää yhteys",
- "NotificationStatusAllClientHealthCheckMessage": "Mikään ilmoituspavelu ei ole ongelmien vuoksi käytettävissä.",
- "NotificationStatusSingleClientHealthCheckMessage": "Ilmoitukset eivät ole ongelmien vuoksi käytettävissä: {notificationNames}",
- "AuthBasic": "Perus (ponnahdusikkuna)",
+ "AddConnection": "Lisää ilmoituspavelu",
+ "NotificationStatusAllClientHealthCheckMessage": "Ilmoituspalvelut eivät ole ongelmien vuoksi käytettävissä.",
+ "NotificationStatusSingleClientHealthCheckMessage": "Ilmoituspalvelut eivät ole ongelmien vuoksi käytettävissä: {notificationNames}.",
+ "AuthBasic": "Perus (selaimen ponnahdus)",
"AuthForm": "Lomake (kirjautumissivu)",
- "DisabledForLocalAddresses": "Ei käytössä paikallisille osoitteille",
+ "DisabledForLocalAddresses": "Ei käytössä paikallisissa osoitteissa",
"None": "Ei mitään",
"ResetAPIKeyMessageText": "Haluatko varmasti korvata rajapinnan avaimen uudella?",
- "TotalIndexerSuccessfulGrabs": "Onnistuneiden tietolähdekaappausten kokonaismäärä",
+ "TotalIndexerSuccessfulGrabs": "Onnistuneiden hakupalvelukaappausten kokonaismäärä",
"AppUpdated": "{appName} on päivitetty",
"AppUpdatedVersion": "{appName} on päivitetty versioon {version} ja muutosten käyttöönottamiseksi se on käynnistettävä uudelleen.",
- "IndexerDownloadClientHelpText": "Määritä tämän tietolähteen kanssa käytettävä lataustyökalu.",
- "AuthenticationRequiredWarning": "Etäkäytön estämiseksi ilman tunnistautumista {appName} vaatii nyt todennuksen käyttöönoton. Todennus voidaan poistaa käytöstä paikallisille osoitteille.",
+ "IndexerDownloadClientHelpText": "Määritä {appName}in käyttöliittymässä tästä hakupalvelusta kaapattaessa käytettävä latauspalvelu.",
+ "AuthenticationRequiredWarning": "Etäkäytön estämiseksi ilman tunnistautumista {appName} vaatii nyt tunnistautumisen käyttöönoton. Paikallisilta osoitteilta se voidaan valinnaisesti poistaa käytöstä.",
"TotalGrabs": "Kaappausten kokonaismäärä",
- "AddDownloadClientImplementation": "Lisäätään lataustyökalua - {implementationName}",
- "AddIndexerImplementation": "Lisätään tietolähdettä - {implementationName}",
+ "AddDownloadClientImplementation": "Lisätään latauspalvelua – {implementationName}",
+ "AddIndexerImplementation": "Lisätään hakupalvelua – {implementationName}",
"OnGrabHelpText": "Kun julkaisu kaapataan",
- "ManageDownloadClients": "Hallitse lataustyökaluja",
- "NoDownloadClientsFound": "Lataustyökaluja ei löytynyt",
- "CountDownloadClientsSelected": "{count} lataustyökalu(a) on valittu",
- "EditSelectedDownloadClients": "Muokkaa valittuja lataustyökaluja",
- "IndexerDownloadClientHealthCheckMessage": "Tietolähteet virheellisillä lataustyökaluilla: {indexerNames}.",
- "AddIndexerProxyImplementation": "Lisää tiedonhaun välityspalvelin - {implementationName}",
- "EditIndexerProxyImplementation": "Muokkaa tiedonhaun välityspalvelinta - {implementationName}",
- "EditDownloadClientImplementation": "Muokataan lataustyökalua - {implementationName}",
+ "ManageDownloadClients": "Hallitse palveluita",
+ "NoDownloadClientsFound": "Latauspalveluita ei löytynyt",
+ "CountDownloadClientsSelected": "{count} latauspalvelu(a) on valittu",
+ "EditSelectedDownloadClients": "Muokkaa valittuja latauspalveluita",
+ "IndexerDownloadClientHealthCheckMessage": "Hakupalvelut virheellisillä latauspalveluilla: {indexerNames}.",
+ "AddIndexerProxyImplementation": "Lisätään tiedonhaun välityspalvelinta – {implementationName}",
+ "EditIndexerProxyImplementation": "Muokataan tiedonhaun välityspalvelinta – {implementationName}",
+ "EditDownloadClientImplementation": "Muokataan latauspalvelua – {implementationName}",
"AddCustomFilter": "Lisää oma suodatin",
"ApplyChanges": "Toteuta muutokset",
"EditSelectedIndexers": "Muokkaa valittuja sisältölähteitä",
"NoHistoryFound": "Historiaa ei löytynyt",
- "NoIndexersFound": "Tietolähteitä ei löytynyt",
+ "NoIndexersFound": "Palveluita ei löytynyt",
"StopSelecting": "Lopeta valitseminen",
- "EditConnectionImplementation": "Muokataan kytköstä - {implementationName}",
- "AddConnectionImplementation": "Lisätään kytköstä - {implementationName}",
+ "EditConnectionImplementation": "Muokataan ilmoituspalvelua – {implementationName}",
+ "AddConnectionImplementation": "Lisätään ilmoituspavelua – {implementationName}",
"DownloadClientQbittorrentSettingsContentLayout": "Sisällön rakenne",
- "EditIndexerImplementation": "Muokataan tietolähdettä - {implementationName}",
+ "EditIndexerImplementation": "Muokataan hakupalvelua – {implementationName}",
"AuthenticationRequiredUsernameHelpTextWarning": "Syötä uusi käyttäjätunnus",
- "DefaultNameCopiedProfile": "{name} - Kopioi",
- "AppsMinimumSeedersHelpText": "Sovellusten edellyttämä tietolähteestä kaapattavien kohteiden jakajien (seed) vähimmäismäärä. Jos tyhjä, käytetään synkronointiprofiilin oletusta.",
+ "DefaultNameCopiedProfile": "{name} (kopio)",
+ "AppsMinimumSeedersHelpText": "Sovellusten edellyttämä hakupalvelusta kaapattavien kohteiden jakajien (seed) vähimmäismäärä. Jos tyhjä, käytetään synkronointiprofiilin oletusta.",
"TotalHostGrabs": "Isännän kaappausten kokonaismäärä",
"IncludeManualGrabsHelpText": "Sisällytä {appName}in käyttöliittymästä tehdyt manuaalikaappaukset.",
"AuthenticationRequiredHelpText": "Valitse mitkä pyynnöt vaativat tunnistautumisen. Älä muuta, jos et ymmärrä riskejä.",
@@ -537,47 +537,47 @@
"AuthenticationMethod": "Tunnistautumistapa",
"Clone": "Monista",
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Vahvista uusi salasana",
- "EditApplicationImplementation": "Muokataan sovellusta - {implementationName}",
- "AddApplicationImplementation": "Lisätään sovellusta - {implementationName}",
+ "EditApplicationImplementation": "Muokataan sovellusta – {implementationName}",
+ "AddApplicationImplementation": "Lisätään sovellusta – {implementationName}",
"InvalidUILanguage": "Käytöliittymän kielivalinta on virheellinen. Korjaa se ja tallenna asetukset.",
"SeedRatio": "Jakosuhde",
"SeedTime": "Jakoaika",
"days": "päivää",
"HistoryDetails": "Historiatiedot",
- "IndexerDisabled": "Tietolähde ei ole käytössä",
+ "IndexerDisabled": "Hakupalvelu ei ole käytössä",
"AdvancedSettingsShownClickToHide": "Lisäasetukset näytetään, piilota painamalla tästä.",
"AdvancedSettingsHiddenClickToShow": "Lisäasetukset on piilotettu, näytä painamalla tästä.",
- "AppsMinimumSeeders": "Sovellusten vähimmäisjakajat",
+ "AppsMinimumSeeders": "Jakajien vähimmäismäärä",
"BasicSearch": "Perushaku",
"CountApplicationsSelected": "{count} sovellus(ta) on valittu",
"DeleteSelectedApplications": "Poista valitut sovellukset",
- "DeleteSelectedIndexer": "Poista valittu tietolähde",
- "DeleteSelectedIndexers": "Poista valitut tietolähteet",
+ "DeleteSelectedIndexer": "Poista valittu hakupalvelu",
+ "DeleteSelectedIndexers": "Poista valitut hakupalvelut",
"Implementation": "Toteutus",
- "IndexerCategories": "Tietolähdekategoriat",
- "IndexerStatus": "Tietolähteen tila",
+ "IndexerCategories": "Hakupalvelukategoriat",
+ "IndexerStatus": "Hakupalvelun tila",
"ManageApplications": "Hallitse sovelluksia",
"NewznabUrl": "Newznab URL",
- "PackSeedTime": "Koosteen jakoaika",
+ "PackSeedTime": "Paketin jakoaika",
"PackSeedTimeHelpText": "Aika, joka koostepaketin (kuten sarjan tuotantokauden tai esittäjän diskografian) sisältävää torrentia tulee jakaa. Käytä sovelluksen oletusta jättämällä tyhjäksi.",
"QueryType": "Kyselyn tyyppi",
- "SearchAllIndexers": "Etsi kaikista tietolähteistä",
+ "SearchAllIndexers": "Etsi kaikista hakupalveluista",
"SeedRatioHelpText": "Jakosuhde, joka torrentin tulee saavuttaa ennen sen pysäytystä. Käytä sovelluksen oletusta jättämällä tyhjäksi.",
"TorznabUrl": "Torznab URL",
"ApiKeyValidationHealthCheckMessage": "Muuta rajapinnan (API) avain ainakin {length} merkin pituiseksi. Voit tehdä tämän asetuksista tai muokkaamalla asetustiedostoa.",
"OnHealthRestored": "Terveystilan vakautuessa",
"OnHealthRestoredHelpText": "Terveystilan vakautuessa",
"TotalHostQueries": "Isännän kyselyiden kokonaismäärä",
- "TotalIndexerQueries": "Tietolähteen kyselyiden kokonaismäärä",
+ "TotalIndexerQueries": "Hakupalvelun kyselyiden kokonaismäärä",
"GoToApplication": "Siirry sovellukseen",
- "AreYouSureYouWantToDeleteIndexer": "Haluatko varmasti poistaa tietolähteen \"{name}\" sovelluksesta {appName}?",
+ "AreYouSureYouWantToDeleteIndexer": "Haluatko varmasti poistaa hakupalvelun \"{name}\" sovelluksesta {appName}?",
"AuthQueries": "Todennuskyselyt",
- "ApplicationTagsHelpText": "Sovellukseen synkronoidaan yhdellä tai useammalla vastaavalla tunnisteella merkityt tietolähteet. Jos tässä ei ole tunnisteita, ei tietolähteitä synkronoida niiden tunnisteiden vuoksi.",
- "ApplicationTagsHelpTextWarning": "Tunnisteita tulee käyttää harkiten, koska niillä voi olla odottamattomia vaikutuksia. Tunnisteella merkittyyn sovellukseen synkronoidaan vain samalla tunnisteella merkityt tietolähteet.",
- "AverageResponseTimesMs": "Tietolähteiden keskimääräiset vasteajat (ms)",
- "CountIndexersAvailable": "{count} tietolähde(ttä) on käytettävissä",
- "FoundCountReleases": "Löytyi {itemCount} julkaisua",
- "IndexerTagsHelpTextWarning": "Tunnisteita tulee käyttää harkiten, koska niillä voi olla odottamattomia vaikutuksia. Tunnisteella merkitty tietolähde synkronoidaan vain samalla tunnisteella merkittyyn sovellukseen.",
+ "ApplicationTagsHelpText": "Sovellukseen synkronoidaan yhdellä tai useammalla vastaavalla tunnisteella merkityt hakupalvelut. Jos tässä ei ole tunnisteita, ei palveluiden synkronointia estetä tunnisteiden perusteella.",
+ "ApplicationTagsHelpTextWarning": "Tunnisteita tulee käyttää harkiten, koska niillä voi olla odottamattomia vaikutuksia. Tunnisteella merkittyyn sovellukseen synkronoidaan vain samalla tunnisteella merkityt hakupalvelut.",
+ "AverageResponseTimesMs": "hakupalveluiden keskimääräiset vasteajat (ms)",
+ "CountIndexersAvailable": "{count} hakupalvelu(a) on käytettävissä",
+ "FoundCountReleases": "Löydettiin {itemCount} julkaisua",
+ "IndexerTagsHelpTextWarning": "Tunnisteita tulee käyttää harkiten, koska niillä voi olla odottamattomia vaikutuksia. Tunnisteella merkitty hakupalvelu synkronoidaan vain samalla tunnisteella merkittyihin sovelluksiin.",
"LastFailure": "Edellinen virhe",
"SelectedCountOfCountReleases": "Valittu {selectedCount}/{itemCount} julkaisua",
"TotalQueries": "Kyselyiden kokonaismäärä",
@@ -587,118 +587,118 @@
"AddApplication": "Lisää sovellus",
"AddCategory": "Lisää kategoria",
"EditCategory": "Muokkaa kategoriaa",
- "IndexerId": "Tietolähteen ID",
- "ActiveIndexers": "Aktiiviset tietolähteet",
- "NoIndexerCategories": "Tietolähteelle ei löytynyt kategorioita",
+ "IndexerId": "Hakupalvelun ID",
+ "ActiveIndexers": "Aktiiviset hakupalvelut",
+ "NoIndexerCategories": "Hakupalvelulle ei löytynyt kategorioita",
"ActiveApps": "Aktiiviset sovellukset",
- "NoIndexerHistory": "Tietolähteelle ei löytynyt historiaa",
+ "NoIndexerHistory": "Hakupalvelulle ei löytynyt historiaa",
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "Määrittää käytetäänkö qBittorrentista määritettyä rakennetta, torrentin alkuperäistä rakennetta vai luodaanko uusi alikansio (qBittorrent 4.3.2+).",
"External": "Ulkoinen",
- "IndexerFailureRate": "Tietolähteen virhetaajuus",
- "IndexerHistoryLoadError": "Virhe ladattaessa tietolähteen historiaa",
+ "IndexerFailureRate": "Hakupalvelun virhetaajuus",
+ "IndexerHistoryLoadError": "Virhe ladattaessa hakupalvelun historiaa",
"InitialFailure": "Alkuperäinen virhe",
"PasswordConfirmation": "Salasanan vahvistus",
"RepeatSearch": "Toista haku",
- "SearchCountIndexers": "Etsi {count} tietolähteestä",
+ "SearchCountIndexers": "Etsi {count} hakupalvelusta",
"SearchQueries": "Hakukyselyt",
"SeedTimeHelpText": "Aika, joka torrentia tulee jakaa ennen sen pysäytystä. Käytä sovelluksen oletusta jättämällä tyhjäksi.",
"RssQueries": "RSS-kyselyt",
"TotalUserAgentQueries": "Käyttäjäagentin kyselyiden kokonaismäärä",
"NotificationsEmailSettingsUseEncryption": "Käytä salausta",
"NotificationsEmailSettingsUseEncryptionHelpText": "Määrittää suositaanko salausta, jos se on määritetty palvelimelle, käytetäänkö aina SSL- (vain portti 465) tai StartTLS-salausta (kaikki muut portit), voi käytetäänkö salausta lainkaan.",
- "ManageClients": "Hallitse työkaluja",
+ "ManageClients": "Hallitse palveluita",
"NoApplicationsFound": "Sovelluksia ei löytynyt",
- "DownloadClientAriaSettingsDirectoryHelpText": "Valinnainen latuasten tallennussijainti. Käytä Aria2-oletusta jättämällä tyhjäksi.",
- "UrlBaseHelpText": "Lisää {appName}in URL-osoitteeseen jälkiliitteen, esim. \"http://[osoite]:[portti]/[URL-perusta]\". Oletusarvo on tyhjä.",
+ "DownloadClientAriaSettingsDirectoryHelpText": "Vaihtoehtoinen latausten tallennussijainti. Käytä Aria2:n oletusta jättämällä tyhjäksi.",
+ "UrlBaseHelpText": "Käänteisen välityspalvelimen tukea varten. Oletusarvo on tyhjä.",
"Donate": "Lahjoita",
"DownloadClientFloodSettingsAdditionalTagsHelpText": "Lisää median ominaisuuksia tunnisteina. Vihjeet ovat esimerkkejä.",
- "DownloadClientRTorrentSettingsDirectoryHelpText": "Valinnainen latuasten tallennussijainti. Käytä Aria2-oletusta jättämällä tyhjäksi.",
- "DownloadClientSettingsUseSslHelpText": "Muodosta {clientName} -yhteys käyttäen salattua yhteyttä.",
- "DownloadClientTransmissionSettingsDirectoryHelpText": "Vaihtoehtoinen latauskansio. Käytä Transmissionin oletusta jättämällä tyhjäksi.",
- "DownloadClientTransmissionSettingsUrlBaseHelpText": "Lisää etuliite lataustyökalun {clientName} RPC-URL-osoitteeseen. Esimerkiksi {url}. Oletus on \"{defaultUrl}\".",
- "IndexerSettingsAppsMinimumSeedersHelpText": "Sovellusten edellyttämä tietolähteestä kaapattavien kohteiden jakajien (seed) vähimmäismäärä. Jos tyhjä, käytetään synkronointiprofiilin oletusta.",
+ "DownloadClientRTorrentSettingsDirectoryHelpText": "Vaihtoehtoinen latausten tallennussijainti. Käytä rTorrentin oletusta jättämällä tyhjäksi.",
+ "DownloadClientSettingsUseSslHelpText": "Muodosta {clientName}-yhteys käyttäen salattua yhteyttä.",
+ "DownloadClientTransmissionSettingsDirectoryHelpText": "Vaihtoehtoinen latausten tallennussijainti. Käytä Transmissionin oletusta jättämällä tyhjäksi.",
+ "DownloadClientTransmissionSettingsUrlBaseHelpText": "Lisää latauspalvelun {clientName} RPC-URL-osoitteeseen etuliitteen, esim. \"{url}\". Oletus on \"{defaultUrl}\".",
+ "IndexerSettingsAppsMinimumSeedersHelpText": "Sovellusten edellyttämä hakupalvelusta kaapattavien kohteiden jakajien (seed) vähimmäismäärä. Jos tyhjä, käytetään synkronointiprofiilin oletusta.",
"Menu": "Valikko",
- "ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Hylkää estetyt torrent-hajautusarvot kaapattaessa",
- "IndexerBeyondHDSettingsSearchTypes": "Mitä etsitään",
+ "ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Synkronoi estetyt torrent-hajautusarvot kaapattaessa",
+ "IndexerBeyondHDSettingsSearchTypes": "Etsittävät tyypit",
"IndexerSettingsSeedRatio": "Jakosuhde",
"IndexerSettingsSeedTime": "Jakoaika",
- "IndexerSettingsSeedTimeHelpText": "Aika, joka torrentia tulee jakaa ennen sen pysäytystä. Käytä lataustyökalun oletusta jättämällä tyhjäksi.",
+ "IndexerSettingsSeedTimeHelpText": "Aika, joka torrentia tulee jakaa ennen sen pysäytystä. Käytä latauspalvelun oletusta jättämällä tyhjäksi.",
"IndexerSettingsVipExpiration": "VIP-erääntyy",
"Destination": "Kohde",
"Directory": "Kansio",
- "DownloadClientFloodSettingsTagsHelpText": "Latauksen alkuperäiset tunnisteet. Jotta se voidaa tunnistaa, on latauksella oltava sen alkuperäiset tunnisteet. Tämä välttää ristiriidat muiden latausten kanssa.",
- "DownloadClientFreeboxSettingsApiUrl": "Rajapinnan URL-osoite",
+ "DownloadClientFloodSettingsTagsHelpText": "Latauksen alkuperäiset tunnisteet, jotka tarvitaan sen tunnistamiseen. Tämä välttää ristiriidat muiden latausten kanssa.",
+ "DownloadClientFreeboxSettingsApiUrl": "Rajapinnan URL",
"DownloadClientFreeboxSettingsAppTokenHelpText": "Freebox-rajapinnan käyttöoikeutta määritettäessä saatu app_token-tietue.",
"DownloadClientFreeboxSettingsHostHelpText": "Freeboxin isäntänimi tai IP-osoite. Oletus on \"{url}\" (toimii vain samassa verkossa).",
"DownloadClientPneumaticSettingsStrmFolder": "Strm-kansio",
"DownloadClientQbittorrentSettingsInitialStateHelpText": "Tila, jossa torrentit lisätään qBittorrentiin. Huomioi, että pakotetut torrentit eivät noudata nopeusrajoituksia.",
- "DownloadClientSettingsAddPaused": "Lisää pysäytettynä",
+ "DownloadClientSettingsAddPaused": "Lisää keskeytettynä",
"DownloadClientSettingsDestinationHelpText": "Määrittää manuaalisen tallennuskohteen. Käytä oletusta jättämällä tyhjäksi.",
- "DownloadClientSettingsInitialState": "Virheellinen tila",
- "DownloadClientSettingsInitialStateHelpText": "Lataustyökaluun {clientName} lisättyjen torrentien aloitustila.",
+ "DownloadClientSettingsInitialState": "Aloitustila",
+ "DownloadClientSettingsInitialStateHelpText": "Latauspalveluun {clientName} lisättyjen torrentien aloitustila.",
"IndexerHDBitsSettingsCodecs": "Koodekit",
"IndexerHDBitsSettingsCodecsHelpText": "Jos ei määritetty, käytetään kaikkia vaihtoehtoja.",
- "IndexerHDBitsSettingsMediums": "Mediatyypit",
+ "IndexerHDBitsSettingsMediums": "Muodot",
"IndexerHDBitsSettingsMediumsHelpText": "Jos ei määritetty, käytetään kaikkia vaihtoehtoja.",
"IndexerHDBitsSettingsOriginsHelpText": "Jos ei määritetty, käytetään kaikkia vaihtoehtoja.",
"IndexerSettingsAdditionalParameters": "Muut parametrit",
- "IndexerSettingsApiPath": "API:n polku",
- "IndexerSettingsApiPathHelpText": "Polku API:in (yleensä {url}).",
+ "IndexerSettingsApiPath": "Rajapinnan sijainti",
+ "IndexerSettingsApiPathHelpText": "Rajapinnan sijainti, yleensä \"{url}\".",
"IndexerSettingsCookie": "Eväste",
- "IndexerSettingsPackSeedTime": "Koosteen jakoaika",
+ "IndexerSettingsPackSeedTime": "Paketin jakoaika",
"IndexerSettingsPackSeedTimeIndexerHelpText": "Aika, joka koostepaketin (kuten sarjan tuotantokauden tai esittäjän diskografian) sisältävää torrentia tulee jakaa. Käytä sovelluksen oletusta jättämällä tyhjäksi.",
- "IndexerSettingsSeedRatioHelpText": "Suhde, joka torrentin tulee saavuttaa ennen sen pysäytystä. Käytä lataustyökalun oletusta jättämällä tyhjäksi. Suhteen tulisi olla ainakin 1.0 ja noudattaa tietolähteen sääntöjä.",
+ "IndexerSettingsSeedRatioHelpText": "Suhde, joka torrentin tulee saavuttaa ennen sen pysäytystä. Käytä latauspalvelun oletusta jättämällä tyhjäksi. Suhteen tulisi olla ainakin 1.0 ja noudattaa hakupalvelun sääntöjä.",
"SecretToken": "Salainen tunniste",
"TorrentBlackholeSaveMagnetFiles": "Tallenna magnet-tiedostot",
"UseSsl": "Käytä SSL-salausta",
- "ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Jos torrent on estetty hajautusarvon perusteella sitä ei välttämättä hylätä oikein etsittäessä joiltakin tietolähteiltä RSS-syötteen tai haun välityksellä. Tämä mahdollistaa tällaisten torrentien hylkäämisen kaappauksen jälkeen, mutta ennen välitystä lataustyökalulle.",
+ "ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Jos torrent on estetty hajautusarvon perusteella sitä ei välttämättä hylätä oikein joidenkin hakupalveluiden RSS-syötteestä tai hausta. Tämän käyttöönotto mahdollistaa tällaisten torrentien hylkäämisen kaappauksen jälkeen, kuitenkin ennen kuin niitä välitetään latauspalvelulle.",
"BlackholeFolderHelpText": "Kansio, jonne {appName} tallentaa {extension}-tiedoston.",
- "DownloadClientDelugeSettingsUrlBaseHelpText": "Lisää etuliitteen Delugen JSON-URL-osoitteeseen (ks. {url}).",
+ "DownloadClientDelugeSettingsUrlBaseHelpText": "Lisää Delugen JSON-URL-osoitteeseen etuliitteen, ks. \"{url})\".",
"DownloadClientFloodSettingsAdditionalTags": "Lisätunnisteet",
"DownloadClientPneumaticSettingsStrmFolderHelpText": "Tämän kansion .strm-tiedostot tuodaan droonilla.",
"DownloadClientQbittorrentSettingsSequentialOrderHelpText": "Lataa tiedostot järjestyksessä (qBittorrent 4.1.0+).",
"UsenetBlackholeNzbFolder": "NZB-kansio",
"XmlRpcPath": "XML RPC -sijainti",
- "DownloadClientSettingsUrlBaseHelpText": "Lisää etuliite lataustuökalun {clientName} URL-osoitteeseen, kuten {url}.",
- "DownloadClientFloodSettingsUrlBaseHelpText": "Lisää etuliitteen Flood-rajapintaan (esim. {url}).",
- "DownloadClientDownloadStationSettingsDirectoryHelpText": "Valinnainen jaettu kansio latauksille. Download Stationin oletussijaintia jättämällä tyhjäksi.",
- "DownloadClientFreeboxSettingsApiUrlHelpText": "Määritä Freebox-rajapinnan perus-URL rajapinnan versiolla. Esimerkiksi \"{url}\". Oletus on \"{defaultApiUrl}\".",
+ "DownloadClientSettingsUrlBaseHelpText": "Lisää lataustuökalun {clientName} URL-osoitteeseen etuliitteen, esim. \"{url}\".",
+ "DownloadClientFloodSettingsUrlBaseHelpText": "Lisää Flood-rajapintaan etuliitteen, esim. \"{url}\".",
+ "DownloadClientDownloadStationSettingsDirectoryHelpText": "Vaihtoehtoinen jaettu kansio latauksille. Käytä Download Stationin oletussijaintia jättämällä tyhjäksi.",
+ "DownloadClientFreeboxSettingsApiUrlHelpText": "Määritä Freebox-rajapinnan perus-URL rajapinnan versiolla, esim. \"{url}\". Oletus on \"{defaultApiUrl}\".",
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "Ensimmäinen ja viimeinen ensin",
- "DownloadClientFreeboxSettingsAppId": "Sovellustunniste",
- "DownloadClientFreeboxSettingsPortHelpText": "Freebox-liittymän portti. Oletus on \"{port}\".",
+ "DownloadClientFreeboxSettingsAppId": "Sovelluksen ID",
+ "DownloadClientFreeboxSettingsPortHelpText": "Freebox-liittymän portti. Oletus on {port}.",
"DownloadClientPneumaticSettingsNzbFolder": "NZB-kansio",
"DownloadClientQbittorrentSettingsSequentialOrder": "Peräkkäinen järjestys",
"CustomFilter": "Oma suodatin",
"DownloadClientFreeboxSettingsAppIdHelpText": "Freebox-rajapinnan käyttöoikeutta määritettäessä käytettävä App ID -sovellustunniste.",
"DownloadClientFreeboxSettingsAppToken": "Sovellustietue",
- "DownloadClientNzbgetSettingsAddPausedHelpText": "Tämä vaatii vähintään NzbGet-version 16.0.",
- "DownloadClientPneumaticSettingsNzbFolderHelpText": "Tämän kansion on oltava tavoitettavissa XBMC:stä.",
- "DownloadClientQbittorrentSettingsFirstAndLastFirstHelpText": "Aloita lataamalla ensimmäinen ja viimeinen osa (qBittorrent 4.1.0+).",
+ "DownloadClientNzbgetSettingsAddPausedHelpText": "Tämä vaatii vähintään NzbGetin version 16.0.",
+ "DownloadClientPneumaticSettingsNzbFolderHelpText": "Tämän kansion on oltava Kodin tavoitettavissa.",
+ "DownloadClientQbittorrentSettingsFirstAndLastFirstHelpText": "Lataa ensimmäinen ja viimeinen osa ensin (qBittorrent 4.1.0+).",
"DownloadClientQbittorrentSettingsUseSslHelpText": "Käytä suojattua yhteyttä. Katso qBittorentin asetusten \"Selainkäyttö\"-osion \"Käytä HTTPS:ää HTTP:n sijaan\" -asetus.",
"DownloadClientRTorrentSettingsAddStopped": "Lisää pysäytettynä",
"DownloadClientRTorrentSettingsUrlPath": "URL-sijainti",
- "TorrentBlackholeSaveMagnetFilesHelpText": "Tallenna magnet-linkki, jos .torrent-tiedostoa ei ole käytettävissä (hyödyllinen vain lataustyökalun tukiessa tiedostoon tallennettuja magnet-linkkejä).",
+ "TorrentBlackholeSaveMagnetFilesHelpText": "Tallenna magnet-linkki, jos .torrent-tiedostoa ei ole käytettävissä (hyödyllinen vain latauspalvelun tukiessa tiedostoon tallennettuja magnet-linkkejä).",
"TorrentBlackholeTorrentFolder": "Torrent-kansio",
- "TorrentBlackholeSaveMagnetFilesExtension": "Tallennettujen magnet-tiedostojen pääte",
+ "TorrentBlackholeSaveMagnetFilesExtension": "Tallenna magnet-tiedostojen pääte",
"TorrentBlackholeSaveMagnetFilesExtensionHelpText": "Magnet-linkeille käytettävä tiedostopääte. Oletus on \".magnet\".",
"LabelIsRequired": "Nimi on pakollinen",
"Default": "Oletus",
"GrabRelease": "Kaappaa julkaisu",
- "OverrideGrabModalTitle": "Ohita ja sieppaa - {title}",
+ "OverrideGrabModalTitle": "Ohitetaan ja kaapataan – {title}",
"PrioritySettings": "Painotus: {priority}",
- "SelectDownloadClientModalTitle": "{modalTitle} - Valitse lataustyökalu",
+ "SelectDownloadClientModalTitle": "{modalTitle} – Valitse latauspalvelu",
"ProxyValidationBadRequest": "Välityspalvelintesti epäonnistui. Tilakoodi: {statusCode}.",
- "ProxyValidationUnableToConnect": "Tietolähdettä ei tavoiteta: {exceptionMessage}. Etsi tietoja tämän virheen lähellä olevista lokimerkinnöistä.",
- "ManualGrab": "Manuaalinen kaappaus",
- "OverrideAndAddToDownloadClient": "Ohita ja lisää latausjonoon",
+ "ProxyValidationUnableToConnect": "Välityspalvelinta ei tavoiteta: {exceptionMessage}. Saat lisätietoja virheen lähellä olevista lokimerkinnöistä.",
+ "ManualGrab": "Manuaalikaappaus",
+ "OverrideAndAddToDownloadClient": "Ohita ja lisää etälatauspalveluun",
"BuiltIn": "Sisäänrakennettu",
- "Any": "Mikä vain",
- "Script": "Skripti",
+ "Any": "Mikä tahansa",
+ "Script": "Komentosarja",
"InfoUrl": "Tietojen URL",
"PublishedDate": "Julkaisupäivä",
- "Redirected": "Uudelleenohjaus",
+ "Redirected": "Uudelleenohjattu",
"AllSearchResultsHiddenByFilter": "Aktiivinen suodatin piilottaa kaikki tulokset.",
- "HealthMessagesInfoBox": "Saat lisätietoja näiden vakausviestien syistä painamalla rivin lopussa olevaa wikilinkkiä (kirjakuvake) tai tarkastelemalla [lokitietoja]({link}). Mikäli kohtaat ongelmia näiden viestien tulkinnassa, tavoitat tukemme alla olevilla linkkeillä.",
+ "HealthMessagesInfoBox": "Saat lisätietoja näiden vakausviestien syistä painamalla rivin lopussa olevaa wikilinkkiä (kirjakuvake) tai tarkastelemalla [lokitietoja]({link}). Mikäli et osaa tulkita näitä viestejä, tavoitat tukemme alla olevilla linkeillä.",
"PackageVersionInfo": "{packageVersion} julkaisijalta {packageAuthor}",
"ErrorRestoringBackup": "Virhe palautettaessa varmuuskopiota",
"ExternalUpdater": "{appName} on määritetty käyttämään ulkoista päivitysratkaisua.",
@@ -715,7 +715,96 @@
"UpdaterLogFiles": "Päivittäjän lokitiedostot",
"WouldYouLikeToRestoreBackup": "Haluatko palauttaa varmuuskopion \"{name}\"?",
"InstallLatest": "Asenna uusin",
- "CurrentlyInstalled": "Nykyinen asennettu versio",
- "PreviouslyInstalled": "Edellinen asennettu versio",
- "Mixed": "Korjattu"
+ "CurrentlyInstalled": "Käytössä oleva versio",
+ "PreviouslyInstalled": "Aiemmin käytössä ollut versio",
+ "Mixed": "Sekoitettu",
+ "IndexerSettingsAppsMinimumSeeders": "Jakajien vähimmäismäärä",
+ "FailedToFetchSettings": "Asetusten nouto epäonnistui",
+ "IndexerAlphaRatioSettingsExcludeSceneHelpText": "Älä huomioi tulosten SCENE-julkaisuja.",
+ "DownloadClientRTorrentSettingsUrlPathHelpText": "Polku XMLRPC-päätteeseen, ks. \"{url}\". Käytettäessä ruTorrentia tämä on yleensä RPC2 tai [ruTorrentin sijainti]{url2}.",
+ "InstallMajorVersionUpdateMessageLink": "Saat lisätietoja osoitteesta [{domain}]({url}).",
+ "Install": "Asenna",
+ "NotificationsTelegramSettingsIncludeAppName": "Sisällytä {appName} otsikkoon",
+ "InstallMajorVersionUpdate": "Asenna päivitys",
+ "InstallMajorVersionUpdateMessage": "Tämä päivitys asentaa uuden pääversion, joka ei välttämättä ole yhteensopiva laitteistosi kanssa. Haluatko varmasti asentaa päivityksen?",
+ "NotificationsTelegramSettingsIncludeAppNameHelpText": "Ilmoitukset voidaan tarvittaessa erottaa muista sovelluksista lisäämällä niiden eteen \"{appName}\".",
+ "DownloadClientRTorrentSettingsAddStoppedHelpText": "Tämä lisää torrentit ja magnet-linkit rTorentiin pysäytetyssä tilassa. Tämä saattaa rikkoa margnet-tiedostot.",
+ "DownloadClientSettingsPriorityItemHelpText": "Kaapatuille kohteille käytettävä painotus.",
+ "LogSizeLimit": "Lokin kokorajoitus",
+ "LogSizeLimitHelpText": "Lokitiedoston enimmäiskoko ennen pakkausta. Oletusarvo on 1 Mt.",
+ "IndexerAlphaRatioSettingsExcludeScene": "Ohita SCENE-julkaisut",
+ "AverageGrabs": "Kaappausten keskiarvo",
+ "AverageQueries": "Kyselyiden keskiarvo",
+ "IndexerNewznabSettingsAdditionalParametersHelpText": "Muut Newznab-parametrit",
+ "IndexerNewznabSettingsVipExpirationHelpText": "Syötä VIP-tilan päättymispäivä (yyyy-mm-dd) tai jätä tyhjäksi. {appName} ilmoittaa viikko ennen VIP-tilan päättymistä.",
+ "IndexerSettingsQueryLimitHelpText": "Kyselyiden enimmäismäärä, jonka {appName} sallii hakupalvelulle.",
+ "IndexerHDBitsSettingsPasskeyHelpText": "Pääsyavain käyttäjätiedoista",
+ "DefaultCategory": "Oletuskategoria",
+ "ClickToChangeQueryOptions": "Muuta kyselyasetuksia painamalla tästä.",
+ "IndexerSettingsQueryLimit": "Kyselyrajoitus",
+ "IndexerAvistazSettingsPidHelpText": "PID \"My Account\" tai \"My Profile\" -sivulta.",
+ "IndexerAvistazSettingsUsernameHelpTextWarning": "Vain vähintään jäsen-tasoinen käyttäjä voi käyttää tämän hakupalvelun rajapintaa.",
+ "IndexerBeyondHDSettingsLimitedOnly": "Vain rajoitetut",
+ "IndexerBeyondHDSettingsFreeleechOnlyHelpText": "Etsi vain Freeleech-julkaisuja.",
+ "IndexerFileListSettingsFreeleechOnlyHelpText": "Etsi vain freeleech-julkaisuja.",
+ "IndexerGazelleGamesSettingsApiKeyHelpTextWarning": "Avaimella on oltava \"User\" ja \"Torrents\" oikeudet.",
+ "IndexerHDBitsSettingsUseFilenames": "Käytä tiedostonimiä",
+ "IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Etsi vain freeleech-julkaisuja.",
+ "IndexerIPTorrentsSettingsCookieUserAgent": "Evästeen käyttäjäagentti",
+ "IndexerIPTorrentsSettingsCookieUserAgentHelpText": "Evästeeseen liitetty selaimen käyttäjäagentti.",
+ "IndexerPassThePopcornSettingsApiKeyHelpText": "Sivuston rajapinnan avain",
+ "IndexerOrpheusSettingsApiKeyHelpText": "Sivuston rajapinnan avain. Löytyy kohdasta \"Settings\" > \"Access Settings\".",
+ "Open": "Avaa",
+ "PreferMagnetUrl": "Suosi magnet-URL:eja",
+ "ProwlarrDownloadClientsAlert": "Latauspalvelut on määritettävä tässä vain, jos hakuja aiotaan tehdä suoraan {appName}ista. Sovelluksien hauille käytetään niiden omien asetusten latauspalvelumäärityksiä.",
+ "IndexerSettingsLimitsUnitHelpText": "Hakupalveluiden aikarajoituksiin käytettävä yksikkö.",
+ "IndexerGazelleGamesSettingsSearchGroupNames": "Etsi ryhmien nimillä",
+ "DownloadClientSettingsDefaultCategoryHelpText": "Oletusarvoinen varakategoria julkaisuille, joilla ei ole kategoriaa. {appName}-kategorian lisääminen välttää ristiriidat ei-{appName} latausten kanssa. Kategoria on valinnainen, mutta erittäin suositeltava.",
+ "IndexerAvistazSettingsFreeleechOnlyHelpText": "Etsi vain freeleech-julkaisuja.",
+ "PreferMagnetUrlHelpText": "Hakupalvelu käyttää kaappaukseen ensisijaisesti magnet-linkkejä ja varmistuksena torrent-linkkejä.",
+ "ProwlarrDownloadClientsInAppOnlyAlert": "Latauspalvelut ovat vain {appName}in sisäisiä hakuja varten, eikä niitä synkronoida muihin sovelluksiin (ominaisuutta ole myöskään suunnitteilla).",
+ "DownloadClientSettingsDefaultCategorySubFolderHelpText": "Oletusarvoinen varakategoria julkaisuille, joilla ei ole kategoriaa. {appName}-kategorian lisääminen välttää ristiriidat ei-{appName} latausten kanssa. Kategoria on valinnainen, mutta erittäin suositeltava. Luo kohdekansioon [kategoria]-alikansion.",
+ "IndexerAlphaRatioSettingsFreeleechOnlyHelpText": "Etsi vain freeleech-julkaisuja.",
+ "IndexerAvistazSettingsUsernameHelpText": "Sivuston käyttäjätunnus",
+ "IndexerBeyondHDSettingsRefundOnly": "Vain \"Refund\"",
+ "IndexerBeyondHDSettingsRefundOnlyHelpText": "Etsi vain Refund-julkaisuja.",
+ "IndexerBeyondHDSettingsRewindOnly": "Vain \"Rewind\"",
+ "IndexerBeyondHDSettingsRewindOnlyHelpText": "Etsi vain Rewind-julkaisuja.",
+ "IndexerBeyondHDSettingsApiKeyHelpText": "Sivuston rajapinnan avain. Löytyy kohdasta \"My Security\" > \"API Key\".",
+ "IndexerBeyondHDSettingsSearchTypesHelpText": "Valitse halutut julkaisutyypit. Jos mitään ei ole valittu käytetään kaikkia.",
+ "IndexerFileListSettingsPasskeyHelpText": "Sivuston pääsyavain. Tämä on latauspalvelussasi näkyvä trakkerin URL-osoitteen aakkosnumeerinen osa.",
+ "IndexerGazelleGamesSettingsFreeleechOnlyHelpText": "Etsi vain freeleech-julkaisuja.",
+ "IndexerGazelleGamesSettingsApiKeyHelpText": "Sivuston rajapinnan avain. Löytyy kohdasta \"Settings\" > \"Access Settings\".",
+ "IndexerFileListSettingsUsernameHelpText": "Sivuston käyttäjätunnus",
+ "IndexerGazelleGamesSettingsSearchGroupNamesHelpText": "Etsi julkaisuja ryhmien nimillä.",
+ "IndexerHDBitsSettingsFreeleechOnlyHelpText": "Näytä vain Freeleech-julkaisut.",
+ "IndexerNzbIndexSettingsApiKeyHelpText": "Sivuston rajapinnan avain",
+ "IndexerHDBitsSettingsOrigins": "Alkuperä",
+ "IndexerPassThePopcornSettingsFreeleechOnlyHelpText": "Etsi vain freeleech-julkaisuja.",
+ "IndexerHDBitsSettingsUseFilenamesHelpText": "Käsittele torrentien tiedostonimiä julkaisujen nimikkeinä.",
+ "IndexerHDBitsSettingsUsernameHelpText": "Sivuston käyttäjätunnus",
+ "IndexerSettingsGrabLimitHelpText": "Kaappausten enimmäismäärä, jonka {appName} sallii hakupalvelulle.",
+ "IndexerRedactedSettingsApiKeyHelpText": "Sivuston rajapinnan avain. Löytyy kohdasta \"Settings\" > \"Access Settings\".",
+ "IndexerSettingsApiUser": "Rajapinnan käyttäjä",
+ "IndexerSettingsBaseUrl": "Perus-URL",
+ "IndexerSettingsBaseUrlHelpText": "Määritä verkkotunnus, jota {appName} käyttää sivustolle lähetettäville pyynnöille.",
+ "IndexerPassThePopcornSettingsApiUserHelpText": "Nämä löytyvät PassThePopcorn-tilin asetuksista, kohdasta \"Edit Profile\" > \"Security\".",
+ "IndexerSettingsPasskey": "Pääsyavain",
+ "IndexerBeyondHDSettingsLimitedOnlyHelpText": "Etsi vain Freeleech-julkaisuja (rajoitettu UL).",
+ "IndexerBeyondHDSettingsRssKeyHelpText": "Sivuston RSS-avain. Löytyy kohdasta \"My Security\" > \"RSS-avain\".",
+ "IndexerIPTorrentsSettingsFreeleechOnlyHelpText": "Etsi vain freeleech-julkaisuja.",
+ "IndexerNewznabSettingsApiKeyHelpText": "Sivuston rajapinnan avain",
+ "IndexerNebulanceSettingsApiKeyHelpText": "Rajapinnan avain kohdasta \"Settings\" > \"Api Keys\".\nAvaimella on oltava \"List\" ja \"Download\" oikeudet.",
+ "IndexerSettingsGrabLimit": "Kaappausrajoitus",
+ "IndexerSettingsLimitsUnit": "Rajoitusten yksikkö",
+ "IndexerSettingsRssKey": "RSS-avain",
+ "IndexerMTeamTpSettingsApiKeyHelpText": "Sivuston rajapinnan avain. Löytyy kohdasta \"Control Panel\" > \"Security\" > \"Laboratory\".",
+ "IndexerSettingsPreferMagnetUrlHelpText": "Hakupalvelu käyttää kaappaukseen ensisijaisesti magnet-linkkejä ja varmistuksena torrent-linkkejä.",
+ "IndexerTorrentSyndikatSettingsApiKeyHelpText": "Sivuston rajapinnan avain",
+ "IndexerSettingsPreferMagnetUrl": "Suosi magnet-URL:eja",
+ "IndexerPassThePopcornSettingsGoldenPopcornOnly": "Vain \"Golden Popcorn\"",
+ "IndexerPassThePopcornSettingsGoldenPopcornOnlyHelpText": "Etsi vain ns. kultaisella pocornilla merkittyjä julkaisuja.",
+ "IndexerSettingsFreeleechOnly": "Vain \"Freeleech\"",
+ "IndexerSettingsCookieHelpText": "Jos sivusto vaatii kirjautumisevästeen, on se noudettava selaimen avulla.",
+ "IndexerAvistazSettingsPasswordHelpText": "Sivuston salasana"
}
diff --git a/src/NzbDrone.Core/Localization/Core/fr.json b/src/NzbDrone.Core/Localization/Core/fr.json
index fdcfafcd1..8768f9c50 100644
--- a/src/NzbDrone.Core/Localization/Core/fr.json
+++ b/src/NzbDrone.Core/Localization/Core/fr.json
@@ -117,7 +117,7 @@
"SystemTimeHealthCheckMessage": "L'heure du système est décalée de plus d'un jour. Les tâches planifiées peuvent ne pas s'exécuter correctement tant que l'heure ne sera pas corrigée",
"SettingsShowRelativeDates": "Afficher les dates relatives",
"UnsavedChanges": "Modifications non enregistrées",
- "ShowSearchHelpText": "Afficher le bouton de recherche au survol",
+ "ShowSearchHelpText": "Affiche le bouton de recherche au survol",
"ShowSearch": "Afficher la recherche",
"SettingsTimeFormat": "Format de l'heure",
"SettingsShowRelativeDatesHelpText": "Afficher les dates relatives (aujourd'hui, hier, etc.) ou absolues",
@@ -384,7 +384,7 @@
"HistoryCleanupDaysHelpTextWarning": "Les fichiers dans la corbeille plus anciens que le nombre de jours sélectionné seront nettoyés automatiquement",
"OnGrab": "Récupéré à la sortie",
"OnHealthIssue": "Lors de problème de santé",
- "TestAllIndexers": "Testez tous les indexeurs",
+ "TestAllIndexers": "Tester tous les indexeurs",
"UserAgentProvidedByTheAppThatCalledTheAPI": "User-Agent fourni par l'application qui a appelé l'API",
"Database": "Base de données",
"HistoryCleanup": "Nettoyage de l'historique",
@@ -802,5 +802,10 @@
"IndexerAvistazSettingsPasswordHelpText": "Mot de passe du site",
"PreferMagnetUrlHelpText": "Si activé, cet indexeur privilégiera si possible l'usage de liens de type magnet aux liens torrent",
"PreviouslyInstalled": "Installé précédemment",
- "CurrentlyInstalled": "Actuellement installé"
+ "CurrentlyInstalled": "Actuellement installé",
+ "IndexerSettingsPreferMagnetUrl": "URL de préférence Magnet",
+ "IndexerPassThePopcornSettingsGoldenPopcornOnly": "Popcorn doré uniquement",
+ "IndexerPassThePopcornSettingsGoldenPopcornOnlyHelpText": "Rechercher uniquement les versions Golden Popcorn",
+ "IndexerAvistazSettingsUsernameHelpTextWarning": "Seuls les membres de rang et supérieur peuvent utiliser l'API sur cet indexeur.",
+ "DownloadClientUTorrentProviderMessage": "uTorrent a un historique d'inclusion de cryptomineurs, de logiciels malveillants et de publicités. Nous vous recommandons fortement de choisir un autre client."
}
diff --git a/src/NzbDrone.Core/Localization/Core/ko.json b/src/NzbDrone.Core/Localization/Core/ko.json
index 7bbae2162..5a30e0f08 100644
--- a/src/NzbDrone.Core/Localization/Core/ko.json
+++ b/src/NzbDrone.Core/Localization/Core/ko.json
@@ -417,5 +417,94 @@
"UsenetBlackholeNzbFolder": "Nzb 폴더",
"UseSsl": "SSL 사용",
"TorrentBlackholeTorrentFolder": "토렌트 폴더",
- "DownloadClientPneumaticSettingsNzbFolder": "Nzb 폴더"
+ "DownloadClientPneumaticSettingsNzbFolder": "Nzb 폴더",
+ "UserAgentProvidedByTheAppThatCalledTheAPI": "API를 호출한 앱에서 제공하는 사용자 에이전트",
+ "days": "일",
+ "minutes": "분",
+ "Author": "저작자",
+ "Categories": "카테고리",
+ "SeedRatio": "종자 비율",
+ "AuthenticationRequiredHelpText": "필수 인증을 요청하는 변경 사항. 위험을 이해하지 못한다면 변경하지 마세요.",
+ "DownloadClientFloodSettingsAdditionalTagsHelpText": "미디어의 속성을 태그로 추가합니다. 힌트는 예시입니다.",
+ "DownloadClientRTorrentSettingsAddStoppedHelpText": "활성화하면 rTorrent에 정지된 상태에서 토런트와 마그넷이 추가됩니다. 마그넷 파일이 손상될 수 있습니다.",
+ "HealthMessagesInfoBox": "행 끝에 있는 위키 링크(책 아이콘)를 클릭하거나 [로그]({link})를 확인하면 이러한 상태 점검 메시지의 원인에 대한 상세 정보를 찾을 수 있습니다. 이러한 메시지를 해석하는 데 어려움이 있는 경우 아래 링크에서 지원팀에 문의할 수 있습니다.",
+ "DownloadClientSettingsDestinationHelpText": "다운로드 대상을 수동으로 지정하고 기본값을 사용하려면 비워두세요.",
+ "DownloadClientSettingsInitialStateHelpText": "{clientName}에 추가된 토런트의 초기 상태",
+ "IndexerSettingsAdditionalParameters": "매개 변수 추가",
+ "NoEventsFound": "이벤트가 없음",
+ "BlackholeFolderHelpText": "{appName}가 {extension} 파일을 저장할 폴더",
+ "DownloadClientSettingsUrlBaseHelpText": "{clientName} url에 {url}과 같은 접두사를 추가합니다.",
+ "DownloadClientQbittorrentSettingsContentLayout": "콘텐츠 레이아웃",
+ "Install": "설치",
+ "AuthenticationRequiredPasswordConfirmationHelpTextWarning": "새 비밀번호 확인",
+ "FailedToFetchSettings": "설정을 가져오는데 실패함",
+ "Default": "기본값",
+ "Episode": "에피소드",
+ "AuthenticationMethod": "인증 방법",
+ "IndexerSettingsSeedRatio": "시드 비율",
+ "Destination": "대상",
+ "DownloadClientFreeboxSettingsAppToken": "앱 토큰",
+ "Logout": "로그아웃",
+ "DownloadClientFreeboxSettingsApiUrl": "API 주소",
+ "IndexerHDBitsSettingsCodecs": "코덱",
+ "WhatsNew": "새로운 소식?",
+ "DownloadClientFreeboxSettingsPortHelpText": "Freebox 인터페이스에 액세스하는 데 사용되는 포트, 기본값은 '{port}'",
+ "DownloadClientPneumaticSettingsStrmFolderHelpText": "이 폴더의 .strm 파일은 드론으로 가져옵니다.",
+ "DownloadClientQbittorrentSettingsInitialStateHelpText": "qBittorrent에 추가된 토렌트의 초기 상태입니다. 강제 토렌트는 시드 제한을 따르지 않는다는 점에 유의하세요.",
+ "DownloadClientRTorrentSettingsDirectoryHelpText": "다운로드를 넣을 선택 위치, 기본 rTorrent 위치를 사용하려면 비워두세요.",
+ "DownloadClientSettingsUseSslHelpText": "{clientName}에 연결할 때 보안 연결을 사용",
+ "DownloadClientTransmissionSettingsUrlBaseHelpText": "{clientName} rpc URL에 접두사를 추가합니다(예: {url}, 기본값은 '{defaultUrl}')",
+ "InstallMajorVersionUpdateMessageLink": "상세 내용은 [{domain}]({url})을 확인하세요.",
+ "ApplicationUrlHelpText": "이 애플리케이션의 외부 URL - http(s)://, port 및 URL 기반 포함",
+ "Theme": "테마",
+ "ApplicationURL": "애플리케이션 URL",
+ "Directory": "디렉토리",
+ "DownloadClientDownloadStationSettingsDirectoryHelpText": "다운로드를 넣을 공유 폴더(선택 사항). 기본 다운로드 스테이션 위치를 사용하려면 비워두세요.",
+ "DownloadClientFloodSettingsAdditionalTags": "추가 태그",
+ "DownloadClientFloodSettingsUrlBaseHelpText": "{url}와 같은 Flood API에 접두사를 추가합니다",
+ "DownloadClientFreeboxSettingsApiUrlHelpText": "API 버전을 사용하여 Freebox API 기본 URL을 정의하세요, 예를 들어 '{url}', 기본값은 '{defaultApiUrl}')",
+ "DownloadClientFreeboxSettingsAppId": "앱 ID",
+ "DownloadClientNzbgetSettingsAddPausedHelpText": "이 옵션을 사용하려면 최소한 NzbGet 버전 16.0이 필요합니다",
+ "DownloadClientPneumaticSettingsNzbFolderHelpText": "이 폴더는 XBMC에서 접근할 수 있어야 합니다.",
+ "DownloadClientRTorrentSettingsAddStopped": "중지됨 추가",
+ "Category": "카테고리",
+ "DownloadClientTransmissionSettingsDirectoryHelpText": "다운로드를 넣을 위치 (선택 사항), 기본 전송 위치를 사용하려면 비워두세요",
+ "External": "외부",
+ "IndexerSettingsSeedRatioHelpText": "토렌드가 멈추기 전에 도달해야 하는 비율, 비어 있을 경우 다운로드 클라이언트의 기본값을 사용합니다. 비율은 최소 1.0이어야 하며 인덱서 규칙을 따라야 합니다",
+ "IndexerSettingsSeedTimeHelpText": "토렌드가 중지되기 전에 시드되어야 하는 시간, 비어 있을 경우 다운로드 클라이언트의 기본값을 사용합니다",
+ "InvalidUILanguage": "UI가 잘못된 언어로 설정되어 있습니다, 수정하고 설정을 저장하세요",
+ "AuthenticationRequired": "인증 필요",
+ "NotificationsTelegramSettingsIncludeAppNameHelpText": "다른 애플리케이션의 알림을 구분하기 위해 메시지 제목 앞에 {appName}를 접두사로 사용 (선택 사항)",
+ "PackageVersionInfo": "{packageVersion} by {packageAuthor}",
+ "Duration": "기간",
+ "Script": "스크립트",
+ "SelectDownloadClientModalTitle": "{modalTitle} - 다운로드 클라이언트 선택",
+ "TheLogLevelDefault": "로그 수준의 기본값은 '정보'이며 [일반 설정](/settings/general)에서 변경할 수 있습니다",
+ "UpdaterLogFiles": "업데이트 도구 로그 파일",
+ "CountDownloadClientsSelected": "{count}개의 다운로드 클라이언트를 선택함",
+ "DefaultNameCopiedProfile": "{name} - 복사",
+ "DownloadClientDelugeSettingsUrlBaseHelpText": "deluge json url에 접두사를 추가합니다. {url}을(를) 참조하세요",
+ "FailedToFetchUpdates": "업데이트를 가져오는데 실패함",
+ "ApplyChanges": "변경 사항 적용",
+ "Started": "시작됨",
+ "Database": "데이터베이스",
+ "PasswordConfirmation": "비밀번호 확인",
+ "TorrentBlackholeSaveMagnetFiles": "마그넷 파일 저장",
+ "TorrentBlackholeSaveMagnetFilesExtension": "마그넷 파일 확장자 저장",
+ "TorrentBlackholeSaveMagnetFilesExtensionHelpText": "마그넷 링크에 사용할 확장자, 기본값은 '.magnet'입니다",
+ "TorrentBlackholeSaveMagnetFilesHelpText": ".torrent 파일을 사용할 수 없는 경우 마그넷 링크를 저장합니다 (다운로드 클라이언트가 파일에 저장된 마그넷을 지원하는 경우에만 유용함)",
+ "AuthenticationMethodHelpTextWarning": "유효한 인증 방법을 선택해주세요",
+ "AuthenticationRequiredPasswordHelpTextWarning": "새로운 비밀번호를 입력하세요",
+ "AuthenticationRequiredUsernameHelpTextWarning": "새로운 사용자이름을 입력하세요",
+ "AuthenticationRequiredWarning": "인증 없이 원격 액세스를 방지하기 위해 {appName}은(는) 이제 인증을 활성화해야 합니다. 선택적으로 로컬 주소에서 인증을 비활성화할 수 있습니다.",
+ "CountIndexersSelected": "{count}개의 인덱서를 선택함",
+ "Label": "라벨",
+ "More": "더 보기",
+ "Donate": "기부하기",
+ "Menu": "메뉴",
+ "DownloadClientQbittorrentSettingsContentLayoutHelpText": "qBittorrent의 구성된 콘텐츠 레이아웃을 사용할지, 토런트의 원래 레이아웃을 사용할지, 항상 하위 폴더를 생성할지(qBittorrent 4.3.2+)",
+ "DownloadClientSettingsAddPaused": "일시 중지 추가",
+ "SecretToken": "비밀 토큰",
+ "NoDownloadClientsFound": "다운로드 클라이언트를 찾을 수 없음",
+ "PrioritySettings": "우선 순위: {0}"
}
diff --git a/src/NzbDrone.Core/Localization/Core/nb_NO.json b/src/NzbDrone.Core/Localization/Core/nb_NO.json
index a01858498..12e1c4557 100644
--- a/src/NzbDrone.Core/Localization/Core/nb_NO.json
+++ b/src/NzbDrone.Core/Localization/Core/nb_NO.json
@@ -160,5 +160,6 @@
"AptUpdater": "Bruk apt til å installere oppdateringen",
"Discord": "Discord",
"AddCustomFilter": "Legg til eget filter",
- "Clone": "Lukk"
+ "Clone": "Lukk",
+ "AddDownloadClientImplementation": "Ny Nedlastingsklient - {implementationName}"
}
diff --git a/src/NzbDrone.Core/Localization/Core/pt_BR.json b/src/NzbDrone.Core/Localization/Core/pt_BR.json
index 25d1187a4..43c1f2932 100644
--- a/src/NzbDrone.Core/Localization/Core/pt_BR.json
+++ b/src/NzbDrone.Core/Localization/Core/pt_BR.json
@@ -126,7 +126,7 @@
"DownloadClientStatusAllClientHealthCheckMessage": "Todos os clientes de download estão indisponíveis devido a falhas",
"DownloadClientStatusSingleClientHealthCheckMessage": "Clientes de download indisponíveis devido a falhas: {downloadClientNames}",
"DownloadClients": "Clientes de download",
- "DownloadClientsSettingsSummary": "Configuração de clientes de download para integração com a pesquisa da interface do usuário do {appName}",
+ "DownloadClientsSettingsSummary": "Configuração de clientes de download para integração com a pesquisa da interface do {appName}",
"Duration": "Duração",
"Edit": "Editar",
"EditIndexer": "Editar Indexador",
@@ -204,7 +204,7 @@
"IndexerNoDefinitionCheckHealthCheckMessage": "Os indexadores não têm definição e não funcionarão: {indexerNames}. Remova e (ou) adicione novamente ao {appName}.",
"IndexerObsoleteCheckMessage": "Os seguintes indexadores são obsoletos ou foram atualizados: {0}. Remova-os e/ou adicione-os novamente ao {appName}",
"IndexerPriority": "Prioridade do indexador",
- "IndexerPriorityHelpText": "Prioridade do Indexador de 1 (mais alta) a 50 (mais baixa). Padrão: 25.",
+ "IndexerPriorityHelpText": "Prioridade do indexador, de 1 (mais alta) a 50 (mais baixa). Padrão: 25.",
"IndexerProxies": "Proxies do Indexador",
"IndexerProxy": "Proxy do Indexador",
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "Todos os proxies estão indisponíveis devido a falhas",
@@ -248,7 +248,7 @@
"MassEditor": "Editor em Massa",
"Mechanism": "Mecanismo",
"Message": "Mensagem",
- "MinimumSeeders": "Mínimo de Seeders",
+ "MinimumSeeders": "Mínimo de semeadores",
"MinimumSeedersHelpText": "Semeadores mínimos exigidos pelo aplicativo para o indexador baixar",
"Mode": "Modo",
"More": "Mais",
@@ -513,7 +513,7 @@
"DeleteSelectedDownloadClients": "Excluir cliente(s) de download",
"DeleteSelectedDownloadClientsMessageText": "Tem certeza de que deseja excluir o(s) {count} cliente(s) de download selecionado(s)?",
"DeleteSelectedIndexersMessageText": "Tem certeza de que deseja excluir o(s) {count} indexador(es) selecionado(s)?",
- "DownloadClientPriorityHelpText": "Priorizar vários clientes de download. Usamos um rodízio para clientes com a mesma prioridade.",
+ "DownloadClientPriorityHelpText": "Priorizar vários clientes de download. Usamos uma distribuição equilibrada para clientes com a mesma prioridade.",
"EditSelectedDownloadClients": "Editar clientes de download selecionados",
"EditSelectedIndexers": "Editar indexadores selecionados",
"ManageDownloadClients": "Gerenciar clientes de download",
@@ -538,10 +538,10 @@
"PackSeedTime": "Tempo de Semente do Pacote",
"PackSeedTimeHelpText": "A hora em que um torrent de pacote (temporada ou discografia) deve ser propagado antes de parar, vazio é o padrão do aplicativo",
"QueryType": "Tipo de consulta",
- "SeedTime": "Tempo de Semeação",
+ "SeedTime": "Tempo de semeadura",
"SearchAllIndexers": "Pesquisar todos os indexadores",
"SearchCountIndexers": "Pesquisar {count} indexador(es)",
- "SeedRatio": "Proporção de sementes",
+ "SeedRatio": "Proporção de semeadura",
"SeedRatioHelpText": "A proporção que um torrent deve atingir antes de parar, vazio é o padrão do aplicativo",
"SeedTimeHelpText": "O tempo que um torrent deve ser propagado antes de parar, vazio é o padrão do aplicativo",
"SelectedCountOfCountReleases": "{selectedCount} de {itemCount} lançamentos selecionados",
@@ -611,7 +611,7 @@
"NotificationsEmailSettingsUseEncryptionHelpText": "Se preferir usar criptografia se configurado no servidor, usar sempre criptografia via SSL (somente porta 465) ou StartTLS (qualquer outra porta) ou nunca usar criptografia",
"NotificationsEmailSettingsUseEncryption": "Usar Criptografia",
"IndexerHDBitsSettingsPasskeyHelpText": "Chave de Acesso dos Detalhes do Usuário",
- "IndexerSettingsPasskey": "Chave de Acesso",
+ "IndexerSettingsPasskey": "Chave de acesso",
"IndexerAlphaRatioSettingsExcludeSceneHelpText": "Excluir lançamentos SCENE dos resultados",
"IndexerAlphaRatioSettingsFreeleechOnlyHelpText": "Pesquisar lançamentos freeleech somente",
"IndexerBeyondHDSettingsFreeleechOnlyHelpText": "Pesquisar lançamentos freeleech somente",
@@ -632,7 +632,7 @@
"IndexerGazelleGamesSettingsSearchGroupNamesHelpText": "Pesquisar lançamentos por nomes de grupos",
"IndexerHDBitsSettingsCodecs": "Codecs",
"IndexerHDBitsSettingsMediumsHelpText": "se não for especificado, todas as opções serão usadas.",
- "IndexerHDBitsSettingsOriginsHelpText": "se não for especificado, todas as opções serão usadas.",
+ "IndexerHDBitsSettingsOriginsHelpText": "Se não for especificado, todas as opções serão usadas.",
"IndexerHDBitsSettingsUseFilenames": "Usar nomes de arquivos",
"IndexerHDBitsSettingsUsernameHelpText": "Nome de Usuário do Site",
"IndexerHDBitsSettingsMediums": "Meios",
@@ -652,7 +652,7 @@
"IndexerSettingsApiUser": "Usuário da API",
"IndexerSettingsBaseUrl": "URL Base",
"IndexerSettingsCookie": "Cookie",
- "IndexerSettingsCookieHelpText": "Cookie do Site",
+ "IndexerSettingsCookieHelpText": "Cookie do site",
"IndexerSettingsFreeleechOnly": "Só Freeleech",
"IndexerSettingsGrabLimit": "Limite de Captura",
"IndexerSettingsGrabLimitHelpText": "O número máximo de capturas conforme especificado pela respectiva unidade que {appName} permitirá ao site",
@@ -744,7 +744,7 @@
"Mixed": "Misturado",
"Donate": "Doar",
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Sincronizar Lista de Bloqueio de Hashes de Torrents Rejeitados Enquanto Baixando",
- "ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Se um torrent for bloqueado por hash, pode não ser rejeitado corretamente durante o RSS/Pesquisa de alguns indexadores. Ativar isso permitirá que ele seja rejeitado após o torrent ser capturado, mas antes de ser enviado ao cliente.",
+ "ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Se um torrent for bloqueado por hash, pode não ser rejeitado corretamente durante a Sincronização RSS/Pesquisa em alguns indexadores. Ativar isso permitirá que ele seja rejeitado após obter o torrent, mas antes de enviar ao cliente.",
"ClickToChangeQueryOptions": "Clique para alterar as opções de consulta",
"IndexerMTeamTpSettingsApiKeyHelpText": "Chave API do Site (Encontrada no Painel de Controle do Usuário => Segurança => Laboratório)",
"IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Pesquise apenas lançamentos freeleech",
@@ -806,5 +806,6 @@
"InstallMajorVersionUpdateMessageLink": "Verifique [{domain}]({url}) para obter mais informações.",
"FailedToFetchSettings": "Falha ao obter configurações",
"CurrentlyInstalled": "Atualmente instalado",
- "PreviouslyInstalled": "Instalado anteriormente"
+ "PreviouslyInstalled": "Instalado anteriormente",
+ "DownloadClientUTorrentProviderMessage": "O uTorrent tem um histórico de incluir criptomineradores, malware e anúncios, recomendamos que você escolha outro cliente de download."
}
diff --git a/src/NzbDrone.Core/Localization/Core/ro.json b/src/NzbDrone.Core/Localization/Core/ro.json
index 928835b58..2385c5ddf 100644
--- a/src/NzbDrone.Core/Localization/Core/ro.json
+++ b/src/NzbDrone.Core/Localization/Core/ro.json
@@ -444,7 +444,7 @@
"DisabledForLocalAddresses": "Dezactivat pentru adresele locale",
"None": "Nici unul",
"ResetAPIKeyMessageText": "Sigur doriți să vă resetați cheia API?",
- "AddApplicationImplementation": "Adăugați aplicație - {implementareName}",
+ "AddApplicationImplementation": "Adăugați aplicație - {implementationName}",
"AddCategory": "Adăugați categorie",
"AddConnection": "Adăugați conexiune",
"AddConnectionImplementation": "Adăugați conexiune - {implementationName}",
@@ -491,5 +491,13 @@
"Stats": "Status",
"CurrentlyInstalled": "În prezent instalat",
"Mixed": "Fix",
- "Season": "Motiv"
+ "Season": "Motiv",
+ "ActiveIndexers": "Indexatorii activi",
+ "Any": "Oricare",
+ "AdvancedSettingsShownClickToHide": "Setări avansate afișate, click pentru a le ascunde",
+ "AdvancedSettingsHiddenClickToShow": "Setări avansate ascunse, click pentru afișare",
+ "ApiKeyValidationHealthCheckMessage": "Te rugăm să actualizezi cheia API astfel încât să aibă cel puțin {length} caractere. Poți face acest lucru din setări sau din fișierul de configurare",
+ "AddToDownloadClient": "Adaugă versiunea în clientul de descărcare",
+ "AddSyncProfile": "Adaugă profil de sincronizare",
+ "AddedToDownloadClient": "Versiune adăugată în client"
}
diff --git a/src/NzbDrone.Core/Localization/Core/ru.json b/src/NzbDrone.Core/Localization/Core/ru.json
index d396b076e..f31829160 100644
--- a/src/NzbDrone.Core/Localization/Core/ru.json
+++ b/src/NzbDrone.Core/Localization/Core/ru.json
@@ -806,5 +806,6 @@
"InstallMajorVersionUpdateMessage": "Это обновление установит новую версию, которая может не поддерживаться вашей системой. Вы уверены, что хотите установить это обновление?",
"FailedToFetchSettings": "Не удалось загрузить настройки",
"CurrentlyInstalled": "Установлено",
- "PreviouslyInstalled": "Ранее установленный"
+ "PreviouslyInstalled": "Ранее установленный",
+ "DownloadClientUTorrentProviderMessage": "Мы настоятельно советуем не использовать uTorrent, т.к. он известен как программа-шифровальщик и в целом вредоносное ПО."
}
diff --git a/src/NzbDrone.Core/Localization/Core/tr.json b/src/NzbDrone.Core/Localization/Core/tr.json
index 87bb3305e..0d4af37ac 100644
--- a/src/NzbDrone.Core/Localization/Core/tr.json
+++ b/src/NzbDrone.Core/Localization/Core/tr.json
@@ -35,7 +35,7 @@
"TagsSettingsSummary": "Tüm etiketleri ve nasıl kullanıldıklarını göster. Kullanılmayan etiketler kaldırılabilinir",
"Tags": "Etiketler",
"System": "Sistem",
- "Style": "Tarz",
+ "Style": "Stil",
"Status": "Durum",
"Size": "Boyut",
"ShowAdvanced": "Gelişmiş'i Göster",
@@ -133,11 +133,11 @@
"RemovedFromTaskQueue": "Görev kuyruğundan kaldırıldı",
"SendAnonymousUsageData": "Anonim Kullanım Verilerini Gönderin",
"Age": "Yıl",
- "AllIndexersHiddenDueToFilter": "Uygulanan filtre nedeniyle tüm dizin oluşturucular gizlendi.",
+ "AllIndexersHiddenDueToFilter": "Uygulanan filtre nedeniyle tüm indeksleyiciler gizlendi.",
"AnalyticsEnabledHelpText": "Anonim kullanım ve hata bilgilerini {appName} sunucularına gönderin. Buna, tarayıcınız, hangi {appName} WebUI sayfalarını kullandığınız, hata raporlamanın yanı sıra işletim sistemi ve çalışma zamanı sürümü hakkındaki bilgiler de dahildir. Bu bilgiyi özelliklere ve hata düzeltmelerine öncelik vermek için kullanacağız.",
"ApiKey": "API Anahtarı",
"AppDataDirectory": "Uygulama Veri Dizini",
- "NoUpdatesAreAvailable": "Güncelleme yok",
+ "NoUpdatesAreAvailable": "Güncelleme bulunamadı",
"OAuthPopupMessage": "Pop-up'lar tarayıcınız tarafından engelleniyor",
"Ok": "Tamam",
"OnHealthIssueHelpText": "Sağlık Sorunu Hakkında",
@@ -164,11 +164,11 @@
"Columns": "Sütunlar",
"Component": "Bileşen",
"ConnectionLost": "Bağlantı koptu",
- "DeleteIndexerProxyMessageText": "'{name}' dizinleyici proxy'sini silmek istediğinizden emin misiniz?",
+ "DeleteIndexerProxyMessageText": "'{name}' indeksleyici proxy'sini silmek istediğinizden emin misiniz?",
"DeleteNotification": "Bildirimi Sil",
"DeleteTagMessageText": "'{label}' etiketini silmek istediğinizden emin misiniz?",
"Disabled": "Devre dışı",
- "Discord": "Uyuşmazlık",
+ "Discord": "Discord",
"Docker": "Docker",
"Donations": "Bağış",
"DownloadClient": "İndirme İstemcisi",
@@ -182,13 +182,13 @@
"HomePage": "Ana Sayfa",
"IllRestartLater": "Daha sonra yeniden başlayacağım",
"IncludeHealthWarningsHelpText": "Sağlık Uyarılarını Dahil Et",
- "IndexerFlags": "Dizinleyici Bayrakları",
- "IndexerLongTermStatusAllUnavailableHealthCheckMessage": "6 saatten uzun süren hatalar nedeniyle tüm dizinleyiciler kullanılamıyor",
- "IndexerLongTermStatusUnavailableHealthCheckMessage": "6 saatten uzun süren hatalar nedeniyle kullanılamayan dizinleyiciler: {indexerNames}",
- "IndexerPriority": "Dizinleyici Önceliği",
- "IndexerPriorityHelpText": "Dizinleyici Önceliği 1 (En Yüksek) ile 50 (En Düşük) arasında. Varsayılan: 25.",
- "IndexerStatusAllUnavailableHealthCheckMessage": "Tüm dizinleyiciler hatalar nedeniyle kullanılamıyor",
- "IndexerStatusUnavailableHealthCheckMessage": "Hatalar nedeniyle kullanılamayan dizinleyiciler: {indexerNames}",
+ "IndexerFlags": "İndeksleyici Bayrakları",
+ "IndexerLongTermStatusAllUnavailableHealthCheckMessage": "6 saatten uzun süren hatalar nedeniyle tüm indeksleyiciler kullanılamıyor",
+ "IndexerLongTermStatusUnavailableHealthCheckMessage": "6 saatten uzun süren hatalar nedeniyle kullanılamayan indeksleyiciler: {indexerNames}",
+ "IndexerPriority": "İndeksleyici Önceliği",
+ "IndexerPriorityHelpText": "İndeksleyici Önceliği 1 (En Yüksek) ile 50 (En Düşük) arasında. Varsayılan: 25.",
+ "IndexerStatusAllUnavailableHealthCheckMessage": "Tüm indeksleyiciler hatalar nedeniyle kullanılamıyor",
+ "IndexerStatusUnavailableHealthCheckMessage": "Hatalar nedeniyle kullanılamayan indeksleyiciler: {indexerNames}",
"Info": "Bilgi",
"InteractiveSearch": "Etkileşimli Arama",
"KeyboardShortcuts": "Klavye kısayolları",
@@ -227,7 +227,7 @@
"StartupDirectory": "Başlangıç Dizini",
"SuggestTranslationChange": "Çeviri değişikliği önerin",
"SystemTimeHealthCheckMessage": "Sistem saati 1 günden fazla kapalı. Zamanlanan görevler, saat düzeltilene kadar doğru çalışmayabilir",
- "TableOptionsColumnsMessage": "Hangi sütunların görünür olduğunu ve hangi sırada görüneceklerini seçin",
+ "TableOptionsColumnsMessage": "Hangi sütunların görünür olacağını ve hangi sırayla görüneceğini seçin",
"Title": "Başlık",
"Today": "Bugün",
"Tomorrow": "Yarın",
@@ -239,8 +239,8 @@
"UISettings": "UI Ayarları",
"UnableToAddANewAppProfilePleaseTryAgain": "Yeni bir kaliteli profil eklenemiyor, lütfen tekrar deneyin.",
"UnableToAddANewDownloadClientPleaseTryAgain": "Yeni bir indirme istemcisi eklenemiyor, lütfen tekrar deneyin.",
- "UnableToAddANewIndexerPleaseTryAgain": "Yeni bir dizinleyici eklenemiyor, lütfen tekrar deneyin.",
- "UnableToAddANewIndexerProxyPleaseTryAgain": "Yeni bir dizinleyici eklenemiyor, lütfen tekrar deneyin.",
+ "UnableToAddANewIndexerPleaseTryAgain": "Yeni bir indeksleyici eklenemiyor, lütfen tekrar deneyin.",
+ "UnableToAddANewIndexerProxyPleaseTryAgain": "Yeni bir indeksleyici eklenemiyor, lütfen tekrar deneyin.",
"UnableToAddANewNotificationPleaseTryAgain": "Yeni bir bildirim eklenemiyor, lütfen tekrar deneyin.",
"BackupsLoadError": "Yedeklemeler yüklenemiyor",
"UnableToLoadHistory": "Geçmiş yüklenemiyor",
@@ -248,7 +248,7 @@
"UnableToLoadUISettings": "UI ayarları yüklenemiyor",
"Yesterday": "Dün",
"AcceptConfirmationModal": "Onay Modunu Kabul Et",
- "AddIndexer": "Dizinleyici Ekle",
+ "AddIndexer": "İndeksleyici Ekle",
"AddDownloadClient": "İndirme İstemcisi Ekle",
"AddingTag": "Etiket ekleniyor",
"CouldNotConnectSignalR": "SignalR'ye bağlanılamadı, kullanıcı arayüzü güncellenmeyecek",
@@ -256,9 +256,9 @@
"DownloadClientStatusSingleClientHealthCheckMessage": "Hatalar nedeniyle indirme istemcileri kullanılamıyor: {downloadClientNames}",
"Enabled": "Etkin",
"IgnoredAddresses": "Yoksayılan Adresler",
- "Indexer": "Dizinleyici",
+ "Indexer": "İndeksleyici",
"DownloadClientStatusAllClientHealthCheckMessage": "Tüm indirme istemcileri hatalar nedeniyle kullanılamıyor",
- "EditIndexer": "Dizinleyiciyi Düzenle",
+ "EditIndexer": "İndeksleyiciyi Düzenle",
"Enable": "Etkinleştir",
"EnableInteractiveSearch": "Etkileşimli Aramayı Etkinleştir",
"EnableRss": "RSS'yi etkinleştir",
@@ -269,20 +269,20 @@
"EventType": "Etkinlik tipi",
"Exception": "İstisna",
"ExistingTag": "Mevcut etiket",
- "IndexerProxyStatusAllUnavailableHealthCheckMessage": "Hatalar nedeniyle tüm dizinleyiciler kullanılamıyor",
- "IndexerProxyStatusUnavailableHealthCheckMessage": "Hatalar nedeniyle dizinleyiciler kullanılamıyor: {indexerProxyNames}",
- "Indexers": "Dizinleyiciler",
+ "IndexerProxyStatusAllUnavailableHealthCheckMessage": "Hatalar nedeniyle tüm indeksleyiciler kullanılamıyor",
+ "IndexerProxyStatusUnavailableHealthCheckMessage": "Hatalar nedeniyle indeksleyiciler kullanılamıyor: {indexerProxyNames}",
+ "Indexers": "İndeksleyiciler",
"Name": "İsim",
"New": "Yeni",
"NoBackupsAreAvailable": "Kullanılabilir yedek yok",
- "NoLogFiles": "Log kayıt dosyası henüz yok",
+ "NoLogFiles": "Log kayıt dosyası henüz oluşturulmadı",
"Restart": "Tekrar başlat",
"RestartRequiredHelpTextWarning": "Etkili olması için yeniden başlatma gerektirir",
"Restore": "Onarmak",
"Seeders": "Ekme makineleri",
"TagCannotBeDeletedWhileInUse": "Kullanımdayken silinemez",
"TagIsNotUsedAndCanBeDeleted": "Etiket kullanılmaz ve silinebilir",
- "TagsHelpText": "En az bir eşleşen etiketi olan dizinleyiciler için geçerlidir",
+ "TagsHelpText": "En az bir eşleşen etiketi olan indeksleyiciler için geçerlidir",
"UILanguage": "UI Dili",
"UpdateScriptPathHelpText": "Çıkarılan bir güncelleme paketini alan ve güncelleme işleminin geri kalanını işleyen özel bir komut dosyasına giden yol",
"Uptime": "Çalışma süresi",
@@ -315,46 +315,46 @@
"Filters": "Filtreler",
"OnGrab": "Yayın Alındığında",
"OnHealthIssue": "Sağlık Sorunu Hakkında",
- "TestAllIndexers": "Dizinleyicileri Test Et",
+ "TestAllIndexers": "İndeksleyicileri Test Et",
"GrabReleases": "Sürümü Al",
"No": "Hayır",
"NetCore": ".NET",
- "UnableToLoadIndexers": "Dizinleyiciler yüklenemiyor",
+ "UnableToLoadIndexers": "İndeksleyiciler yüklenemiyor",
"Yes": "Evet",
"Link": "Bağlantılar",
- "MappedDrivesRunningAsService": "Eşlenen ağ sürücüleri, bir Windows Hizmeti olarak çalışırken kullanılamaz. Daha fazla bilgi için lütfen SSS bölümüne bakın",
- "Ended": "Biten",
- "LastDuration": "Yürütme Süresi",
+ "MappedDrivesRunningAsService": "Windows Hizmeti olarak çalıştırıldığında eşlenen ağ sürücüleri kullanılamaz. Daha fazla bilgi için lütfen SSS'ye bakın",
+ "Ended": "Bitti",
+ "LastDuration": "Son Süre",
"LastExecution": "Son Yürütme",
"NextExecution": "Sonraki Yürütme",
- "Queued": "Kuyruğa alındı",
- "ApplicationLongTermStatusCheckAllClientMessage": "6 saatten uzun süren arızalar nedeniyle tüm dizinleyiciler kullanılamıyor",
- "ApplicationLongTermStatusCheckSingleClientMessage": "6 saatten uzun süredir yaşanan arızalar nedeniyle dizinleyiciler kullanılamıyor: {0}",
+ "Queued": "Kuyrukta",
+ "ApplicationLongTermStatusCheckAllClientMessage": "6 saatten uzun süren arızalar nedeniyle tüm indeksleyiciler kullanılamıyor",
+ "ApplicationLongTermStatusCheckSingleClientMessage": "6 saatten uzun süredir yaşanan arızalar nedeniyle indeksleyiciler kullanılamıyor: {0}",
"Remove": "Kaldır",
- "Replace": "Değiştir",
+ "Replace": "Yer Değiştir",
"OnLatestVersion": "{appName}'ın en son sürümü kurulu",
- "ApplyTagsHelpTextAdd": "Ekle: Etiketleri mevcut etiket listesine ekleyin",
- "ApplyTagsHelpTextHowToApplyApplications": "Seçilen filmlere etiketler nasıl uygulanır",
- "ApplyTagsHelpTextRemove": "Kaldır: Girilen etiketleri kaldırın",
+ "ApplyTagsHelpTextAdd": "Ekle: Mevcut etiket listesine etiketleri ekleyin",
+ "ApplyTagsHelpTextHowToApplyApplications": "Seçili uygulamalara etiketler nasıl uygulanır?",
+ "ApplyTagsHelpTextRemove": "Kaldır: Girilen etiketleri kaldır",
"ApplyTagsHelpTextHowToApplyIndexers": "Seçilen indeksleyicilere etiketler nasıl uygulanır",
- "ApplyTagsHelpTextReplace": "Değiştir: Etiketleri girilen etiketlerle değiştirin (tüm etiketleri kaldırmak için etiket girmeyin)",
+ "ApplyTagsHelpTextReplace": "Değiştir: Etiketleri girilen değerlerde değiştirin (tüm etiketleri kaldırmak için etiket girmeyin)",
"DeleteSelectedDownloadClients": "İndirme İstemcilerini Sil",
"DownloadClientPriorityHelpText": "Birden fazla İndirme İstemcisine öncelik verin. Aynı önceliğe sahip istemciler için Round-Robin algoritması kullanılır.",
- "Genre": "Türler",
+ "Genre": "Tür",
"Track": "İzleme",
"Year": "Yıl",
"More": "Daha",
"DeleteAppProfileMessageText": "'{name}' uygulama profilini silmek istediğinizden emin misiniz?",
- "RecentChanges": "Son değişiklikler",
+ "RecentChanges": "Son Değişiklikler",
"minutes": "Dakika",
- "WhatsNew": "Ne var ne yok?",
- "ConnectionLostReconnect": "{appName} otomatik bağlanmayı deneyecek veya aşağıda yeniden yükle seçeneğini işaretleyebilirsiniz.",
+ "WhatsNew": "Neler Yeni?",
+ "ConnectionLostReconnect": "{appName} otomatik olarak bağlanmayı deneyecek veya aşağıdaki yeniden yükle butonuna tıklayabilirsiniz.",
"NotificationStatusAllClientHealthCheckMessage": "Arızalar nedeniyle tüm bildirimler kullanılamıyor",
"NotificationStatusSingleClientHealthCheckMessage": "Arızalar nedeniyle bildirimler kullanılamıyor: {notificationNames}",
"Applications": "Uygulamalar",
"AuthBasic": "Temel (Tarayıcı Açılır Penceresi)",
"AuthForm": "Form (Giriş Sayfası)",
- "DisabledForLocalAddresses": "Yerel Adreslerde Devre Dışı Bırak",
+ "DisabledForLocalAddresses": "Yerel Adresler için Devre Dışı",
"None": "Yok",
"ResetAPIKeyMessageText": "API Anahtarınızı sıfırlamak istediğinizden emin misiniz?",
"Categories": "Kategoriler",
@@ -362,14 +362,14 @@
"Episode": "Bölüm",
"AddConnection": "Bağlantı Ekle",
"AddApplicationImplementation": "Uygulama Ekle - {implementationName}",
- "AddIndexerImplementation": "Yeni Dizinleyici Ekle - {implementationName}",
- "AddIndexerProxyImplementation": "Koşul Ekle - {implementationName}",
+ "AddIndexerImplementation": "İndeksleyici Ekle - {implementationName}",
+ "AddIndexerProxyImplementation": "İndeksleyici Proxy'sini Ekle - {implementationName}",
"EditConnectionImplementation": "Bildirimi Düzenle - {implementationName}",
"AddConnectionImplementation": "Bağlantı Ekle - {implementationName}",
- "RestartProwlarr": "{appName}'ı yeniden başlatın",
- "EditApplicationImplementation": "Koşul Ekle - {implementationName}",
- "EditIndexerImplementation": "Koşul Ekle - {implementationName}",
- "EditIndexerProxyImplementation": "Koşul Ekle - {implementationName}",
+ "RestartProwlarr": "{appName}'ı Yeniden Başlat",
+ "EditApplicationImplementation": "Uygulamayı Düzenle - {implementationName}",
+ "EditIndexerImplementation": "İndeksleyiciyi Düzenle - {implementationName}",
+ "EditIndexerProxyImplementation": "İndeksleyici Proxy'sini Düzenle - {implementationName}",
"AddCustomFilter": "Özel Filtre Ekleyin",
"AddDownloadClientImplementation": "İndirme İstemcisi Ekle - {implementationName}",
"EditDownloadClientImplementation": "İndirme İstemcisini Düzenle - {implementationName}",
@@ -377,12 +377,12 @@
"AuthenticationRequired": "Kimlik Doğrulama",
"ApplyChanges": "Değişiklikleri Uygula",
"CountDownloadClientsSelected": "{count} indirme istemcisi seçildi",
- "CountIndexersSelected": "{count} dizinleyici seçildi",
+ "CountIndexersSelected": "{count} indeksleyici seçildi",
"AuthenticationRequiredWarning": "Kimlik doğrulaması olmadan uzaktan erişimi engellemek için, {appName}'da artık kimlik doğrulamanın etkinleştirilmesini gerektiriyor. İsteğe bağlı olarak yerel adresler için kimlik doğrulamayı devre dışı bırakabilirsiniz.",
"Clone": "Klon",
"Category": "Kategori",
"AppUpdated": "{appName} Güncellendi",
- "AppUpdatedVersion": "{appName}, `{version}` sürümüne güncellendi; değişikliklerin etkin olabilmesi için {appName} uygulamasını yeniden başlatmanız gerekli",
+ "AppUpdatedVersion": "{appName}, `{version}` sürümüne güncellendi; en son değişikliklerin etkin olabilmesi için {appName} uygulamasını yeniden başlatmanız gereklidir",
"ApplicationUrlHelpText": "Bu uygulamanın http(s)://, bağlantı noktası ve URL tabanını içeren harici URL'si",
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Yeni şifreyi onayla",
"AuthenticationRequiredPasswordHelpTextWarning": "Yeni şifre girin",
@@ -398,11 +398,11 @@
"AddDownloadClientToProwlarr": "İndirme istemcisi eklemek, görsel arayüz üzerinde manuel arama yaparak indirilecek içeriği {appName} uygulamasına direkt olarak eklemenize olanak sağlar.",
"AddApplication": "Uygulama Ekle",
"AddCategory": "Kategori Ekle",
- "AddNewIndexer": "Yeni Dizin Oluşturucu Ekle",
+ "AddNewIndexer": "Yeni İndekleyici Ekle",
"ActiveApps": "Aktif Uygulamalar",
- "ActiveIndexers": "Aktif Dizin Oluşturucular",
+ "ActiveIndexers": "Aktif İndeksleyiciler",
"AdvancedSettingsHiddenClickToShow": "Gelimiş ayarlar gizli, göstermek için tıklayın",
- "AddIndexerProxy": "Dizin Oluşturucu Vekili Ekle",
+ "AddIndexerProxy": "İndeksleyici Proxy'sini Ekle",
"AddedToDownloadClient": "İçerik istemciye eklendi",
"Album": "Albüm",
"AdvancedSettingsShownClickToHide": "Gelişmiş ayarlar gösteriliyor, gizlemek için tıklayın",
@@ -420,19 +420,19 @@
"Database": "Veri tabanı",
"DefaultNameCopiedProfile": "{name} - Kopyala",
"DeleteSelectedDownloadClientsMessageText": "Seçilen {count} indirme istemcisini silmek istediğinizden emin misiniz?",
- "DeleteSelectedIndexersMessageText": "Seçilen {count} dizinleyiciyi silmek istediğinizden emin misiniz?",
+ "DeleteSelectedIndexersMessageText": "Seçilen {count} indeksleyiciyi silmek istediğinizden emin misiniz?",
"DownloadClientFreeboxSettingsPortHelpText": "Freebox arayüzüne erişim için kullanılan bağlantı noktası, varsayılan olarak '{port}' şeklindedir",
"ApiKeyValidationHealthCheckMessage": "Lütfen API anahtarınızı en az {length} karakter sayısı kadar güncelleyiniz. Bunu ayarlar veya yapılandırma dosyası üzerinden yapabilirsiniz",
"AppProfileInUse": "Kullanımda Olan Uygulama Profili",
- "ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Eğer bir torrent hash değeri bazlı engellendi ise bazı dizin oluşturucular RSS/Arama sırasında bu torrenti gerektiği gibi reddedemeyebilir, bunu aktif etmek torrentin çekildikten sonra reddedilebilmesine izin verecektir, ama istemciye gönderilmeden önce.",
+ "ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Bir torrent, hash ile engellenirse bazı indeksleyiciler için RSS/Arama sırasında düzgün bir şekilde reddedilemeyebilir; bu özelliğin etkinleştirilmesi, torrent yakalandıktan sonra ancak istemciye gönderilmeden önce reddedilmesine olanak tanır..",
"AppProfileSelectHelpText": "Uygulama profilleri, Uygulama eşitlemede RSS, Otomatik Arama ve İnteraktif Arama ayarlarını kontrol etmek için kullanılır",
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Alma Sırasında Engellenen Torrent Karmalarını Eşitle ve Reddet",
"AppSettingsSummary": "{appName} uygulamasının PVR programlarınızla nasıl etkileşime gireceğini yapılandırmak için uygulamalar ve ayarlar",
"DownloadClientFreeboxSettingsApiUrl": "API URL'si",
"DownloadClientFreeboxSettingsApiUrlHelpText": "Freebox API temel URL'sini API sürümüyle tanımlayın, örneğin '{url}', varsayılan olarak '{defaultApiUrl}' olur",
"DownloadClientFreeboxSettingsAppIdHelpText": "Freebox API'sine erişim oluşturulurken verilen uygulama kimliği (ör. 'app_id')",
- "DownloadClientFreeboxSettingsAppToken": "Uygulama Jetonu",
- "DownloadClientFreeboxSettingsAppTokenHelpText": "Freebox API'sine erişim oluşturulurken alınan uygulama jetonu (ör. 'app_token')",
+ "DownloadClientFreeboxSettingsAppToken": "Uygulama Token'ı",
+ "DownloadClientFreeboxSettingsAppTokenHelpText": "Freebox API'sine erişim oluşturulurken alınan uygulama token'ı (ör. 'app_token')",
"DownloadClientFreeboxSettingsAppId": "Uygulama kimliği",
"DownloadClientFreeboxSettingsHostHelpText": "Freebox'un istemci adı veya istemci IP adresi, varsayılan olarak '{url}' şeklindedir (yalnızca aynı ağda çalışır)",
"Duration": "Süre",
@@ -464,8 +464,8 @@
"DownloadClientRTorrentSettingsAddStopped": "Durdurulana Ekle",
"Label": "Etiket",
"EditSelectedDownloadClients": "Seçilen İndirme İstemcilerini Düzenle",
- "EditSelectedIndexers": "Seçili Dizinleyicileri Düzenle",
- "NoIndexersFound": "Dizinleyici bulunamadı",
+ "EditSelectedIndexers": "Seçili İndeksleyicileri Düzenle",
+ "NoIndexersFound": "İndeksleyici bulunamadı",
"NoHistoryFound": "Geçmiş bulunamadı",
"ManageDownloadClients": "İndirme İstemcilerini Yönet",
"InstanceNameHelpText": "Sekmedeki örnek adı ve Syslog uygulaması adı için",
@@ -486,7 +486,7 @@
"UseSsl": "SSL kullan",
"OnApplicationUpdate": "Uygulama Güncellemesinde",
"TorrentBlackholeSaveMagnetFiles": "Magnet Dosyalarını Kaydet",
- "SecretToken": "Gizlilik Jetonu",
+ "SecretToken": "Gizlilik Token'ı",
"TorrentBlackholeSaveMagnetFilesExtension": "Magnet Dosya Uzantısını Kaydet",
"TorrentBlackholeSaveMagnetFilesExtensionHelpText": "Magnet bağlantıları için kullanılacak uzantı, varsayılan olarak '.magnet'tir",
"TorrentBlackholeSaveMagnetFilesHelpText": ".torrent dosyası yoksa magnet bağlantısını kaydedin (yalnızca indirme istemcisi bir dosyaya kaydedilen magnetleri destekliyorsa kullanışlıdır)",
@@ -502,62 +502,62 @@
"IndexerSettingsSeedRatioHelpText": "Bir torrentin durdurulmadan önce ulaşması gereken oran. Boş bırakılırsa indirme istemcisinin varsayılan değerini kullanır. Oran en az 1,0 olmalı ve indeksleyici kurallarına uygun olmalıdır",
"External": "Harici",
"Notifications": "Bildirimler",
- "CountApplicationsSelected": "{count} koleksiyon seçildi",
+ "CountApplicationsSelected": "{count} uygulama seçildi",
"SeedRatio": "Seed Oranı",
"ThemeHelpText": "Uygulama UI Temasını Değiştirin, 'Otomatik' Tema, işletim sisteminizde kullandığınız Açık veya Koyu moda göre ayarlanır . {inspiredBy} tarafından esinlenilmiştir.",
"Notification": "Bildirimler",
"SelectDownloadClientModalTitle": "{modalTitle} - İndirme İstemcisini Seçin",
- "EditSyncProfile": "Eşitleme Profili Ekle",
+ "EditSyncProfile": "Senkronizasyon Profilini Düzenle",
"UserAgentProvidedByTheAppThatCalledTheAPI": "API'yi çağıran uygulama tarafından sağlanan Kullanıcı Aracısı",
"Author": "Yazar",
- "IndexerHDBitsSettingsMediums": "Ortamlar",
+ "IndexerHDBitsSettingsMediums": "Medyalar",
"OnHealthRestoredHelpText": "Sağlığın İyileştirilmesi Hakkında",
"SeedTime": "Seed Süresi",
"IndexerHDBitsSettingsCodecs": "Kodekler",
"Publisher": "Yayımcı",
"OnApplicationUpdateHelpText": "Uygulama Güncellemesinde",
- "DeleteSelectedApplicationsMessageText": "Seçilen {count} içe aktarma listesini silmek istediğinizden emin misiniz?",
+ "DeleteSelectedApplicationsMessageText": "Seçili {count} uygulamayı silmek istediğinizden emin misiniz?",
"ProxyValidationBadRequest": "Proxy ile test edilemedi. DurumKodu: {statusCode}",
"UpdateAvailableHealthCheckMessage": "Yeni güncelleme mevcut: {version}",
"days": "gün",
"Default": "Varsayılan",
- "GrabRelease": "Yayın Alma",
+ "GrabRelease": "Sürümü Al",
"ManualGrab": "Manuel Alımlarda",
- "OverrideAndAddToDownloadClient": "Geçersiz kıl ve indirme kuyruğuna ekle",
+ "OverrideAndAddToDownloadClient": "Geçersiz kıl ve indirme istemcisine ekle",
"OverrideGrabModalTitle": "Geçersiz Kıl ve Al - {title}",
"PrioritySettings": "Öncelik: {priority}",
- "IndexerDownloadClientHealthCheckMessage": "Geçersiz indirme istemcilerine sahip dizinleyiciler: {indexerNames}.",
+ "IndexerDownloadClientHealthCheckMessage": "Geçersiz indirme istemcilerine sahip indeksleyiciler: {indexerNames}.",
"BuiltIn": "Dahili",
"Script": "Komut Dosyası",
"InfoUrl": "Bilgi URL'si",
"PublishedDate": "Yayınlanma Tarihi",
"Any": "Herhangi",
"AllSearchResultsHiddenByFilter": "Uygulanan filtre nedeniyle tüm arama sonuçları gizlendi.",
- "HealthMessagesInfoBox": "Satırın sonundaki wiki bağlantısını (kitap simgesi) tıklayarak veya [log kayıtlarınızı]({link}) kontrol ederek bu durum kontrolü mesajlarının nedeni hakkında daha fazla bilgi bulabilirsiniz. Bu mesajları yorumlamakta zorluk yaşıyorsanız aşağıdaki bağlantılardan destek ekibimize ulaşabilirsiniz.",
+ "HealthMessagesInfoBox": "Bu sağlık kontrolü mesajlarının nedeni hakkında daha fazla bilgiyi, satırın sonundaki wiki bağlantısına (kitap simgesi) tıklayarak veya [günlüklerinizi]({link}) kontrol ederek bulabilirsiniz. Bu mesajları yorumlamada zorluk çekiyorsanız, aşağıdaki bağlantılardan destek ekibimize ulaşabilirsiniz.",
"PackageVersionInfo": "{packageAuthor} tarafından {packageVersion}",
"LogSizeLimit": "Log Boyutu Sınırı",
"LogSizeLimitHelpText": "Arşivlemeden önce MB cinsinden maksimum log dosya boyutu. Varsayılan 1 MB'tır.",
"AptUpdater": "Güncellemeyi yüklemek için apt'ı kullanın",
"Download": "İndir",
- "ErrorRestoringBackup": "Yedeği geri yüklerken hata",
- "ExternalUpdater": "{appName}, harici bir güncelleme mekanizması kullanacak şekilde yapılandırıldı",
+ "ErrorRestoringBackup": "Yedekleme geri yüklenirken hata oluştu",
+ "ExternalUpdater": "{appName} harici bir güncelleme mekanizması kullanacak şekilde yapılandırılmıştır",
"LogFilesLocation": "Log kayıtlarının bulunduğu konum: {location}",
"NoEventsFound": "Etkinlik bulunamadı",
- "RestartReloadNote": "Not: {appName}, geri yükleme işlemi sırasında kullanıcı arayüzünü otomatik olarak yeniden başlatacak ve yeniden yükleyecektir.",
+ "RestartReloadNote": "Not: {appName} geri yükleme işlemi sırasında otomatik olarak yeniden başlatılacak ve kullanıcı arayüzünü yeniden yükleyecektir.",
"TheLogLevelDefault": "Log seviyesi varsayılan olarak 'Bilgi' şeklindedir ve [Genel Ayarlar](/ayarlar/genel) bölümünden değiştirilebilir",
"UpdateAppDirectlyLoadError": "{appName} doğrudan güncellenemiyor,",
"DockerUpdater": "Güncellemeyi almak için docker konteynerini güncelleyin",
- "FailedToFetchUpdates": "Güncellemeler getirilemedi",
+ "FailedToFetchUpdates": "Güncellemeler alınamadı",
"Logout": "Çıkış",
"UpdaterLogFiles": "Log Kayıt Güncelleyici",
"WouldYouLikeToRestoreBackup": "'{name}' yedeğini geri yüklemek ister misiniz?",
- "InstallLatest": "En Sonu Yükle",
+ "InstallLatest": "En Son Sürümü Yükle",
"Install": "Kur",
"InstallMajorVersionUpdate": "Güncellemeyi Kur",
"InstallMajorVersionUpdateMessage": "Bu güncelleştirme yeni bir ana sürüm yükleyecek ve sisteminizle uyumlu olmayabilir. Bu güncelleştirmeyi yüklemek istediğinizden emin misiniz?",
"InstallMajorVersionUpdateMessageLink": "Daha fazla bilgi için lütfen [{domain}]({url}) adresini kontrol edin.",
"Season": "Sezon",
- "Artist": "sanatçı",
+ "Artist": "Sanatçı",
"Mixed": "Karışık",
"Stats": "Durum",
"CurrentlyInstalled": "Şuan Kurulu",
@@ -575,12 +575,12 @@
"AreYouSureYouWantToDeleteIndexer": "'{name}' uygulamasını {appName} uygulamasından silmek istediğinizden emin misiniz?",
"Auth": "Yetkilendirme",
"AverageQueries": "Talep Ortalaması",
- "AverageResponseTimesMs": "Ortalama Dizin Oluşturucu Yanıt Süreleri (ms)",
+ "AverageResponseTimesMs": "Ortalama İndeksleyici Yanıt Süreleri (ms)",
"BookSearch": "Kitap Ara",
- "DeleteIndexerProxy": "Dizinleyici Proxy'sini Sil",
+ "DeleteIndexerProxy": "İndeksleyici Proxy'sini Sil",
"DownloadClientSettingsPriorityItemHelpText": "Öğeleri alırken kullanılacak öncelik",
"EditCategory": "Kategoriyi Düzenle",
- "EnableIndexer": "Dizinleyiciyi Etkinleştir",
+ "EnableIndexer": "İndeksleyiciyi Etkinleştir",
"IndexerAlphaRatioSettingsExcludeSceneHelpText": "SAHNE sürümlerini sonuçlardan hariç tut",
"IndexerBeyondHDSettingsRefundOnly": "Sadece İade",
"DefaultCategory": "Varsayılan Kategori",
@@ -591,50 +591,50 @@
"AverageGrabs": "Ortalama Alım Sayısı",
"DevelopmentSettings": "Geliştirme Ayarları",
"IndexerBeyondHDSettingsRssKeyHelpText": "Siteden RSS Anahtarı (Güvenlik => RSS Anahtarı)",
- "ApplicationTagsHelpTextWarning": "Etiketler istenmeyen etkilere neden olabileceğinden dikkatli kullanılmalıdır. Etiketi olan bir uygulama yalnızca aynı etikete sahip dizin oluşturucuları eşitler.",
+ "ApplicationTagsHelpTextWarning": "Etiketler istenmeyen etkilere neden olabileceğinden dikkatli kullanılmalıdır. Etiketi olan bir uygulama yalnızca aynı etikete sahip indeksleyicilerı eşitler.",
"DeleteApplication": "Uygulamayı Sil",
- "IndexerDownloadClientHelpText": "Bu dizinleyiciden {appName} içinde yapılan alımlar için hangi indirme istemcisinin kullanılacağını belirtin",
+ "IndexerDownloadClientHelpText": "Bu indeksleyiciden {appName} içinde yapılan alımlar için hangi indirme istemcisinin kullanılacağını belirtin",
"DownloadClientSettingsDefaultCategorySubFolderHelpText": "Bir sürüm için eşlenen kategori yoksa varsayılan olarak kullanılacak yedek kategori. {appName}'a özel bir kategori eklemek, {appName} ile ilgisi olmayan indirmelerle çakışmaları önlemeye yardımcı olur. Kategori kullanmak isteğe bağlıdır ancak önemle tavsiye edilir. Çıkış dizininde bir alt dizin [kategori] oluşturur.",
"IncludeManualGrabsHelpText": "{appName} uygulamasında yapılan manuel alımları dahil et",
"IndexerAlphaRatioSettingsExcludeScene": "SAHNE'yi hariç tut",
"AudioSearch": "Müzik Ara",
- "IndexerDisabled": "Dizinleyici Devre Dışı",
+ "IndexerDisabled": "İndeksleyici Devre Dışı",
"ClearHistoryMessageText": "{appName} geçmişinin tamamını temizlemek istediğinizden emin misiniz?",
"ClearHistory": "Geçmişi Temizle",
"ElapsedTime": "Geçen Süre",
"EnabledRedirected": "Etkinleştirildi, Yönlendirildi",
- "IndexerAuth": "Dizinleyici Kimlik Doğrulaması",
- "EnableRssHelpText": "Dizinleyici için RSS beslemesini etkinleştirin",
+ "IndexerAuth": "İndeksleyici Kimlik Doğrulaması",
+ "EnableRssHelpText": "İndeksleyici için RSS beslemesini etkinleştirin",
"Description": "Tanım",
"AppsMinimumSeeders": "Uygulama İçin Azami Seeder",
"AppsMinimumSeedersHelpText": "Uygulamaların gerektirdiği veri kaynağından alınacak öğelerin minimum seeder sayısı. Boş bırakılırsa varsayılan senkronizasyon profili kullanılır",
"BasicSearch": "Temel Arama",
"DeleteSelectedApplications": "Seçili Uygulamaları Sil",
- "DeleteSelectedIndexers": "Seçili Dizinleyicileri Sil",
- "IndexerCategories": "Dizinleyici Kategorileri",
+ "DeleteSelectedIndexers": "Seçili İndeksleyicileri Sil",
+ "IndexerCategories": "İndeksleyici Kategorileri",
"Encoding": "Kodlama",
"FullSync": "Tam Senkronizasyon",
"GoToApplication": "Uygulamaya git",
"BookSearchTypes": "Kitap Arama Türleri",
"Id": "KİMLİK",
- "DeleteSelectedIndexer": "Seçili Dizinleyiciyi Sil",
+ "DeleteSelectedIndexer": "Seçili İndeksleyiciyi Sil",
"DeleteAppProfile": "Uygulama Profilini Sil",
"DeleteClientCategory": "İndirme İstemcisi Kategorisini Sil",
"HistoryDetails": "Geçmiş Ayrıntıları",
- "IndexerFailureRate": "Dizinleyici Arıza Oranı",
+ "IndexerFailureRate": "İndeksleyici Arıza Oranı",
"IndexerSettingsCookieHelpText": "Site Çerezi",
"DisabledUntil": "Şu tarihe kadar devre dışı bırakıldı",
"DownloadClientsSettingsSummary": "{appName} kullanıcı arayüzü aramasına entegrasyon için indirme istemcisi yapılandırması",
"Apps": "Uygulamalar",
- "ApplicationTagsHelpText": "Etiketi olmayan veya bir veya daha fazla eşleşen etiketi olan dizin oluşturucuları bu uygulamayla senkronize edin. Burada hiçbir etiket listelenmezse, etiketleri nedeniyle hiçbir dizin oluşturucunun senkronizasyonu engellenmeyecektir.",
+ "ApplicationTagsHelpText": "Etiketi olmayan veya bir veya daha fazla eşleşen etiketi olan indeksleyicilerı bu uygulamayla senkronize edin. Burada hiçbir etiket listelenmezse, etiketleri nedeniyle hiçbir indeksleyicinun senkronizasyonu engellenmeyecektir.",
"Book": "Kitap",
"DownloadClientCategory": "İstemci Kategorisini İndirin",
- "FilterPlaceHolder": "Dizinleyici Ara",
+ "FilterPlaceHolder": "İndeksleyici Ara",
"IndexerAlphaRatioSettingsFreeleechOnlyHelpText": "Yalnızca freeleech sürümlerini arayın",
"IndexerAlreadySetup": "Dizin oluşturucunun en az bir örneği zaten yapılandırılmış",
"IndexerBeyondHDSettingsLimitedOnly": "Sadece Sınırlı",
"ClickToChangeQueryOptions": "Talep seçeneklerini değiştirmek için tıklayın",
- "CountIndexersAvailable": "{count} dizinleyici mevcut",
+ "CountIndexersAvailable": "{count} indeksleyici mevcut",
"DownloadClientSettingsDefaultCategoryHelpText": "Bir sürüm için eşlenen kategori yoksa varsayılan olarak kullanılacak yedek kategori. {appName}'a özel bir kategori eklemek, {appName} ile ilgisi olmayan indirmelerle çakışmaları önlemeye yardımcı olur. Kategori kullanmak isteğe bağlıdır ancak önemle tavsiye edilir.",
"IndexerBeyondHDSettingsRewindOnly": "Sadece Geri Sar",
"FoundCountReleases": "{itemCount} sürüm bulundu",
@@ -651,26 +651,26 @@
"IndexerBeyondHDSettingsRewindOnlyHelpText": "Sadece tekrarları ara",
"IndexerBeyondHDSettingsSearchTypes": "Arama Türleri",
"IndexerBeyondHDSettingsSearchTypesHelpText": "İlginizi çeken sürüm türlerini seçin. Hiçbiri seçilmezse, tüm seçenekler kullanılır.",
- "IndexerDetails": "Dizinleyici Ayrıntıları",
+ "IndexerDetails": "İndeksleyici Ayrıntıları",
"IndexerFileListSettingsFreeleechOnlyHelpText": "Yalnızca freeleech sürümlerini arayın",
"IndexerPassThePopcornSettingsApiUserHelpText": "Bu ayarlar PassThePopcorn güvenlik ayarlarınızda (Profil Düzenle > Güvenlik) bulunur.",
- "IndexerProxies": "Dizinleyici Proxy'leri",
+ "IndexerProxies": "İndeksleyici Proxy'leri",
"NewznabUrl": "Newznab URL'si",
"Open": "Açık",
"SearchCapabilities": "Arama Yetenekleri",
"TestAllApps": "Tüm Uygulamaları Test Et",
- "IndexerVipExpiringHealthCheckMessage": "Dizinleyici VIP avantajlarının süresi yakında doluyor: {indexerNames}",
- "IndexerVipExpiredHealthCheckMessage": "Dizinleyici VIP avantajları sona erdi: {indexerNames}",
+ "IndexerVipExpiringHealthCheckMessage": "İndeksleyici VIP avantajlarının süresi yakında doluyor: {indexerNames}",
+ "IndexerVipExpiredHealthCheckMessage": "İndeksleyici VIP avantajları sona erdi: {indexerNames}",
"IndexerGazelleGamesSettingsSearchGroupNames": "Grup Adlarını Ara",
"IndexerSettingsGrabLimit": "Alım Sınırı",
"PreferMagnetUrl": "Magnet URL'sini tercih edin",
- "PreferMagnetUrlHelpText": "Etkinleştirildiğinde, bu dizinleyici torrent bağlantılarına geri dönüş için magnet URL'lerinin kullanımını tercih edecektir",
+ "PreferMagnetUrlHelpText": "Etkinleştirildiğinde, bu indeksleyici torrent bağlantılarına geri dönüş için magnet URL'lerinin kullanımını tercih edecektir",
"Redirected": "Yönlendirildi",
- "SearchCountIndexers": "{count} dizinleyiciyi ara",
+ "SearchCountIndexers": "{count} indeksleyiciyi ara",
"SearchType": "Arama Türü",
- "SyncAppIndexers": "Dizinleyicileri Senkronize Et",
+ "SyncAppIndexers": "İndeksleyicileri Senkronize Et",
"TVSearchTypes": "TV Arama Türleri",
- "TotalIndexerQueries": "Toplam Dizinleyici Sorguları",
+ "TotalIndexerQueries": "Toplam İndeksleyici Sorguları",
"TotalUserAgentQueries": "Kullanıcı Aracısı Başına Toplam Sorgu Sayısı",
"LastFailure": "Son Hata",
"RssQueries": "RSS Sorguları",
@@ -680,9 +680,9 @@
"IndexerGazelleGamesSettingsFreeleechOnlyHelpText": "Yalnızca freeleech sürümlerini arayın",
"IndexerHDBitsSettingsUseFilenamesHelpText": "Torrent dosya adlarını sürüm başlıkları olarak kullanmak istiyorsanız bu seçeneği işaretleyin",
"IndexerHDBitsSettingsUsernameHelpText": "Site Kullanıcı Adı",
- "IndexerHistoryLoadError": "Dizinleyici geçmişi yüklenirken hata oluştu",
+ "IndexerHistoryLoadError": "İndeksleyici geçmişi yüklenirken hata oluştu",
"IndexerIPTorrentsSettingsCookieUserAgent": "Çerezler için Kullanıcı Aracısı",
- "IndexerId": "Dizinleyici Kimliği",
+ "IndexerId": "İndeksleyici Kimliği",
"IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Yalnızca freeleech sürümlerini arayın",
"IndexerNebulanceSettingsApiKeyHelpText": "API Anahtarı Kullanıcı Ayarları > Api Anahtarları'ndan. Anahtarın Listeleme ve İndirme izinlerine sahip olması gerekir",
"IndexerNewznabSettingsVipExpirationHelpText": "VIP Son Kullanma Tarihi için (yyyy-aa-gg) tarihini girin veya boş bırakın, {appName} VIP'nin sona ermesinden 1 hafta sonra bildirimde bulunacaktır",
@@ -690,9 +690,9 @@
"IndexerSettingsBaseUrl": "Temel URL",
"IndexerSettingsBaseUrlHelpText": "{appName}'ın siteye yönelik istekler için hangi temel URL'yi kullanacağını seçin",
"IndexerSettingsLimitsUnit": "Limit Birimi",
- "IndexerSettingsLimitsUnitHelpText": "Dizinleyici başına limitleri saymak için zaman birimi",
+ "IndexerSettingsLimitsUnitHelpText": "İndeksleyici başına limitleri saymak için zaman birimi",
"IndexerSettingsRssKey": "RSS Anahtarı",
- "MinimumSeedersHelpText": "Dizinleyicinin alım yapması için uygulamanın gerektirdiği minimum seeder sayısı",
+ "MinimumSeedersHelpText": "İndeksleyicinin alım yapması için uygulamanın gerektirdiği minimum seeder sayısı",
"MusicSearchTypes": "Müzik Arama Türleri",
"NoApplicationsFound": "Hiçbir uygulama bulunamadı",
"OnGrabHelpText": "Yayın Alındığında",
@@ -701,15 +701,15 @@
"UnableToLoadAppProfiles": "Uygulama profilleri yüklenemiyor",
"UnableToLoadDevelopmentSettings": "Geliştirme ayarları yüklenemiyor",
"IndexerHDBitsSettingsOrigins": "Kaynaklar",
- "IndexerNoDefinitionCheckHealthCheckMessage": "Dizinleyicilerin tanımı yoktur ve çalışmayacaktır: {indexerNames}. Lütfen {appName}'i kaldırın ve (veya) yeniden ekleyin.",
+ "IndexerNoDefinitionCheckHealthCheckMessage": "{indexerNames} indeksleyicileri tanımsız olduğundan çalışmayacaktır. Lütfen bunları kaldırın ve/veya {appName} uygulamasına yeniden ekleyin.",
"MovieSearchTypes": "Film Arama Türleri",
- "NoIndexerCategories": "Bu dizinleyici için hiçbir kategori bulunamadı",
+ "NoIndexerCategories": "Bu indeksleyici için hiçbir kategori bulunamadı",
"PackSeedTimeHelpText": "Bir paketin (sezon veya diskografi) torrentinin durdurulmadan önce aktif olması gereken süre, boş bırakılırsa uygulamanın varsayılan değeri kullanılır",
"IndexerSettingsGrabLimitHelpText": "{appName}'ın siteye izin vereceği ilgili birim tarafından belirtilen maksimum kapma sayısı",
- "IndexerSettingsPreferMagnetUrlHelpText": "Etkinleştirildiğinde, bu dizinleyici torrent bağlantılarına geri dönüş için magnet URL'lerinin kullanımını tercih edecektir",
+ "IndexerSettingsPreferMagnetUrlHelpText": "Etkinleştirildiğinde, bu indeksleyici torrent bağlantılarına geri dönüş için magnet URL'lerinin kullanımını tercih edecektir",
"Private": "Özel",
"ProwlarrSupportsAnyIndexer": "{appName}, 'Generic Newznab' (usenet için) veya 'Generic Torznab' (torrentler için) kullanan Newznab/Torznab standardını kullanan herhangi bir indeksleyiciye ek olarak birçok indeksleyiciyi destekler. Aşağıdan indeksleyicinizi arayın ve seçin.",
- "IndexerInfo": "Dizinleyici Bilgileri",
+ "IndexerInfo": "İndeksleyici Bilgileri",
"IndexerMTeamTpSettingsApiKeyHelpText": "Siteden API Anahtarı (Kullanıcı Kontrol Paneli => Güvenlik => Laboratuvar'da Bulunur)",
"IndexerPassThePopcornSettingsFreeleechOnlyHelpText": "Yalnızca freeleech sürümlerini arayın",
"IndexerRedactedSettingsApiKeyHelpText": "Siteden API Anahtarı (Ayarlar => Erişim Ayarları'nda Bulunur)",
@@ -717,40 +717,40 @@
"IndexerSettingsVipExpiration": "VIP Son Kullanma Tarihi",
"Parameters": "Parametreler",
"TotalQueries": "Toplam Sorgular",
- "SettingsIndexerLogging": "Gelişmiş Dizin Oluşturucu Günlüğü",
+ "SettingsIndexerLogging": "Gelişmiş İndeksleyici Günlüğü",
"SettingsLogRotate": "Günlük Döndürme",
- "TotalIndexerSuccessfulGrabs": "Dizinleyicinin Toplam Başarılı Alma Sayısı",
+ "TotalIndexerSuccessfulGrabs": "İndeksleyicinin Toplam Başarılı Alma Sayısı",
"SyncProfiles": "Profilleri Senkronize Et",
- "IndexerProxy": "Dizinleyici Proxy",
+ "IndexerProxy": "İndeksleyici Proxy",
"Redirect": "Yönlendir",
"SettingsSqlLoggingHelpText": "{appName} uygulamasından gelen tüm SQL sorgularını günlüğe kaydet",
"Proxies": "Proxy'ler",
"Public": "Herkese Açık",
"RepeatSearch": "Tekrar Ara",
"ManageApplications": "Uygulamaları Yönet",
- "SearchAllIndexers": "Tüm dizinleyicilerde ara",
+ "SearchAllIndexers": "Tüm indeksleyicilerde ara",
"SeedRatioHelpText": "Bir torrentin durdurulmadan önce ulaşması gereken oran, boş bırakıldığında uygulamanın varsayılanı kullanılır",
"SeedTimeHelpText": "Bir torrentin durdurulmadan önce aktif olması gereken süre, boş bırakıldığında uygulamanın varsayılanı kullanılır",
- "IndexerRss": "Dizinleyici RSS",
+ "IndexerRss": "İndeksleyici RSS",
"SearchTypes": "Arama Türleri",
"SemiPrivate": "Yarı Özel",
"SettingsLogSql": "Sql Günlüğü",
"SelectedCountOfCountReleases": "{itemCount} sürümden {selectedCount} tanesi seçildi",
- "IndexerSettingsSummary": "Proxy'ler de dahil olmak üzere çeşitli genel dizinleyici ayarlarını yapılandırın.",
+ "IndexerSettingsSummary": "Proxy'ler de dahil olmak üzere çeşitli genel indeksleyici ayarlarını yapılandırın.",
"SettingsLogRotateHelpText": "Günlük klasöründe saklanacak maksimum günlük dosyası sayısı",
"TvSearch": "Dizi Ara",
- "SelectIndexers": "Dizinleyici Seç",
+ "SelectIndexers": "İndeksleyici Seç",
"Privacy": "Gizlilik",
"SettingsConsoleLogLevel": "Konsol Günlük Düzeyi",
"SettingsFilterSentryEventsHelpText": "Bilinen kullanıcı hatası olaylarının Analitik olarak gönderilmesini filtreleyin",
"SyncLevel": "Senkronizasyon Seviyesi",
- "IndexerName": "Dizinleyici Adı",
- "IndexerSite": "Dizinleyici Sitesi",
- "IndexerTagsHelpTextWarning": "Etiketler dikkatli kullanılmalıdır, istenmeyen etkilere neden olabilirler. Etiketli bir dizinleyici yalnızca aynı etikete sahip uygulamalarla senkronize olur.",
+ "IndexerName": "İndeksleyici Adı",
+ "IndexerSite": "İndeksleyici Sitesi",
+ "IndexerTagsHelpTextWarning": "Etiketler dikkatli kullanılmalıdır, istenmeyen etkilere neden olabilirler. Etiketli bir indeksleyici yalnızca aynı etikete sahip uygulamalarla senkronize olur.",
"InitialFailure": "İlk Hata",
"MappedCategories": "Haritalanmış Kategoriler",
"NotSupported": "Desteklenmiyor",
- "SettingsIndexerLoggingHelpText": "Yanıt dahil olmak üzere ek Dizinleyici verilerini günlüğe kaydet",
+ "SettingsIndexerLoggingHelpText": "Yanıt dahil olmak üzere ek İndeksleyici verilerini günlüğe kaydet",
"SearchQueries": "Arama Sorguları",
"SyncProfile": "Profil Senkronizasyonu",
"NoSearchResultsFound": "Hiçbir arama sonucu bulunamadı, aşağıdan yeni bir arama yapmayı deneyin.",
@@ -758,11 +758,11 @@
"VipExpiration": "VIP Son Kullanma Tarihi",
"IndexerPassThePopcornSettingsApiKeyHelpText": "Site API Anahtarı",
"IndexerSettingsFreeleechOnly": "Sadece Freeleech",
- "NoIndexerHistory": "Bu dizinleyici için geçmiş bulunamadı",
- "SearchIndexers": "Dizinleyicilerde Ara",
+ "NoIndexerHistory": "Bu indeksleyici için geçmiş bulunamadı",
+ "SearchIndexers": "İndeksleyicilerde Ara",
"Url": "Url",
"Website": "Web site",
- "IndexerTagsHelpText": "Etiketleri kullanarak Dizinleyici Proxy'lerini veya Dizinleyici'nin hangi uygulamalarla senkronize edileceğini belirtin.",
+ "IndexerTagsHelpText": "Etiketleri kullanarak İndeksleyici Proxy'lerini veya İndeksleyici'nin hangi uygulamalarla senkronize edileceğini belirtin.",
"MassEditor": "Kitle Editörü",
"RawSearchSupported": "Ham Arama Destekleniyor",
"SettingsFilterSentryEvents": "Analitik Olayları Filtrele",
@@ -770,17 +770,17 @@
"TotalHostGrabs": "İstemci Başına Toplam Alım",
"TotalUserAgentGrabs": "Kullanıcı Aracısı Başına Toplam Alım Sayısı",
"IndexerGazelleGamesSettingsApiKeyHelpText": "Siteden API Anahtarı (Ayarlar => Erişim Ayarları'nda Bulunur)",
- "IndexerObsoleteCheckMessage": "Dizinleyiciler eski veya güncellendi: {0}. Lütfen {appName}'i kaldırın ve (veya) yeniden ekleyin",
+ "IndexerObsoleteCheckMessage": "İndeksleyiciler eski veya güncellendi: {0}. Lütfen {appName}'i kaldırın ve (veya) yeniden ekleyin",
"IndexerNzbIndexSettingsApiKeyHelpText": "Site API Anahtarı",
"IndexerOrpheusSettingsApiKeyHelpText": "Siteden API Anahtarı (Ayarlar => Erişim Ayarları'nda Bulunur)",
"IndexerHDBitsSettingsPasskeyHelpText": "Kullanıcı Detaylarından Geçiş Anahtarı",
- "IndexerQuery": "Dizinleyici Sorgusu",
+ "IndexerQuery": "İndeksleyici Sorgusu",
"MovieSearch": "Film Arama",
"TotalGrabs": "Toplam Alınan",
"TotalHostQueries": "İstemci Başına Toplam Sorgu",
"Query": "Sorgu",
"QueryOptions": "Sorgu Seçenekleri",
- "SyncLevelAddRemove": "Yalnızca Ekle ve Kaldır: {appName} uygulamasından dizinleyiciler eklendiğinde veya kaldırıldığında, bu uzak uygulama güncellenecektir.",
+ "SyncLevelAddRemove": "Yalnızca Ekle ve Kaldır: {appName} uygulamasından indeksleyiciler eklendiğinde veya kaldırıldığında, bu uzak uygulama güncellenecektir.",
"IndexerIPTorrentsSettingsCookieUserAgentHelpText": "Tarayıcıdan kullanılan çerezle ilişkili Kullanıcı Aracısı",
"IndexerIPTorrentsSettingsFreeleechOnlyHelpText": "Yalnızca freeleech sürümlerini arayın",
"IndexerSettingsAppsMinimumSeedersHelpText": "Uygulamalar tarafından indeksleyicinin alım yapması için gereken minimum sedeerlar, boş bırakılırsa Eşitleme profilinin varsayılanı kullanılacaktır",
@@ -790,14 +790,14 @@
"IndexerNewznabSettingsAdditionalParametersHelpText": "Ek Newznab parametreleri",
"IndexerNewznabSettingsApiKeyHelpText": "Site API Anahtarı",
"IndexerSettingsAppsMinimumSeeders": "Uygulamalar Minimum Seeders",
- "RedirectHelpText": "Dizinleyici için gelen indirme isteğini yeniden yönlendirin ve isteği {appName} aracılığıyla proxy olarak göndermek yerine doğrudan alım yapmayı tercih edin",
- "SyncLevelFull": "Tam Senkronizasyon: Bu uygulamanın dizinleyicilerini tamamen senkronize halde tutar. {appName} içindeki dizinleyicilerde yapılan değişiklikler daha sonra bu uygulamayla senkronize edilir. Bu uygulama içinde dizinleyicilerde uzaktan yapılan herhangi bir değişiklik, bir sonraki senkronizasyonda {appName} tarafından geçersiz kılınır.",
+ "RedirectHelpText": "İndeksleyici için gelen indirme isteğini yeniden yönlendirin ve isteği {appName} aracılığıyla proxy olarak göndermek yerine doğrudan alım yapmayı tercih edin",
+ "SyncLevelFull": "Tam Senkronizasyon: Bu uygulamanın indeksleyicilerini tamamen senkronize halde tutar. {appName} içindeki indeksleyicilerde yapılan değişiklikler daha sonra bu uygulamayla senkronize edilir. Bu uygulama içinde indeksleyicilerde uzaktan yapılan herhangi bir değişiklik, bir sonraki senkronizasyonda {appName} tarafından geçersiz kılınır.",
"IndexerSettingsPreferMagnetUrl": "Magnet URL'sini Tercih Et",
"IndexerTorrentSyndikatSettingsApiKeyHelpText": "Site API Anahtarı",
"ProwlarrDownloadClientsInAppOnlyAlert": "İndirme istemcileri yalnızca {appName} uygulama içi aramalar içindir ve uygulamalarla senkronize edilmez. Geliştiricilerin bu tür bir işlevsellik ekleme planı yoktur.",
"ProwlarrSupportsAnyDownloadClient": "{appName} aşağıda listelenen indirme istemcilerini destekler.",
- "UnableToLoadIndexerProxies": "Dizin Oluşturucu Proxy'leri yüklenemiyor",
- "IndexerStatus": "Dizinleyici Durumu",
+ "UnableToLoadIndexerProxies": "İndeksleyici Proxy'leri yüklenemiyor",
+ "IndexerStatus": "İndeksleyici Durumu",
"IndexerPassThePopcornSettingsGoldenPopcornOnly": "Sadece Golden Popcorn",
"IndexerPassThePopcornSettingsGoldenPopcornOnlyHelpText": "Yalnızca Golden Popcorn sürümlerini arayın",
"IndexerSettingsPackSeedTime": "Paket Seed Süresi",
@@ -805,6 +805,7 @@
"IndexerFileListSettingsPasskeyHelpText": "Site Parolası (Bu, indirme istemcinizde gösterilen izleyici URL'sindeki alfanümerik dizedir)",
"IndexerGazelleGamesSettingsApiKeyHelpTextWarning": "Kullanıcı ve Torrent izinlerine sahip olmalısınız",
"IndexerGazelleGamesSettingsSearchGroupNamesHelpText": "Grup adlarına göre sürüm ara",
- "IndexerHealthCheckNoIndexers": "Hiçbir dizinleyici etkinleştirilmedi, {appName} arama sonuçlarını döndürmeyecek",
- "QueryType": "Sorgu Türü"
+ "IndexerHealthCheckNoIndexers": "Hiçbir indeksleyici etkinleştirilmedi, {appName} arama sonuçlarını döndürmeyecek",
+ "QueryType": "Sorgu Türü",
+ "DownloadClientUTorrentProviderMessage": "uTorrent'in kripto para madenciliği, kötü amaçlı yazılım ve reklam içerme geçmişi vardır, bu nedenle farklı bir istemci seçmenizi önemle tavsiye ederiz."
}
diff --git a/src/NzbDrone.Core/Localization/Core/uk.json b/src/NzbDrone.Core/Localization/Core/uk.json
index f6390540a..f42bd890b 100644
--- a/src/NzbDrone.Core/Localization/Core/uk.json
+++ b/src/NzbDrone.Core/Localization/Core/uk.json
@@ -441,5 +441,13 @@
"CurrentlyInstalled": "В даний час встановлено",
"Season": "Причина",
"Stats": "Статус",
- "CountIndexersSelected": "{count} індексер(-и) обрано"
+ "CountIndexersSelected": "{count} індексер(-и) обрано",
+ "SeedRatio": "Коефіцієнт роздачі",
+ "ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Якщо торрент заблоковано хешем, він може не бути належним чином відхилений під час RSS/пошуку для деяких індексаторів. Увімкнення цього параметра дозволить відхилити його після захоплення торента, але до його відправки клієнту.",
+ "MinimumSeeders": "Мінімум сидерів (роздаючих)",
+ "SeedTime": "Час сидіння",
+ "Author": "Автор",
+ "OnHealthRestoredHelpText": "При відновленні стану",
+ "IndexerHDBitsSettingsOriginsHelpText": "Якщо не вказано, використовуються всі параметри.",
+ "days": "дні(в)"
}
diff --git a/src/NzbDrone.Core/Localization/Core/zh_CN.json b/src/NzbDrone.Core/Localization/Core/zh_CN.json
index 8e67403f0..41f815655 100644
--- a/src/NzbDrone.Core/Localization/Core/zh_CN.json
+++ b/src/NzbDrone.Core/Localization/Core/zh_CN.json
@@ -16,7 +16,7 @@
"Added": "添加日期",
"AddedToDownloadClient": "发布已添加档案到客户端",
"AddingTag": "添加标签",
- "Age": "年龄",
+ "Age": "寿命",
"All": "全部",
"AllIndexersHiddenDueToFilter": "由于应用了筛选器,所有索引器都被隐藏。",
"Analytics": "分析",
@@ -735,5 +735,24 @@
"PreviouslyInstalled": "上次安装",
"FailedToFetchSettings": "设置同步失败",
"DownloadClientSettingsPriorityItemHelpText": "抓取内容时优先使用",
- "IndexerAlphaRatioSettingsExcludeScene": "排除场景"
+ "IndexerAlphaRatioSettingsExcludeScene": "排除场景",
+ "IndexerAlphaRatioSettingsExcludeSceneHelpText": "从结果中排除场景版本",
+ "IndexerAlphaRatioSettingsFreeleechOnlyHelpText": "只搜索免费发布",
+ "IndexerBeyondHDSettingsFreeleechOnlyHelpText": "只搜索免费发布",
+ "IndexerBeyondHDSettingsLimitedOnly": "仅限",
+ "IndexerBeyondHDSettingsApiKeyHelpText": "来自网站的API密钥(在我的安全 => API密钥)",
+ "IndexerAvistazSettingsFreeleechOnlyHelpText": "只搜索免费发布",
+ "IndexerAvistazSettingsPasswordHelpText": "网站密码",
+ "IndexerAvistazSettingsPidHelpText": "我的帐户或个人资料页的PID",
+ "IndexerAvistazSettingsUsernameHelpText": "网站用户名",
+ "IndexerAvistazSettingsUsernameHelpTextWarning": "只有成员级别及以上才能使用此索引器上的API。",
+ "IndexerBeyondHDSettingsLimitedOnlyHelpText": "仅限免费搜索(有限UL)",
+ "IndexerGazelleGamesSettingsFreeleechOnlyHelpText": "只搜索免费发布",
+ "IndexerMTeamTpSettingsFreeleechOnlyHelpText": "只搜索免费发布",
+ "IndexerIPTorrentsSettingsFreeleechOnlyHelpText": "只搜索免费发布",
+ "IndexerHDBitsSettingsUsernameHelpText": "网站用户名",
+ "IndexerPassThePopcornSettingsFreeleechOnlyHelpText": "只搜索免费发布",
+ "IndexerFileListSettingsFreeleechOnlyHelpText": "只搜索免费发布",
+ "IndexerFileListSettingsUsernameHelpText": "网站用户名",
+ "IndexerBeyondHDSettingsRefundOnlyHelpText": "Search refund only"
}
diff --git a/src/NzbDrone.Core/Localization/Core/zh_Hans.json b/src/NzbDrone.Core/Localization/Core/zh_Hans.json
index 1617e57fb..54e88a350 100644
--- a/src/NzbDrone.Core/Localization/Core/zh_Hans.json
+++ b/src/NzbDrone.Core/Localization/Core/zh_Hans.json
@@ -2,5 +2,6 @@
"About": "关于",
"Add": "添加",
"Analytics": "分析",
- "Username": "用户名"
+ "Username": "用户名",
+ "AcceptConfirmationModal": "中文"
}
diff --git a/src/NzbDrone.Core/Localization/Core/zh_TW.json b/src/NzbDrone.Core/Localization/Core/zh_TW.json
index f2dc4a4fd..0d1a65581 100644
--- a/src/NzbDrone.Core/Localization/Core/zh_TW.json
+++ b/src/NzbDrone.Core/Localization/Core/zh_TW.json
@@ -2,17 +2,17 @@
"About": "關於",
"Add": "新增",
"Added": "已新增",
- "Actions": "執行",
+ "Actions": "動作",
"Age": "年齡",
"AddIndexer": "新增索引",
"AddNewIndexer": "新增新索引",
- "AddDownloadClient": "新增下載器",
+ "AddDownloadClient": "加入下載用戶端",
"Analytics": "分析",
"AddIndexerProxy": "新增索引器代理",
"AddingTag": "新增標籤",
"All": "全部",
"AddRemoveOnly": "僅限新增或移除",
- "AcceptConfirmationModal": "接受確認模式",
+ "AcceptConfirmationModal": "接受確認對話框",
"Language": "語言",
"Filter": "篩選",
"Reload": "重新載入",
@@ -156,5 +156,13 @@
"AddCategory": "新增類別",
"AdvancedSettingsShownClickToHide": "進階設定已顯示,點擊以隱藏",
"Version": "版本",
- "UpdateAvailableHealthCheckMessage": "可用的新版本: {version}"
+ "UpdateAvailableHealthCheckMessage": "可用的新版本: {version}",
+ "AuthenticationRequiredHelpText": "更改需要進行驗證的請求。除非你了解其中的風險,否則請勿修改。",
+ "AuthenticationRequiredPasswordHelpTextWarning": "請輸入新密碼",
+ "AuthenticationRequiredUsernameHelpTextWarning": "請輸入新用戶名",
+ "AuthenticationRequiredPasswordConfirmationHelpTextWarning": "確認新密碼",
+ "AuthenticationRequired": "需要驗證",
+ "AuthenticationRequiredWarning": "為防止未經認證的遠程訪問,{appName} 現需要啟用身份認證。您可以選擇禁用本地地址的身份認證。",
+ "AuthenticationMethodHelpTextWarning": "請選擇一個有效的驗證方式",
+ "AuthenticationMethod": "驗證方式"
}
diff --git a/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs b/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs
index 7ca1dc8fc..04bac39f0 100755
--- a/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs
+++ b/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
+using System.Linq;
using FluentValidation.Results;
using NLog;
using NzbDrone.Common.Disk;
@@ -38,7 +39,31 @@ namespace NzbDrone.Core.Notifications.CustomScript
public override string Link => "https://wiki.servarr.com/prowlarr/settings#connections";
- public override ProviderMessage Message => new ProviderMessage("Testing will execute the script with the EventType set to Test, ensure your script handles this correctly", ProviderMessageType.Warning);
+ public override ProviderMessage Message => new ("Testing will execute the script with the EventType set to Test, ensure your script handles this correctly", ProviderMessageType.Warning);
+
+ public override void OnGrab(GrabMessage message)
+ {
+ var environmentVariables = new StringDictionary();
+
+ environmentVariables.Add("Prowlarr_EventType", "Grab");
+ environmentVariables.Add("Prowlarr_InstanceName", _configFileProvider.InstanceName);
+ environmentVariables.Add("Prowlarr_ApplicationUrl", _configService.ApplicationUrl);
+ environmentVariables.Add("Prowlarr_Release_Title", message.Release.Title);
+ environmentVariables.Add("Prowlarr_Release_Indexer", message.Release.Indexer ?? string.Empty);
+ environmentVariables.Add("Prowlarr_Release_Size", message.Release.Size.ToString());
+ environmentVariables.Add("Prowlarr_Release_Genres", string.Join("|", message.Release.Genres));
+ environmentVariables.Add("Prowlarr_Release_Categories", string.Join("|", message.Release.Categories.Select(f => f.Name)));
+ environmentVariables.Add("Prowlarr_Release_IndexerFlags", string.Join("|", message.Release.IndexerFlags.Select(f => f.Name)));
+ environmentVariables.Add("Prowlarr_Release_PublishDate", message.Release.PublishDate.ToUniversalTime().ToString("s") + "Z");
+ environmentVariables.Add("Prowlarr_Download_Client", message.DownloadClientName ?? string.Empty);
+ environmentVariables.Add("Prowlarr_Download_Client_Type", message.DownloadClientType ?? string.Empty);
+ environmentVariables.Add("Prowlarr_Download_Id", message.DownloadId ?? string.Empty);
+ environmentVariables.Add("Prowlarr_Source", message.Source ?? string.Empty);
+ environmentVariables.Add("Prowlarr_Host", message.Host ?? string.Empty);
+ environmentVariables.Add("Prowlarr_Redirect", message.Redirect.ToString());
+
+ ExecuteScript(environmentVariables);
+ }
public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck)
{
@@ -130,10 +155,5 @@ namespace NzbDrone.Core.Notifications.CustomScript
return processOutput;
}
-
- private bool ValidatePathParent(string possibleParent, string path)
- {
- return possibleParent.IsParentPath(path);
- }
}
}
diff --git a/src/NzbDrone.Core/Notifications/Discord/Discord.cs b/src/NzbDrone.Core/Notifications/Discord/Discord.cs
index 9eb41e989..48b93f35d 100644
--- a/src/NzbDrone.Core/Notifications/Discord/Discord.cs
+++ b/src/NzbDrone.Core/Notifications/Discord/Discord.cs
@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using FluentValidation.Results;
using NzbDrone.Common.Extensions;
+using NzbDrone.Core.Configuration;
using NzbDrone.Core.Notifications.Discord.Payloads;
using NzbDrone.Core.Validation;
@@ -10,10 +11,12 @@ namespace NzbDrone.Core.Notifications.Discord
public class Discord : NotificationBase
{
private readonly IDiscordProxy _proxy;
+ private readonly IConfigFileProvider _configFileProvider;
- public Discord(IDiscordProxy proxy)
+ public Discord(IDiscordProxy proxy, IConfigFileProvider configFileProvider)
{
_proxy = proxy;
+ _configFileProvider = configFileProvider;
}
public override string Name => "Discord";
@@ -22,18 +25,18 @@ namespace NzbDrone.Core.Notifications.Discord
public override void OnGrab(GrabMessage message)
{
var embed = new Embed
- {
- Author = new DiscordAuthor
- {
- Name = Settings.Author.IsNullOrWhiteSpace() ? Environment.MachineName : Settings.Author,
- IconUrl = "https://raw.githubusercontent.com/Prowlarr/Prowlarr/develop/Logo/256.png"
- },
- Title = RELEASE_GRABBED_TITLE,
- Description = message.Message,
- Timestamp = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"),
- Color = message.Successful ? (int)DiscordColors.Success : (int)DiscordColors.Danger,
- Fields = new List()
- };
+ {
+ Author = new DiscordAuthor
+ {
+ Name = Settings.Author.IsNullOrWhiteSpace() ? _configFileProvider.InstanceName : Settings.Author,
+ IconUrl = "https://raw.githubusercontent.com/Prowlarr/Prowlarr/develop/Logo/256.png"
+ },
+ Title = RELEASE_GRABBED_TITLE,
+ Description = message.Message,
+ Timestamp = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"),
+ Color = message.Successful ? (int)DiscordColors.Success : (int)DiscordColors.Danger,
+ Fields = new List()
+ };
foreach (var field in Settings.GrabFields)
{
@@ -80,81 +83,72 @@ namespace NzbDrone.Core.Notifications.Discord
public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck)
{
- var attachments = new List
- {
- new Embed
- {
- Author = new DiscordAuthor
- {
- Name = Settings.Author.IsNullOrWhiteSpace() ? Environment.MachineName : Settings.Author,
- IconUrl = "https://raw.githubusercontent.com/Prowlarr/Prowlarr/develop/Logo/256.png"
- },
- Title = healthCheck.Source.Name,
- Description = healthCheck.Message,
- Timestamp = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"),
- Color = healthCheck.Type == HealthCheck.HealthCheckResult.Warning ? (int)DiscordColors.Warning : (int)DiscordColors.Danger
- }
- };
+ var embed = new Embed
+ {
+ Author = new DiscordAuthor
+ {
+ Name = Settings.Author.IsNullOrWhiteSpace() ? _configFileProvider.InstanceName : Settings.Author,
+ IconUrl = "https://raw.githubusercontent.com/Prowlarr/Prowlarr/develop/Logo/256.png"
+ },
+ Title = healthCheck.Source.Name,
+ Description = healthCheck.Message,
+ Timestamp = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"),
+ Color = healthCheck.Type == HealthCheck.HealthCheckResult.Warning ? (int)DiscordColors.Warning : (int)DiscordColors.Danger
+ };
- var payload = CreatePayload(null, attachments);
+ var payload = CreatePayload(null, new List { embed });
_proxy.SendPayload(payload, Settings);
}
public override void OnHealthRestored(HealthCheck.HealthCheck previousCheck)
{
- var attachments = new List
- {
- new Embed
- {
- Author = new DiscordAuthor
- {
- Name = Settings.Author.IsNullOrWhiteSpace() ? Environment.MachineName : Settings.Author,
- IconUrl = "https://raw.githubusercontent.com/Prowlarr/Prowlarr/develop/Logo/256.png"
- },
- Title = "Health Issue Resolved: " + previousCheck.Source.Name,
- Description = $"The following issue is now resolved: {previousCheck.Message}",
- Timestamp = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"),
- Color = (int)DiscordColors.Success
- }
- };
+ var embed = new Embed
+ {
+ Author = new DiscordAuthor
+ {
+ Name = Settings.Author.IsNullOrWhiteSpace() ? _configFileProvider.InstanceName : Settings.Author,
+ IconUrl = "https://raw.githubusercontent.com/Prowlarr/Prowlarr/develop/Logo/256.png"
+ },
+ Title = "Health Issue Resolved: " + previousCheck.Source.Name,
+ Description = $"The following issue is now resolved: {previousCheck.Message}",
+ Timestamp = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"),
+ Color = (int)DiscordColors.Success
+ };
- var payload = CreatePayload(null, attachments);
+ var payload = CreatePayload(null, new List { embed });
_proxy.SendPayload(payload, Settings);
}
public override void OnApplicationUpdate(ApplicationUpdateMessage updateMessage)
{
- var attachments = new List
- {
- new Embed
- {
- Author = new DiscordAuthor
- {
- Name = Settings.Author.IsNullOrWhiteSpace() ? Environment.MachineName : Settings.Author,
- IconUrl = "https://raw.githubusercontent.com/Prowlarr/Prowlarr/develop/Logo/256.png"
- },
- Title = APPLICATION_UPDATE_TITLE,
- Timestamp = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"),
- Color = (int)DiscordColors.Standard,
- Fields = new List()
- {
- new DiscordField()
- {
- Name = "Previous Version",
- Value = updateMessage.PreviousVersion.ToString()
- },
- new DiscordField()
- {
- Name = "New Version",
- Value = updateMessage.NewVersion.ToString()
- }
- },
- }
- };
+ var embed = new Embed
+ {
+ Author = new DiscordAuthor
+ {
+ Name = Settings.Author.IsNullOrWhiteSpace() ? _configFileProvider.InstanceName : Settings.Author,
+ IconUrl = "https://raw.githubusercontent.com/Prowlarr/Prowlarr/develop/Logo/256.png"
+ },
+ Title = APPLICATION_UPDATE_TITLE,
+ Timestamp = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"),
+ Color = (int)DiscordColors.Standard,
+ Fields = new List
+ {
+ new ()
+ {
+ Name = "Previous Version",
+ Value = updateMessage.PreviousVersion.ToString()
+ },
+ new ()
+ {
+ Name = "New Version",
+ Value = updateMessage.NewVersion.ToString()
+ }
+ },
+ };
- var payload = CreatePayload(null, attachments);
+ var payload = CreatePayload(null, new List { embed });
_proxy.SendPayload(payload, Settings);
}
@@ -208,19 +202,5 @@ namespace NzbDrone.Core.Notifications.Discord
return payload;
}
-
- private static string BytesToString(long byteCount)
- {
- string[] suf = { "B", "KB", "MB", "GB", "TB", "PB", "EB" }; //Longs run out around EB
- if (byteCount == 0)
- {
- return "0 " + suf[0];
- }
-
- var bytes = Math.Abs(byteCount);
- var place = Convert.ToInt32(Math.Floor(Math.Log(bytes, 1024)));
- var num = Math.Round(bytes / Math.Pow(1024, place), 1);
- return string.Format("{0} {1}", (Math.Sign(byteCount) * num).ToString(), suf[place]);
- }
}
}
diff --git a/src/NzbDrone.Core/Notifications/Webhook/WebhookRelease.cs b/src/NzbDrone.Core/Notifications/Webhook/WebhookRelease.cs
index 295d62986..ad98e5440 100644
--- a/src/NzbDrone.Core/Notifications/Webhook/WebhookRelease.cs
+++ b/src/NzbDrone.Core/Notifications/Webhook/WebhookRelease.cs
@@ -1,3 +1,6 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.Notifications.Webhook
@@ -13,10 +16,18 @@ namespace NzbDrone.Core.Notifications.Webhook
ReleaseTitle = release.Title;
Indexer = release.Indexer;
Size = release.Size;
+ Categories = release.Categories.Select(f => f.Name).ToList();
+ Genres = release.Genres.ToList();
+ IndexerFlags = release.IndexerFlags.Select(f => f.Name).ToHashSet();
+ PublishDate = release.PublishDate;
}
public string ReleaseTitle { get; set; }
public string Indexer { get; set; }
public long? Size { get; set; }
+ public List Categories { get; set; }
+ public List Genres { get; set; }
+ public HashSet IndexerFlags { get; set; }
+ public DateTime? PublishDate { get; set; }
}
}
diff --git a/src/NzbDrone.Core/Parser/Model/ReleaseInfo.cs b/src/NzbDrone.Core/Parser/Model/ReleaseInfo.cs
index 7d8c83d50..6f0788607 100644
--- a/src/NzbDrone.Core/Parser/Model/ReleaseInfo.cs
+++ b/src/NzbDrone.Core/Parser/Model/ReleaseInfo.cs
@@ -9,6 +9,7 @@ namespace NzbDrone.Core.Parser.Model
{
public ReleaseInfo()
{
+ Genres = new List();
IndexerFlags = new HashSet();
Categories = new List();
Languages = new List();
diff --git a/src/NzbDrone.Core/Prowlarr.Core.csproj b/src/NzbDrone.Core/Prowlarr.Core.csproj
index 8f7b485f4..3f70dd577 100644
--- a/src/NzbDrone.Core/Prowlarr.Core.csproj
+++ b/src/NzbDrone.Core/Prowlarr.Core.csproj
@@ -6,25 +6,26 @@
-
+
+
-
-
+
+
-
+
-
+
-
+
-
+
diff --git a/src/NzbDrone.Core/Validation/IpValidation.cs b/src/NzbDrone.Core/Validation/IpValidation.cs
index eb5863caa..f4afa1f66 100644
--- a/src/NzbDrone.Core/Validation/IpValidation.cs
+++ b/src/NzbDrone.Core/Validation/IpValidation.cs
@@ -1,5 +1,4 @@
using FluentValidation;
-using FluentValidation.Validators;
using NzbDrone.Common.Extensions;
namespace NzbDrone.Core.Validation
@@ -10,10 +9,5 @@ namespace NzbDrone.Core.Validation
{
return ruleBuilder.Must(x => x.IsValidIpAddress()).WithMessage("Must contain wildcard (*) or a valid IP Address");
}
-
- public static IRuleBuilderOptions NotListenAllIp4Address(this IRuleBuilder ruleBuilder)
- {
- return ruleBuilder.SetValidator(new RegularExpressionValidator(@"^(?!0\.0\.0\.0)")).WithMessage("Use * instead of 0.0.0.0");
- }
}
}
diff --git a/src/NzbDrone.Host/Prowlarr.Host.csproj b/src/NzbDrone.Host/Prowlarr.Host.csproj
index 28343d318..12bd5168e 100644
--- a/src/NzbDrone.Host/Prowlarr.Host.csproj
+++ b/src/NzbDrone.Host/Prowlarr.Host.csproj
@@ -4,10 +4,10 @@
Library
-
-
-
-
+
+
+
+
diff --git a/src/NzbDrone.Test.Common/Prowlarr.Test.Common.csproj b/src/NzbDrone.Test.Common/Prowlarr.Test.Common.csproj
index a580baf44..b9ccacd9e 100644
--- a/src/NzbDrone.Test.Common/Prowlarr.Test.Common.csproj
+++ b/src/NzbDrone.Test.Common/Prowlarr.Test.Common.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/src/NzbDrone.Update/Prowlarr.Update.csproj b/src/NzbDrone.Update/Prowlarr.Update.csproj
index be34014e7..09b95e2f8 100644
--- a/src/NzbDrone.Update/Prowlarr.Update.csproj
+++ b/src/NzbDrone.Update/Prowlarr.Update.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/src/NzbDrone.Windows/Prowlarr.Windows.csproj b/src/NzbDrone.Windows/Prowlarr.Windows.csproj
index 5ce332f73..4a9f864e5 100644
--- a/src/NzbDrone.Windows/Prowlarr.Windows.csproj
+++ b/src/NzbDrone.Windows/Prowlarr.Windows.csproj
@@ -4,7 +4,7 @@
true
-
+
diff --git a/src/Prowlarr.Api.V1/Config/HostConfigController.cs b/src/Prowlarr.Api.V1/Config/HostConfigController.cs
index 6758040be..a844f8d2e 100644
--- a/src/Prowlarr.Api.V1/Config/HostConfigController.cs
+++ b/src/Prowlarr.Api.V1/Config/HostConfigController.cs
@@ -34,7 +34,6 @@ namespace Prowlarr.Api.V1.Config
SharedValidator.RuleFor(c => c.BindAddress)
.ValidIpAddress()
- .NotListenAllIp4Address()
.When(c => c.BindAddress != "*" && c.BindAddress != "localhost");
SharedValidator.RuleFor(c => c.Port).ValidPort();
diff --git a/src/Prowlarr.Api.V1/DownloadClient/DownloadClientController.cs b/src/Prowlarr.Api.V1/DownloadClient/DownloadClientController.cs
index dfaf24a9e..347c7e9c6 100644
--- a/src/Prowlarr.Api.V1/DownloadClient/DownloadClientController.cs
+++ b/src/Prowlarr.Api.V1/DownloadClient/DownloadClientController.cs
@@ -1,3 +1,4 @@
+using FluentValidation;
using NzbDrone.Core.Download;
using NzbDrone.SignalR;
using Prowlarr.Http;
@@ -13,6 +14,7 @@ namespace Prowlarr.Api.V1.DownloadClient
public DownloadClientController(IBroadcastSignalRMessage signalRBroadcaster, IDownloadClientFactory downloadClientFactory)
: base(signalRBroadcaster, downloadClientFactory, "downloadclient", ResourceMapper, BulkResourceMapper)
{
+ SharedValidator.RuleFor(c => c.Priority).InclusiveBetween(1, 50);
}
}
}
diff --git a/src/Prowlarr.Api.V1/Health/HealthResource.cs b/src/Prowlarr.Api.V1/Health/HealthResource.cs
index 1e2c8ffa5..3f357285d 100644
--- a/src/Prowlarr.Api.V1/Health/HealthResource.cs
+++ b/src/Prowlarr.Api.V1/Health/HealthResource.cs
@@ -1,6 +1,5 @@
using System.Collections.Generic;
using System.Linq;
-using NzbDrone.Common.Http;
using NzbDrone.Core.HealthCheck;
using Prowlarr.Http.REST;
@@ -11,7 +10,7 @@ namespace Prowlarr.Api.V1.Health
public string Source { get; set; }
public HealthCheckResult Type { get; set; }
public string Message { get; set; }
- public HttpUri WikiUrl { get; set; }
+ public string WikiUrl { get; set; }
}
public static class HealthResourceMapper
@@ -29,7 +28,7 @@ namespace Prowlarr.Api.V1.Health
Source = model.Source.Name,
Type = model.Type,
Message = model.Message,
- WikiUrl = model.WikiUrl
+ WikiUrl = model.WikiUrl.FullUri
};
}
diff --git a/src/Prowlarr.Api.V1/Indexers/IndexerController.cs b/src/Prowlarr.Api.V1/Indexers/IndexerController.cs
index 6f360a574..07955299d 100644
--- a/src/Prowlarr.Api.V1/Indexers/IndexerController.cs
+++ b/src/Prowlarr.Api.V1/Indexers/IndexerController.cs
@@ -21,6 +21,7 @@ namespace Prowlarr.Api.V1.Indexers
.ValidId()
.SetValidator(appProfileExistsValidator);
+ SharedValidator.RuleFor(c => c.Priority).InclusiveBetween(1, 50);
SharedValidator.RuleFor(c => c.DownloadClientId).SetValidator(downloadClientExistsValidator);
}
}
diff --git a/src/Prowlarr.Api.V1/Indexers/IndexerResource.cs b/src/Prowlarr.Api.V1/Indexers/IndexerResource.cs
index 57ce76f3a..31624dbf2 100644
--- a/src/Prowlarr.Api.V1/Indexers/IndexerResource.cs
+++ b/src/Prowlarr.Api.V1/Indexers/IndexerResource.cs
@@ -202,19 +202,23 @@ namespace Prowlarr.Api.V1.Indexers
{
case "info_cookie":
field.Label = "How to get the Cookie";
- field.Value = "Login to this tracker with your browser Open the DevTools panel by pressing F12 Select the Network tab Click on the Doc button (Chrome Browser) or HTML button (FireFox) Refresh the page by pressing F5 Click on the first row entry Select the Headers tab on the Right panel Find 'cookie:' in the Request Headers section Select and Copy the whole cookie string (everything after 'cookie: ') and Paste here. ";
- break;
- case "info_flaresolverr":
- field.Label = "FlareSolverr Info";
- field.Value = "This site may use Cloudflare DDoS Protection, therefore Prowlarr requires FlareSolverr to access it.";
+ field.Value = "Login to this tracker with your browser If present in the login page, ensure you have the Remember me ticked and the Log Me Out if IP Changes unticked when you login Navigate to the web site's torrent search page to view the list of available torrents for download Open the DevTools panel by pressing F12 Select the Network tab Click on the Doc button (Chrome Browser) or HTML button (FireFox) Refresh the page by pressing F5 Click on the first row entry Select the Headers tab on the Right panel Find 'cookie:' in the Request Headers section Select and Copy the whole cookie string (everything after 'cookie: ') and Paste here. ";
+ field.HelpLink = "https://wiki.servarr.com/useful-tools#finding-cookies";
break;
case "info_useragent":
field.Label = "How to get the User-Agent";
field.Value = "From the same place you fetched the cookie, Find 'user-agent:' in the Request Headers section Select and Copy the whole user-agent string (everything after 'user-agent: ') and Paste here. ";
+ field.HelpLink = "https://wiki.servarr.com/useful-tools#finding-cookies";
+ break;
+ case "info_flaresolverr":
+ field.Label = "FlareSolverr Info";
+ field.Value = "This site may use Cloudflare DDoS Protection, therefore Prowlarr requires FlareSolverr to access it.";
+ field.HelpLink = "https://wiki.servarr.com/prowlarr/faq#can-i-use-flaresolverr-indexers";
break;
case "info_category_8000":
field.Label = $"About {definition.Name} Categories";
field.Value = $"{definition.Name} does not return categories in its search results. To sync to your apps, include 8000(Other) in your Apps' Sync Categories.";
+ field.HelpLink = "https://wiki.servarr.com/prowlarr/faq#prowlarr-will-not-sync-x-indexer-to-app";
break;
}
}
diff --git a/src/Prowlarr.Api.V1/Prowlarr.Api.V1.csproj b/src/Prowlarr.Api.V1/Prowlarr.Api.V1.csproj
index 3c52ecc40..15684b0fe 100644
--- a/src/Prowlarr.Api.V1/Prowlarr.Api.V1.csproj
+++ b/src/Prowlarr.Api.V1/Prowlarr.Api.V1.csproj
@@ -4,8 +4,8 @@
-
-
+
+
diff --git a/src/Prowlarr.Api.V1/Tags/TagController.cs b/src/Prowlarr.Api.V1/Tags/TagController.cs
index ed3aeebb9..83e9825c9 100644
--- a/src/Prowlarr.Api.V1/Tags/TagController.cs
+++ b/src/Prowlarr.Api.V1/Tags/TagController.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using FluentValidation;
using Microsoft.AspNetCore.Mvc;
using NzbDrone.Core.Datastore.Events;
using NzbDrone.Core.Messaging.Events;
@@ -20,6 +21,8 @@ namespace Prowlarr.Api.V1.Tags
: base(signalRBroadcaster)
{
_tagService = tagService;
+
+ SharedValidator.RuleFor(c => c.Label).NotEmpty();
}
public override TagResource GetResourceById(int id)
diff --git a/src/Prowlarr.Api.V1/openapi.json b/src/Prowlarr.Api.V1/openapi.json
index c7fa206e8..35cb7d6a0 100644
--- a/src/Prowlarr.Api.V1/openapi.json
+++ b/src/Prowlarr.Api.V1/openapi.json
@@ -4739,7 +4739,8 @@
"nullable": true
},
"wikiUrl": {
- "$ref": "#/components/schemas/HttpUri"
+ "type": "string",
+ "nullable": true
}
},
"additionalProperties": false
@@ -4991,48 +4992,6 @@
},
"additionalProperties": false
},
- "HttpUri": {
- "type": "object",
- "properties": {
- "fullUri": {
- "type": "string",
- "nullable": true,
- "readOnly": true
- },
- "scheme": {
- "type": "string",
- "nullable": true,
- "readOnly": true
- },
- "host": {
- "type": "string",
- "nullable": true,
- "readOnly": true
- },
- "port": {
- "type": "integer",
- "format": "int32",
- "nullable": true,
- "readOnly": true
- },
- "path": {
- "type": "string",
- "nullable": true,
- "readOnly": true
- },
- "query": {
- "type": "string",
- "nullable": true,
- "readOnly": true
- },
- "fragment": {
- "type": "string",
- "nullable": true,
- "readOnly": true
- }
- },
- "additionalProperties": false
- },
"IActionResult": {
"type": "object",
"additionalProperties": false
diff --git a/src/Prowlarr.Http/Authentication/AuthenticationController.cs b/src/Prowlarr.Http/Authentication/AuthenticationController.cs
index 8bfec4318..05b058895 100644
--- a/src/Prowlarr.Http/Authentication/AuthenticationController.cs
+++ b/src/Prowlarr.Http/Authentication/AuthenticationController.cs
@@ -1,9 +1,14 @@
using System.Collections.Generic;
+using System.IO;
using System.Security.Claims;
+using System.Security.Cryptography;
using System.Threading.Tasks;
+using System.Xml;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
+using NLog;
+using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Authentication;
using NzbDrone.Core.Configuration;
@@ -16,11 +21,15 @@ namespace Prowlarr.Http.Authentication
{
private readonly IAuthenticationService _authService;
private readonly IConfigFileProvider _configFileProvider;
+ private readonly IAppFolderInfo _appFolderInfo;
+ private readonly Logger _logger;
- public AuthenticationController(IAuthenticationService authService, IConfigFileProvider configFileProvider)
+ public AuthenticationController(IAuthenticationService authService, IConfigFileProvider configFileProvider, IAppFolderInfo appFolderInfo, Logger logger)
{
_authService = authService;
_configFileProvider = configFileProvider;
+ _appFolderInfo = appFolderInfo;
+ _logger = logger;
}
[HttpPost("login")]
@@ -45,7 +54,23 @@ namespace Prowlarr.Http.Authentication
IsPersistent = resource.RememberMe == "on"
};
- await HttpContext.SignInAsync(AuthenticationType.Forms.ToString(), new ClaimsPrincipal(new ClaimsIdentity(claims, "Cookies", "user", "identifier")), authProperties);
+ try
+ {
+ await HttpContext.SignInAsync(AuthenticationType.Forms.ToString(), new ClaimsPrincipal(new ClaimsIdentity(claims, "Cookies", "user", "identifier")), authProperties);
+ }
+ catch (CryptographicException e)
+ {
+ if (e.InnerException is XmlException)
+ {
+ _logger.Error(e, "Failed to authenticate user due to corrupt XML. Please remove all XML files from {0} and restart Prowlarr", Path.Combine(_appFolderInfo.AppDataFolder, "asp"));
+ }
+ else
+ {
+ _logger.Error(e, "Failed to authenticate user. {0}", e.Message);
+ }
+
+ return Unauthorized();
+ }
if (returnUrl.IsNullOrWhiteSpace())
{
diff --git a/src/Prowlarr.Http/Prowlarr.Http.csproj b/src/Prowlarr.Http/Prowlarr.Http.csproj
index 0a78a2391..e326e5ed3 100644
--- a/src/Prowlarr.Http/Prowlarr.Http.csproj
+++ b/src/Prowlarr.Http/Prowlarr.Http.csproj
@@ -4,8 +4,8 @@
-
-
+
+
diff --git a/yarn.lock b/yarn.lock
index f7d3237b1..c63e95086 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -15,7 +15,7 @@
"@jridgewell/gen-mapping" "^0.3.5"
"@jridgewell/trace-mapping" "^0.3.24"
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.25.7":
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7":
version "7.25.7"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.25.7.tgz#438f2c524071531d643c6f0188e1e28f130cebc7"
integrity sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==
@@ -23,47 +23,62 @@
"@babel/highlight" "^7.25.7"
picocolors "^1.0.0"
-"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.7", "@babel/compat-data@^7.25.8":
+"@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0", "@babel/code-frame@^7.26.2":
+ version "7.26.2"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85"
+ integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.25.9"
+ js-tokens "^4.0.0"
+ picocolors "^1.0.0"
+
+"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.7":
version "7.25.8"
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.8.tgz#0376e83df5ab0eb0da18885c0140041f0747a402"
integrity sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==
-"@babel/core@7.25.8":
- version "7.25.8"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.8.tgz#a57137d2a51bbcffcfaeba43cb4dd33ae3e0e1c6"
- integrity sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==
+"@babel/compat-data@^7.25.9", "@babel/compat-data@^7.26.0":
+ version "7.26.3"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.3.tgz#99488264a56b2aded63983abd6a417f03b92ed02"
+ integrity sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==
+
+"@babel/core@7.26.0":
+ version "7.26.0"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40"
+ integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==
dependencies:
"@ampproject/remapping" "^2.2.0"
- "@babel/code-frame" "^7.25.7"
- "@babel/generator" "^7.25.7"
- "@babel/helper-compilation-targets" "^7.25.7"
- "@babel/helper-module-transforms" "^7.25.7"
- "@babel/helpers" "^7.25.7"
- "@babel/parser" "^7.25.8"
- "@babel/template" "^7.25.7"
- "@babel/traverse" "^7.25.7"
- "@babel/types" "^7.25.8"
+ "@babel/code-frame" "^7.26.0"
+ "@babel/generator" "^7.26.0"
+ "@babel/helper-compilation-targets" "^7.25.9"
+ "@babel/helper-module-transforms" "^7.26.0"
+ "@babel/helpers" "^7.26.0"
+ "@babel/parser" "^7.26.0"
+ "@babel/template" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
+ "@babel/types" "^7.26.0"
convert-source-map "^2.0.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
json5 "^2.2.3"
semver "^6.3.1"
-"@babel/eslint-parser@7.25.8":
- version "7.25.8"
- resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.25.8.tgz#0119dec46be547d7a339978dedb9d29e517c2443"
- integrity sha512-Po3VLMN7fJtv0nsOjBDSbO1J71UhzShE9MuOSkWEV9IZQXzhZklYtzKZ8ZD/Ij3a0JBv1AG3Ny2L3jvAHQVOGg==
+"@babel/eslint-parser@7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.25.9.tgz#603c68a63078796527bc9d0833f5e52dd5f9224c"
+ integrity sha512-5UXfgpK0j0Xr/xIdgdLEhOFxaDZ0bRPWJJchRpqOSur/3rZoPbqqki5mm0p4NE2cs28krBEiSM2MB7//afRSQQ==
dependencies:
"@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1"
eslint-visitor-keys "^2.1.0"
semver "^6.3.1"
-"@babel/generator@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.7.tgz#de86acbeb975a3e11ee92dd52223e6b03b479c56"
- integrity sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==
+"@babel/generator@^7.26.0", "@babel/generator@^7.26.3":
+ version "7.26.3"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.3.tgz#ab8d4360544a425c90c248df7059881f4b2ce019"
+ integrity sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==
dependencies:
- "@babel/types" "^7.25.7"
+ "@babel/parser" "^7.26.3"
+ "@babel/types" "^7.26.3"
"@jridgewell/gen-mapping" "^0.3.5"
"@jridgewell/trace-mapping" "^0.3.25"
jsesc "^3.0.2"
@@ -75,15 +90,14 @@
dependencies:
"@babel/types" "^7.25.7"
-"@babel/helper-builder-binary-assignment-operator-visitor@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.7.tgz#d721650c1f595371e0a23ee816f1c3c488c0d622"
- integrity sha512-12xfNeKNH7jubQNm7PAkzlLwEmCs1tfuX3UjIw6vP6QXi+leKh6+LyC/+Ed4EIQermwd58wsyh070yjDHFlNGg==
+"@babel/helper-annotate-as-pure@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4"
+ integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==
dependencies:
- "@babel/traverse" "^7.25.7"
- "@babel/types" "^7.25.7"
+ "@babel/types" "^7.25.9"
-"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.7":
+"@babel/helper-compilation-targets@^7.22.6":
version "7.25.7"
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz#11260ac3322dda0ef53edfae6e97b961449f5fa4"
integrity sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==
@@ -94,20 +108,31 @@
lru-cache "^5.1.1"
semver "^6.3.1"
-"@babel/helper-create-class-features-plugin@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.7.tgz#5d65074c76cae75607421c00d6bd517fe1892d6b"
- integrity sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw==
+"@babel/helper-compilation-targets@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875"
+ integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.25.7"
- "@babel/helper-member-expression-to-functions" "^7.25.7"
- "@babel/helper-optimise-call-expression" "^7.25.7"
- "@babel/helper-replace-supers" "^7.25.7"
- "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7"
- "@babel/traverse" "^7.25.7"
+ "@babel/compat-data" "^7.25.9"
+ "@babel/helper-validator-option" "^7.25.9"
+ browserslist "^4.24.0"
+ lru-cache "^5.1.1"
semver "^6.3.1"
-"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.7":
+"@babel/helper-create-class-features-plugin@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz#7644147706bb90ff613297d49ed5266bde729f83"
+ integrity sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.25.9"
+ "@babel/helper-member-expression-to-functions" "^7.25.9"
+ "@babel/helper-optimise-call-expression" "^7.25.9"
+ "@babel/helper-replace-supers" "^7.25.9"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
+ semver "^6.3.1"
+
+"@babel/helper-create-regexp-features-plugin@^7.18.6":
version "7.25.7"
resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.7.tgz#dcb464f0e2cdfe0c25cc2a0a59c37ab940ce894e"
integrity sha512-byHhumTj/X47wJ6C6eLpK7wW/WBEcnUeb7D0FNc/jFQnQVw7DOso3Zz5u9x/zLrFVkHa89ZGDbkAa1D54NdrCQ==
@@ -116,6 +141,15 @@
regexpu-core "^6.1.1"
semver "^6.3.1"
+"@babel/helper-create-regexp-features-plugin@^7.25.9":
+ version "7.26.3"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz#5169756ecbe1d95f7866b90bb555b022595302a0"
+ integrity sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.25.9"
+ regexpu-core "^6.2.0"
+ semver "^6.3.1"
+
"@babel/helper-define-polyfill-provider@^0.6.2":
version "0.6.2"
resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d"
@@ -127,109 +161,120 @@
lodash.debounce "^4.0.8"
resolve "^1.14.2"
-"@babel/helper-member-expression-to-functions@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.7.tgz#541a33b071f0355a63a0fa4bdf9ac360116b8574"
- integrity sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA==
+"@babel/helper-member-expression-to-functions@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz#9dfffe46f727005a5ea29051ac835fb735e4c1a3"
+ integrity sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==
dependencies:
- "@babel/traverse" "^7.25.7"
- "@babel/types" "^7.25.7"
+ "@babel/traverse" "^7.25.9"
+ "@babel/types" "^7.25.9"
-"@babel/helper-module-imports@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz#dba00d9523539152906ba49263e36d7261040472"
- integrity sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==
+"@babel/helper-module-imports@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715"
+ integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==
dependencies:
- "@babel/traverse" "^7.25.7"
- "@babel/types" "^7.25.7"
+ "@babel/traverse" "^7.25.9"
+ "@babel/types" "^7.25.9"
-"@babel/helper-module-transforms@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz#2ac9372c5e001b19bc62f1fe7d96a18cb0901d1a"
- integrity sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==
+"@babel/helper-module-transforms@^7.25.9", "@babel/helper-module-transforms@^7.26.0":
+ version "7.26.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae"
+ integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==
dependencies:
- "@babel/helper-module-imports" "^7.25.7"
- "@babel/helper-simple-access" "^7.25.7"
- "@babel/helper-validator-identifier" "^7.25.7"
- "@babel/traverse" "^7.25.7"
+ "@babel/helper-module-imports" "^7.25.9"
+ "@babel/helper-validator-identifier" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
-"@babel/helper-optimise-call-expression@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.7.tgz#1de1b99688e987af723eed44fa7fc0ee7b97d77a"
- integrity sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng==
+"@babel/helper-optimise-call-expression@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz#3324ae50bae7e2ab3c33f60c9a877b6a0146b54e"
+ integrity sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==
dependencies:
- "@babel/types" "^7.25.7"
+ "@babel/types" "^7.25.9"
-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.7", "@babel/helper-plugin-utils@^7.8.0":
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0":
version "7.25.7"
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz#8ec5b21812d992e1ef88a9b068260537b6f0e36c"
integrity sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==
-"@babel/helper-remap-async-to-generator@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.7.tgz#9efdc39df5f489bcd15533c912b6c723a0a65021"
- integrity sha512-kRGE89hLnPfcz6fTrlNU+uhgcwv0mBE4Gv3P9Ke9kLVJYpi4AMVVEElXvB5CabrPZW4nCM8P8UyyjrzCM0O2sw==
- dependencies:
- "@babel/helper-annotate-as-pure" "^7.25.7"
- "@babel/helper-wrap-function" "^7.25.7"
- "@babel/traverse" "^7.25.7"
+"@babel/helper-plugin-utils@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46"
+ integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==
-"@babel/helper-replace-supers@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.7.tgz#38cfda3b6e990879c71d08d0fef9236b62bd75f5"
- integrity sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw==
+"@babel/helper-remap-async-to-generator@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz#e53956ab3d5b9fb88be04b3e2f31b523afd34b92"
+ integrity sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==
dependencies:
- "@babel/helper-member-expression-to-functions" "^7.25.7"
- "@babel/helper-optimise-call-expression" "^7.25.7"
- "@babel/traverse" "^7.25.7"
+ "@babel/helper-annotate-as-pure" "^7.25.9"
+ "@babel/helper-wrap-function" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
-"@babel/helper-simple-access@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz#5eb9f6a60c5d6b2e0f76057004f8dacbddfae1c0"
- integrity sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==
+"@babel/helper-replace-supers@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz#ba447224798c3da3f8713fc272b145e33da6a5c5"
+ integrity sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==
dependencies:
- "@babel/traverse" "^7.25.7"
- "@babel/types" "^7.25.7"
+ "@babel/helper-member-expression-to-functions" "^7.25.9"
+ "@babel/helper-optimise-call-expression" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
-"@babel/helper-skip-transparent-expression-wrappers@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.7.tgz#382831c91038b1a6d32643f5f49505b8442cb87c"
- integrity sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA==
+"@babel/helper-skip-transparent-expression-wrappers@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz#0b2e1b62d560d6b1954893fd2b705dc17c91f0c9"
+ integrity sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==
dependencies:
- "@babel/traverse" "^7.25.7"
- "@babel/types" "^7.25.7"
+ "@babel/traverse" "^7.25.9"
+ "@babel/types" "^7.25.9"
"@babel/helper-string-parser@^7.25.7":
version "7.25.7"
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz#d50e8d37b1176207b4fe9acedec386c565a44a54"
integrity sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==
+"@babel/helper-string-parser@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c"
+ integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==
+
"@babel/helper-validator-identifier@^7.25.7":
version "7.25.7"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz#77b7f60c40b15c97df735b38a66ba1d7c3e93da5"
integrity sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==
+"@babel/helper-validator-identifier@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7"
+ integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
+
"@babel/helper-validator-option@^7.25.7":
version "7.25.7"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz#97d1d684448228b30b506d90cace495d6f492729"
integrity sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==
-"@babel/helper-wrap-function@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.7.tgz#9f6021dd1c4fdf4ad515c809967fc4bac9a70fe7"
- integrity sha512-MA0roW3JF2bD1ptAaJnvcabsVlNQShUaThyJbCDD4bCp8NEgiFvpoqRI2YS22hHlc2thjO/fTg2ShLMC3jygAg==
- dependencies:
- "@babel/template" "^7.25.7"
- "@babel/traverse" "^7.25.7"
- "@babel/types" "^7.25.7"
+"@babel/helper-validator-option@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72"
+ integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==
-"@babel/helpers@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.7.tgz#091b52cb697a171fe0136ab62e54e407211f09c2"
- integrity sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==
+"@babel/helper-wrap-function@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz#d99dfd595312e6c894bd7d237470025c85eea9d0"
+ integrity sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==
dependencies:
- "@babel/template" "^7.25.7"
- "@babel/types" "^7.25.7"
+ "@babel/template" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
+ "@babel/types" "^7.25.9"
+
+"@babel/helpers@^7.26.0":
+ version "7.26.0"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4"
+ integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==
+ dependencies:
+ "@babel/template" "^7.25.9"
+ "@babel/types" "^7.26.0"
"@babel/highlight@^7.25.7":
version "7.25.7"
@@ -241,58 +286,58 @@
js-tokens "^4.0.0"
picocolors "^1.0.0"
-"@babel/parser@^7.25.7", "@babel/parser@^7.25.8":
- version "7.25.8"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.8.tgz#f6aaf38e80c36129460c1657c0762db584c9d5e2"
- integrity sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==
+"@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.3":
+ version "7.26.3"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.3.tgz#8c51c5db6ddf08134af1ddbacf16aaab48bac234"
+ integrity sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==
dependencies:
- "@babel/types" "^7.25.8"
+ "@babel/types" "^7.26.3"
-"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.7.tgz#93969ac50ef4d68b2504b01b758af714e4cbdd64"
- integrity sha512-UV9Lg53zyebzD1DwQoT9mzkEKa922LNUp5YkTJ6Uta0RbyXaQNUgcvSt7qIu1PpPzVb6rd10OVNTzkyBGeVmxQ==
+"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz#cc2e53ebf0a0340777fff5ed521943e253b4d8fe"
+ integrity sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
- "@babel/traverse" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
-"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.7.tgz#a338d611adb9dcd599b8b1efa200c88ebeffe046"
- integrity sha512-GDDWeVLNxRIkQTnJn2pDOM1pkCgYdSqPeT1a9vh9yIqu2uzzgw1zcqEb+IJOhy+dTBMlNdThrDIksr2o09qrrQ==
+"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz#af9e4fb63ccb8abcb92375b2fcfe36b60c774d30"
+ integrity sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.7.tgz#c5f755e911dfac7ef6957300c0f9c4a8c18c06f4"
- integrity sha512-wxyWg2RYaSUYgmd9MR0FyRGyeOMQE/Uzr1wzd/g5cf5bwi9A4v6HFdDm7y1MgDtod/fLOSTZY6jDgV0xU9d5bA==
+"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz#e8dc26fcd616e6c5bf2bd0d5a2c151d4f92a9137"
+ integrity sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.7.tgz#3b7ea04492ded990978b6deaa1dfca120ad4455a"
- integrity sha512-Xwg6tZpLxc4iQjorYsyGMyfJE7nP5MV8t/Ka58BgiA7Jw0fRqQNcANlLfdJ/yvBt9z9LD2We+BEkT7vLqZRWng==
+"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz#807a667f9158acac6f6164b4beb85ad9ebc9e1d1"
+ integrity sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
- "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7"
- "@babel/plugin-transform-optional-chaining" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
+ "@babel/plugin-transform-optional-chaining" "^7.25.9"
-"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.7.tgz#9622b1d597a703aa3a921e6f58c9c2d9a028d2c5"
- integrity sha512-UVATLMidXrnH+GMUIuxq55nejlj02HP7F5ETyBONzP6G87fPBogG4CH6kxrSrdIuAjdwNO9VzyaYsrZPscWUrw==
+"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz#de7093f1e7deaf68eadd7cc6b07f2ab82543269e"
+ integrity sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
- "@babel/traverse" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
-"@babel/plugin-proposal-export-default-from@7.25.8":
- version "7.25.8"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.25.8.tgz#fa22151caa240683c3659796037237813767f348"
- integrity sha512-5SLPHA/Gk7lNdaymtSVS9jH77Cs7yuHTR3dYj+9q+M7R7tNLXhNuvnmOfafRIzpWL+dtMibuu1I4ofrc768Gkw==
+"@babel/plugin-proposal-export-default-from@7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.25.9.tgz#52702be6ef8367fc8f18b8438278332beeb8f87c"
+ integrity sha512-ykqgwNfSnNOB+C8fV5X4mG3AVmvu+WVxcaU9xHHtBb7PCrPeweMmPjGsn8eMaeJg6SJuoUuZENeeSWaarWqonQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2":
version "7.21.0-placeholder-for-preset-env.2"
@@ -306,33 +351,33 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-import-assertions@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.7.tgz#8ce248f9f4ed4b7ed4cb2e0eb4ed9efd9f52921f"
- integrity sha512-ZvZQRmME0zfJnDQnVBKYzHxXT7lYBB3Revz1GuS7oLXWMgqUPX4G+DDbT30ICClht9WKV34QVrZhSw6WdklwZQ==
+"@babel/plugin-syntax-import-assertions@^7.26.0":
+ version "7.26.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz#620412405058efa56e4a564903b79355020f445f"
+ integrity sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-syntax-import-attributes@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.7.tgz#d78dd0499d30df19a598e63ab895e21b909bc43f"
- integrity sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw==
+"@babel/plugin-syntax-import-attributes@^7.26.0":
+ version "7.26.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7"
+ integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-syntax-jsx@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.7.tgz#5352d398d11ea5e7ef330c854dea1dae0bf18165"
- integrity sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw==
+"@babel/plugin-syntax-jsx@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290"
+ integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-syntax-typescript@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.7.tgz#bfc05b0cc31ebd8af09964650cee723bb228108b"
- integrity sha512-rR+5FDjpCHqqZN2bzZm18bVYGaejGq5ZkpVCJLXor/+zlSrSoc4KWcHI0URVWjl/68Dyr1uwZUz/1njycEAv9g==
+"@babel/plugin-syntax-typescript@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399"
+ integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
"@babel/plugin-syntax-unicode-sets-regex@^7.18.6":
version "7.18.6"
@@ -342,498 +387,505 @@
"@babel/helper-create-regexp-features-plugin" "^7.18.6"
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-transform-arrow-functions@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.7.tgz#1b9ed22e6890a0e9ff470371c73b8c749bcec386"
- integrity sha512-EJN2mKxDwfOUCPxMO6MUI58RN3ganiRAG/MS/S3HfB6QFNjroAMelQo/gybyYq97WerCBAZoyrAoW8Tzdq2jWg==
+"@babel/plugin-transform-arrow-functions@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz#7821d4410bee5daaadbb4cdd9a6649704e176845"
+ integrity sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-async-generator-functions@^7.25.8":
- version "7.25.8"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.8.tgz#3331de02f52cc1f2c75b396bec52188c85b0b1ec"
- integrity sha512-9ypqkozyzpG+HxlH4o4gdctalFGIjjdufzo7I2XPda0iBnZ6a+FO0rIEQcdSPXp02CkvGsII1exJhmROPQd5oA==
+"@babel/plugin-transform-async-generator-functions@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz#1b18530b077d18a407c494eb3d1d72da505283a2"
+ integrity sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
- "@babel/helper-remap-async-to-generator" "^7.25.7"
- "@babel/traverse" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-remap-async-to-generator" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
-"@babel/plugin-transform-async-to-generator@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.7.tgz#a44c7323f8d4285a6c568dd43c5c361d6367ec52"
- integrity sha512-ZUCjAavsh5CESCmi/xCpX1qcCaAglzs/7tmuvoFnJgA1dM7gQplsguljoTg+Ru8WENpX89cQyAtWoaE0I3X3Pg==
+"@babel/plugin-transform-async-to-generator@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz#c80008dacae51482793e5a9c08b39a5be7e12d71"
+ integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==
dependencies:
- "@babel/helper-module-imports" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
- "@babel/helper-remap-async-to-generator" "^7.25.7"
+ "@babel/helper-module-imports" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-remap-async-to-generator" "^7.25.9"
-"@babel/plugin-transform-block-scoped-functions@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.7.tgz#e0b8843d5571719a2f1bf7e284117a3379fcc17c"
- integrity sha512-xHttvIM9fvqW+0a3tZlYcZYSBpSWzGBFIt/sYG3tcdSzBB8ZeVgz2gBP7Df+sM0N1850jrviYSSeUuc+135dmQ==
+"@babel/plugin-transform-block-scoped-functions@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz#5700691dbd7abb93de300ca7be94203764fce458"
+ integrity sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-block-scoping@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.7.tgz#6dab95e98adf780ceef1b1c3ab0e55cd20dd410a"
- integrity sha512-ZEPJSkVZaeTFG/m2PARwLZQ+OG0vFIhPlKHK/JdIMy8DbRJ/htz6LRrTFtdzxi9EHmcwbNPAKDnadpNSIW+Aow==
+"@babel/plugin-transform-block-scoping@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz#c33665e46b06759c93687ca0f84395b80c0473a1"
+ integrity sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-class-properties@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.7.tgz#a389cfca7a10ac80e3ff4c75fca08bd097ad1523"
- integrity sha512-mhyfEW4gufjIqYFo9krXHJ3ElbFLIze5IDp+wQTxoPd+mwFb1NxatNAwmv8Q8Iuxv7Zc+q8EkiMQwc9IhyGf4g==
+"@babel/plugin-transform-class-properties@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz#a8ce84fedb9ad512549984101fa84080a9f5f51f"
+ integrity sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-create-class-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-class-static-block@^7.25.8":
- version "7.25.8"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.8.tgz#a8af22028920fe404668031eceb4c3aadccb5262"
- integrity sha512-e82gl3TCorath6YLf9xUwFehVvjvfqFhdOo4+0iVIVju+6XOi5XHkqB3P2AXnSwoeTX0HBoXq5gJFtvotJzFnQ==
+"@babel/plugin-transform-class-static-block@^7.26.0":
+ version "7.26.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz#6c8da219f4eb15cae9834ec4348ff8e9e09664a0"
+ integrity sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-create-class-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-classes@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.7.tgz#5103206cf80d02283bbbd044509ea3b65d0906bb"
- integrity sha512-9j9rnl+YCQY0IGoeipXvnk3niWicIB6kCsWRGLwX241qSXpbA4MKxtp/EdvFxsc4zI5vqfLxzOd0twIJ7I99zg==
+"@babel/plugin-transform-classes@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz#7152457f7880b593a63ade8a861e6e26a4469f52"
+ integrity sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.25.7"
- "@babel/helper-compilation-targets" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
- "@babel/helper-replace-supers" "^7.25.7"
- "@babel/traverse" "^7.25.7"
+ "@babel/helper-annotate-as-pure" "^7.25.9"
+ "@babel/helper-compilation-targets" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-replace-supers" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
globals "^11.1.0"
-"@babel/plugin-transform-computed-properties@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.7.tgz#7f621f0aa1354b5348a935ab12e3903842466f65"
- integrity sha512-QIv+imtM+EtNxg/XBKL3hiWjgdLjMOmZ+XzQwSgmBfKbfxUjBzGgVPklUuE55eq5/uVoh8gg3dqlrwR/jw3ZeA==
+"@babel/plugin-transform-computed-properties@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz#db36492c78460e534b8852b1d5befe3c923ef10b"
+ integrity sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
- "@babel/template" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/template" "^7.25.9"
-"@babel/plugin-transform-destructuring@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.7.tgz#f6f26a9feefb5aa41fd45b6f5838901b5333d560"
- integrity sha512-xKcfLTlJYUczdaM1+epcdh1UGewJqr9zATgrNHcLBcV2QmfvPPEixo/sK/syql9cEmbr7ulu5HMFG5vbbt/sEA==
+"@babel/plugin-transform-destructuring@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz#966ea2595c498224340883602d3cfd7a0c79cea1"
+ integrity sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-dotall-regex@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.7.tgz#9d775c4a3ff1aea64045300fcd4309b4a610ef02"
- integrity sha512-kXzXMMRzAtJdDEgQBLF4oaiT6ZCU3oWHgpARnTKDAqPkDJ+bs3NrZb310YYevR5QlRo3Kn7dzzIdHbZm1VzJdQ==
+"@babel/plugin-transform-dotall-regex@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz#bad7945dd07734ca52fe3ad4e872b40ed09bb09a"
+ integrity sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-create-regexp-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-duplicate-keys@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.7.tgz#fbba7d1155eab76bd4f2a038cbd5d65883bd7a93"
- integrity sha512-by+v2CjoL3aMnWDOyCIg+yxU9KXSRa9tN6MbqggH5xvymmr9p4AMjYkNlQy4brMceBnUyHZ9G8RnpvT8wP7Cfg==
+"@babel/plugin-transform-duplicate-keys@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz#8850ddf57dce2aebb4394bb434a7598031059e6d"
+ integrity sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.7.tgz#102b31608dcc22c08fbca1894e104686029dc141"
- integrity sha512-HvS6JF66xSS5rNKXLqkk7L9c/jZ/cdIVIcoPVrnl8IsVpLggTjXs8OWekbLHs/VtYDDh5WXnQyeE3PPUGm22MA==
+"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz#6f7259b4de127721a08f1e5165b852fcaa696d31"
+ integrity sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-create-regexp-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-dynamic-import@^7.25.8":
- version "7.25.8"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.8.tgz#f1edbe75b248cf44c70c8ca8ed3818a668753aaa"
- integrity sha512-gznWY+mr4ZQL/EWPcbBQUP3BXS5FwZp8RUOw06BaRn8tQLzN4XLIxXejpHN9Qo8x8jjBmAAKp6FoS51AgkSA/A==
+"@babel/plugin-transform-dynamic-import@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz#23e917de63ed23c6600c5dd06d94669dce79f7b8"
+ integrity sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-exponentiation-operator@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.7.tgz#5961a3a23a398faccd6cddb34a2182807d75fb5f"
- integrity sha512-yjqtpstPfZ0h/y40fAXRv2snciYr0OAoMXY/0ClC7tm4C/nG5NJKmIItlaYlLbIVAWNfrYuy9dq1bE0SbX0PEg==
+"@babel/plugin-transform-exponentiation-operator@^7.25.9":
+ version "7.26.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz#e29f01b6de302c7c2c794277a48f04a9ca7f03bc"
+ integrity sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==
dependencies:
- "@babel/helper-builder-binary-assignment-operator-visitor" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-export-namespace-from@^7.25.8":
- version "7.25.8"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.8.tgz#d1988c3019a380b417e0516418b02804d3858145"
- integrity sha512-sPtYrduWINTQTW7FtOy99VCTWp4H23UX7vYcut7S4CIMEXU+54zKX9uCoGkLsWXteyaMXzVHgzWbLfQ1w4GZgw==
+"@babel/plugin-transform-export-namespace-from@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz#90745fe55053394f554e40584cda81f2c8a402a2"
+ integrity sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-for-of@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.7.tgz#0acfea0f27aa290818b5b48a5a44b3f03fc13669"
- integrity sha512-n/TaiBGJxYFWvpJDfsxSj9lEEE44BFM1EPGz4KEiTipTgkoFVVcCmzAL3qA7fdQU96dpo4gGf5HBx/KnDvqiHw==
+"@babel/plugin-transform-for-of@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz#4bdc7d42a213397905d89f02350c5267866d5755"
+ integrity sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
- "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
-"@babel/plugin-transform-function-name@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.7.tgz#7e394ccea3693902a8b50ded8b6ae1fa7b8519fd"
- integrity sha512-5MCTNcjCMxQ63Tdu9rxyN6cAWurqfrDZ76qvVPrGYdBxIj+EawuuxTu/+dgJlhK5eRz3v1gLwp6XwS8XaX2NiQ==
+"@babel/plugin-transform-function-name@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz#939d956e68a606661005bfd550c4fc2ef95f7b97"
+ integrity sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==
dependencies:
- "@babel/helper-compilation-targets" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
- "@babel/traverse" "^7.25.7"
+ "@babel/helper-compilation-targets" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
-"@babel/plugin-transform-json-strings@^7.25.8":
- version "7.25.8"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.8.tgz#6fb3ec383a2ea92652289fdba653e3f9de722694"
- integrity sha512-4OMNv7eHTmJ2YXs3tvxAfa/I43di+VcF+M4Wt66c88EAED1RoGaf1D64cL5FkRpNL+Vx9Hds84lksWvd/wMIdA==
+"@babel/plugin-transform-json-strings@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz#c86db407cb827cded902a90c707d2781aaa89660"
+ integrity sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-literals@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.7.tgz#70cbdc742f2cfdb1a63ea2cbd018d12a60b213c3"
- integrity sha512-fwzkLrSu2fESR/cm4t6vqd7ebNIopz2QHGtjoU+dswQo/P6lwAG04Q98lliE3jkz/XqnbGFLnUcE0q0CVUf92w==
+"@babel/plugin-transform-literals@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz#1a1c6b4d4aa59bc4cad5b6b3a223a0abd685c9de"
+ integrity sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-logical-assignment-operators@^7.25.8":
- version "7.25.8"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.8.tgz#01868ff92daa9e525b4c7902aa51979082a05710"
- integrity sha512-f5W0AhSbbI+yY6VakT04jmxdxz+WsID0neG7+kQZbCOjuyJNdL5Nn4WIBm4hRpKnUcO9lP0eipUhFN12JpoH8g==
+"@babel/plugin-transform-logical-assignment-operators@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz#b19441a8c39a2fda0902900b306ea05ae1055db7"
+ integrity sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-member-expression-literals@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.7.tgz#0a36c3fbd450cc9e6485c507f005fa3d1bc8fca5"
- integrity sha512-Std3kXwpXfRV0QtQy5JJcRpkqP8/wG4XL7hSKZmGlxPlDqmpXtEPRmhF7ztnlTCtUN3eXRUJp+sBEZjaIBVYaw==
+"@babel/plugin-transform-member-expression-literals@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz#63dff19763ea64a31f5e6c20957e6a25e41ed5de"
+ integrity sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-modules-amd@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.7.tgz#bb4e543b5611f6c8c685a2fd485408713a3adf3d"
- integrity sha512-CgselSGCGzjQvKzghCvDTxKHP3iooenLpJDO842ehn5D2G5fJB222ptnDwQho0WjEvg7zyoxb9P+wiYxiJX5yA==
+"@babel/plugin-transform-modules-amd@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz#49ba478f2295101544abd794486cd3088dddb6c5"
+ integrity sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==
dependencies:
- "@babel/helper-module-transforms" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-module-transforms" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-modules-commonjs@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.7.tgz#173f0c791bb7407c092ce6d77ee90eb3f2d1d2fd"
- integrity sha512-L9Gcahi0kKFYXvweO6n0wc3ZG1ChpSFdgG+eV1WYZ3/dGbJK7vvk91FgGgak8YwRgrCuihF8tE/Xg07EkL5COg==
+"@babel/plugin-transform-modules-commonjs@^7.25.9":
+ version "7.26.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz#8f011d44b20d02c3de44d8850d971d8497f981fb"
+ integrity sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==
dependencies:
- "@babel/helper-module-transforms" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
- "@babel/helper-simple-access" "^7.25.7"
+ "@babel/helper-module-transforms" "^7.26.0"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-modules-systemjs@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.7.tgz#8b14d319a177cc9c85ef8b0512afd429d9e2e60b"
- integrity sha512-t9jZIvBmOXJsiuyOwhrIGs8dVcD6jDyg2icw1VL4A/g+FnWyJKwUfSSU2nwJuMV2Zqui856El9u+ElB+j9fV1g==
+"@babel/plugin-transform-modules-systemjs@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz#8bd1b43836269e3d33307151a114bcf3ba6793f8"
+ integrity sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==
dependencies:
- "@babel/helper-module-transforms" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
- "@babel/helper-validator-identifier" "^7.25.7"
- "@babel/traverse" "^7.25.7"
+ "@babel/helper-module-transforms" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-validator-identifier" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
-"@babel/plugin-transform-modules-umd@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.7.tgz#00ee7a7e124289549381bfb0e24d87fd7f848367"
- integrity sha512-p88Jg6QqsaPh+EB7I9GJrIqi1Zt4ZBHUQtjw3z1bzEXcLh6GfPqzZJ6G+G1HBGKUNukT58MnKG7EN7zXQBCODw==
+"@babel/plugin-transform-modules-umd@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz#6710079cdd7c694db36529a1e8411e49fcbf14c9"
+ integrity sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==
dependencies:
- "@babel/helper-module-transforms" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-module-transforms" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-named-capturing-groups-regex@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.7.tgz#a2f3f6d7f38693b462542951748f0a72a34d196d"
- integrity sha512-BtAT9LzCISKG3Dsdw5uso4oV1+v2NlVXIIomKJgQybotJY3OwCwJmkongjHgwGKoZXd0qG5UZ12JUlDQ07W6Ow==
+"@babel/plugin-transform-named-capturing-groups-regex@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz#454990ae6cc22fd2a0fa60b3a2c6f63a38064e6a"
+ integrity sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-create-regexp-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-new-target@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.7.tgz#52b2bde523b76c548749f38dc3054f1f45e82bc9"
- integrity sha512-CfCS2jDsbcZaVYxRFo2qtavW8SpdzmBXC2LOI4oO0rP+JSRDxxF3inF4GcPsLgfb5FjkhXG5/yR/lxuRs2pySA==
+"@babel/plugin-transform-new-target@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz#42e61711294b105c248336dcb04b77054ea8becd"
+ integrity sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-nullish-coalescing-operator@^7.25.8":
- version "7.25.8"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.8.tgz#befb4900c130bd52fccf2b926314557987f1b552"
- integrity sha512-Z7WJJWdQc8yCWgAmjI3hyC+5PXIubH9yRKzkl9ZEG647O9szl9zvmKLzpbItlijBnVhTUf1cpyWBsZ3+2wjWPQ==
+"@babel/plugin-transform-nullish-coalescing-operator@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz#bcb1b0d9e948168102d5f7104375ca21c3266949"
+ integrity sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-numeric-separator@^7.25.8":
- version "7.25.8"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.8.tgz#91e370486371637bd42161052f2602c701386891"
- integrity sha512-rm9a5iEFPS4iMIy+/A/PiS0QN0UyjPIeVvbU5EMZFKJZHt8vQnasbpo3T3EFcxzCeYO0BHfc4RqooCZc51J86Q==
+"@babel/plugin-transform-numeric-separator@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz#bfed75866261a8b643468b0ccfd275f2033214a1"
+ integrity sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-object-rest-spread@^7.25.8":
- version "7.25.8"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.8.tgz#0904ac16bcce41df4db12d915d6780f85c7fb04b"
- integrity sha512-LkUu0O2hnUKHKE7/zYOIjByMa4VRaV2CD/cdGz0AxU9we+VA3kDDggKEzI0Oz1IroG+6gUP6UmWEHBMWZU316g==
+"@babel/plugin-transform-object-rest-spread@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz#0203725025074164808bcf1a2cfa90c652c99f18"
+ integrity sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==
dependencies:
- "@babel/helper-compilation-targets" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
- "@babel/plugin-transform-parameters" "^7.25.7"
+ "@babel/helper-compilation-targets" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/plugin-transform-parameters" "^7.25.9"
-"@babel/plugin-transform-object-super@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.7.tgz#582a9cea8cf0a1e02732be5b5a703a38dedf5661"
- integrity sha512-pWT6UXCEW3u1t2tcAGtE15ornCBvopHj9Bps9D2DsH15APgNVOTwwczGckX+WkAvBmuoYKRCFa4DK+jM8vh5AA==
+"@babel/plugin-transform-object-super@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz#385d5de135162933beb4a3d227a2b7e52bb4cf03"
+ integrity sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
- "@babel/helper-replace-supers" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-replace-supers" "^7.25.9"
-"@babel/plugin-transform-optional-catch-binding@^7.25.8":
- version "7.25.8"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.8.tgz#2649b86a3bb202c6894ec81a6ddf41b94d8f3103"
- integrity sha512-EbQYweoMAHOn7iJ9GgZo14ghhb9tTjgOc88xFgYngifx7Z9u580cENCV159M4xDh3q/irbhSjZVpuhpC2gKBbg==
+"@babel/plugin-transform-optional-catch-binding@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz#10e70d96d52bb1f10c5caaac59ac545ea2ba7ff3"
+ integrity sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-optional-chaining@^7.25.7", "@babel/plugin-transform-optional-chaining@^7.25.8":
- version "7.25.8"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.8.tgz#f46283b78adcc5b6ab988a952f989e7dce70653f"
- integrity sha512-q05Bk7gXOxpTHoQ8RSzGSh/LHVB9JEIkKnk3myAWwZHnYiTGYtbdrYkIsS8Xyh4ltKf7GNUSgzs/6P2bJtBAQg==
+"@babel/plugin-transform-optional-chaining@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz#e142eb899d26ef715435f201ab6e139541eee7dd"
+ integrity sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
- "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
-"@babel/plugin-transform-parameters@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.7.tgz#80c38b03ef580f6d6bffe1c5254bb35986859ac7"
- integrity sha512-FYiTvku63me9+1Nz7TOx4YMtW3tWXzfANZtrzHhUZrz4d47EEtMQhzFoZWESfXuAMMT5mwzD4+y1N8ONAX6lMQ==
+"@babel/plugin-transform-parameters@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz#b856842205b3e77e18b7a7a1b94958069c7ba257"
+ integrity sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-private-methods@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.7.tgz#c790a04f837b4bd61d6b0317b43aa11ff67dce80"
- integrity sha512-KY0hh2FluNxMLwOCHbxVOKfdB5sjWG4M183885FmaqWWiGMhRZq4DQRKH6mHdEucbJnyDyYiZNwNG424RymJjA==
+"@babel/plugin-transform-private-methods@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz#847f4139263577526455d7d3223cd8bda51e3b57"
+ integrity sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-create-class-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-private-property-in-object@^7.25.8":
- version "7.25.8"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.8.tgz#1234f856ce85e061f9688764194e51ea7577c434"
- integrity sha512-8Uh966svuB4V8RHHg0QJOB32QK287NBksJOByoKmHMp1TAobNniNalIkI2i5IPj5+S9NYCG4VIjbEuiSN8r+ow==
+"@babel/plugin-transform-private-property-in-object@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz#9c8b73e64e6cc3cbb2743633885a7dd2c385fe33"
+ integrity sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.25.7"
- "@babel/helper-create-class-features-plugin" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-annotate-as-pure" "^7.25.9"
+ "@babel/helper-create-class-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-property-literals@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.7.tgz#a8612b4ea4e10430f00012ecf0155662c7d6550d"
- integrity sha512-lQEeetGKfFi0wHbt8ClQrUSUMfEeI3MMm74Z73T9/kuz990yYVtfofjf3NuA42Jy3auFOpbjDyCSiIkTs1VIYw==
+"@babel/plugin-transform-property-literals@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz#d72d588bd88b0dec8b62e36f6fda91cedfe28e3f"
+ integrity sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-react-display-name@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.7.tgz#2753e875a1b702fb1d806c4f5d4c194d64cadd88"
- integrity sha512-r0QY7NVU8OnrwE+w2IWiRom0wwsTbjx4+xH2RTd7AVdof3uurXOF+/mXHQDRk+2jIvWgSaCHKMgggfvM4dyUGA==
+"@babel/plugin-transform-react-display-name@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz#4b79746b59efa1f38c8695065a92a9f5afb24f7d"
+ integrity sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-react-jsx-development@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.7.tgz#2fbd77887b8fa2942d7cb61edf1029ea1b048554"
- integrity sha512-5yd3lH1PWxzW6IZj+p+Y4OLQzz0/LzlOG8vGqonHfVR3euf1vyzyMUJk9Ac+m97BH46mFc/98t9PmYLyvgL3qg==
+"@babel/plugin-transform-react-jsx-development@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz#8fd220a77dd139c07e25225a903b8be8c829e0d7"
+ integrity sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==
dependencies:
- "@babel/plugin-transform-react-jsx" "^7.25.7"
+ "@babel/plugin-transform-react-jsx" "^7.25.9"
-"@babel/plugin-transform-react-jsx@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.7.tgz#f5e2af6020a562fe048dd343e571c4428e6c5632"
- integrity sha512-vILAg5nwGlR9EXE8JIOX4NHXd49lrYbN8hnjffDtoULwpL9hUx/N55nqh2qd0q6FyNDfjl9V79ecKGvFbcSA0Q==
+"@babel/plugin-transform-react-jsx@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz#06367940d8325b36edff5e2b9cbe782947ca4166"
+ integrity sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.25.7"
- "@babel/helper-module-imports" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
- "@babel/plugin-syntax-jsx" "^7.25.7"
- "@babel/types" "^7.25.7"
+ "@babel/helper-annotate-as-pure" "^7.25.9"
+ "@babel/helper-module-imports" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/plugin-syntax-jsx" "^7.25.9"
+ "@babel/types" "^7.25.9"
-"@babel/plugin-transform-react-pure-annotations@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.7.tgz#6d0b8dadb2d3c5cbb8ade68c5efd49470b0d65f7"
- integrity sha512-6YTHJ7yjjgYqGc8S+CbEXhLICODk0Tn92j+vNJo07HFk9t3bjFgAKxPLFhHwF2NjmQVSI1zBRfBWUeVBa2osfA==
+"@babel/plugin-transform-react-pure-annotations@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz#ea1c11b2f9dbb8e2d97025f43a3b5bc47e18ae62"
+ integrity sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-annotate-as-pure" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-regenerator@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.7.tgz#6eb006e6d26f627bc2f7844a9f19770721ad6f3e"
- integrity sha512-mgDoQCRjrY3XK95UuV60tZlFCQGXEtMg8H+IsW72ldw1ih1jZhzYXbJvghmAEpg5UVhhnCeia1CkGttUvCkiMQ==
+"@babel/plugin-transform-regenerator@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz#03a8a4670d6cebae95305ac6defac81ece77740b"
+ integrity sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
regenerator-transform "^0.15.2"
-"@babel/plugin-transform-reserved-words@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.7.tgz#dc56b25e02afaabef3ce0c5b06b0916e8523e995"
- integrity sha512-3OfyfRRqiGeOvIWSagcwUTVk2hXBsr/ww7bLn6TRTuXnexA+Udov2icFOxFX9abaj4l96ooYkcNN1qi2Zvqwng==
+"@babel/plugin-transform-regexp-modifiers@^7.26.0":
+ version "7.26.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz#2f5837a5b5cd3842a919d8147e9903cc7455b850"
+ integrity sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-create-regexp-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-shorthand-properties@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.7.tgz#92690a9c671915602d91533c278cc8f6bf12275f"
- integrity sha512-uBbxNwimHi5Bv3hUccmOFlUy3ATO6WagTApenHz9KzoIdn0XeACdB12ZJ4cjhuB2WSi80Ez2FWzJnarccriJeA==
+"@babel/plugin-transform-reserved-words@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz#0398aed2f1f10ba3f78a93db219b27ef417fb9ce"
+ integrity sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-spread@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.7.tgz#df83e899a9fc66284ee601a7b738568435b92998"
- integrity sha512-Mm6aeymI0PBh44xNIv/qvo8nmbkpZze1KvR8MkEqbIREDxoiWTi18Zr2jryfRMwDfVZF9foKh060fWgni44luw==
+"@babel/plugin-transform-shorthand-properties@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz#bb785e6091f99f826a95f9894fc16fde61c163f2"
+ integrity sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
- "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-sticky-regex@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.7.tgz#341c7002bef7f29037be7fb9684e374442dd0d17"
- integrity sha512-ZFAeNkpGuLnAQ/NCsXJ6xik7Id+tHuS+NT+ue/2+rn/31zcdnupCdmunOizEaP0JsUmTFSTOPoQY7PkK2pttXw==
+"@babel/plugin-transform-spread@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz#24a35153931b4ba3d13cec4a7748c21ab5514ef9"
+ integrity sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
-"@babel/plugin-transform-template-literals@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.7.tgz#e566c581bb16d8541dd8701093bb3457adfce16b"
- integrity sha512-SI274k0nUsFFmyQupiO7+wKATAmMFf8iFgq2O+vVFXZ0SV9lNfT1NGzBEhjquFmD8I9sqHLguH+gZVN3vww2AA==
+"@babel/plugin-transform-sticky-regex@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz#c7f02b944e986a417817b20ba2c504dfc1453d32"
+ integrity sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-typeof-symbol@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.7.tgz#debb1287182efd20488f126be343328c679b66eb"
- integrity sha512-OmWmQtTHnO8RSUbL0NTdtpbZHeNTnm68Gj5pA4Y2blFNh+V4iZR68V1qL9cI37J21ZN7AaCnkfdHtLExQPf2uA==
+"@babel/plugin-transform-template-literals@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz#6dbd4a24e8fad024df76d1fac6a03cf413f60fe1"
+ integrity sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-typescript@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.7.tgz#8fc7c3d28ddd36bce45b9b48594129d0e560cfbe"
- integrity sha512-VKlgy2vBzj8AmEzunocMun2fF06bsSWV+FvVXohtL6FGve/+L217qhHxRTVGHEDO/YR8IANcjzgJsd04J8ge5Q==
+"@babel/plugin-transform-typeof-symbol@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz#224ba48a92869ddbf81f9b4a5f1204bbf5a2bc4b"
+ integrity sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.25.7"
- "@babel/helper-create-class-features-plugin" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
- "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7"
- "@babel/plugin-syntax-typescript" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-unicode-escapes@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.7.tgz#973592b6d13a914794e1de8cf1383e50e0f87f81"
- integrity sha512-BN87D7KpbdiABA+t3HbVqHzKWUDN3dymLaTnPFAMyc8lV+KN3+YzNhVRNdinaCPA4AUqx7ubXbQ9shRjYBl3SQ==
+"@babel/plugin-transform-typescript@^7.25.9":
+ version "7.26.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.3.tgz#3d6add9c78735623317387ee26d5ada540eee3fd"
+ integrity sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-annotate-as-pure" "^7.25.9"
+ "@babel/helper-create-class-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
+ "@babel/plugin-syntax-typescript" "^7.25.9"
-"@babel/plugin-transform-unicode-property-regex@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.7.tgz#25349197cce964b1343f74fa7cfdf791a1b1919e"
- integrity sha512-IWfR89zcEPQGB/iB408uGtSPlQd3Jpq11Im86vUgcmSTcoWAiQMCTOa2K2yNNqFJEBVICKhayctee65Ka8OB0w==
+"@babel/plugin-transform-unicode-escapes@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz#a75ef3947ce15363fccaa38e2dd9bc70b2788b82"
+ integrity sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-unicode-regex@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.7.tgz#f93a93441baf61f713b6d5552aaa856bfab34809"
- integrity sha512-8JKfg/hiuA3qXnlLx8qtv5HWRbgyFx2hMMtpDDuU2rTckpKkGu4ycK5yYHwuEa16/quXfoxHBIApEsNyMWnt0g==
+"@babel/plugin-transform-unicode-property-regex@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz#a901e96f2c1d071b0d1bb5dc0d3c880ce8f53dd3"
+ integrity sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-create-regexp-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-unicode-sets-regex@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.7.tgz#d1b3295d29e0f8f4df76abc909ad1ebee919560c"
- integrity sha512-YRW8o9vzImwmh4Q3Rffd09bH5/hvY0pxg+1H1i0f7APoUeg12G7+HhLj9ZFNIrYkgBXhIijPJ+IXypN0hLTIbw==
+"@babel/plugin-transform-unicode-regex@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz#5eae747fe39eacf13a8bd006a4fb0b5d1fa5e9b1"
+ integrity sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
+ "@babel/helper-create-regexp-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/preset-env@7.25.8":
- version "7.25.8"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.8.tgz#dc6b719627fb29cd9cccbbbe041802fd575b524c"
- integrity sha512-58T2yulDHMN8YMUxiLq5YmWUnlDCyY1FsHM+v12VMx+1/FlrUj5tY50iDCpofFQEM8fMYOaY9YRvym2jcjn1Dg==
+"@babel/plugin-transform-unicode-sets-regex@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz#65114c17b4ffc20fa5b163c63c70c0d25621fabe"
+ integrity sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==
dependencies:
- "@babel/compat-data" "^7.25.8"
- "@babel/helper-compilation-targets" "^7.25.7"
- "@babel/helper-plugin-utils" "^7.25.7"
- "@babel/helper-validator-option" "^7.25.7"
- "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.7"
- "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.7"
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.7"
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.7"
- "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.7"
+ "@babel/helper-create-regexp-features-plugin" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/preset-env@7.26.0":
+ version "7.26.0"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.26.0.tgz#30e5c6bc1bcc54865bff0c5a30f6d4ccdc7fa8b1"
+ integrity sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==
+ dependencies:
+ "@babel/compat-data" "^7.26.0"
+ "@babel/helper-compilation-targets" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-validator-option" "^7.25.9"
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.9"
+ "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.9"
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.9"
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.9"
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.9"
"@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2"
- "@babel/plugin-syntax-import-assertions" "^7.25.7"
- "@babel/plugin-syntax-import-attributes" "^7.25.7"
+ "@babel/plugin-syntax-import-assertions" "^7.26.0"
+ "@babel/plugin-syntax-import-attributes" "^7.26.0"
"@babel/plugin-syntax-unicode-sets-regex" "^7.18.6"
- "@babel/plugin-transform-arrow-functions" "^7.25.7"
- "@babel/plugin-transform-async-generator-functions" "^7.25.8"
- "@babel/plugin-transform-async-to-generator" "^7.25.7"
- "@babel/plugin-transform-block-scoped-functions" "^7.25.7"
- "@babel/plugin-transform-block-scoping" "^7.25.7"
- "@babel/plugin-transform-class-properties" "^7.25.7"
- "@babel/plugin-transform-class-static-block" "^7.25.8"
- "@babel/plugin-transform-classes" "^7.25.7"
- "@babel/plugin-transform-computed-properties" "^7.25.7"
- "@babel/plugin-transform-destructuring" "^7.25.7"
- "@babel/plugin-transform-dotall-regex" "^7.25.7"
- "@babel/plugin-transform-duplicate-keys" "^7.25.7"
- "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.7"
- "@babel/plugin-transform-dynamic-import" "^7.25.8"
- "@babel/plugin-transform-exponentiation-operator" "^7.25.7"
- "@babel/plugin-transform-export-namespace-from" "^7.25.8"
- "@babel/plugin-transform-for-of" "^7.25.7"
- "@babel/plugin-transform-function-name" "^7.25.7"
- "@babel/plugin-transform-json-strings" "^7.25.8"
- "@babel/plugin-transform-literals" "^7.25.7"
- "@babel/plugin-transform-logical-assignment-operators" "^7.25.8"
- "@babel/plugin-transform-member-expression-literals" "^7.25.7"
- "@babel/plugin-transform-modules-amd" "^7.25.7"
- "@babel/plugin-transform-modules-commonjs" "^7.25.7"
- "@babel/plugin-transform-modules-systemjs" "^7.25.7"
- "@babel/plugin-transform-modules-umd" "^7.25.7"
- "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.7"
- "@babel/plugin-transform-new-target" "^7.25.7"
- "@babel/plugin-transform-nullish-coalescing-operator" "^7.25.8"
- "@babel/plugin-transform-numeric-separator" "^7.25.8"
- "@babel/plugin-transform-object-rest-spread" "^7.25.8"
- "@babel/plugin-transform-object-super" "^7.25.7"
- "@babel/plugin-transform-optional-catch-binding" "^7.25.8"
- "@babel/plugin-transform-optional-chaining" "^7.25.8"
- "@babel/plugin-transform-parameters" "^7.25.7"
- "@babel/plugin-transform-private-methods" "^7.25.7"
- "@babel/plugin-transform-private-property-in-object" "^7.25.8"
- "@babel/plugin-transform-property-literals" "^7.25.7"
- "@babel/plugin-transform-regenerator" "^7.25.7"
- "@babel/plugin-transform-reserved-words" "^7.25.7"
- "@babel/plugin-transform-shorthand-properties" "^7.25.7"
- "@babel/plugin-transform-spread" "^7.25.7"
- "@babel/plugin-transform-sticky-regex" "^7.25.7"
- "@babel/plugin-transform-template-literals" "^7.25.7"
- "@babel/plugin-transform-typeof-symbol" "^7.25.7"
- "@babel/plugin-transform-unicode-escapes" "^7.25.7"
- "@babel/plugin-transform-unicode-property-regex" "^7.25.7"
- "@babel/plugin-transform-unicode-regex" "^7.25.7"
- "@babel/plugin-transform-unicode-sets-regex" "^7.25.7"
+ "@babel/plugin-transform-arrow-functions" "^7.25.9"
+ "@babel/plugin-transform-async-generator-functions" "^7.25.9"
+ "@babel/plugin-transform-async-to-generator" "^7.25.9"
+ "@babel/plugin-transform-block-scoped-functions" "^7.25.9"
+ "@babel/plugin-transform-block-scoping" "^7.25.9"
+ "@babel/plugin-transform-class-properties" "^7.25.9"
+ "@babel/plugin-transform-class-static-block" "^7.26.0"
+ "@babel/plugin-transform-classes" "^7.25.9"
+ "@babel/plugin-transform-computed-properties" "^7.25.9"
+ "@babel/plugin-transform-destructuring" "^7.25.9"
+ "@babel/plugin-transform-dotall-regex" "^7.25.9"
+ "@babel/plugin-transform-duplicate-keys" "^7.25.9"
+ "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.9"
+ "@babel/plugin-transform-dynamic-import" "^7.25.9"
+ "@babel/plugin-transform-exponentiation-operator" "^7.25.9"
+ "@babel/plugin-transform-export-namespace-from" "^7.25.9"
+ "@babel/plugin-transform-for-of" "^7.25.9"
+ "@babel/plugin-transform-function-name" "^7.25.9"
+ "@babel/plugin-transform-json-strings" "^7.25.9"
+ "@babel/plugin-transform-literals" "^7.25.9"
+ "@babel/plugin-transform-logical-assignment-operators" "^7.25.9"
+ "@babel/plugin-transform-member-expression-literals" "^7.25.9"
+ "@babel/plugin-transform-modules-amd" "^7.25.9"
+ "@babel/plugin-transform-modules-commonjs" "^7.25.9"
+ "@babel/plugin-transform-modules-systemjs" "^7.25.9"
+ "@babel/plugin-transform-modules-umd" "^7.25.9"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.9"
+ "@babel/plugin-transform-new-target" "^7.25.9"
+ "@babel/plugin-transform-nullish-coalescing-operator" "^7.25.9"
+ "@babel/plugin-transform-numeric-separator" "^7.25.9"
+ "@babel/plugin-transform-object-rest-spread" "^7.25.9"
+ "@babel/plugin-transform-object-super" "^7.25.9"
+ "@babel/plugin-transform-optional-catch-binding" "^7.25.9"
+ "@babel/plugin-transform-optional-chaining" "^7.25.9"
+ "@babel/plugin-transform-parameters" "^7.25.9"
+ "@babel/plugin-transform-private-methods" "^7.25.9"
+ "@babel/plugin-transform-private-property-in-object" "^7.25.9"
+ "@babel/plugin-transform-property-literals" "^7.25.9"
+ "@babel/plugin-transform-regenerator" "^7.25.9"
+ "@babel/plugin-transform-regexp-modifiers" "^7.26.0"
+ "@babel/plugin-transform-reserved-words" "^7.25.9"
+ "@babel/plugin-transform-shorthand-properties" "^7.25.9"
+ "@babel/plugin-transform-spread" "^7.25.9"
+ "@babel/plugin-transform-sticky-regex" "^7.25.9"
+ "@babel/plugin-transform-template-literals" "^7.25.9"
+ "@babel/plugin-transform-typeof-symbol" "^7.25.9"
+ "@babel/plugin-transform-unicode-escapes" "^7.25.9"
+ "@babel/plugin-transform-unicode-property-regex" "^7.25.9"
+ "@babel/plugin-transform-unicode-regex" "^7.25.9"
+ "@babel/plugin-transform-unicode-sets-regex" "^7.25.9"
"@babel/preset-modules" "0.1.6-no-external-plugins"
babel-plugin-polyfill-corejs2 "^0.4.10"
babel-plugin-polyfill-corejs3 "^0.10.6"
@@ -850,28 +902,28 @@
"@babel/types" "^7.4.4"
esutils "^2.0.2"
-"@babel/preset-react@7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.25.7.tgz#081cbe1dea363b732764d06a0fdda67ffa17735d"
- integrity sha512-GjV0/mUEEXpi1U5ZgDprMRRgajGMRW3G5FjMr5KLKD8nT2fTG8+h/klV3+6Dm5739QE+K5+2e91qFKAYI3pmRg==
+"@babel/preset-react@7.26.3":
+ version "7.26.3"
+ resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.26.3.tgz#7c5e028d623b4683c1f83a0bd4713b9100560caa"
+ integrity sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
- "@babel/helper-validator-option" "^7.25.7"
- "@babel/plugin-transform-react-display-name" "^7.25.7"
- "@babel/plugin-transform-react-jsx" "^7.25.7"
- "@babel/plugin-transform-react-jsx-development" "^7.25.7"
- "@babel/plugin-transform-react-pure-annotations" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-validator-option" "^7.25.9"
+ "@babel/plugin-transform-react-display-name" "^7.25.9"
+ "@babel/plugin-transform-react-jsx" "^7.25.9"
+ "@babel/plugin-transform-react-jsx-development" "^7.25.9"
+ "@babel/plugin-transform-react-pure-annotations" "^7.25.9"
-"@babel/preset-typescript@7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.25.7.tgz#43c5b68eccb856ae5b52274b77b1c3c413cde1b7"
- integrity sha512-rkkpaXJZOFN45Fb+Gki0c+KMIglk4+zZXOoMJuyEK8y8Kkc8Jd3BDmP7qPsz0zQMJj+UD7EprF+AqAXcILnexw==
+"@babel/preset-typescript@7.26.0":
+ version "7.26.0"
+ resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz#4a570f1b8d104a242d923957ffa1eaff142a106d"
+ integrity sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.7"
- "@babel/helper-validator-option" "^7.25.7"
- "@babel/plugin-syntax-jsx" "^7.25.7"
- "@babel/plugin-transform-modules-commonjs" "^7.25.7"
- "@babel/plugin-transform-typescript" "^7.25.7"
+ "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-validator-option" "^7.25.9"
+ "@babel/plugin-syntax-jsx" "^7.25.9"
+ "@babel/plugin-transform-modules-commonjs" "^7.25.9"
+ "@babel/plugin-transform-typescript" "^7.25.9"
"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
version "7.25.7"
@@ -880,29 +932,29 @@
dependencies:
regenerator-runtime "^0.14.0"
-"@babel/template@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.7.tgz#27f69ce382855d915b14ab0fe5fb4cbf88fa0769"
- integrity sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==
+"@babel/template@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016"
+ integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==
dependencies:
- "@babel/code-frame" "^7.25.7"
- "@babel/parser" "^7.25.7"
- "@babel/types" "^7.25.7"
+ "@babel/code-frame" "^7.25.9"
+ "@babel/parser" "^7.25.9"
+ "@babel/types" "^7.25.9"
-"@babel/traverse@^7.25.7":
- version "7.25.7"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.7.tgz#83e367619be1cab8e4f2892ef30ba04c26a40fa8"
- integrity sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==
+"@babel/traverse@^7.25.9":
+ version "7.26.4"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.4.tgz#ac3a2a84b908dde6d463c3bfa2c5fdc1653574bd"
+ integrity sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==
dependencies:
- "@babel/code-frame" "^7.25.7"
- "@babel/generator" "^7.25.7"
- "@babel/parser" "^7.25.7"
- "@babel/template" "^7.25.7"
- "@babel/types" "^7.25.7"
+ "@babel/code-frame" "^7.26.2"
+ "@babel/generator" "^7.26.3"
+ "@babel/parser" "^7.26.3"
+ "@babel/template" "^7.25.9"
+ "@babel/types" "^7.26.3"
debug "^4.3.1"
globals "^11.1.0"
-"@babel/types@^7.25.7", "@babel/types@^7.25.8", "@babel/types@^7.4.4":
+"@babel/types@^7.25.7", "@babel/types@^7.4.4":
version "7.25.8"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.8.tgz#5cf6037258e8a9bcad533f4979025140cb9993e1"
integrity sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==
@@ -911,6 +963,14 @@
"@babel/helper-validator-identifier" "^7.25.7"
to-fast-properties "^2.0.0"
+"@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.3":
+ version "7.26.3"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.3.tgz#37e79830f04c2b5687acc77db97fbc75fb81f3c0"
+ integrity sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==
+ dependencies:
+ "@babel/helper-string-parser" "^7.25.9"
+ "@babel/helper-validator-identifier" "^7.25.9"
+
"@csstools/css-parser-algorithms@^2.1.1":
version "2.7.1"
resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz#6d93a8f7d8aeb7cd9ed0868f946e46f021b6aa70"
@@ -943,7 +1003,12 @@
dependencies:
eslint-visitor-keys "^3.3.0"
-"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1":
+"@eslint-community/regexpp@^4.10.0":
+ version "4.12.1"
+ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0"
+ integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==
+
+"@eslint-community/regexpp@^4.6.1":
version "4.11.1"
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f"
integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==
@@ -968,36 +1033,36 @@
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2"
integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==
-"@fortawesome/fontawesome-common-types@6.6.0":
- version "6.6.0"
- resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.6.0.tgz#31ab07ca6a06358c5de4d295d4711b675006163f"
- integrity sha512-xyX0X9mc0kyz9plIyryrRbl7ngsA9jz77mCZJsUkLl+ZKs0KWObgaEBoSgQiYWAsSmjz/yjl0F++Got0Mdp4Rw==
+"@fortawesome/fontawesome-common-types@6.7.1":
+ version "6.7.1"
+ resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.7.1.tgz#6201640f39fdcf8e41cd9d1a92b2da3a96817fa4"
+ integrity sha512-gbDz3TwRrIPT3i0cDfujhshnXO9z03IT1UKRIVi/VEjpNHtSBIP2o5XSm+e816FzzCFEzAxPw09Z13n20PaQJQ==
-"@fortawesome/fontawesome-free@6.6.0":
- version "6.6.0"
- resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-6.6.0.tgz#0e984f0f2344ee513c185d87d77defac4c0c8224"
- integrity sha512-60G28ke/sXdtS9KZCpZSHHkCbdsOGEhIUGlwq6yhY74UpTiToIh8np7A8yphhM4BWsvNFtIvLpi4co+h9Mr9Ow==
+"@fortawesome/fontawesome-free@6.7.1":
+ version "6.7.1"
+ resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.1.tgz#160a48730d533ec77578ed0141661a8f0150a71d"
+ integrity sha512-ALIk/MOh5gYe1TG/ieS5mVUsk7VUIJTJKPMK9rFFqOgfp0Q3d5QiBXbcOMwUvs37fyZVCz46YjOE6IFeOAXCHA==
-"@fortawesome/fontawesome-svg-core@6.6.0":
- version "6.6.0"
- resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.6.0.tgz#2a24c32ef92136e98eae2ff334a27145188295ff"
- integrity sha512-KHwPkCk6oRT4HADE7smhfsKudt9N/9lm6EJ5BVg0tD1yPA5hht837fB87F8pn15D8JfTqQOjhKTktwmLMiD7Kg==
+"@fortawesome/fontawesome-svg-core@6.7.1":
+ version "6.7.1"
+ resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.7.1.tgz#1f8ebb6f35cf02f89c110198514e848de17ac99e"
+ integrity sha512-8dBIHbfsKlCk2jHQ9PoRBg2Z+4TwyE3vZICSnoDlnsHA6SiMlTwfmW6yX0lHsRmWJugkeb92sA0hZdkXJhuz+g==
dependencies:
- "@fortawesome/fontawesome-common-types" "6.6.0"
+ "@fortawesome/fontawesome-common-types" "6.7.1"
-"@fortawesome/free-regular-svg-icons@6.6.0":
- version "6.6.0"
- resolved "https://registry.yarnpkg.com/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.6.0.tgz#fc49a947ac8dfd20403c9ea5f37f0919425bdf04"
- integrity sha512-Yv9hDzL4aI73BEwSEh20clrY8q/uLxawaQ98lekBx6t9dQKDHcDzzV1p2YtBGTtolYtNqcWdniOnhzB+JPnQEQ==
+"@fortawesome/free-regular-svg-icons@6.7.1":
+ version "6.7.1"
+ resolved "https://registry.yarnpkg.com/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.7.1.tgz#d7ec06f896ee91116a388a5a234cd26420ccdfe4"
+ integrity sha512-e13cp+bAx716RZOTQ59DhqikAgETA9u1qTBHO3e3jMQQ+4H/N1NC1ZVeFYt1V0m+Th68BrEL1/X6XplISutbXg==
dependencies:
- "@fortawesome/fontawesome-common-types" "6.6.0"
+ "@fortawesome/fontawesome-common-types" "6.7.1"
-"@fortawesome/free-solid-svg-icons@6.6.0":
- version "6.6.0"
- resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.6.0.tgz#061751ca43be4c4d814f0adbda8f006164ec9f3b"
- integrity sha512-IYv/2skhEDFc2WGUcqvFJkeK39Q+HyPf5GHUrT/l2pKbtgEIv1al1TKd6qStR5OIwQdN1GZP54ci3y4mroJWjA==
+"@fortawesome/free-solid-svg-icons@6.7.1":
+ version "6.7.1"
+ resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.7.1.tgz#c1f9a6c25562a12c283e87e284f9d82a5b0dbcc0"
+ integrity sha512-BTKc0b0mgjWZ2UDKVgmwaE0qt0cZs6ITcDgjrti5f/ki7aF5zs+N91V6hitGo3TItCFtnKg6cUVGdTmBFICFRg==
dependencies:
- "@fortawesome/fontawesome-common-types" "6.6.0"
+ "@fortawesome/fontawesome-common-types" "6.7.1"
"@fortawesome/react-fontawesome@0.2.2":
version "0.2.2"
@@ -1258,7 +1323,7 @@
resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35"
integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==
-"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
+"@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
version "7.0.15"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
@@ -1399,11 +1464,6 @@
dependencies:
"@types/node" "*"
-"@types/semver@^7.5.0":
- version "7.5.8"
- resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e"
- integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==
-
"@types/source-list-map@*":
version "0.1.6"
resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.6.tgz#164e169dd061795b50b83c19e4d3be09f8d3a454"
@@ -1449,91 +1509,86 @@
anymatch "^3.0.0"
source-map "^0.6.0"
-"@typescript-eslint/eslint-plugin@6.21.0":
- version "6.21.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3"
- integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==
+"@typescript-eslint/eslint-plugin@8.18.1":
+ version "8.18.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.1.tgz#992e5ac1553ce20d0d46aa6eccd79dc36dedc805"
+ integrity sha512-Ncvsq5CT3Gvh+uJG0Lwlho6suwDfUXH0HztslDf5I+F2wAFAZMRwYLEorumpKLzmO2suAXZ/td1tBg4NZIi9CQ==
dependencies:
- "@eslint-community/regexpp" "^4.5.1"
- "@typescript-eslint/scope-manager" "6.21.0"
- "@typescript-eslint/type-utils" "6.21.0"
- "@typescript-eslint/utils" "6.21.0"
- "@typescript-eslint/visitor-keys" "6.21.0"
- debug "^4.3.4"
+ "@eslint-community/regexpp" "^4.10.0"
+ "@typescript-eslint/scope-manager" "8.18.1"
+ "@typescript-eslint/type-utils" "8.18.1"
+ "@typescript-eslint/utils" "8.18.1"
+ "@typescript-eslint/visitor-keys" "8.18.1"
graphemer "^1.4.0"
- ignore "^5.2.4"
+ ignore "^5.3.1"
natural-compare "^1.4.0"
- semver "^7.5.4"
- ts-api-utils "^1.0.1"
+ ts-api-utils "^1.3.0"
-"@typescript-eslint/parser@6.21.0":
- version "6.21.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b"
- integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==
+"@typescript-eslint/parser@8.18.1":
+ version "8.18.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.18.1.tgz#c258bae062778b7696793bc492249027a39dfb95"
+ integrity sha512-rBnTWHCdbYM2lh7hjyXqxk70wvon3p2FyaniZuey5TrcGBpfhVp0OxOa6gxr9Q9YhZFKyfbEnxc24ZnVbbUkCA==
dependencies:
- "@typescript-eslint/scope-manager" "6.21.0"
- "@typescript-eslint/types" "6.21.0"
- "@typescript-eslint/typescript-estree" "6.21.0"
- "@typescript-eslint/visitor-keys" "6.21.0"
+ "@typescript-eslint/scope-manager" "8.18.1"
+ "@typescript-eslint/types" "8.18.1"
+ "@typescript-eslint/typescript-estree" "8.18.1"
+ "@typescript-eslint/visitor-keys" "8.18.1"
debug "^4.3.4"
-"@typescript-eslint/scope-manager@6.21.0":
- version "6.21.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1"
- integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==
+"@typescript-eslint/scope-manager@8.18.1":
+ version "8.18.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.18.1.tgz#52cedc3a8178d7464a70beffed3203678648e55b"
+ integrity sha512-HxfHo2b090M5s2+/9Z3gkBhI6xBH8OJCFjH9MhQ+nnoZqxU3wNxkLT+VWXWSFWc3UF3Z+CfPAyqdCTdoXtDPCQ==
dependencies:
- "@typescript-eslint/types" "6.21.0"
- "@typescript-eslint/visitor-keys" "6.21.0"
+ "@typescript-eslint/types" "8.18.1"
+ "@typescript-eslint/visitor-keys" "8.18.1"
-"@typescript-eslint/type-utils@6.21.0":
- version "6.21.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e"
- integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==
+"@typescript-eslint/type-utils@8.18.1":
+ version "8.18.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.18.1.tgz#10f41285475c0bdee452b79ff7223f0e43a7781e"
+ integrity sha512-jAhTdK/Qx2NJPNOTxXpMwlOiSymtR2j283TtPqXkKBdH8OAMmhiUfP0kJjc/qSE51Xrq02Gj9NY7MwK+UxVwHQ==
dependencies:
- "@typescript-eslint/typescript-estree" "6.21.0"
- "@typescript-eslint/utils" "6.21.0"
+ "@typescript-eslint/typescript-estree" "8.18.1"
+ "@typescript-eslint/utils" "8.18.1"
debug "^4.3.4"
- ts-api-utils "^1.0.1"
+ ts-api-utils "^1.3.0"
-"@typescript-eslint/types@6.21.0":
- version "6.21.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d"
- integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==
+"@typescript-eslint/types@8.18.1":
+ version "8.18.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.18.1.tgz#d7f4f94d0bba9ebd088de840266fcd45408a8fff"
+ integrity sha512-7uoAUsCj66qdNQNpH2G8MyTFlgerum8ubf21s3TSM3XmKXuIn+H2Sifh/ES2nPOPiYSRJWAk0fDkW0APBWcpfw==
-"@typescript-eslint/typescript-estree@6.21.0":
- version "6.21.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46"
- integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==
+"@typescript-eslint/typescript-estree@8.18.1":
+ version "8.18.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.1.tgz#2a86cd64b211a742f78dfa7e6f4860413475367e"
+ integrity sha512-z8U21WI5txzl2XYOW7i9hJhxoKKNG1kcU4RzyNvKrdZDmbjkmLBo8bgeiOJmA06kizLI76/CCBAAGlTlEeUfyg==
dependencies:
- "@typescript-eslint/types" "6.21.0"
- "@typescript-eslint/visitor-keys" "6.21.0"
+ "@typescript-eslint/types" "8.18.1"
+ "@typescript-eslint/visitor-keys" "8.18.1"
debug "^4.3.4"
- globby "^11.1.0"
+ fast-glob "^3.3.2"
is-glob "^4.0.3"
- minimatch "9.0.3"
- semver "^7.5.4"
- ts-api-utils "^1.0.1"
+ minimatch "^9.0.4"
+ semver "^7.6.0"
+ ts-api-utils "^1.3.0"
-"@typescript-eslint/utils@6.21.0":
- version "6.21.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134"
- integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==
+"@typescript-eslint/utils@8.18.1":
+ version "8.18.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.18.1.tgz#c4199ea23fc823c736e2c96fd07b1f7235fa92d5"
+ integrity sha512-8vikiIj2ebrC4WRdcAdDcmnu9Q/MXXwg+STf40BVfT8exDqBCUPdypvzcUPxEqRGKg9ALagZ0UWcYCtn+4W2iQ==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
- "@types/json-schema" "^7.0.12"
- "@types/semver" "^7.5.0"
- "@typescript-eslint/scope-manager" "6.21.0"
- "@typescript-eslint/types" "6.21.0"
- "@typescript-eslint/typescript-estree" "6.21.0"
- semver "^7.5.4"
+ "@typescript-eslint/scope-manager" "8.18.1"
+ "@typescript-eslint/types" "8.18.1"
+ "@typescript-eslint/typescript-estree" "8.18.1"
-"@typescript-eslint/visitor-keys@6.21.0":
- version "6.21.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47"
- integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==
+"@typescript-eslint/visitor-keys@8.18.1":
+ version "8.18.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.1.tgz#344b4f6bc83f104f514676facf3129260df7610a"
+ integrity sha512-Vj0WLm5/ZsD013YeUKn+K0y8p1M0jPpxOkKdbD1wB0ns53a5piVY02zjf072TblEweAbcYiFiPoSMF3kp+VhhQ==
dependencies:
- "@typescript-eslint/types" "6.21.0"
- eslint-visitor-keys "^3.4.1"
+ "@typescript-eslint/types" "8.18.1"
+ eslint-visitor-keys "^4.2.0"
"@ungap/structured-clone@^1.2.0":
version "1.2.0"
@@ -2423,10 +2478,10 @@ core-js-compat@^3.38.0, core-js-compat@^3.38.1:
dependencies:
browserslist "^4.23.3"
-core-js@3.38.1:
- version "3.38.1"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.38.1.tgz#aa375b79a286a670388a1a363363d53677c0383e"
- integrity sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==
+core-js@3.39.0:
+ version "3.39.0"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.39.0.tgz#57f7647f4d2d030c32a72ea23a0555b2eaa30f83"
+ integrity sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==
core-js@^2.4.0:
version "2.6.12"
@@ -3131,6 +3186,11 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
+eslint-visitor-keys@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45"
+ integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
+
eslint@8.57.1:
version "8.57.1"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9"
@@ -3238,7 +3298,7 @@ fast-diff@^1.1.2:
resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0"
integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==
-fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.9:
+fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.9, fast-glob@^3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
@@ -3772,7 +3832,7 @@ ieee754@^1.1.13:
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
-ignore@^5.2.0, ignore@^5.2.4:
+ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1:
version "5.3.2"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
@@ -4607,13 +4667,6 @@ mini-css-extract-plugin@2.9.1:
schema-utils "^4.0.0"
tapable "^2.2.1"
-minimatch@9.0.3:
- version "9.0.3"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825"
- integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==
- dependencies:
- brace-expansion "^2.0.1"
-
minimatch@^10.0.0:
version "10.0.1"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.1.tgz#ce0521856b453c86e25f2c4c0d03e6ff7ddc440b"
@@ -4635,6 +4688,13 @@ minimatch@^5.1.0:
dependencies:
brace-expansion "^2.0.1"
+minimatch@^9.0.4:
+ version "9.0.5"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
+ integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
+ dependencies:
+ brace-expansion "^2.0.1"
+
minimatch@~3.0.4:
version "3.0.8"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.8.tgz#5e6a59bd11e2ab0de1cfb843eb2d82e546c321c1"
@@ -5762,6 +5822,18 @@ regexpu-core@^6.1.1:
unicode-match-property-ecmascript "^2.0.0"
unicode-match-property-value-ecmascript "^2.1.0"
+regexpu-core@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.2.0.tgz#0e5190d79e542bf294955dccabae04d3c7d53826"
+ integrity sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==
+ dependencies:
+ regenerate "^1.4.2"
+ regenerate-unicode-properties "^10.2.0"
+ regjsgen "^0.8.0"
+ regjsparser "^0.12.0"
+ unicode-match-property-ecmascript "^2.0.0"
+ unicode-match-property-value-ecmascript "^2.1.0"
+
regjsgen@^0.8.0:
version "0.8.0"
resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab"
@@ -5774,6 +5846,13 @@ regjsparser@^0.11.0:
dependencies:
jsesc "~3.0.2"
+regjsparser@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.12.0.tgz#0e846df6c6530586429377de56e0475583b088dc"
+ integrity sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==
+ dependencies:
+ jsesc "~3.0.2"
+
relateurl@^0.2.7:
version "0.2.7"
resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
@@ -5997,7 +6076,7 @@ semver@^6.0.0, semver@^6.3.1:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
-semver@^7.3.4, semver@^7.3.5, semver@^7.3.8, semver@^7.5.4:
+semver@^7.3.4, semver@^7.3.5, semver@^7.3.8, semver@^7.6.0:
version "7.6.3"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
@@ -6567,10 +6646,10 @@ trim-newlines@^3.0.0:
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144"
integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==
-ts-api-utils@^1.0.1:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1"
- integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==
+ts-api-utils@^1.3.0:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064"
+ integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==
ts-loader@9.5.1:
version "9.5.1"
@@ -6705,10 +6784,10 @@ typescript-plugin-css-modules@5.0.1:
stylus "^0.59.0"
tsconfig-paths "^4.1.2"
-typescript@5.1.6:
- version "5.1.6"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274"
- integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==
+typescript@5.7.2:
+ version "5.7.2"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6"
+ integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==
unbox-primitive@^1.0.2:
version "1.0.2"