/*-
 * Copyright 2016 Vsevolod Stakhov
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#include "lua_common.h"
#include "lua_thread_pool.h"
#include "utlist.h"

#include "contrib/hiredis/hiredis.h"
#include "contrib/hiredis/async.h"

#define REDIS_DEFAULT_TIMEOUT 1.0

static const gchar *M = "rspamd lua redis";
static void *redis_null;

/***
 * @module rspamd_redis
 * This module implements redis asynchronous client for rspamd LUA API.
 * Here is an example of using of this module:
 * @example
local rspamd_redis = require "rspamd_redis"
local rspamd_logger = require "rspamd_logger"

local function symbol_callback(task)
	local redis_key = 'some_key'
	local function redis_cb(err, data)
		if not err then
			rspamd_logger.infox('redis returned %1=%2', redis_key, data)
		end
	end

	rspamd_redis.make_request(task, "127.0.0.1:6379", redis_cb,
		'GET', {redis_key})
	-- or in table form:
	-- rspamd_redis.make_request({task=task, host="127.0.0.1:6379,
	--	callback=redis_cb, timeout=2.0, cmd='GET', args={redis_key}})
end
 */

LUA_FUNCTION_DEF (redis, make_request);
LUA_FUNCTION_DEF (redis, make_request_sync);
LUA_FUNCTION_DEF (redis, connect);
LUA_FUNCTION_DEF (redis, connect_sync);
LUA_FUNCTION_DEF (redis, add_cmd);
LUA_FUNCTION_DEF (redis, exec);
LUA_FUNCTION_DEF (redis, gc);

static const struct luaL_reg redislib_f[] = {
	LUA_INTERFACE_DEF (redis, make_request),
	LUA_INTERFACE_DEF (redis, make_request_sync),
	LUA_INTERFACE_DEF (redis, connect),
	LUA_INTERFACE_DEF (redis, connect_sync),
	{NULL, NULL}
};

static const struct luaL_reg redislib_m[] = {
	LUA_INTERFACE_DEF (redis, add_cmd),
	LUA_INTERFACE_DEF (redis, exec),
	{"__gc", lua_redis_gc},
	{"__tostring", rspamd_lua_class_tostring},
	{NULL, NULL}
};

#undef REDIS_DEBUG_REFS
#ifdef REDIS_DEBUG_REFS
#define REDIS_RETAIN(x) do { \
	msg_err ("retain ref %p, refcount: %d", (x), (x)->ref.refcount); \
	REF_RETAIN(x);	\
} while (0)

#define REDIS_RELEASE(x) do { \
	msg_err ("release ref %p, refcount: %d", (x), (x)->ref.refcount); \
	REF_RELEASE(x);	\
} while (0)
#else
#define REDIS_RETAIN REF_RETAIN
#define REDIS_RELEASE REF_RELEASE
#endif

#ifdef WITH_HIREDIS
struct lua_redis_request_specific_userdata;
/**
 * Struct for userdata representation
 */
struct lua_redis_userdata {
	redisAsyncContext *ctx;
	struct rspamd_task *task;
	struct rspamd_symcache_item *item;
	struct rspamd_async_session *s;
	struct ev_loop *event_loop;
	struct rspamd_config *cfg;
	struct rspamd_redis_pool *pool;
	gchar *server;
	gchar log_tag[RSPAMD_LOG_ID_LEN + 1];
	struct lua_redis_request_specific_userdata *specific;
	gdouble timeout;
	guint16 port;
	guint16 terminated;
};

#define msg_debug_lua_redis(...)  rspamd_conditional_debug_fast (NULL, NULL, \
        rspamd_lua_redis_log_id, "lua_redis", ud->log_tag, \
        G_STRFUNC, \
        __VA_ARGS__)
INIT_LOG_MODULE(lua_redis)

#define LUA_REDIS_SPECIFIC_REPLIED (1 << 0)
/* session was finished */
#define LUA_REDIS_SPECIFIC_FINISHED (1 << 1)
#define LUA_REDIS_ASYNC (1 << 0)
#define LUA_REDIS_TEXTDATA (1 << 1)
#define LUA_REDIS_TERMINATED (1 << 2)
#define LUA_REDIS_NO_POOL (1 << 3)
#define LUA_REDIS_SUBSCRIBED (1 << 4)
#define IS_ASYNC(ctx) ((ctx)->flags & LUA_REDIS_ASYNC)

struct lua_redis_request_specific_userdata {
	gint cbref;
	guint nargs;
	gchar **args;
	gsize *arglens;
	struct lua_redis_userdata *c;
	struct lua_redis_ctx *ctx;
	struct lua_redis_request_specific_userdata *next;
	ev_timer timeout_ev;
	guint flags;
};

struct lua_redis_ctx {
	guint flags;
	struct lua_redis_userdata async;
	guint cmds_pending;
	ref_entry_t ref;
	GQueue *replies; /* for sync connection only */
	GQueue *events_cleanup; /* for sync connection only */
	struct thread_entry *thread; /* for sync mode, set only if there was yield */
};

struct lua_redis_result {
	gboolean is_error;
	gint result_ref;
	struct rspamd_symcache_item *item;
	struct rspamd_async_session *s;
	struct rspamd_task *task;
	struct lua_redis_request_specific_userdata *sp_ud;
};

static struct lua_redis_ctx *
lua_check_redis (lua_State * L, gint pos)
{
	void *ud = rspamd_lua_check_udata (L, pos, "rspamd{redis}");
	luaL_argcheck (L, ud != NULL, pos, "'redis' expected");
	return ud ? *((struct lua_redis_ctx **)ud) : NULL;
}

static void
lua_redis_free_args (char **args, gsize *arglens, guint nargs)
{
	guint i;

	if (args) {
		for (i = 0; i < nargs; i ++) {
			g_free (args[i]);
		}

		g_free (args);
		g_free (arglens);
	}
}

static void
lua_redis_dtor (struct lua_redis_ctx *ctx)
{
	struct lua_redis_userdata *ud;
	struct lua_redis_request_specific_userdata *cur, *tmp;
	gboolean is_successful = TRUE;
	struct redisAsyncContext *ac;

	ud = &ctx->async;
	msg_debug_lua_redis ("desctructing %p", ctx);

	if (ud->ctx) {

		LL_FOREACH_SAFE (ud->specific, cur, tmp) {
			ev_timer_stop (ud->event_loop, &cur->timeout_ev);

			if (!(cur->flags & LUA_REDIS_SPECIFIC_REPLIED)) {
				is_successful = FALSE;
			}

			cur->flags |= LUA_REDIS_SPECIFIC_FINISHED;
		}

		ctx->flags |= LUA_REDIS_TERMINATED;

		ud->terminated = 1;
		ac = ud->ctx;
		ud->ctx = NULL;

		if (!is_successful) {
			rspamd_redis_pool_release_connection (ud->pool, ac,
					RSPAMD_REDIS_RELEASE_FATAL);
		}
		else {
			rspamd_redis_pool_release_connection (ud->pool, ac,
					(ctx->flags & LUA_REDIS_NO_POOL) ?
					RSPAMD_REDIS_RELEASE_ENFORCE : RSPAMD_REDIS_RELEASE_DEFAULT);
		}

	}

	LL_FOREACH_SAFE (ud->specific, cur, tmp) {
		lua_redis_free_args (cur->args, cur->arglens, cur->nargs);

		if (cur->cbref != -1) {
			luaL_unref (ud->cfg->lua_state, LUA_REGISTRYINDEX, cur->cbref);
		}

		g_free (cur);
	}

	if (ctx->events_cleanup) {
		g_queue_free (ctx->events_cleanup);
		ctx->events_cleanup = NULL;
	}
	if (ctx->replies) {
		g_queue_free (ctx->replies);
		ctx->replies = NULL;
	}

	g_free (ctx);
}

static gint
lua_redis_gc (lua_State *L)
{
	struct lua_redis_ctx *ctx = lua_check_redis (L, 1);

	if (ctx) {
		REDIS_RELEASE (ctx);
	}

	return 0;
}

static void
lua_redis_fin (void *arg)
{
	struct lua_redis_request_specific_userdata *sp_ud = arg;
	struct lua_redis_userdata *ud;
	struct lua_redis_ctx *ctx;

	ctx = sp_ud->ctx;
	ud = sp_ud->c;

	if (ev_can_stop (&sp_ud->timeout_ev)) {
		ev_timer_stop (sp_ud->ctx->async.event_loop, &sp_ud->timeout_ev);
	}

	msg_debug_lua_redis ("finished redis query %p from session %p; refcount=%d",
			sp_ud, ctx, ctx->ref.refcount);
	sp_ud->flags |= LUA_REDIS_SPECIFIC_FINISHED;

	REDIS_RELEASE (ctx);
}

/**
 * Push error of redis request to lua callback
 * @param code
 * @param ud
 */
static void
lua_redis_push_error (const gchar *err,
	struct lua_redis_ctx *ctx,
	struct lua_redis_request_specific_userdata *sp_ud,
	gboolean connected)
{
	struct lua_redis_userdata *ud = sp_ud->c;
	struct lua_callback_state cbs;
	lua_State *L;

	if (!(sp_ud->flags & (LUA_REDIS_SPECIFIC_REPLIED|LUA_REDIS_SPECIFIC_FINISHED))) {
		if (sp_ud->cbref != -1) {

			lua_thread_pool_prepare_callback (ud->cfg->lua_thread_pool, &cbs);
			L = cbs.L;

			lua_pushcfunction (L, &rspamd_lua_traceback);
			int err_idx = lua_gettop (L);
			/* Push error */
			lua_rawgeti (cbs.L, LUA_REGISTRYINDEX, sp_ud->cbref);

			/* String of error */
			lua_pushstring (cbs.L, err);
			/* Data is nil */
			lua_pushnil (cbs.L);

			if (ud->item) {
				rspamd_symcache_set_cur_item (ud->task, ud->item);
			}

			if (lua_pcall (cbs.L, 2, 0, err_idx) != 0) {
				msg_info ("call to callback failed: %s", lua_tostring (cbs.L, -1));
			}

			lua_settop (L, err_idx - 1);
			lua_thread_pool_restore_callback (&cbs);
		}

		sp_ud->flags |= LUA_REDIS_SPECIFIC_REPLIED;

		if (connected && ud->s) {
			if (ud->item) {
				rspamd_symcache_item_async_dec_check (ud->task, ud->item, M);
			}

			rspamd_session_remove_event (ud->s, lua_redis_fin, sp_ud);
		}
		else {
			lua_redis_fin (sp_ud);
		}
	}
}

static void
lua_redis_push_reply (lua_State *L, const redisReply *r, gboolean text_data)
{
	guint i;
	struct rspamd_lua_text *t;

	switch (r->type) {
	case REDIS_REPLY_INTEGER:
		lua_pushinteger (L, r->integer);
		break;
	case REDIS_REPLY_NIL:
		lua_getfield (L, LUA_REGISTRYINDEX, "redis.null");
		break;
	case REDIS_REPLY_STRING:
	case REDIS_REPLY_STATUS:
		if (text_data) {
			t = lua_newuserdata (L, sizeof (*t));
			rspamd_lua_setclass (L, "rspamd{text}", -1);
			t->flags = 0;
			t->start = r->str;
			t->len = r->len;
		}
		else {
			lua_pushlstring (L, r->str, r->len);
		}
		break;
	case REDIS_REPLY_ARRAY:
		lua_createtable (L, r->elements, 0);
		for (i = 0; i < r->elements; ++i) {
			lua_redis_push_reply (L, r->element[i], text_data);
			lua_rawseti (L, -2, i + 1); /* Store sub-reply */
		}
		break;
	default: /* should not happen */
		msg_info ("unknown reply type: %d", r->type);
		break;
	}
}

/**
 * Push data of redis request to lua callback
 * @param r redis reply data
 * @param ud
 */
static void
lua_redis_push_data (const redisReply *r, struct lua_redis_ctx *ctx,
		struct lua_redis_request_specific_userdata *sp_ud)
{
	struct lua_redis_userdata *ud = sp_ud->c;
	struct lua_callback_state cbs;
	lua_State *L;

	if (!(sp_ud->flags & (LUA_REDIS_SPECIFIC_REPLIED|LUA_REDIS_SPECIFIC_FINISHED)) ||
			(sp_ud->flags & LUA_REDIS_SUBSCRIBED)) {
		if (sp_ud->cbref != -1) {
			lua_thread_pool_prepare_callback (ud->cfg->lua_thread_pool, &cbs);
			L = cbs.L;

			lua_pushcfunction (L, &rspamd_lua_traceback);
			int err_idx = lua_gettop (L);
			/* Push error */
			lua_rawgeti (cbs.L, LUA_REGISTRYINDEX, sp_ud->cbref);
			/* Error is nil */
			lua_pushnil (cbs.L);
			/* Data */
			lua_redis_push_reply (cbs.L, r, ctx->flags & LUA_REDIS_TEXTDATA);

			if (ud->item) {
				rspamd_symcache_set_cur_item (ud->task, ud->item);
			}

			gint ret = lua_pcall (cbs.L, 2, 0, err_idx);

			if (ret != 0) {
				msg_info ("call to lua_redis callback failed (%d): %s",
						ret, lua_tostring (cbs.L, -1));
			}

			lua_settop (L, err_idx - 1);
			lua_thread_pool_restore_callback (&cbs);
		}

		if (sp_ud->flags & LUA_REDIS_SUBSCRIBED) {
			if (!(sp_ud->flags & LUA_REDIS_SPECIFIC_REPLIED)) {
				if (ev_can_stop (&sp_ud->timeout_ev)) {
					ev_timer_stop (sp_ud->ctx->async.event_loop,
							&sp_ud->timeout_ev);
				}
			}
		}

		sp_ud->flags |= LUA_REDIS_SPECIFIC_REPLIED;

		if (!(sp_ud->flags & LUA_REDIS_SUBSCRIBED)) {
			if (ud->s) {
				if (ud->item) {
					rspamd_symcache_item_async_dec_check (ud->task,
							ud->item, M);
				}

				rspamd_session_remove_event (ud->s, lua_redis_fin, sp_ud);
			}
			else {
				lua_redis_fin (sp_ud);
			}
		}
	}
}

/**
 * Callback for redis replies
 * @param c context of redis connection
 * @param r redis reply
 * @param priv userdata
 */
static void
lua_redis_callback (redisAsyncContext *c, gpointer r, gpointer priv)
{
	redisReply *reply = r;
	struct lua_redis_request_specific_userdata *sp_ud = priv;
	struct lua_redis_ctx *ctx;
	struct lua_redis_userdata *ud;
	redisAsyncContext *ac;

	ctx = sp_ud->ctx;
	ud = sp_ud->c;

	if (ud->terminated) {
		/* We are already at the termination stage, just go out */
		return;
	}

	msg_debug_lua_redis ("got reply from redis %p for query %p", sp_ud->c->ctx,
			sp_ud);

	REDIS_RETAIN (ctx);

	/* If session is finished, we cannot call lua callbacks */
	if (!(sp_ud->flags & LUA_REDIS_SPECIFIC_FINISHED) ||
			(sp_ud->flags & LUA_REDIS_SUBSCRIBED)) {
		if (c->err == 0) {
			if (r != NULL) {
				if (reply->type != REDIS_REPLY_ERROR) {
					lua_redis_push_data (reply, ctx, sp_ud);
				}
				else {
					lua_redis_push_error (reply->str, ctx, sp_ud, TRUE);
				}
			}
			else {
				lua_redis_push_error ("received no data from server", ctx, sp_ud, TRUE);
			}
		}
		else {
			if (c->err == REDIS_ERR_IO) {
				lua_redis_push_error (strerror (errno), ctx, sp_ud, TRUE);
			}
			else {
				lua_redis_push_error (c->errstr, ctx, sp_ud, TRUE);
			}
		}
	}

	if (!(sp_ud->flags & LUA_REDIS_SUBSCRIBED)) {
		ctx->cmds_pending--;

		if (ctx->cmds_pending == 0 && !ud->terminated) {
			/* Disconnect redis early as we don't need it anymore */
			ud->terminated = 1;
			ac = ud->ctx;
			ud->ctx = NULL;

			if (ac) {
				msg_debug_lua_redis ("release redis connection ud=%p; ctx=%p; refcount=%d",
						ud, ctx, ctx->ref.refcount);
				rspamd_redis_pool_release_connection (ud->pool, ac,
						(ctx->flags & LUA_REDIS_NO_POOL) ?
						RSPAMD_REDIS_RELEASE_ENFORCE : RSPAMD_REDIS_RELEASE_DEFAULT);
			}
		}
	}

	REDIS_RELEASE (ctx);
}

static gint
lua_redis_push_results (struct lua_redis_ctx *ctx, lua_State *L)
{
	gint results = g_queue_get_length (ctx->replies);
	gint i;
	gboolean can_use_lua = TRUE;

	results = g_queue_get_length (ctx->replies);

	if (!lua_checkstack (L, (results * 2) + 1)) {
		luaL_error (L, "cannot resize stack to fit %d commands",
				ctx->cmds_pending);

		can_use_lua = FALSE;
	}

	for (i = 0; i < results; i ++) {
		struct lua_redis_result *result = g_queue_pop_head (ctx->replies);

		if (can_use_lua) {
			lua_pushboolean (L, !result->is_error);
			lua_rawgeti (L, LUA_REGISTRYINDEX, result->result_ref);
		}

		luaL_unref (L, LUA_REGISTRYINDEX, result->result_ref);

		g_queue_push_tail (ctx->events_cleanup, result);
	}

	return can_use_lua ? results * 2 : 0;
}

static void
lua_redis_cleanup_events (struct lua_redis_ctx *ctx)
{
	REDIS_RETAIN (ctx); /* To avoid preliminary destruction */

	while (!g_queue_is_empty (ctx->events_cleanup)) {
		struct lua_redis_result *result = g_queue_pop_head (ctx->events_cleanup);

		if (result->item) {
			rspamd_symcache_item_async_dec_check (result->task, result->item, M);
		}

		if (result->s) {
			rspamd_session_remove_event (result->s, lua_redis_fin, result->sp_ud);
		}
		else {
			lua_redis_fin (result->sp_ud);
		}

		g_free (result);
	}

	REDIS_RELEASE (ctx);
}

/**
 * Callback for redis replies
 * @param c context of redis connection
 * @param r redis reply
 * @param priv userdata
 */
static void
lua_redis_callback_sync (redisAsyncContext *ac, gpointer r, gpointer priv)
{
	redisReply *reply = r;

	struct lua_redis_request_specific_userdata *sp_ud = priv;
	struct lua_redis_ctx *ctx;
	struct lua_redis_userdata *ud;
	struct thread_entry* thread;
	gint results;

	ctx = sp_ud->ctx;
	ud = sp_ud->c;
	lua_State *L = ctx->async.cfg->lua_state;

	sp_ud->flags |= LUA_REDIS_SPECIFIC_REPLIED;

	if (ud->terminated) {
		/* We are already at the termination stage, just go out */
		/* TODO:
		   if somebody is waiting for us (ctx->thread), return result,
		   otherwise, indeed, ignore
		 */
		return;
	}

	if (ev_can_stop ( &sp_ud->timeout_ev)) {
		ev_timer_stop (ud->event_loop, &sp_ud->timeout_ev);
	}

	msg_debug_lua_redis ("got reply from redis: %p for query %p", ac, sp_ud);

	struct lua_redis_result *result = g_malloc0 (sizeof *result);

	/* If session is finished, we cannot call lua callbacks */
	if (ac->err == 0) {
		if (r != NULL) {
			if (reply->type != REDIS_REPLY_ERROR) {
				result->is_error = FALSE;
				lua_redis_push_reply (L, reply, ctx->flags & LUA_REDIS_TEXTDATA);
			}
			else {
				result->is_error = TRUE;
				lua_pushstring (L, reply->str);
			}
		}
		else {
			result->is_error = TRUE;
			lua_pushliteral (L, "received no data from server");
		}
	}
	else {
		result->is_error = TRUE;
		if (ac->err == REDIS_ERR_IO) {
			lua_pushstring (L, strerror (errno));
		}
		else {
			lua_pushstring (L, ac->errstr);
		}
	}

	/* if error happened, we should terminate the connection,
	   and release it */

	if (result->is_error && sp_ud->c->ctx) {
		ac = sp_ud->c->ctx;
		/* Set to NULL to avoid double free in dtor */
		sp_ud->c->ctx = NULL;
		ctx->flags |= LUA_REDIS_TERMINATED;

		/*
		 * This will call all callbacks pending so the entire context
		 * will be destructed
		 */
		rspamd_redis_pool_release_connection (sp_ud->c->pool, ac,
				RSPAMD_REDIS_RELEASE_FATAL);
	}

	result->result_ref = luaL_ref (L, LUA_REGISTRYINDEX);
	result->s = ud->s;
	result->item = ud->item;
	result->task = ud->task;
	result->sp_ud = sp_ud;

	g_queue_push_tail (ctx->replies, result);

	ctx->cmds_pending --;

	if (ctx->cmds_pending == 0) {
		if (ctx->thread) {
			/* somebody yielded and waits for results */
			thread = ctx->thread;
			ctx->thread = NULL;

			results = lua_redis_push_results (ctx, thread->lua_state);
			lua_thread_resume (thread, results);
			lua_redis_cleanup_events (ctx);
		}
	}
}

static void
lua_redis_timeout_sync (EV_P_ ev_timer *w, int revents)
{
	struct lua_redis_request_specific_userdata *sp_ud =
			(struct lua_redis_request_specific_userdata *)w->data;
	struct lua_redis_ctx *ctx;
	struct lua_redis_userdata *ud;
	redisAsyncContext *ac;

	ud = sp_ud->c;
	ctx = sp_ud->ctx;
	msg_debug_lua_redis ("timeout while querying redis server: %p, redis: %p", sp_ud,
			sp_ud->c->ctx);

	if (sp_ud->c->ctx) {
		ac = sp_ud->c->ctx;

		/* Set to NULL to avoid double free in dtor */
		sp_ud->c->ctx = NULL;
		ac->err = REDIS_ERR_IO;
		errno = ETIMEDOUT;
		ctx->flags |= LUA_REDIS_TERMINATED;

		/*
		 * This will call all callbacks pending so the entire context
		 * will be destructed
		 */
		rspamd_redis_pool_release_connection (sp_ud->c->pool, ac,
				RSPAMD_REDIS_RELEASE_FATAL);
	}
}

static void
lua_redis_timeout (EV_P_ ev_timer *w, int revents)
{
	struct lua_redis_request_specific_userdata *sp_ud =
			(struct lua_redis_request_specific_userdata *)w->data;
	struct lua_redis_userdata *ud;
	struct lua_redis_ctx *ctx;
	redisAsyncContext *ac;

	if (sp_ud->flags & LUA_REDIS_SPECIFIC_FINISHED) {
		return;
	}

	ctx = sp_ud->ctx;
	ud = sp_ud->c;

	REDIS_RETAIN (ctx);
	msg_debug_lua_redis ("timeout while querying redis server: %p, redis: %p", sp_ud,
			sp_ud->c->ctx);
	lua_redis_push_error ("timeout while connecting the server", ctx, sp_ud, TRUE);

	if (sp_ud->c->ctx) {
		ac = sp_ud->c->ctx;
		/* Set to NULL to avoid double free in dtor */
		sp_ud->c->ctx = NULL;
		ac->err = REDIS_ERR_IO;
		errno = ETIMEDOUT;
		/*
		 * This will call all callbacks pending so the entire context
		 * will be destructed
		 */
		rspamd_redis_pool_release_connection (sp_ud->c->pool, ac,
				RSPAMD_REDIS_RELEASE_FATAL);
	}

	REDIS_RELEASE (ctx);
}


static void
lua_redis_parse_args (lua_State *L, gint idx, const gchar *cmd,
		gchar ***pargs, gsize **parglens, guint *nargs)
{
	gchar **args = NULL;
	gsize *arglens;
	gint top;

	if (idx != 0 && lua_type (L, idx) == LUA_TTABLE) {
		/* Get all arguments */
		lua_pushvalue (L, idx);
		lua_pushnil (L);
		top = 0;

		while (lua_next (L, -2) != 0) {
			gint type = lua_type (L, -1);

			if (type == LUA_TNUMBER || type == LUA_TSTRING ||
					type == LUA_TUSERDATA) {
				top ++;
			}
			lua_pop (L, 1);
		}

		args = g_malloc ((top + 1) * sizeof (gchar *));
		arglens = g_malloc ((top + 1) * sizeof (gsize));
		arglens[0] = strlen (cmd);
		args[0] = g_malloc (arglens[0]);
		memcpy (args[0], cmd, arglens[0]);
		top = 1;
		lua_pushnil (L);

		while (lua_next (L, -2) != 0) {
			gint type = lua_type (L, -1);

			if (type == LUA_TSTRING) {
				const gchar *s;

				s = lua_tolstring (L, -1, &arglens[top]);
				args[top] = g_malloc (arglens[top]);
				memcpy (args[top], s, arglens[top]);
				top ++;
			}
			else if (type == LUA_TUSERDATA) {
				struct rspamd_lua_text *t;

				t = lua_check_text (L, -1);

				if (t && t->start) {
					arglens[top] = t->len;
					args[top] = g_malloc (arglens[top]);
					memcpy (args[top], t->start, arglens[top]);
					top ++;
				}
			}
			else if (type == LUA_TNUMBER) {
				gdouble val = lua_tonumber (L, -1);
				gint r;
				gchar numbuf[64];

				if (val == (gdouble)((gint64)val)) {
					r = rspamd_snprintf (numbuf, sizeof (numbuf), "%L",
							(gint64)val);
				}
				else {
					r = rspamd_snprintf (numbuf, sizeof (numbuf), "%f",
							val);
				}

				arglens[top] = r;
				args[top] = g_malloc (arglens[top]);
				memcpy (args[top], numbuf, arglens[top]);
				top ++;
			}

			lua_pop (L, 1);
		}

		lua_pop (L, 1);
	}
	else {
		/* Use merely cmd */

		args = g_malloc (sizeof (gchar *));
		arglens = g_malloc (sizeof (gsize));
		arglens[0] = strlen (cmd);
		args[0] = g_malloc (arglens[0]);
		memcpy (args[0], cmd, arglens[0]);
		top = 1;
	}

	*pargs = args;
	*parglens = arglens;
	*nargs = top;
}

static struct lua_redis_ctx *
rspamd_lua_redis_prepare_connection (lua_State *L, gint *pcbref, gboolean is_async)
{
	struct lua_redis_ctx *ctx = NULL;
	rspamd_inet_addr_t *ip = NULL;
	struct lua_redis_userdata *ud = NULL;
	struct rspamd_lua_ip *addr = NULL;
	struct rspamd_task *task = NULL;
	const gchar *host = NULL;
	const gchar *password = NULL, *dbname = NULL, *log_tag = NULL;
	gint cbref = -1;
	struct rspamd_config *cfg = NULL;
	struct rspamd_async_session *session = NULL;
	struct ev_loop *ev_base = NULL;
	gboolean ret = FALSE;
	guint flags = 0;

	if (lua_istable (L, 1)) {
		/* Table version */
		lua_pushvalue (L, 1);
		lua_pushstring (L, "task");
		lua_gettable (L, -2);
		if (lua_type (L, -1) == LUA_TUSERDATA) {
			task = lua_check_task_maybe (L, -1);
		}
		lua_pop (L, 1);

		if (!task) {
			/* We need to get ev_base, config and session separately */
			lua_pushstring (L, "config");
			lua_gettable (L, -2);
			if (lua_type (L, -1) == LUA_TUSERDATA) {
				cfg = lua_check_config (L, -1);
			}
			lua_pop (L, 1);

			lua_pushstring (L, "session");
			lua_gettable (L, -2);
			if (lua_type (L, -1) == LUA_TUSERDATA) {
				session = lua_check_session (L, -1);
			}
			lua_pop (L, 1);

			lua_pushstring (L, "ev_base");
			lua_gettable (L, -2);
			if (lua_type (L, -1) == LUA_TUSERDATA) {
				ev_base = lua_check_ev_base (L, -1);
			}
			lua_pop (L, 1);

			if (cfg && ev_base) {
				ret = TRUE;
			}
			else if (!cfg) {
				msg_err_task_check ("config is not passed");
			}
			else {
				msg_err_task_check ("ev_base is not set");
			}
		}
		else {
			cfg = task->cfg;
			session = task->s;
			ev_base = task->event_loop;
			log_tag = task->task_pool->tag.uid;
			ret = TRUE;

		}

		if (pcbref) {
			lua_pushstring (L, "callback");
			lua_gettable (L, -2);
			if (lua_type (L, -1) == LUA_TFUNCTION) {
				/* This also pops function from the stack */
				cbref = luaL_ref (L, LUA_REGISTRYINDEX);
				*pcbref = cbref;
			}
			else {
				*pcbref = -1;
				lua_pop (L, 1);
			}
		}

		lua_pushstring (L, "host");
		lua_gettable (L, -2);

		if (lua_type (L, -1) == LUA_TUSERDATA) {
			addr = lua_check_ip (L, -1);
			host = rspamd_inet_address_to_string_pretty (addr->addr);
		}
		else if (lua_type (L, -1) == LUA_TSTRING) {
			host = lua_tostring (L, -1);

			if (rspamd_parse_inet_address (&ip,
					host, strlen (host), RSPAMD_INET_ADDRESS_PARSE_DEFAULT)) {
				addr = g_alloca (sizeof (*addr));
				addr->addr = ip;

				if (rspamd_inet_address_get_port (ip) == 0) {
					rspamd_inet_address_set_port (ip, 6379);
				}
			}
		}
		lua_pop (L, 1);

		lua_pushstring (L, "password");
		lua_gettable (L, -2);
		if (lua_type (L, -1) == LUA_TSTRING) {
			password = lua_tostring (L, -1);
		}
		lua_pop (L, 1);

		lua_pushstring (L, "dbname");
		lua_gettable (L, -2);
		if (lua_type (L, -1) == LUA_TSTRING) {
			dbname = lua_tostring (L, -1);
		}
		lua_pop (L, 1);

		lua_pushstring (L, "opaque_data");
		lua_gettable (L, -2);
		if (!!lua_toboolean (L, -1)) {
			flags |= LUA_REDIS_TEXTDATA;
		}
		lua_pop (L, 1);

		lua_pushstring (L, "no_pool");
		lua_gettable (L, -2);
		if (!!lua_toboolean (L, -1)) {
			flags |= LUA_REDIS_NO_POOL;
		}
		lua_pop (L, 1);

		lua_pop (L, 1); /* table */

		if (session && rspamd_session_blocked (session)) {
			msg_err_task_check ("Session is being destroying");
			ret = FALSE;
		}

		if (ret && addr != NULL) {
			ctx = g_malloc0 (sizeof (struct lua_redis_ctx));
			REF_INIT_RETAIN (ctx, lua_redis_dtor);
			if (is_async) {
				ctx->flags |= flags | LUA_REDIS_ASYNC;
				ud = &ctx->async;
			}
			else {
				ud = &ctx->async;
				ctx->replies = g_queue_new ();
				ctx->events_cleanup = g_queue_new ();

			}

			ud->s = session;
			ud->cfg = cfg;
			ud->pool = cfg->redis_pool;
			ud->event_loop = ev_base;
			ud->task = task;

			if (log_tag) {
				rspamd_strlcpy (ud->log_tag, log_tag, sizeof (ud->log_tag));
			}
			else {
				/* Use pointer itself as a tag */
				rspamd_snprintf (ud->log_tag, sizeof (ud->log_tag),
						"%ud",
						(int)rspamd_cryptobox_fast_hash (&ud, sizeof (ud), 0));
			}

			if (task) {
				ud->item = rspamd_symcache_get_cur_item (task);
			}

			ret = TRUE;
		}
		else {
			if (cbref != -1) {
				luaL_unref (L, LUA_REGISTRYINDEX, cbref);
			}

			msg_err_task_check ("incorrect function invocation");
			ret = FALSE;
		}
	}

	if (ret) {
		ud->terminated = 0;
		ud->ctx = rspamd_redis_pool_connect (ud->pool,
				dbname, password,
				rspamd_inet_address_to_string (addr->addr),
				rspamd_inet_address_get_port (addr->addr));

		if (ip) {
			rspamd_inet_address_free (ip);
		}

		if (ud->ctx == NULL || ud->ctx->err) {
			if (ud->ctx) {
				msg_err_task_check ("cannot connect to redis: %s",
						ud->ctx->errstr);
				rspamd_redis_pool_release_connection (ud->pool, ud->ctx,
						RSPAMD_REDIS_RELEASE_FATAL);
				ud->ctx = NULL;
			}
			else {
				msg_err_task_check ("cannot connect to redis (OS error): %s",
						strerror (errno));
			}

			REDIS_RELEASE (ctx);

			return NULL;
		}

		msg_debug_lua_redis ("opened redis connection host=%s; ctx=%p; ud=%p",
				host, ctx, ud);

		return ctx;
	}

	if (ip) {
		rspamd_inet_address_free (ip);
	}

	return NULL;
}

/***
 * @function rspamd_redis.make_request({params})
 * Make request to redis server, params is a table of key=value arguments in any order
 * @param {task} task worker task object
 * @param {ip|string} host server address
 * @param {function} callback callback to be called in form `function (task, err, data)`
 * @param {string} cmd command to be sent to redis
 * @param {table} args numeric array of strings used as redis arguments
 * @param {number} timeout timeout in seconds for request (1.0 by default)
 * @return {boolean} `true` if a request has been scheduled
 */
static int
lua_redis_make_request (lua_State *L)
{
	LUA_TRACE_POINT;
	struct lua_redis_request_specific_userdata *sp_ud;
	struct lua_redis_userdata *ud;
	struct lua_redis_ctx *ctx, **pctx;
	const gchar *cmd = NULL;
	gdouble timeout = REDIS_DEFAULT_TIMEOUT;
	gint cbref = -1;
	gboolean ret = FALSE;

	ctx = rspamd_lua_redis_prepare_connection (L, &cbref, TRUE);

	if (ctx) {
		ud = &ctx->async;
		sp_ud = g_malloc0 (sizeof (*sp_ud));
		sp_ud->cbref = cbref;
		sp_ud->c = ud;
		sp_ud->ctx = ctx;

		lua_pushstring (L, "cmd");
		lua_gettable (L, -2);
		cmd = lua_tostring (L, -1);
		lua_pop (L, 1);

		lua_pushstring (L, "timeout");
		lua_gettable (L, 1);
		if (lua_type (L, -1) == LUA_TNUMBER) {
			timeout = lua_tonumber (L, -1);
		}
		lua_pop (L, 1);
		ud->timeout = timeout;


		lua_pushstring (L, "args");
		lua_gettable (L, 1);
		lua_redis_parse_args (L, -1, cmd, &sp_ud->args, &sp_ud->arglens,
				&sp_ud->nargs);
		lua_pop (L, 1);
		LL_PREPEND (ud->specific, sp_ud);

		ret = redisAsyncCommandArgv (ud->ctx,
				lua_redis_callback,
				sp_ud,
				sp_ud->nargs,
				(const gchar **)sp_ud->args,
				sp_ud->arglens);

		if (ret == REDIS_OK) {
			if (ud->s) {
				rspamd_session_add_event (ud->s,
						lua_redis_fin, sp_ud,
						M);

				if (ud->item) {
					rspamd_symcache_item_async_inc (ud->task, ud->item, M);
				}
			}

			REDIS_RETAIN (ctx); /* Cleared by fin event */
			ctx->cmds_pending ++;

			if (ud->ctx->c.flags & REDIS_SUBSCRIBED) {
				msg_debug_lua_redis ("subscribe command, never unref/timeout");
				sp_ud->flags |= LUA_REDIS_SUBSCRIBED;
			}

			sp_ud->timeout_ev.data = sp_ud;
			ev_now_update_if_cheap ((struct ev_loop *)ud->event_loop);
			ev_timer_init (&sp_ud->timeout_ev, lua_redis_timeout, timeout, 0.0);
			ev_timer_start (ud->event_loop, &sp_ud->timeout_ev);

			ret = TRUE;
		}
		else {
			msg_info ("call to redis failed: %s", ud->ctx->errstr);
			rspamd_redis_pool_release_connection (ud->pool, ud->ctx,
					RSPAMD_REDIS_RELEASE_FATAL);
			ud->ctx = NULL;
			REDIS_RELEASE (ctx);
			ret = FALSE;
		}
	}
	else {
		lua_pushboolean (L, FALSE);
		lua_pushnil (L);

		return 2;
	}

	lua_pushboolean (L, ret);

	if (ret) {
		pctx = lua_newuserdata (L, sizeof (ctx));
		*pctx = ctx;
		rspamd_lua_setclass (L, "rspamd{redis}", -1);
	}
	else {
		lua_pushnil (L);
	}

	return 2;
}

/***
 * @function rspamd_redis.make_request_sync({params})
 * Make blocking request to redis server, params is a table of key=value arguments in any order
 * @param {ip|string} host server address
 * @param {string} cmd command to be sent to redis
 * @param {table} args numeric array of strings used as redis arguments
 * @param {number} timeout timeout in seconds for request (1.0 by default)
 * @return {boolean + result} `true` and a result if a request has been successful
 */
static int
lua_redis_make_request_sync (lua_State *L)
{
	LUA_TRACE_POINT;
	struct rspamd_lua_ip *addr = NULL;
	rspamd_inet_addr_t *ip = NULL;
	const gchar *cmd = NULL, *host;
	struct timeval tv;
	gboolean ret = FALSE;
	gdouble timeout = REDIS_DEFAULT_TIMEOUT;
	gchar **args = NULL;
	gsize *arglens = NULL;
	guint nargs = 0, flags = 0;
	redisContext *ctx;
	redisReply *r;

	if (lua_istable (L, 1)) {
		lua_pushvalue (L, 1);

		lua_pushstring (L, "cmd");
		lua_gettable (L, -2);
		cmd = lua_tostring (L, -1);
		lua_pop (L, 1);

		lua_pushstring (L, "host");
		lua_gettable (L, -2);
		if (lua_type (L, -1) == LUA_TUSERDATA) {
			addr = lua_check_ip (L, -1);
		}
		else if (lua_type (L, -1) == LUA_TSTRING) {
			host = lua_tostring (L, -1);
			if (rspamd_parse_inet_address (&ip,
					host, strlen (host), RSPAMD_INET_ADDRESS_PARSE_DEFAULT)) {
				addr = g_alloca (sizeof (*addr));
				addr->addr = ip;

				if (rspamd_inet_address_get_port (ip) == 0) {
					rspamd_inet_address_set_port (ip, 6379);
				}
			}
		}
		lua_pop (L, 1);

		lua_pushstring (L, "timeout");
		lua_gettable (L, -2);
		if (lua_type (L, -1) == LUA_TNUMBER) {
			timeout = lua_tonumber (L, -1);
		}
		lua_pop (L, 1);

		lua_pushstring (L, "opaque_data");
		lua_gettable (L, -2);
		if (!!lua_toboolean (L, -1)) {
			flags |= LUA_REDIS_TEXTDATA;
		}
		lua_pop (L, 1);


		if (cmd) {
			lua_pushstring (L, "args");
			lua_gettable (L, -2);
			lua_redis_parse_args (L, -1, cmd, &args, &arglens, &nargs);
			lua_pop (L, 1);
		}

		lua_pop (L, 1);

		if (addr && cmd) {
			ret = TRUE;
		}
	}

	if (ret) {
		double_to_tv (timeout, &tv);

		if (rspamd_inet_address_get_af (addr->addr) == AF_UNIX) {
			ctx = redisConnectUnixWithTimeout (
					rspamd_inet_address_to_string (addr->addr), tv);
		}
		else {
			ctx = redisConnectWithTimeout (
					rspamd_inet_address_to_string (addr->addr),
					rspamd_inet_address_get_port (addr->addr), tv);
		}

		if (ip) {
			rspamd_inet_address_free (ip);
		}

		if (ctx == NULL || ctx->err) {
			redisFree (ctx);
			lua_redis_free_args (args, arglens, nargs);
			lua_pushboolean (L, FALSE);

			return 1;
		}

		r = redisCommandArgv (ctx,
					nargs,
					(const gchar **)args,
					arglens);

		if (r != NULL) {
			if (r->type != REDIS_REPLY_ERROR) {
				lua_pushboolean (L, TRUE);
				lua_redis_push_reply (L, r, flags & LUA_REDIS_TEXTDATA);
			}
			else {
				lua_pushboolean (L, FALSE);
				lua_pushstring (L, r->str);
			}

			freeReplyObject (r);
			redisFree (ctx);
			lua_redis_free_args (args, arglens, nargs);

			return 2;
		}
		else {
			msg_info ("call to redis failed: %s", ctx->errstr);
			redisFree (ctx);
			lua_redis_free_args (args, arglens, nargs);
			lua_pushboolean (L, FALSE);
		}
	}
	else {
		if (ip) {
			rspamd_inet_address_free (ip);
		}
		msg_err ("bad arguments for redis request");
		lua_pushboolean (L, FALSE);
	}

	return 1;
}

/***
 * @function rspamd_redis.connect({params})
 * Make request to redis server, params is a table of key=value arguments in any order
 * @param {task} task worker task object
 * @param {ip|string} host server address
 * @param {number} timeout timeout in seconds for request (1.0 by default)
 * @return {boolean,redis} new connection object or nil if connection failed
 */
static int
lua_redis_connect (lua_State *L)
{
	LUA_TRACE_POINT;
	struct lua_redis_userdata *ud;
	struct lua_redis_ctx *ctx, **pctx;
	gdouble timeout = REDIS_DEFAULT_TIMEOUT;

	ctx = rspamd_lua_redis_prepare_connection (L, NULL, TRUE);

	if (ctx) {
		ud = &ctx->async;

		lua_pushstring (L, "timeout");
		lua_gettable (L, 1);
		if (lua_type (L, -1) == LUA_TNUMBER) {
			timeout = lua_tonumber (L, -1);
		}

		lua_pop (L, 1);
		ud->timeout = timeout;
	}
	else {
		lua_pushboolean (L, FALSE);
		lua_pushnil (L);

		return 2;
	}

	lua_pushboolean (L, TRUE);
	pctx = lua_newuserdata (L, sizeof (ctx));
	*pctx = ctx;
	rspamd_lua_setclass (L, "rspamd{redis}", -1);

	return 2;
}

/***
 * @function rspamd_redis.connect_sync({params})
 * Make blocking request to redis server, params is a table of key=value arguments in any order
 * @param {ip|string} host server address
 * @param {number} timeout timeout in seconds for request (1.0 by default)
 * @return {redis} redis object if a request has been successful
 */
static int
lua_redis_connect_sync (lua_State *L)
{
	LUA_TRACE_POINT;
	gdouble timeout = REDIS_DEFAULT_TIMEOUT;
	struct lua_redis_ctx *ctx, **pctx;

	ctx = rspamd_lua_redis_prepare_connection (L, NULL, FALSE);

	if (ctx) {
		if (lua_istable (L, 1)) {
			lua_pushstring (L, "timeout");
			lua_gettable (L, 1);
			if (lua_type (L, -1) == LUA_TNUMBER) {
				timeout = lua_tonumber (L, -1);
			}
			lua_pop (L, 1);
		}

		ctx->async.timeout = timeout;

		lua_pushboolean (L, TRUE);
		pctx = lua_newuserdata (L, sizeof (ctx));
		*pctx = ctx;
		rspamd_lua_setclass (L, "rspamd{redis}", -1);
	}
	else {
		lua_pushboolean (L, FALSE);
		lua_pushstring (L, "bad arguments for redis request");
		return 2;
	}

	return 2;
}

/***
 * @method rspamd_redis:add_cmd(cmd, {args})
 * Append new cmd to redis pipeline
 * @param {string} cmd command to be sent to redis
 * @param {table} args array of strings used as redis arguments
 * @return {boolean} `true` if a request has been successful
 */
static int
lua_redis_add_cmd (lua_State *L)
{
	LUA_TRACE_POINT;
	struct lua_redis_ctx *ctx = lua_check_redis (L, 1);
	struct lua_redis_request_specific_userdata *sp_ud;
	struct lua_redis_userdata *ud;
	const gchar *cmd = NULL;
	gint args_pos = 2;
	gint cbref = -1, ret;

	if (ctx) {
		if (ctx->flags & LUA_REDIS_TERMINATED) {
			lua_pushboolean (L, FALSE);
			lua_pushstring (L, "Connection is terminated");

			return 2;
		}

		/* Async version */
		if (lua_type (L, 2) == LUA_TSTRING) {
			/* No callback version */
			cmd = lua_tostring (L, 2);
			args_pos = 3;
		}
		else if (lua_type (L, 2) == LUA_TFUNCTION) {
			lua_pushvalue (L, 2);
			cbref = luaL_ref (L, LUA_REGISTRYINDEX);
			cmd = lua_tostring (L, 3);
			args_pos = 4;
		}
		else {
			return luaL_error (L, "invalid arguments");
		}

		sp_ud = g_malloc0 (sizeof (*sp_ud));
		if (IS_ASYNC (ctx)) {
			sp_ud->c = &ctx->async;
			ud = &ctx->async;
			sp_ud->cbref = cbref;
		}
		else {
			sp_ud->c = &ctx->async;
			ud = &ctx->async;
		}
		sp_ud->ctx = ctx;

		lua_redis_parse_args (L, args_pos, cmd, &sp_ud->args,
					&sp_ud->arglens, &sp_ud->nargs);

		LL_PREPEND (sp_ud->c->specific, sp_ud);

		if (ud->s && rspamd_session_blocked (ud->s)) {
			lua_pushboolean (L, 0);
			lua_pushstring (L, "session is terminating");

			return 2;
		}

		if (IS_ASYNC (ctx)) {
			ret = redisAsyncCommandArgv (sp_ud->c->ctx,
					lua_redis_callback,
					sp_ud,
					sp_ud->nargs,
					(const gchar **)sp_ud->args,
					sp_ud->arglens);
		}
		else {
			ret = redisAsyncCommandArgv (sp_ud->c->ctx,
					lua_redis_callback_sync,
					sp_ud,
					sp_ud->nargs,
					(const gchar **)sp_ud->args,
					sp_ud->arglens);
		}

		if (ret == REDIS_OK) {
			if (ud->s) {
				rspamd_session_add_event (ud->s,
						lua_redis_fin,
						sp_ud,
						M);

				if (ud->item) {
					rspamd_symcache_item_async_inc (ud->task, ud->item, M);
				}
			}

			sp_ud->timeout_ev.data = sp_ud;

			if (IS_ASYNC (ctx)) {
				ev_timer_init (&sp_ud->timeout_ev, lua_redis_timeout,
						sp_ud->c->timeout, 0.0);
			}
			else {
				ev_timer_init (&sp_ud->timeout_ev, lua_redis_timeout_sync,
						sp_ud->c->timeout, 0.0);
			}

			ev_timer_start (ud->event_loop, &sp_ud->timeout_ev);
			REDIS_RETAIN (ctx);
			ctx->cmds_pending ++;
		}
		else {
			msg_info ("call to redis failed: %s",
					sp_ud->c->ctx->errstr);
			lua_pushboolean (L, 0);
			lua_pushstring (L, sp_ud->c->ctx->errstr);

			return 2;
		}
	}

	lua_pushboolean (L, true);

	return 1;
}

/***
 * @method rspamd_redis:exec()
 * Executes pending commands (suitable for blocking IO only for now)
 * @return {boolean}, {table}, ...: pairs in format [bool, result] for each request pending
 */
static int
lua_redis_exec (lua_State *L)
{
	LUA_TRACE_POINT;
	struct lua_redis_ctx *ctx = lua_check_redis (L, 1);

	if (ctx == NULL) {
		lua_error (L);

		return 1;
	}

	if (IS_ASYNC (ctx)) {
		lua_pushstring (L, "Async redis pipelining is not implemented");
		lua_error (L);
		return 0;
	}
	else {
		if (false /* !ctx->d.sync */) {
			lua_pushstring (L, "cannot exec commands when not connected");
			lua_error (L);
			return 0;
		}
		else {
			if (ctx->cmds_pending == 0 && g_queue_get_length (ctx->replies) == 0) {
				lua_pushstring (L, "No pending commands to execute");
				lua_error (L);
			}
			if (ctx->cmds_pending == 0 && g_queue_get_length (ctx->replies) > 0) {
				gint results = lua_redis_push_results (ctx, L);
				return results;
			}
			else {
				ctx->thread = lua_thread_pool_get_running_entry (ctx->async.cfg->lua_thread_pool);
				return lua_thread_yield (ctx->thread, 0);
			}
		}
	}
}
#else
static int
lua_redis_make_request (lua_State *L)
{
	msg_warn ("rspamd is compiled with no redis support");

	lua_pushboolean (L, FALSE);

	return 1;
}
static int
lua_redis_make_request_sync (lua_State *L)
{
	msg_warn ("rspamd is compiled with no redis support");

	lua_pushboolean (L, FALSE);

	return 1;
}
static int
lua_redis_connect (lua_State *L)
{
	msg_warn ("rspamd is compiled with no redis support");

	lua_pushboolean (L, FALSE);

	return 1;
}
static int
lua_redis_connect_sync (lua_State *L)
{
	msg_warn ("rspamd is compiled with no redis support");

	lua_pushboolean (L, FALSE);

	return 1;
}
static int
lua_redis_add_cmd (lua_State *L)
{
	msg_warn ("rspamd is compiled with no redis support");

	lua_pushboolean (L, FALSE);

	return 1;
}
static int
lua_redis_exec (lua_State *L)
{
	msg_warn ("rspamd is compiled with no redis support");

	lua_pushboolean (L, FALSE);

	return 1;
}
static int
lua_redis_gc (lua_State *L)
{
	return 0;
}
#endif

static gint
lua_load_redis (lua_State * L)
{
	lua_newtable (L);
	luaL_register (L, NULL, redislib_f);

	return 1;
}

static gint
lua_redis_null_idx (lua_State *L)
{
	lua_pushnil (L);

	return 1;
}

static void
lua_redis_null_mt (lua_State *L)
{
	luaL_newmetatable (L, "redis{null}");

	lua_pushcfunction (L, lua_redis_null_idx);
	lua_setfield (L, -2, "__index");
	lua_pushcfunction (L, lua_redis_null_idx);
	lua_setfield (L, -2, "__tostring");

	lua_pop (L, 1);
}

/**
 * Open redis library
 * @param L lua stack
 * @return
 */
void
luaopen_redis (lua_State * L)
{
	rspamd_lua_new_class (L, "rspamd{redis}", redislib_m);
	lua_pop (L, 1);
	rspamd_lua_add_preload (L, "rspamd_redis", lua_load_redis);

	/* Set null element */
	lua_redis_null_mt (L);
	redis_null = lua_newuserdata (L, 0);
	luaL_getmetatable (L, "redis{null}");
	lua_setmetatable (L, -2);
	lua_setfield (L, LUA_REGISTRYINDEX, "redis.null");
}
ion value='backport/48689/stable29'>backport/48689/stable29</option>
<option value='backport/48689/stable30'>backport/48689/stable30</option>
<option value='backport/48696/stable28'>backport/48696/stable28</option>
<option value='backport/48696/stable29'>backport/48696/stable29</option>
<option value='backport/48696/stable30'>backport/48696/stable30</option>
<option value='backport/48723/stable30'>backport/48723/stable30</option>
<option value='backport/48728/stable30'>backport/48728/stable30</option>
<option value='backport/48736/stable27'>backport/48736/stable27</option>
<option value='backport/48736/stable28'>backport/48736/stable28</option>
<option value='backport/48736/stable29'>backport/48736/stable29</option>
<option value='backport/48736/stable30'>backport/48736/stable30</option>
<option value='backport/48737/stable30'>backport/48737/stable30</option>
<option value='backport/48743/stable29'>backport/48743/stable29</option>
<option value='backport/48743/stable30'>backport/48743/stable30</option>
<option value='backport/48749/stable27'>backport/48749/stable27</option>
<option value='backport/48760/stable30'>backport/48760/stable30</option>
<option value='backport/48766/stable28'>backport/48766/stable28</option>
<option value='backport/48766/stable29'>backport/48766/stable29</option>
<option value='backport/48766/stable30'>backport/48766/stable30</option>
<option value='backport/48769/stable29'>backport/48769/stable29</option>
<option value='backport/48769/stable30'>backport/48769/stable30</option>
<option value='backport/48787/stable30'>backport/48787/stable30</option>
<option value='backport/48788/stable27'>backport/48788/stable27</option>
<option value='backport/48788/stable28'>backport/48788/stable28</option>
<option value='backport/48788/stable29'>backport/48788/stable29</option>
<option value='backport/48788/stable30'>backport/48788/stable30</option>
<option value='backport/48795/stable31'>backport/48795/stable31</option>
<option value='backport/48799/stable30'>backport/48799/stable30</option>
<option value='backport/48809/stable30'>backport/48809/stable30</option>
<option value='backport/48824/stable29'>backport/48824/stable29</option>
<option value='backport/48833/stable30'>backport/48833/stable30</option>
<option value='backport/48839/stable28'>backport/48839/stable28</option>
<option value='backport/48839/stable29'>backport/48839/stable29</option>
<option value='backport/48839/stable30'>backport/48839/stable30</option>
<option value='backport/48850/stable30'>backport/48850/stable30</option>
<option value='backport/48852/stable30'>backport/48852/stable30</option>
<option value='backport/48853/stable30'>backport/48853/stable30</option>
<option value='backport/48854/stable30'>backport/48854/stable30</option>
<option value='backport/48863/stable30'>backport/48863/stable30</option>
<option value='backport/48871/stable29'>backport/48871/stable29</option>
<option value='backport/48871/stable30'>backport/48871/stable30</option>
<option value='backport/48882/stable30'>backport/48882/stable30</option>
<option value='backport/48887/stable29'>backport/48887/stable29</option>
<option value='backport/48887/stable30'>backport/48887/stable30</option>
<option value='backport/48889/stable28'>backport/48889/stable28</option>
<option value='backport/48898/stable28'>backport/48898/stable28</option>
<option value='backport/48898/stable29'>backport/48898/stable29</option>
<option value='backport/48898/stable30'>backport/48898/stable30</option>
<option value='backport/48912/stable30'>backport/48912/stable30</option>
<option value='backport/48915/stable28'>backport/48915/stable28</option>
<option value='backport/48915/stable29'>backport/48915/stable29</option>
<option value='backport/48915/stable30'>backport/48915/stable30</option>
<option value='backport/48917/stable25'>backport/48917/stable25</option>
<option value='backport/48917/stable26'>backport/48917/stable26</option>
<option value='backport/48917/stable27'>backport/48917/stable27</option>
<option value='backport/48917/stable28'>backport/48917/stable28</option>
<option value='backport/48917/stable29'>backport/48917/stable29</option>
<option value='backport/48917/stable30'>backport/48917/stable30</option>
<option value='backport/48918/stable28'>backport/48918/stable28</option>
<option value='backport/48918/stable29'>backport/48918/stable29</option>
<option value='backport/48918/stable30'>backport/48918/stable30</option>
<option value='backport/48921/stable25'>backport/48921/stable25</option>
<option value='backport/48921/stable26'>backport/48921/stable26</option>
<option value='backport/48921/stable27'>backport/48921/stable27</option>
<option value='backport/48921/stable28'>backport/48921/stable28</option>
<option value='backport/48921/stable29'>backport/48921/stable29</option>
<option value='backport/48921/stable30'>backport/48921/stable30</option>
<option value='backport/48933/stable28'>backport/48933/stable28</option>
<option value='backport/48933/stable29'>backport/48933/stable29</option>
<option value='backport/48933/stable30'>backport/48933/stable30</option>
<option value='backport/48934/stable28'>backport/48934/stable28</option>
<option value='backport/48947/stable28'>backport/48947/stable28</option>
<option value='backport/48947/stable29'>backport/48947/stable29</option>
<option value='backport/48947/stable30'>backport/48947/stable30</option>
<option value='backport/48991/stable29'>backport/48991/stable29</option>
<option value='backport/48991/stable30'>backport/48991/stable30</option>
<option value='backport/48992/stable27'>backport/48992/stable27</option>
<option value='backport/48992/stable28'>backport/48992/stable28</option>
<option value='backport/48992/stable29'>backport/48992/stable29</option>
<option value='backport/48992/stable30'>backport/48992/stable30</option>
<option value='backport/49004/stable28'>backport/49004/stable28</option>
<option value='backport/49004/stable29'>backport/49004/stable29</option>
<option value='backport/49004/stable30'>backport/49004/stable30</option>
<option value='backport/49009/49009-stable29'>backport/49009/49009-stable29</option>
<option value='backport/49009/stable25'>backport/49009/stable25</option>
<option value='backport/49009/stable26'>backport/49009/stable26</option>
<option value='backport/49009/stable27'>backport/49009/stable27</option>
<option value='backport/49009/stable28'>backport/49009/stable28</option>
<option value='backport/49009/stable30'>backport/49009/stable30</option>
<option value='backport/49017/stable28'>backport/49017/stable28</option>
<option value='backport/49017/stable29'>backport/49017/stable29</option>
<option value='backport/49017/stable30'>backport/49017/stable30</option>
<option value='backport/49023/stable28'>backport/49023/stable28</option>
<option value='backport/49023/stable29'>backport/49023/stable29</option>
<option value='backport/49023/stable30'>backport/49023/stable30</option>
<option value='backport/49039/stable30'>backport/49039/stable30</option>
<option value='backport/49053/stable28'>backport/49053/stable28</option>
<option value='backport/49053/stable29'>backport/49053/stable29</option>
<option value='backport/49053/stable30'>backport/49053/stable30</option>
<option value='backport/49057/master'>backport/49057/master</option>
<option value='backport/49065/stable28'>backport/49065/stable28</option>
<option value='backport/49065/stable29'>backport/49065/stable29</option>
<option value='backport/49065/stable30'>backport/49065/stable30</option>
<option value='backport/49075/stable30'>backport/49075/stable30</option>
<option value='backport/49076/stable28'>backport/49076/stable28</option>
<option value='backport/49076/stable29'>backport/49076/stable29</option>
<option value='backport/49112/stable28'>backport/49112/stable28</option>
<option value='backport/49112/stable29'>backport/49112/stable29</option>
<option value='backport/49112/stable30'>backport/49112/stable30</option>
<option value='backport/49115/stable28'>backport/49115/stable28</option>
<option value='backport/49115/stable30'>backport/49115/stable30</option>
<option value='backport/49130/stable29'>backport/49130/stable29</option>
<option value='backport/49130/stable30'>backport/49130/stable30</option>
<option value='backport/49134/stable30'>backport/49134/stable30</option>
<option value='backport/49139/stable28'>backport/49139/stable28</option>
<option value='backport/49139/stable29'>backport/49139/stable29</option>
<option value='backport/49139/stable30'>backport/49139/stable30</option>
<option value='backport/49141/stable30'>backport/49141/stable30</option>
<option value='backport/49143/stable28'>backport/49143/stable28</option>
<option value='backport/49143/stable29'>backport/49143/stable29</option>
<option value='backport/49143/stable30'>backport/49143/stable30</option>
<option value='backport/49146/stable28'>backport/49146/stable28</option>
<option value='backport/49146/stable29'>backport/49146/stable29</option>
<option value='backport/49146/stable30'>backport/49146/stable30</option>
<option value='backport/49147/stable30'>backport/49147/stable30</option>
<option value='backport/49149/stable29'>backport/49149/stable29</option>
<option value='backport/49150/stable28'>backport/49150/stable28</option>
<option value='backport/49150/stable29'>backport/49150/stable29</option>
<option value='backport/49150/stable30'>backport/49150/stable30</option>
<option value='backport/49153/stable28'>backport/49153/stable28</option>
<option value='backport/49153/stable29'>backport/49153/stable29</option>
<option value='backport/49176/stable30'>backport/49176/stable30</option>
<option value='backport/49196/stable28'>backport/49196/stable28</option>
<option value='backport/49196/stable29'>backport/49196/stable29</option>
<option value='backport/49196/stable30'>backport/49196/stable30</option>
<option value='backport/49199/stable28'>backport/49199/stable28</option>
<option value='backport/49199/stable29'>backport/49199/stable29</option>
<option value='backport/49199/stable30'>backport/49199/stable30</option>
<option value='backport/49203/stable29'>backport/49203/stable29</option>
<option value='backport/49203/stable30'>backport/49203/stable30</option>
<option value='backport/49208/stable29'>backport/49208/stable29</option>
<option value='backport/49208/stable30'>backport/49208/stable30</option>
<option value='backport/49209/stable30'>backport/49209/stable30</option>
<option value='backport/49218/stable28'>backport/49218/stable28</option>
<option value='backport/49218/stable29'>backport/49218/stable29</option>
<option value='backport/49218/stable30'>backport/49218/stable30</option>
<option value='backport/49219/stable30'>backport/49219/stable30</option>
<option value='backport/49225/stable28'>backport/49225/stable28</option>
<option value='backport/49225/stable29'>backport/49225/stable29</option>
<option value='backport/49225/stable30'>backport/49225/stable30</option>
<option value='backport/49226/stable30'>backport/49226/stable30</option>
<option value='backport/49232/stable28'>backport/49232/stable28</option>
<option value='backport/49232/stable29'>backport/49232/stable29</option>
<option value='backport/49232/stable30'>backport/49232/stable30</option>
<option value='backport/49237/stable30'>backport/49237/stable30</option>
<option value='backport/49259/stable30'>backport/49259/stable30</option>
<option value='backport/49260/stable30'>backport/49260/stable30</option>
<option value='backport/49261/stable30'>backport/49261/stable30</option>
<option value='backport/49262/stable28'>backport/49262/stable28</option>
<option value='backport/49262/stable29'>backport/49262/stable29</option>
<option value='backport/49271/stable29'>backport/49271/stable29</option>
<option value='backport/49271/stable30'>backport/49271/stable30</option>
<option value='backport/49281/stable30'>backport/49281/stable30</option>
<option value='backport/49288/stable29'>backport/49288/stable29</option>
<option value='backport/49288/stable30'>backport/49288/stable30</option>
<option value='backport/49293/stable30'>backport/49293/stable30</option>
<option value='backport/49308/stable29'>backport/49308/stable29</option>
<option value='backport/49308/stable30'>backport/49308/stable30</option>
<option value='backport/49311/stable28'>backport/49311/stable28</option>
<option value='backport/49311/stable29'>backport/49311/stable29</option>
<option value='backport/49311/stable30'>backport/49311/stable30</option>
<option value='backport/49315/stable28'>backport/49315/stable28</option>
<option value='backport/49315/stable29'>backport/49315/stable29</option>
<option value='backport/49315/stable30'>backport/49315/stable30</option>
<option value='backport/49332/stable28'>backport/49332/stable28</option>
<option value='backport/49332/stable29'>backport/49332/stable29</option>
<option value='backport/49332/stable30'>backport/49332/stable30</option>
<option value='backport/49346/stable30'>backport/49346/stable30</option>
<option value='backport/49351/stable29'>backport/49351/stable29</option>
<option value='backport/49351/stable30'>backport/49351/stable30</option>
<option value='backport/49357/stable30'>backport/49357/stable30</option>
<option value='backport/49361/stable28'>backport/49361/stable28</option>
<option value='backport/49361/stable29'>backport/49361/stable29</option>
<option value='backport/49361/stable30'>backport/49361/stable30</option>
<option value='backport/49372/stable28'>backport/49372/stable28</option>
<option value='backport/49372/stable29'>backport/49372/stable29</option>
<option value='backport/49372/stable30'>backport/49372/stable30</option>
<option value='backport/49373/stable29'>backport/49373/stable29</option>
<option value='backport/49380/stable30'>backport/49380/stable30</option>
<option value='backport/49384/master'>backport/49384/master</option>
<option value='backport/49398/stable29'>backport/49398/stable29</option>
<option value='backport/49398/stable30'>backport/49398/stable30</option>
<option value='backport/49432/master'>backport/49432/master</option>
<option value='backport/49432/stable30'>backport/49432/stable30</option>
<option value='backport/49434/stable30'>backport/49434/stable30</option>
<option value='backport/49440/stable29'>backport/49440/stable29</option>
<option value='backport/49440/stable30'>backport/49440/stable30</option>
<option value='backport/49440/stable31'>backport/49440/stable31</option>
<option value='backport/49442/stable28'>backport/49442/stable28</option>
<option value='backport/49442/stable29'>backport/49442/stable29</option>
<option value='backport/49442/stable30'>backport/49442/stable30</option>
<option value='backport/49451/stable29'>backport/49451/stable29</option>
<option value='backport/49451/stable30'>backport/49451/stable30</option>
<option value='backport/49454/stable28'>backport/49454/stable28</option>
<option value='backport/49454/stable29'>backport/49454/stable29</option>
<option value='backport/49454/stable30'>backport/49454/stable30</option>
<option value='backport/49459/stable30'>backport/49459/stable30</option>
<option value='backport/49464/stable28'>backport/49464/stable28</option>
<option value='backport/49464/stable29'>backport/49464/stable29</option>
<option value='backport/49464/stable30'>backport/49464/stable30</option>
<option value='backport/49476/stable28'>backport/49476/stable28</option>
<option value='backport/49476/stable29'>backport/49476/stable29</option>
<option value='backport/49476/stable30'>backport/49476/stable30</option>
<option value='backport/49477/stable30'>backport/49477/stable30</option>
<option value='backport/49489/stable30'>backport/49489/stable30</option>
<option value='backport/49493/stable28'>backport/49493/stable28</option>
<option value='backport/49493/stable29'>backport/49493/stable29</option>
<option value='backport/49494/stable29'>backport/49494/stable29</option>
<option value='backport/49494/stable29-squashed'>backport/49494/stable29-squashed</option>
<option value='backport/49494/stable30'>backport/49494/stable30</option>
<option value='backport/49503/stable28'>backport/49503/stable28</option>
<option value='backport/49503/stable29'>backport/49503/stable29</option>
<option value='backport/49503/stable30'>backport/49503/stable30</option>
<option value='backport/49528/stable28'>backport/49528/stable28</option>
<option value='backport/49528/stable29'>backport/49528/stable29</option>
<option value='backport/49528/stable30'>backport/49528/stable30</option>
<option value='backport/49551/stable29'>backport/49551/stable29</option>
<option value='backport/49551/stable30'>backport/49551/stable30</option>
<option value='backport/49552/stable28'>backport/49552/stable28</option>
<option value='backport/49552/stable29'>backport/49552/stable29</option>
<option value='backport/49552/stable30'>backport/49552/stable30</option>
<option value='backport/49552/stable31'>backport/49552/stable31</option>
<option value='backport/49557/stable30'>backport/49557/stable30</option>
<option value='backport/49569/stable29'>backport/49569/stable29</option>
<option value='backport/49569/stable30'>backport/49569/stable30</option>
<option value='backport/49581/stable28'>backport/49581/stable28</option>
<option value='backport/49581/stable30'>backport/49581/stable30</option>
<option value='backport/49587/stable30'>backport/49587/stable30</option>
<option value='backport/49588/stable29'>backport/49588/stable29</option>
<option value='backport/49588/stable30'>backport/49588/stable30</option>
<option value='backport/49602/stable28'>backport/49602/stable28</option>
<option value='backport/49602/stable29'>backport/49602/stable29</option>
<option value='backport/49602/stable30'>backport/49602/stable30</option>
<option value='backport/49629/stable29'>backport/49629/stable29</option>
<option value='backport/49631/stable29'>backport/49631/stable29</option>
<option value='backport/49639/stable28'>backport/49639/stable28</option>
<option value='backport/49639/stable29'>backport/49639/stable29</option>
<option value='backport/49639/stable30'>backport/49639/stable30</option>
<option value='backport/49639/stable31'>backport/49639/stable31</option>
<option value='backport/49645/stable31'>backport/49645/stable31</option>
<option value='backport/49677/stable30'>backport/49677/stable30</option>
<option value='backport/49681/stable29'>backport/49681/stable29</option>
<option value='backport/49681/stable30'>backport/49681/stable30</option>
<option value='backport/49685/stable28'>backport/49685/stable28</option>
<option value='backport/49685/stable29'>backport/49685/stable29</option>
<option value='backport/49685/stable30'>backport/49685/stable30</option>
<option value='backport/49693/stable29'>backport/49693/stable29</option>
<option value='backport/49693/stable30'>backport/49693/stable30</option>
<option value='backport/49694/stable30'>backport/49694/stable30</option>
<option value='backport/49746/stable30'>backport/49746/stable30</option>
<option value='backport/49747/stable27'>backport/49747/stable27</option>
<option value='backport/49747/stable28'>backport/49747/stable28</option>
<option value='backport/49747/stable29'>backport/49747/stable29</option>
<option value='backport/49747/stable30'>backport/49747/stable30</option>
<option value='backport/49799/stable28'>backport/49799/stable28</option>
<option value='backport/49799/stable29'>backport/49799/stable29</option>
<option value='backport/49799/stable30'>backport/49799/stable30</option>
<option value='backport/49801/stable30'>backport/49801/stable30</option>
<option value='backport/49803/stable29'>backport/49803/stable29</option>
<option value='backport/49803/stable30'>backport/49803/stable30</option>
<option value='backport/49815/stable28'>backport/49815/stable28</option>
<option value='backport/49815/stable29'>backport/49815/stable29</option>
<option value='backport/49820/stable30'>backport/49820/stable30</option>
<option value='backport/49822/stable28'>backport/49822/stable28</option>
<option value='backport/49822/stable29'>backport/49822/stable29</option>
<option value='backport/49832/stable30'>backport/49832/stable30</option>
<option value='backport/49839/stable29'>backport/49839/stable29</option>
<option value='backport/49839/stable30'>backport/49839/stable30</option>
<option value='backport/49843/stable29'>backport/49843/stable29</option>
<option value='backport/49843/stable30'>backport/49843/stable30</option>
<option value='backport/49847/stable30'>backport/49847/stable30</option>
<option value='backport/49852/stable30'>backport/49852/stable30</option>
<option value='backport/49880/stable28'>backport/49880/stable28</option>
<option value='backport/49880/stable30'>backport/49880/stable30</option>
<option value='backport/49882/stable28'>backport/49882/stable28</option>
<option value='backport/49882/stable29'>backport/49882/stable29</option>
<option value='backport/49885/stable30'>backport/49885/stable30</option>
<option value='backport/49887/stable29'>backport/49887/stable29</option>
<option value='backport/49887/stable30'>backport/49887/stable30</option>
<option value='backport/49898/stable30'>backport/49898/stable30</option>
<option value='backport/49900/stable29'>backport/49900/stable29</option>
<option value='backport/49917/stable30'>backport/49917/stable30</option>
<option value='backport/49927/stable28'>backport/49927/stable28</option>
<option value='backport/49962/stable29'>backport/49962/stable29</option>
<option value='backport/49962/stable30'>backport/49962/stable30</option>
<option value='backport/49966/stable29'>backport/49966/stable29</option>
<option value='backport/49966/stable30'>backport/49966/stable30</option>
<option value='backport/49973/master'>backport/49973/master</option>
<option value='backport/49974/stable29'>backport/49974/stable29</option>
<option value='backport/49974/stable30'>backport/49974/stable30</option>
<option value='backport/49988/stable29'>backport/49988/stable29</option>
<option value='backport/49988/stable30'>backport/49988/stable30</option>
<option value='backport/50017/stable29'>backport/50017/stable29</option>
<option value='backport/50017/stable30'>backport/50017/stable30</option>
<option value='backport/50025/stable29'>backport/50025/stable29</option>
<option value='backport/50025/stable30'>backport/50025/stable30</option>
<option value='backport/50026/stable29'>backport/50026/stable29</option>
<option value='backport/50026/stable30'>backport/50026/stable30</option>
<option value='backport/50034/stable29'>backport/50034/stable29</option>
<option value='backport/50034/stable30'>backport/50034/stable30</option>
<option value='backport/50035/stable28'>backport/50035/stable28</option>
<option value='backport/50035/stable29'>backport/50035/stable29</option>
<option value='backport/50035/stable30'>backport/50035/stable30</option>
<option value='backport/50046/stable29'>backport/50046/stable29</option>
<option value='backport/50046/stable30'>backport/50046/stable30</option>
<option value='backport/50053/stable29'>backport/50053/stable29</option>
<option value='backport/50053/stable30'>backport/50053/stable30</option>
<option value='backport/50053/stable31'>backport/50053/stable31</option>
<option value='backport/50070/stable29'>backport/50070/stable29</option>
<option value='backport/50070/stable30'>backport/50070/stable30</option>
<option value='backport/50076/stable29'>backport/50076/stable29</option>
<option value='backport/50076/stable30'>backport/50076/stable30</option>
<option value='backport/50077/stable29'>backport/50077/stable29</option>
<option value='backport/50077/stable30'>backport/50077/stable30</option>
<option value='backport/50081/stable31'>backport/50081/stable31</option>
<option value='backport/50083/stable30'>backport/50083/stable30</option>
<option value='backport/50111/stable29'>backport/50111/stable29</option>
<option value='backport/50111/stable30'>backport/50111/stable30</option>
<option value='backport/50113/stable29'>backport/50113/stable29</option>
<option value='backport/50113/stable30'>backport/50113/stable30</option>
<option value='backport/50123/master'>backport/50123/master</option>
<option value='backport/50123/stable29'>backport/50123/stable29</option>
<option value='backport/50123/stable30'>backport/50123/stable30</option>
<option value='backport/50128/stable29'>backport/50128/stable29</option>
<option value='backport/50128/stable30'>backport/50128/stable30</option>
<option value='backport/50129/stable30'>backport/50129/stable30</option>
<option value='backport/50129/stable31'>backport/50129/stable31</option>
<option value='backport/50152/stable29'>backport/50152/stable29</option>
<option value='backport/50152/stable30'>backport/50152/stable30</option>
<option value='backport/50154/stable29'>backport/50154/stable29</option>
<option value='backport/50161/stable29'>backport/50161/stable29</option>
<option value='backport/50161/stable30'>backport/50161/stable30</option>
<option value='backport/50177/stable29'>backport/50177/stable29</option>
<option value='backport/50177/stable30'>backport/50177/stable30</option>
<option value='backport/50179/stable30'>backport/50179/stable30</option>
<option value='backport/50187/stable30'>backport/50187/stable30</option>
<option value='backport/50192/stable28'>backport/50192/stable28</option>
<option value='backport/50192/stable29'>backport/50192/stable29</option>
<option value='backport/50192/stable30'>backport/50192/stable30</option>
<option value='backport/50193/stable29'>backport/50193/stable29</option>
<option value='backport/50193/stable30'>backport/50193/stable30</option>
<option value='backport/50193/stable31'>backport/50193/stable31</option>
<option value='backport/50220/stable30'>backport/50220/stable30</option>
<option value='backport/50234/stable31'>backport/50234/stable31</option>
<option value='backport/50237/stable29'>backport/50237/stable29</option>
<option value='backport/50241/stable30'>backport/50241/stable30</option>
<option value='backport/50260/stable30'>backport/50260/stable30</option>
<option value='backport/50260/stable31'>backport/50260/stable31</option>
<option value='backport/50270/stable26'>backport/50270/stable26</option>
<option value='backport/50270/stable27'>backport/50270/stable27</option>
<option value='backport/50270/stable28'>backport/50270/stable28</option>
<option value='backport/50270/stable28-follow-up'>backport/50270/stable28-follow-up</option>
<option value='backport/50270/stable29'>backport/50270/stable29</option>
<option value='backport/50270/stable30'>backport/50270/stable30</option>
<option value='backport/50270/stable31'>backport/50270/stable31</option>
<option value='backport/50273/stable29'>backport/50273/stable29</option>
<option value='backport/50273/stable30'>backport/50273/stable30</option>
<option value='backport/50273/stable31'>backport/50273/stable31</option>
<option value='backport/50281/stable31'>backport/50281/stable31</option>
<option value='backport/50282/stable31'>backport/50282/stable31</option>
<option value='backport/50284/stable30'>backport/50284/stable30</option>
<option value='backport/50284/stable31'>backport/50284/stable31</option>
<option value='backport/50292/stable29'>backport/50292/stable29</option>
<option value='backport/50292/stable30'>backport/50292/stable30</option>
<option value='backport/50293/stable29'>backport/50293/stable29</option>
<option value='backport/50293/stable30'>backport/50293/stable30</option>
<option value='backport/50293/stable31'>backport/50293/stable31</option>
<option value='backport/50298/stable29'>backport/50298/stable29</option>
<option value='backport/50298/stable30'>backport/50298/stable30</option>
<option value='backport/50298/stable31'>backport/50298/stable31</option>
<option value='backport/50299/stable28'>backport/50299/stable28</option>
<option value='backport/50299/stable29'>backport/50299/stable29</option>
<option value='backport/50299/stable30'>backport/50299/stable30</option>
<option value='backport/50299/stable31'>backport/50299/stable31</option>
<option value='backport/50319/stable29'>backport/50319/stable29</option>
<option value='backport/50319/stable30'>backport/50319/stable30</option>
<option value='backport/50324/stable30'>backport/50324/stable30</option>
<option value='backport/50324/stable31'>backport/50324/stable31</option>
<option value='backport/50330/stable30'>backport/50330/stable30</option>
<option value='backport/50330/stable31'>backport/50330/stable31</option>
<option value='backport/50331/stable30'>backport/50331/stable30</option>
<option value='backport/50331/stable31'>backport/50331/stable31</option>
<option value='backport/50333/stable29'>backport/50333/stable29</option>
<option value='backport/50353/stable29'>backport/50353/stable29</option>
<option value='backport/50353/stable30'>backport/50353/stable30</option>
<option value='backport/50353/stable31'>backport/50353/stable31</option>
<option value='backport/50362/stable31'>backport/50362/stable31</option>
<option value='backport/50364/stable31'>backport/50364/stable31</option>
<option value='backport/50366/stable31'>backport/50366/stable31</option>
<option value='backport/50368/stable31'>backport/50368/stable31</option>
<option value='backport/50369/stable29'>backport/50369/stable29</option>
<option value='backport/50369/stable30'>backport/50369/stable30</option>
<option value='backport/50369/stable31'>backport/50369/stable31</option>
<option value='backport/50389/stable31'>backport/50389/stable31</option>
<option value='backport/50394/stable30'>backport/50394/stable30</option>
<option value='backport/50394/stable31'>backport/50394/stable31</option>
<option value='backport/50398/stable29'>backport/50398/stable29</option>
<option value='backport/50398/stable30'>backport/50398/stable30</option>
<option value='backport/50424/stable29'>backport/50424/stable29</option>
<option value='backport/50424/stable30'>backport/50424/stable30</option>
<option value='backport/50424/stable31'>backport/50424/stable31</option>
<option value='backport/50426/stable31'>backport/50426/stable31</option>
<option value='backport/50430/stable29'>backport/50430/stable29</option>
<option value='backport/50430/stable30'>backport/50430/stable30</option>
<option value='backport/50436/stable31'>backport/50436/stable31</option>
<option value='backport/50437/stable29'>backport/50437/stable29</option>
<option value='backport/50446/stable31'>backport/50446/stable31</option>
<option value='backport/50447/stable30'>backport/50447/stable30</option>
<option value='backport/50455/stable30'>backport/50455/stable30</option>
<option value='backport/50455/stable31'>backport/50455/stable31</option>
<option value='backport/50464/stable31'>backport/50464/stable31</option>
<option value='backport/50480/stable29'>backport/50480/stable29</option>
<option value='backport/50490/stable30'>backport/50490/stable30</option>
<option value='backport/50490/stable31'>backport/50490/stable31</option>
<option value='backport/50494/stable29'>backport/50494/stable29</option>
<option value='backport/50494/stable30'>backport/50494/stable30</option>
<option value='backport/50494/stable31'>backport/50494/stable31</option>
<option value='backport/50498/stable31'>backport/50498/stable31</option>
<option value='backport/50501/stable31'>backport/50501/stable31</option>
<option value='backport/50503/stable30'>backport/50503/stable30</option>
<option value='backport/50503/stable31'>backport/50503/stable31</option>
<option value='backport/50514/stable29'>backport/50514/stable29</option>
<option value='backport/50514/stable30'>backport/50514/stable30</option>
<option value='backport/50514/stable31'>backport/50514/stable31</option>
<option value='backport/50515/stable29'>backport/50515/stable29</option>
<option value='backport/50515/stable30'>backport/50515/stable30</option>
<option value='backport/50515/stable31'>backport/50515/stable31</option>
<option value='backport/50519/stable29'>backport/50519/stable29</option>
<option value='backport/50519/stable30'>backport/50519/stable30</option>
<option value='backport/50519/stable31'>backport/50519/stable31</option>
<option value='backport/50524/stable30'>backport/50524/stable30</option>
<option value='backport/50524/stable31'>backport/50524/stable31</option>
<option value='backport/50530/stable29'>backport/50530/stable29</option>
<option value='backport/50530/stable30'>backport/50530/stable30</option>
<option value='backport/50530/stable31'>backport/50530/stable31</option>
<option value='backport/50540/stable31'>backport/50540/stable31</option>
<option value='backport/50549/stable29'>backport/50549/stable29</option>
<option value='backport/50550/stable30'>backport/50550/stable30</option>
<option value='backport/50550/stable31'>backport/50550/stable31</option>
<option value='backport/50567/stable30'>backport/50567/stable30</option>
<option value='backport/50567/stable31'>backport/50567/stable31</option>
<option value='backport/50576/stable31'>backport/50576/stable31</option>
<option value='backport/50582/stable30'>backport/50582/stable30</option>
<option value='backport/50582/stable31'>backport/50582/stable31</option>
<option value='backport/50592/stable31'>backport/50592/stable31</option>
<option value='backport/50602/stable30'>backport/50602/stable30</option>
<option value='backport/50602/stable31'>backport/50602/stable31</option>
<option value='backport/50626/stable29'>backport/50626/stable29</option>
<option value='backport/50635/stable31'>backport/50635/stable31</option>
<option value='backport/50640/stable30'>backport/50640/stable30</option>
<option value='backport/50640/stable31'>backport/50640/stable31</option>
<option value='backport/50642/stable29'>backport/50642/stable29</option>
<option value='backport/50642/stable30'>backport/50642/stable30</option>
<option value='backport/50642/stable31'>backport/50642/stable31</option>
<option value='backport/50645/stable31'>backport/50645/stable31</option>
<option value='backport/50655/stable29'>backport/50655/stable29</option>
<option value='backport/50655/stable30'>backport/50655/stable30</option>
<option value='backport/50655/stable31'>backport/50655/stable31</option>
<option value='backport/50657/stable30'>backport/50657/stable30</option>
<option value='backport/50657/stable31'>backport/50657/stable31</option>
<option value='backport/50660/stable29'>backport/50660/stable29</option>
<option value='backport/50660/stable30'>backport/50660/stable30</option>
<option value='backport/50660/stable31'>backport/50660/stable31</option>
<option value='backport/50666/stable27'>backport/50666/stable27</option>
<option value='backport/50666/stable28'>backport/50666/stable28</option>
<option value='backport/50666/stable29'>backport/50666/stable29</option>
<option value='backport/50666/stable30'>backport/50666/stable30</option>
<option value='backport/50666/stable31'>backport/50666/stable31</option>
<option value='backport/50669/stable30'>backport/50669/stable30</option>
<option value='backport/50669/stable31'>backport/50669/stable31</option>
<option value='backport/50678/stable29'>backport/50678/stable29</option>
<option value='backport/50678/stable30'>backport/50678/stable30</option>
<option value='backport/50678/stable31'>backport/50678/stable31</option>
<option value='backport/50680/stable31'>backport/50680/stable31</option>
<option value='backport/50692/stable31'>backport/50692/stable31</option>
<option value='backport/50693/stable28'>backport/50693/stable28</option>
<option value='backport/50697/stable31'>backport/50697/stable31</option>
<option value='backport/50735/stable30'>backport/50735/stable30</option>
<option value='backport/50735/stable31'>backport/50735/stable31</option>
<option value='backport/50739/stable31'>backport/50739/stable31</option>
<option value='backport/50769/stable29'>backport/50769/stable29</option>
<option value='backport/50769/stable30'>backport/50769/stable30</option>
<option value='backport/50769/stable31'>backport/50769/stable31</option>
<option value='backport/50781/stable29'>backport/50781/stable29</option>
<option value='backport/50781/stable30'>backport/50781/stable30</option>
<option value='backport/50781/stable31'>backport/50781/stable31</option>
<option value='backport/50784/stable30'>backport/50784/stable30</option>
<option value='backport/50784/stable31'>backport/50784/stable31</option>
<option value='backport/50794/stable31'>backport/50794/stable31</option>
<option value='backport/50798/stable29'>backport/50798/stable29</option>
<option value='backport/50798/stable31'>backport/50798/stable31</option>
<option value='backport/50807/stable29'>backport/50807/stable29</option>
<option value='backport/50807/stable30'>backport/50807/stable30</option>
<option value='backport/50807/stable31'>backport/50807/stable31</option>
<option value='backport/50809/stable29'>backport/50809/stable29</option>
<option value='backport/50809/stable30'>backport/50809/stable30</option>
<option value='backport/50809/stable31'>backport/50809/stable31</option>
<option value='backport/50814/stable29'>backport/50814/stable29</option>
<option value='backport/50814/stable30'>backport/50814/stable30</option>
<option value='backport/50814/stable31'>backport/50814/stable31</option>
<option value='backport/50816/stable30'>backport/50816/stable30</option>
<option value='backport/50816/stable31'>backport/50816/stable31</option>
<option value='backport/50820/stable29'>backport/50820/stable29</option>
<option value='backport/50820/stable30'>backport/50820/stable30</option>
<option value='backport/50820/stable31'>backport/50820/stable31</option>
<option value='backport/50858/stable29'>backport/50858/stable29</option>
<option value='backport/50860/stable30'>backport/50860/stable30</option>
<option value='backport/50860/stable31'>backport/50860/stable31</option>
<option value='backport/50873/stable31'>backport/50873/stable31</option>
<option value='backport/50874/stable29'>backport/50874/stable29</option>
<option value='backport/50874/stable30'>backport/50874/stable30</option>
<option value='backport/50874/stable31'>backport/50874/stable31</option>
<option value='backport/50878/stable30'>backport/50878/stable30</option>
<option value='backport/50881/stable30'>backport/50881/stable30</option>
<option value='backport/50881/stable31'>backport/50881/stable31</option>
<option value='backport/50896/stable29'>backport/50896/stable29</option>
<option value='backport/50896/stable30'>backport/50896/stable30</option>
<option value='backport/50896/stable31'>backport/50896/stable31</option>
<option value='backport/50903/stable29'>backport/50903/stable29</option>
<option value='backport/50903/stable30'>backport/50903/stable30</option>
<option value='backport/50903/stable31'>backport/50903/stable31</option>
<option value='backport/50904/stable31'>backport/50904/stable31</option>
<option value='backport/50910/stable29'>backport/50910/stable29</option>
<option value='backport/50910/stable30'>backport/50910/stable30</option>
<option value='backport/50910/stable31'>backport/50910/stable31</option>
<option value='backport/50918/stable30'>backport/50918/stable30</option>
<option value='backport/50918/stable31'>backport/50918/stable31</option>
<option value='backport/50919/stable31'>backport/50919/stable31</option>
<option value='backport/50920/stable31'>backport/50920/stable31</option>
<option value='backport/50922/stable29'>backport/50922/stable29</option>
<option value='backport/50922/stable31'>backport/50922/stable31</option>
<option value='backport/50930/stable30'>backport/50930/stable30</option>
<option value='backport/50942/stable31'>backport/50942/stable31</option>
<option value='backport/50943/stable30'>backport/50943/stable30</option>
<option value='backport/50949/stable29'>backport/50949/stable29</option>
<option value='backport/50949/stable30'>backport/50949/stable30</option>
<option value='backport/50949/stable31'>backport/50949/stable31</option>
<option value='backport/50956/stable29'>backport/50956/stable29</option>
<option value='backport/50956/stable30'>backport/50956/stable30</option>
<option value='backport/50956/stable31'>backport/50956/stable31</option>
<option value='backport/50958/stable29'>backport/50958/stable29</option>
<option value='backport/50958/stable30'>backport/50958/stable30</option>
<option value='backport/50958/stable31'>backport/50958/stable31</option>
<option value='backport/50970/stable31'>backport/50970/stable31</option>
<option value='backport/50979/stable31'>backport/50979/stable31</option>
<option value='backport/50985/stable30'>backport/50985/stable30</option>
<option value='backport/50985/stable31'>backport/50985/stable31</option>
<option value='backport/50987/stable31'>backport/50987/stable31</option>
<option value='backport/50992/stable31'>backport/50992/stable31</option>
<option value='backport/51010/stable29'>backport/51010/stable29</option>
<option value='backport/51010/stable30'>backport/51010/stable30</option>
<option value='backport/51010/stable31'>backport/51010/stable31</option>
<option value='backport/51019/stable26'>backport/51019/stable26</option>
<option value='backport/51019/stable27'>backport/51019/stable27</option>
<option value='backport/51019/stable28'>backport/51019/stable28</option>
<option value='backport/51019/stable29'>backport/51019/stable29</option>
<option value='backport/51019/stable30'>backport/51019/stable30</option>
<option value='backport/51019/stable31'>backport/51019/stable31</option>
<option value='backport/51049/stable29'>backport/51049/stable29</option>
<option value='backport/51049/stable30'>backport/51049/stable30</option>
<option value='backport/51049/stable31'>backport/51049/stable31</option>
<option value='backport/51050/stable28'>backport/51050/stable28</option>
<option value='backport/51050/stable29'>backport/51050/stable29</option>
<option value='backport/51050/stable30'>backport/51050/stable30</option>
<option value='backport/51050/stable31'>backport/51050/stable31</option>
<option value='backport/51051/stable25'>backport/51051/stable25</option>
<option value='backport/51051/stable26'>backport/51051/stable26</option>
<option value='backport/51051/stable27'>backport/51051/stable27</option>
<option value='backport/51051/stable28'>backport/51051/stable28</option>
<option value='backport/51051/stable29'>backport/51051/stable29</option>
<option value='backport/51051/stable30'>backport/51051/stable30</option>
<option value='backport/51051/stable31'>backport/51051/stable31</option>
<option value='backport/51069/stable31'>backport/51069/stable31</option>
<option value='backport/51071/stable31'>backport/51071/stable31</option>
<option value='backport/51077/stable31'>backport/51077/stable31</option>
<option value='backport/51079/stable31'>backport/51079/stable31</option>
<option value='backport/51126/stable31'>backport/51126/stable31</option>
<option value='backport/51142/stable30'>backport/51142/stable30</option>
<option value='backport/51142/stable31'>backport/51142/stable31</option>
<option value='backport/51173/master'>backport/51173/master</option>
<option value='backport/cachebuster-stable30'>backport/cachebuster-stable30</option>
<option value='backport/dav-get'>backport/dav-get</option>
<option value='backport/fix-files-title'>backport/fix-files-title</option>
<option value='backportArrayKeySetupCheks'>backportArrayKeySetupCheks</option>
<option value='block-dav-move-parent'>block-dav-move-parent</option>
<option value='branchoff/welcome-stable31'>branchoff/welcome-stable31</option>
<option value='bug/19494/insert-ignore-conflict-for-filecache-extended'>bug/19494/insert-ignore-conflict-for-filecache-extended</option>
<option value='bug/48518/ignore-invalid-dates'>bug/48518/ignore-invalid-dates</option>
<option value='bug/48678/restore-dav-error-response'>bug/48678/restore-dav-error-response</option>
<option value='bug/48678/restore-dav-error-response-2'>bug/48678/restore-dav-error-response-2</option>
<option value='bug/49395/handle-multiple-tags'>bug/49395/handle-multiple-tags</option>
<option value='bug/noid/codeowners-caldav-carddav'>bug/noid/codeowners-caldav-carddav</option>
<option value='bug/noid/drop-group-exists-cache-fetch-list-of-groups'>bug/noid/drop-group-exists-cache-fetch-list-of-groups</option>
<option value='bug/noid/federated-addressbook-sync-without-localaddressallowed'>bug/noid/federated-addressbook-sync-without-localaddressallowed</option>
<option value='bug/noid/handle-n-attendees-in-imip-cancel'>bug/noid/handle-n-attendees-in-imip-cancel</option>
<option value='bug/noid/log-absolute-path-for-locked-exception-through-view'>bug/noid/log-absolute-path-for-locked-exception-through-view</option>
<option value='bug/noid/more-routing-weirdness'>bug/noid/more-routing-weirdness</option>
<option value='bug/noid/profile-clear-not-working'>bug/noid/profile-clear-not-working</option>
<option value='bug/noid/skip-exceptions-in-transfer-ownership'>bug/noid/skip-exceptions-in-transfer-ownership</option>
<option value='bug/noid/weird-ldap-caching'>bug/noid/weird-ldap-caching</option>
<option value='bugfix/45481/controller-parameter-overwrite'>bugfix/45481/controller-parameter-overwrite</option>
<option value='bugfix/47658/dont-fail-precondition-if-unset'>bugfix/47658/dont-fail-precondition-if-unset</option>
<option value='bugfix/50443/fix-log-level-handling'>bugfix/50443/fix-log-level-handling</option>
<option value='bugfix/cleanup-s3-multipart'>bugfix/cleanup-s3-multipart</option>
<option value='bugfix/error-on-reshare-after-transfer-ownership'>bugfix/error-on-reshare-after-transfer-ownership</option>
<option value='bugfix/exception-appscreenshot-notstring'>bugfix/exception-appscreenshot-notstring</option>
<option value='bugfix/fix-not-found-exception-for-anonymous-users'>bugfix/fix-not-found-exception-for-anonymous-users</option>
<option value='bugfix/fix-service-worker-scope'>bugfix/fix-service-worker-scope</option>
<option value='bugfix/noid/add-missing-blurhash'>bugfix/noid/add-missing-blurhash</option>
<option value='bugfix/noid/allow-ratelimit-bypass'>bugfix/noid/allow-ratelimit-bypass</option>
<option value='bugfix/noid/allow-to-fail-fake-AI-providers'>bugfix/noid/allow-to-fail-fake-AI-providers</option>
<option value='bugfix/noid/allow-to-force-db-throttler'>bugfix/noid/allow-to-force-db-throttler</option>
<option value='bugfix/noid/allow-to-get-permissions-of-a-principal'>bugfix/noid/allow-to-get-permissions-of-a-principal</option>
<option value='bugfix/noid/array-keys'>bugfix/noid/array-keys</option>
<option value='bugfix/noid/bump-php-dependency-update-versions'>bugfix/noid/bump-php-dependency-update-versions</option>
<option value='bugfix/noid/censor-more-values'>bugfix/noid/censor-more-values</option>
<option value='bugfix/noid/compatibility-with-30'>bugfix/noid/compatibility-with-30</option>
<option value='bugfix/noid/consistent-handling-of-SensitiveParameter'>bugfix/noid/consistent-handling-of-SensitiveParameter</option>
<option value='bugfix/noid/copy-better-typing-from-notifications-app'>bugfix/noid/copy-better-typing-from-notifications-app</option>
<option value='bugfix/noid/create-a-gap-before-files'>bugfix/noid/create-a-gap-before-files</option>
<option value='bugfix/noid/document-icon-requirements'>bugfix/noid/document-icon-requirements</option>
<option value='bugfix/noid/ensure-translation-of-shipped-apps'>bugfix/noid/ensure-translation-of-shipped-apps</option>
<option value='bugfix/noid/fix-activity-parameter-types'>bugfix/noid/fix-activity-parameter-types</option>
<option value='bugfix/noid/fix-download-activity-parameters'>bugfix/noid/fix-download-activity-parameters</option>
<option value='bugfix/noid/fix-oauth2-owncloud-migration'>bugfix/noid/fix-oauth2-owncloud-migration</option>
<option value='bugfix/noid/fix-otf-loading'>bugfix/noid/fix-otf-loading</option>
<option value='bugfix/noid/fix-rtl-language-list'>bugfix/noid/fix-rtl-language-list</option>
<option value='bugfix/noid/fix-tainted-file-appinfo'>bugfix/noid/fix-tainted-file-appinfo</option>
<option value='bugfix/noid/fix-triple-dot-translation'>bugfix/noid/fix-triple-dot-translation</option>
<option value='bugfix/noid/ignore-sensitivity-when-explicitly-scheduled'>bugfix/noid/ignore-sensitivity-when-explicitly-scheduled</option>
<option value='bugfix/noid/improve-english-sources'>bugfix/noid/improve-english-sources</option>
<option value='bugfix/noid/improve-installation-speed-of-oracle'>bugfix/noid/improve-installation-speed-of-oracle</option>
<option value='bugfix/noid/increase-exclude-list'>bugfix/noid/increase-exclude-list</option>
<option value='bugfix/noid/keep-job-class-limitation'>bugfix/noid/keep-job-class-limitation</option>
<option value='bugfix/noid/mark-more-configs-as-sensitive'>bugfix/noid/mark-more-configs-as-sensitive</option>
<option value='bugfix/noid/more-reliable-tests'>bugfix/noid/more-reliable-tests</option>
<option value='bugfix/noid/oracle-federation'>bugfix/noid/oracle-federation</option>
<option value='bugfix/noid/prevent-infitnite-loop'>bugfix/noid/prevent-infitnite-loop</option>
<option value='bugfix/noid/remove-3rdparty-use'>bugfix/noid/remove-3rdparty-use</option>
<option value='bugfix/noid/remove-more-withConsecutive'>bugfix/noid/remove-more-withConsecutive</option>
<option value='bugfix/noid/run-all-unit-tests'>bugfix/noid/run-all-unit-tests</option>
<option value='bugfix/noid/skip-future-shipped-apps-from-updatenotification-check'>bugfix/noid/skip-future-shipped-apps-from-updatenotification-check</option>
<option value='bugfix/noid/update-opendyslexic'>bugfix/noid/update-opendyslexic</option>
<option value='bugfix/noid/update-phpunit'>bugfix/noid/update-phpunit</option>
<option value='bugfix/noid/validate-parameter-keys'>bugfix/noid/validate-parameter-keys</option>
<option value='bugfix/trim-tags'>bugfix/trim-tags</option>
<option value='build/autoloader/remove-noisy-changes'>build/autoloader/remove-noisy-changes</option>
<option value='build/psalm/unstable-namespace'>build/psalm/unstable-namespace</option>
<option value='build/translation-checker-print-rtl-limited-characters'>build/translation-checker-print-rtl-limited-characters</option>
<option value='cache-delete-notfound-size'>cache-delete-notfound-size</option>
<option value='case-insensitive-login'>case-insensitive-login</option>
<option value='catchNullHash'>catchNullHash</option>
<option value='certificate-manager-fallback'>certificate-manager-fallback</option>
<option value='check-phpoutdated'>check-phpoutdated</option>
<option value='checkColExists'>checkColExists</option>
<option value='checkStorageIdSetCache'>checkStorageIdSetCache</option>
<option value='checkValidEncoding'>checkValidEncoding</option>
<option value='chore/30-symfony'>chore/30-symfony</option>
<option value='chore/31-doctrine'>chore/31-doctrine</option>
<option value='chore/31-phpseclib'>chore/31-phpseclib</option>
<option value='chore/31-symfony'>chore/31-symfony</option>
<option value='chore/3rdparty-stecman-console'>chore/3rdparty-stecman-console</option>
<option value='chore/48408/rename-twitter-to-x'>chore/48408/rename-twitter-to-x</option>
<option value='chore/48409/replace-diaspora-and-twitter'>chore/48409/replace-diaspora-and-twitter</option>
<option value='chore/add-deprecation-date'>chore/add-deprecation-date</option>
<option value='chore/app-owners'>chore/app-owners</option>
<option value='chore/backport-50985'>chore/backport-50985</option>
<option value='chore/cleanup-warnings'>chore/cleanup-warnings</option>
<option value='chore/cypress-typos'>chore/cypress-typos</option>
<option value='chore/deps/nextcloud-calendar-availability-vue-2.2.5'>chore/deps/nextcloud-calendar-availability-vue-2.2.5</option>
<option value='chore/deps/nextcloud-calendar-availability-vue-2.2.6'>chore/deps/nextcloud-calendar-availability-vue-2.2.6</option>
<option value='chore/deps/nextcloud-coding-standard'>chore/deps/nextcloud-coding-standard</option>
<option value='chore/deps/nextcloud-vue-8.22.0'>chore/deps/nextcloud-vue-8.22.0</option>
<option value='chore/deps/openapi-extractor'>chore/deps/openapi-extractor</option>
<option value='chore/drop-query-string-dependency'>chore/drop-query-string-dependency</option>
<option value='chore/drop-skjnldsv/sanitize-svg'>chore/drop-skjnldsv/sanitize-svg</option>
<option value='chore/files-consolitate-route-logic'>chore/files-consolitate-route-logic</option>
<option value='chore/first-login-hours-minutes'>chore/first-login-hours-minutes</option>
<option value='chore/force-style-lint'>chore/force-style-lint</option>
<option value='chore/gender-neutral-language'>chore/gender-neutral-language</option>
<option value='chore/github/groupware-code-owners-update'>chore/github/groupware-code-owners-update</option>
<option value='chore/lazy-mount-providers'>chore/lazy-mount-providers</option>
<option value='chore/legacy-updatenotification'>chore/legacy-updatenotification</option>
<option value='chore/mail-bisect-6e1d9a26209ec5524fbc2fb9c7cbb53315e64d72'>chore/mail-bisect-6e1d9a26209ec5524fbc2fb9c7cbb53315e64d72</option>
<option value='chore/mail-bisect-ee48cafd200233203a1444dba797ef3eb89a35ca'>chore/mail-bisect-ee48cafd200233203a1444dba797ef3eb89a35ca</option>
<option value='chore/mailer-tests'>chore/mailer-tests</option>
<option value='chore/master-searchdav'>chore/master-searchdav</option>
<option value='chore/migrate-encryption-away-from-hooks'>chore/migrate-encryption-away-from-hooks</option>
<option value='chore/migrate-vite'>chore/migrate-vite</option>
<option value='chore/ncselect-label-warning'>chore/ncselect-label-warning</option>
<option value='chore/nextcloud-dialogs'>chore/nextcloud-dialogs</option>
<option value='chore/nextcloud-dialogs-master'>chore/nextcloud-dialogs-master</option>
<option value='chore/nextcloud-dialogs-stable29'>chore/nextcloud-dialogs-stable29</option>
<option value='chore/nextcloud-vue-8.13.0'>chore/nextcloud-vue-8.13.0</option>
<option value='chore/node-moved-old-node'>chore/node-moved-old-node</option>
<option value='chore/noid/coverage'>chore/noid/coverage</option>
<option value='chore/noid/git-blame-ignore-revs'>chore/noid/git-blame-ignore-revs</option>
<option value='chore/phpseclib-30'>chore/phpseclib-30</option>
<option value='chore/prepare-oc_repair-unit10'>chore/prepare-oc_repair-unit10</option>
<option value='chore/remove-deprecated-aliases'>chore/remove-deprecated-aliases</option>
<option value='chore/remove-ijob-execute'>chore/remove-ijob-execute</option>
<option value='chore/remove-ilogger'>chore/remove-ilogger</option>
<option value='chore/remove-legacy-files-scripts'>chore/remove-legacy-files-scripts</option>
<option value='chore/remove-legacy-settings-fors'>chore/remove-legacy-settings-fors</option>
<option value='chore/remove-old-test'>chore/remove-old-test</option>
<option value='chore/remove-travis'>chore/remove-travis</option>
<option value='chore/request-reviews'>chore/request-reviews</option>
<option value='chore/server-annotations'>chore/server-annotations</option>
<option value='chore/stable30-doctrine'>chore/stable30-doctrine</option>
<option value='chore/stable30-vue_8_23_1'>chore/stable30-vue_8_23_1</option>
<option value='chore/symfony-http'>chore/symfony-http</option>
<option value='chore/symfony-process'>chore/symfony-process</option>
<option value='chore/update-gw-codeowners-2'>chore/update-gw-codeowners-2</option>
<option value='chore/update-nc-libs-stable29'>chore/update-nc-libs-stable29</option>
<option value='chore/update-nc-libs-stable30'>chore/update-nc-libs-stable30</option>
<option value='chore/update-nextcloud-vue-23_1'>chore/update-nextcloud-vue-23_1</option>
<option value='chore/update-sass-loader'>chore/update-sass-loader</option>
<option value='chore/update-stub'>chore/update-stub</option>
<option value='chore/update-symfony'>chore/update-symfony</option>
<option value='chore/update_mysql_setup_check_i18n'>chore/update_mysql_setup_check_i18n</option>
<option value='chore/use-codeowners-instead'>chore/use-codeowners-instead</option>
<option value='chore/use-nextcloud-cypress-docker-node'>chore/use-nextcloud-cypress-docker-node</option>
<option value='chore/use-public-api-helper'>chore/use-public-api-helper</option>
<option value='ci-fix-30'>ci-fix-30</option>
<option value='ci/49145/php-8.4-external-storages'>ci/49145/php-8.4-external-storages</option>
<option value='ci/noid/debug-broken-ci'>ci/noid/debug-broken-ci</option>
<option value='ci/noid/enable-required-php-extensions'>ci/noid/enable-required-php-extensions</option>
<option value='ci/noid/improve-running-psalm-locally'>ci/noid/improve-running-psalm-locally</option>
<option value='ci/noid/php-8.4'>ci/noid/php-8.4</option>
<option value='ci/noid/prepare-phpunit-10'>ci/noid/prepare-phpunit-10</option>
<option value='ci/noid/require-up-to-date-psalm-paseline'>ci/noid/require-up-to-date-psalm-paseline</option>
<option value='ci/noid/run-some-autochecks-also-on-non-php-files'>ci/noid/run-some-autochecks-also-on-non-php-files</option>
<option value='ci/noid/skip-other-vendor-bins-when-only-running-psalm'>ci/noid/skip-other-vendor-bins-when-only-running-psalm</option>
<option value='ci/noid/try-to-fix-smb-kerberos'>ci/noid/try-to-fix-smb-kerberos</option>
<option value='ci/noid/update-integration-test-stuff'>ci/noid/update-integration-test-stuff</option>
<option value='ci/oracle'>ci/oracle</option>
<option value='ci/oracle-2'>ci/oracle-2</option>
<option value='ci/phpunit-10'>ci/phpunit-10</option>
<option value='ci/psalm/imagick-extension'>ci/psalm/imagick-extension</option>
<option value='ci/request-reviews-perms'>ci/request-reviews-perms</option>
<option value='ci/revert/47342'>ci/revert/47342</option>
<option value='clean/version-ocp'>clean/version-ocp</option>
<option value='cleanup/event/trashbin'>cleanup/event/trashbin</option>
<option value='clear-pending-two-factor-tokens-also-from-configuration'>clear-pending-two-factor-tokens-also-from-configuration</option>
<option value='clearKeysInBatches'>clearKeysInBatches</option>
<option value='config-carddav-sync-request-timeout'>config-carddav-sync-request-timeout</option>
<option value='container-optimizations'>container-optimizations</option>
<option value='contctsinteraction-usersetting'>contctsinteraction-usersetting</option>
<option value='copy-share-unmasked'>copy-share-unmasked</option>
<option value='copy-update-cache-excluded'>copy-update-cache-excluded</option>
<option value='dav-fix-birthday-sync'>dav-fix-birthday-sync</option>
<option value='dav-open-log-path'>dav-open-log-path</option>
<option value='dav-push-sync'>dav-push-sync</option>
<option value='dav-webcal-default-refresh-rate'>dav-webcal-default-refresh-rate</option>
<option value='davTagColor'>davTagColor</option>
<option value='db-error-logging-27'>db-error-logging-27</option>
<option value='db-error-logging-28'>db-error-logging-28</option>
<option value='dbQueriesExecStmt'>dbQueriesExecStmt</option>
<option value='dbQueriesExecStmt2'>dbQueriesExecStmt2</option>
<option value='dbQueriesExecStmt3'>dbQueriesExecStmt3</option>
<option value='dbQueriesToMaster'>dbQueriesToMaster</option>
<option value='dbal-exception-query'>dbal-exception-query</option>
<option value='dbg/noid/perms'>dbg/noid/perms</option>
<option value='debt/noid/ignore-docker-image-lock-file'>debt/noid/ignore-docker-image-lock-file</option>
<option value='debt/noid/user-changed-event'>debt/noid/user-changed-event</option>
<option value='debug-cypress-grid-view'>debug-cypress-grid-view</option>
<option value='debug-file-exists-backtrace'>debug-file-exists-backtrace</option>
<option value='debug/66440/logs-for-debugging-slow-user-list'>debug/66440/logs-for-debugging-slow-user-list</option>
<option value='debug/doctrine/dbal'>debug/doctrine/dbal</option>
<option value='debug/noid/imaginary'>debug/noid/imaginary</option>
<option value='debug/noid/log-ram-usage-with-threshold'>debug/noid/log-ram-usage-with-threshold</option>
<option value='debug/noid/log-reason-token-mismatch'>debug/noid/log-reason-token-mismatch</option>
<option value='debug/noid/log-reason-token-mismatch-stable27'>debug/noid/log-reason-token-mismatch-stable27</option>
<option value='debug/noid/log-reason-token-mismatch-stable29'>debug/noid/log-reason-token-mismatch-stable29</option>
<option value='debug/preview-invalid-id'>debug/preview-invalid-id</option>
<option value='debug/snae'>debug/snae</option>
<option value='def-share-provider-filecache-joins'>def-share-provider-filecache-joins</option>
<option value='deleteExistingTarget'>deleteExistingTarget</option>
<option value='dependabot/composer/aws/aws-sdk-php-3.324.13'>dependabot/composer/aws/aws-sdk-php-3.324.13</option>
<option value='dependabot/composer/build/integration/behat/behat-3.17.0'>dependabot/composer/build/integration/behat/behat-3.17.0</option>
<option value='dependabot/composer/build/integration/behat/behat-3.18.1'>dependabot/composer/build/integration/behat/behat-3.18.1</option>
<option value='dependabot/composer/build/integration/behat/behat-3.19.0'>dependabot/composer/build/integration/behat/behat-3.19.0</option>
<option value='dependabot/composer/doctrine/dbal-3.9.x'>dependabot/composer/doctrine/dbal-3.9.x</option>
<option value='dependabot/composer/doctrine/dbal-4.0.4'>dependabot/composer/doctrine/dbal-4.0.4</option>
<option value='dependabot/composer/giggsey/libphonenumber-for-php-lite-8.13.45'>dependabot/composer/giggsey/libphonenumber-for-php-lite-8.13.45</option>
<option value='dependabot/composer/giggsey/libphonenumber-for-php-lite-8.13.48'>dependabot/composer/giggsey/libphonenumber-for-php-lite-8.13.48</option>
<option value='dependabot/composer/guzzlehttp/guzzle-7.9.2'>dependabot/composer/guzzlehttp/guzzle-7.9.2</option>
<option value='dependabot/composer/laravel/serializable-closure-1.3.5'>dependabot/composer/laravel/serializable-closure-1.3.5</option>
<option value='dependabot/composer/mlocati/ip-lib-1.18.1'>dependabot/composer/mlocati/ip-lib-1.18.1</option>
<option value='dependabot/composer/sabre/dav-4.7.0'>dependabot/composer/sabre/dav-4.7.0</option>
<option value='dependabot/composer/stable28/aws/aws-sdk-php-3.240.11'>dependabot/composer/stable28/aws/aws-sdk-php-3.240.11</option>
<option value='dependabot/composer/stable30/doctrine/dbal-3.9.1'>dependabot/composer/stable30/doctrine/dbal-3.9.1</option>
<option value='dependabot/composer/stable30/giggsey/libphonenumber-for-php-lite-8.13.45'>dependabot/composer/stable30/giggsey/libphonenumber-for-php-lite-8.13.45</option>
<option value='dependabot/composer/stable30/guzzlehttp/guzzle-7.8.2'>dependabot/composer/stable30/guzzlehttp/guzzle-7.8.2</option>
<option value='dependabot/composer/stable30/laravel/serializable-closure-1.3.5'>dependabot/composer/stable30/laravel/serializable-closure-1.3.5</option>
<option value='dependabot/composer/stable30/mlocati/ip-lib-1.18.1'>dependabot/composer/stable30/mlocati/ip-lib-1.18.1</option>
<option value='dependabot/composer/stable30/symfony-3c0242c262'>dependabot/composer/stable30/symfony-3c0242c262</option>
<option value='dependabot/composer/stable30/symfony-6.4'>dependabot/composer/stable30/symfony-6.4</option>
<option value='dependabot/composer/stable30/web-auth/webauthn-lib-4.8.7'>dependabot/composer/stable30/web-auth/webauthn-lib-4.8.7</option>
<option value='dependabot/composer/symfony-6.4'>dependabot/composer/symfony-6.4</option>
<option value='dependabot/composer/symfony/stable29'>dependabot/composer/symfony/stable29</option>
<option value='dependabot/composer/symfony/string-6.4.13'>dependabot/composer/symfony/string-6.4.13</option>
<option value='dependabot/composer/vendor-bin/cs-fixer/nextcloud/coding-standard-1.3.0'>dependabot/composer/vendor-bin/cs-fixer/nextcloud/coding-standard-1.3.0</option>
<option value='dependabot/composer/vendor-bin/cs-fixer/nextcloud/coding-standard-1.3.2'>dependabot/composer/vendor-bin/cs-fixer/nextcloud/coding-standard-1.3.2</option>
<option value='dependabot/composer/vendor-bin/openapi-extractor/nextcloud/openapi-extractor-1.0.1'>dependabot/composer/vendor-bin/openapi-extractor/nextcloud/openapi-extractor-1.0.1</option>
<option value='dependabot/composer/vendor-bin/openapi-extractor/nextcloud/openapi-extractor-1.1.0'>dependabot/composer/vendor-bin/openapi-extractor/nextcloud/openapi-extractor-1.1.0</option>
<option value='dependabot/composer/vendor-bin/openapi-extractor/nextcloud/openapi-extractor-1.2.2'>dependabot/composer/vendor-bin/openapi-extractor/nextcloud/openapi-extractor-1.2.2</option>
<option value='dependabot/composer/vendor-bin/openapi-extractor/nextcloud/openapi-extractor-1.3.0'>dependabot/composer/vendor-bin/openapi-extractor/nextcloud/openapi-extractor-1.3.0</option>
<option value='dependabot/composer/vendor-bin/openapi-extractor/nextcloud/openapi-extractor-1.4.0'>dependabot/composer/vendor-bin/openapi-extractor/nextcloud/openapi-extractor-1.4.0</option>
<option value='dependabot/composer/web-auth/webauthn-lib-4.9.1'>dependabot/composer/web-auth/webauthn-lib-4.9.1</option>
<option value='dependabot/github_actions/github-actions-062573ba34'>dependabot/github_actions/github-actions-062573ba34</option>
<option value='dependabot/github_actions/github-actions-375e75ddd3'>dependabot/github_actions/github-actions-375e75ddd3</option>
<option value='dependabot/github_actions/github-actions-52fdf4f9c4'>dependabot/github_actions/github-actions-52fdf4f9c4</option>
<option value='dependabot/github_actions/github-actions-560ea78344'>dependabot/github_actions/github-actions-560ea78344</option>
<option value='dependabot/github_actions/github-actions-74498d6e3a'>dependabot/github_actions/github-actions-74498d6e3a</option>
<option value='dependabot/github_actions/github-actions-962ddf9a44'>dependabot/github_actions/github-actions-962ddf9a44</option>
<option value='dependabot/github_actions/github-actions-96894264d4'>dependabot/github_actions/github-actions-96894264d4</option>
<option value='dependabot/github_actions/github-actions-aa3137d618'>dependabot/github_actions/github-actions-aa3137d618</option>
<option value='dependabot/npm_and_yarn/babel-loader-9.2.1'>dependabot/npm_and_yarn/babel-loader-9.2.1</option>
<option value='dependabot/npm_and_yarn/babel/node-7.25.7'>dependabot/npm_and_yarn/babel/node-7.25.7</option>
<option value='dependabot/npm_and_yarn/babel/node-7.26.0'>dependabot/npm_and_yarn/babel/node-7.26.0</option>
<option value='dependabot/npm_and_yarn/babel/plugin-transform-private-methods-7.25.4'>dependabot/npm_and_yarn/babel/plugin-transform-private-methods-7.25.4</option>
<option value='dependabot/npm_and_yarn/babel/plugin-transform-private-methods-7.25.7'>dependabot/npm_and_yarn/babel/plugin-transform-private-methods-7.25.7</option>
<option value='dependabot/npm_and_yarn/babel/plugin-transform-private-methods-7.25.9'>dependabot/npm_and_yarn/babel/plugin-transform-private-methods-7.25.9</option>
<option value='dependabot/npm_and_yarn/chenfengyuan/vue-qrcode-2.0.0'>dependabot/npm_and_yarn/chenfengyuan/vue-qrcode-2.0.0</option>
<option value='dependabot/npm_and_yarn/color-5.0.0'>dependabot/npm_and_yarn/color-5.0.0</option>
<option value='dependabot/npm_and_yarn/core-js-3.39.0'>dependabot/npm_and_yarn/core-js-3.39.0</option>
<option value='dependabot/npm_and_yarn/core-js-3.40.0'>dependabot/npm_and_yarn/core-js-3.40.0</option>
<option value='dependabot/npm_and_yarn/cross-spawn-7.0.6'>dependabot/npm_and_yarn/cross-spawn-7.0.6</option>
<option value='dependabot/npm_and_yarn/cypress-13.15.0'>dependabot/npm_and_yarn/cypress-13.15.0</option>
<option value='dependabot/npm_and_yarn/cypress-axe-1.6.0'>dependabot/npm_and_yarn/cypress-axe-1.6.0</option>
<option value='dependabot/npm_and_yarn/cypress-if-1.13.2'>dependabot/npm_and_yarn/cypress-if-1.13.2</option>
<option value='dependabot/npm_and_yarn/cypress-split-1.24.14'>dependabot/npm_and_yarn/cypress-split-1.24.14</option>
<option value='dependabot/npm_and_yarn/cypress-split-1.24.7'>dependabot/npm_and_yarn/cypress-split-1.24.7</option>
<option value='dependabot/npm_and_yarn/cypress-split-1.24.9'>dependabot/npm_and_yarn/cypress-split-1.24.9</option>
<option value='dependabot/npm_and_yarn/debounce-2.1.1'>dependabot/npm_and_yarn/debounce-2.1.1</option>
<option value='dependabot/npm_and_yarn/debounce-2.2.0'>dependabot/npm_and_yarn/debounce-2.2.0</option>
<option value='dependabot/npm_and_yarn/dompurify-3.1.7'>dependabot/npm_and_yarn/dompurify-3.1.7</option>
<option value='dependabot/npm_and_yarn/dompurify-3.2.4'>dependabot/npm_and_yarn/dompurify-3.2.4</option>
<option value='dependabot/npm_and_yarn/elliptic-6.6.0'>dependabot/npm_and_yarn/elliptic-6.6.0</option>
<option value='dependabot/npm_and_yarn/elliptic-6.6.1'>dependabot/npm_and_yarn/elliptic-6.6.1</option>
<option value='dependabot/npm_and_yarn/eslint-plugin-cypress-4.1.0'>dependabot/npm_and_yarn/eslint-plugin-cypress-4.1.0</option>
<option value='dependabot/npm_and_yarn/focus-trap-7.6.0'>dependabot/npm_and_yarn/focus-trap-7.6.0</option>
<option value='dependabot/npm_and_yarn/focus-trap-7.6.4'>dependabot/npm_and_yarn/focus-trap-7.6.4</option>
<option value='dependabot/npm_and_yarn/jquery-ui-1.14.0'>dependabot/npm_and_yarn/jquery-ui-1.14.0</option>
<option value='dependabot/npm_and_yarn/jquery-ui-1.14.1'>dependabot/npm_and_yarn/jquery-ui-1.14.1</option>
<option value='dependabot/npm_and_yarn/libphonenumber-js-1.11.16'>dependabot/npm_and_yarn/libphonenumber-js-1.11.16</option>
<option value='dependabot/npm_and_yarn/libphonenumber-js-1.11.17'>dependabot/npm_and_yarn/libphonenumber-js-1.11.17</option>
<option value='dependabot/npm_and_yarn/libphonenumber-js-1.11.9'>dependabot/npm_and_yarn/libphonenumber-js-1.11.9</option>
<option value='dependabot/npm_and_yarn/marked-14.1.1'>dependabot/npm_and_yarn/marked-14.1.1</option>
<option value='dependabot/npm_and_yarn/marked-15.0.0'>dependabot/npm_and_yarn/marked-15.0.0</option>
<option value='dependabot/npm_and_yarn/marked-15.0.4'>dependabot/npm_and_yarn/marked-15.0.4</option>
<option value='dependabot/npm_and_yarn/mime-4.0.6'>dependabot/npm_and_yarn/mime-4.0.6</option>
<option value='dependabot/npm_and_yarn/moment-timezone-0.5.47'>dependabot/npm_and_yarn/moment-timezone-0.5.47</option>
<option value='dependabot/npm_and_yarn/multi-206390e743'>dependabot/npm_and_yarn/multi-206390e743</option>
<option value='dependabot/npm_and_yarn/multi-2299424a7d'>dependabot/npm_and_yarn/multi-2299424a7d</option>
<option value='dependabot/npm_and_yarn/multi-843fc42519'>dependabot/npm_and_yarn/multi-843fc42519</option>
<option value='dependabot/npm_and_yarn/multi-9423f4c335'>dependabot/npm_and_yarn/multi-9423f4c335</option>
<option value='dependabot/npm_and_yarn/multi-cf87d80143'>dependabot/npm_and_yarn/multi-cf87d80143</option>
<option value='dependabot/npm_and_yarn/multi-d66d039ac5'>dependabot/npm_and_yarn/multi-d66d039ac5</option>
<option value='dependabot/npm_and_yarn/nanoid-3.3.8'>dependabot/npm_and_yarn/nanoid-3.3.8</option>
<option value='dependabot/npm_and_yarn/nextcloud/axios-2.5.1'>dependabot/npm_and_yarn/nextcloud/axios-2.5.1</option>
<option value='dependabot/npm_and_yarn/nextcloud/calendar-availability-vue-2.2.4'>dependabot/npm_and_yarn/nextcloud/calendar-availability-vue-2.2.4</option>
<option value='dependabot/npm_and_yarn/nextcloud/cypress-1.0.0-beta.12'>dependabot/npm_and_yarn/nextcloud/cypress-1.0.0-beta.12</option>
<option value='dependabot/npm_and_yarn/nextcloud/cypress-1.0.0-beta.14'>dependabot/npm_and_yarn/nextcloud/cypress-1.0.0-beta.14</option>
<option value='dependabot/npm_and_yarn/nextcloud/cypress-1.0.0-beta.9'>dependabot/npm_and_yarn/nextcloud/cypress-1.0.0-beta.9</option>
<option value='dependabot/npm_and_yarn/nextcloud/files-3.10.2'>dependabot/npm_and_yarn/nextcloud/files-3.10.2</option>
<option value='dependabot/npm_and_yarn/nextcloud/password-confirmation-5.3.1'>dependabot/npm_and_yarn/nextcloud/password-confirmation-5.3.1</option>
<option value='dependabot/npm_and_yarn/nextcloud/upload-1.6.1'>dependabot/npm_and_yarn/nextcloud/upload-1.6.1</option>
<option value='dependabot/npm_and_yarn/nextcloud/vue-8.19.0'>dependabot/npm_and_yarn/nextcloud/vue-8.19.0</option>
<option value='dependabot/npm_and_yarn/nextcloud/vue-8.20.0'>dependabot/npm_and_yarn/nextcloud/vue-8.20.0</option>
<option value='dependabot/npm_and_yarn/node-vibrant-4.0.3'>dependabot/npm_and_yarn/node-vibrant-4.0.3</option>
<option value='dependabot/npm_and_yarn/p-limit-6.2.0'>dependabot/npm_and_yarn/p-limit-6.2.0</option>
<option value='dependabot/npm_and_yarn/p-queue-8.1.0'>dependabot/npm_and_yarn/p-queue-8.1.0</option>
<option value='dependabot/npm_and_yarn/pinia-2.2.6'>dependabot/npm_and_yarn/pinia-2.2.6</option>
<option value='dependabot/npm_and_yarn/pinia-2.3.0'>dependabot/npm_and_yarn/pinia-2.3.0</option>
<option value='dependabot/npm_and_yarn/pinia-2.3.1'>dependabot/npm_and_yarn/pinia-2.3.1</option>
<option value='dependabot/npm_and_yarn/pinia-3.0.1'>dependabot/npm_and_yarn/pinia-3.0.1</option>
<option value='dependabot/npm_and_yarn/pinia/testing-0.1.6'>dependabot/npm_and_yarn/pinia/testing-0.1.6</option>
<option value='dependabot/npm_and_yarn/pinia/testing-0.1.7'>dependabot/npm_and_yarn/pinia/testing-0.1.7</option>
<option value='dependabot/npm_and_yarn/puppeteer-23.10.4'>dependabot/npm_and_yarn/puppeteer-23.10.4</option>
<option value='dependabot/npm_and_yarn/puppeteer-23.4.1'>dependabot/npm_and_yarn/puppeteer-23.4.1</option>
<option value='dependabot/npm_and_yarn/puppeteer-23.5.0'>dependabot/npm_and_yarn/puppeteer-23.5.0</option>
<option value='dependabot/npm_and_yarn/puppeteer-24.1.0'>dependabot/npm_and_yarn/puppeteer-24.1.0</option>
<option value='dependabot/npm_and_yarn/query-string-9.1.1'>dependabot/npm_and_yarn/query-string-9.1.1</option>
<option value='dependabot/npm_and_yarn/sass-1.79.3'>dependabot/npm_and_yarn/sass-1.79.3</option>
<option value='dependabot/npm_and_yarn/sass-1.81.0'>dependabot/npm_and_yarn/sass-1.81.0</option>
<option value='dependabot/npm_and_yarn/sass-loader-16.0.3'>dependabot/npm_and_yarn/sass-loader-16.0.3</option>
<option value='dependabot/npm_and_yarn/simplewebauthn/browser-11.0.0'>dependabot/npm_and_yarn/simplewebauthn/browser-11.0.0</option>
<option value='dependabot/npm_and_yarn/simplewebauthn/types-12.0.0'>dependabot/npm_and_yarn/simplewebauthn/types-12.0.0</option>
<option value='dependabot/npm_and_yarn/stable28/babel/preset-typescript-7.24.7'>dependabot/npm_and_yarn/stable28/babel/preset-typescript-7.24.7</option>
<option value='dependabot/npm_and_yarn/stable28/browserslist-useragent-regexp-4.1.3'>dependabot/npm_and_yarn/stable28/browserslist-useragent-regexp-4.1.3</option>
<option value='dependabot/npm_and_yarn/stable28/cypress-13.13.3'>dependabot/npm_and_yarn/stable28/cypress-13.13.3</option>
<option value='dependabot/npm_and_yarn/stable28/cypress-if-1.12.6'>dependabot/npm_and_yarn/stable28/cypress-if-1.12.6</option>
<option value='dependabot/npm_and_yarn/stable28/cypress/vue2-2.1.1'>dependabot/npm_and_yarn/stable28/cypress/vue2-2.1.1</option>
<option value='dependabot/npm_and_yarn/stable28/dompurify-3.1.7'>dependabot/npm_and_yarn/stable28/dompurify-3.1.7</option>
<option value='dependabot/npm_and_yarn/stable28/karma-6.4.4'>dependabot/npm_and_yarn/stable28/karma-6.4.4</option>
<option value='dependabot/npm_and_yarn/stable28/libphonenumber-js-1.10.64'>dependabot/npm_and_yarn/stable28/libphonenumber-js-1.10.64</option>
<option value='dependabot/npm_and_yarn/stable28/moment-timezone-0.5.46'>dependabot/npm_and_yarn/stable28/moment-timezone-0.5.46</option>
<option value='dependabot/npm_and_yarn/stable28/nextcloud/calendar-availability-vue-2.2.4'>dependabot/npm_and_yarn/stable28/nextcloud/calendar-availability-vue-2.2.4</option>
<option value='dependabot/npm_and_yarn/stable28/nextcloud/cypress-1.0.0-beta.10'>dependabot/npm_and_yarn/stable28/nextcloud/cypress-1.0.0-beta.10</option>
<option value='dependabot/npm_and_yarn/stable28/nextcloud/cypress-1.0.0-beta.12'>dependabot/npm_and_yarn/stable28/nextcloud/cypress-1.0.0-beta.12</option>
<option value='dependabot/npm_and_yarn/stable28/nextcloud/cypress-1.0.0-beta.9'>dependabot/npm_and_yarn/stable28/nextcloud/cypress-1.0.0-beta.9</option>
<option value='dependabot/npm_and_yarn/stable28/nextcloud/dialogs-5.3.8'>dependabot/npm_and_yarn/stable28/nextcloud/dialogs-5.3.8</option>
<option value='dependabot/npm_and_yarn/stable28/nextcloud/moment-1.3.2'>dependabot/npm_and_yarn/stable28/nextcloud/moment-1.3.2</option>
<option value='dependabot/npm_and_yarn/stable28/nextcloud/password-confirmation-5.1.1'>dependabot/npm_and_yarn/stable28/nextcloud/password-confirmation-5.1.1</option>
<option value='dependabot/npm_and_yarn/stable28/nextcloud/sharing-0.2.4'>dependabot/npm_and_yarn/stable28/nextcloud/sharing-0.2.4</option>
<option value='dependabot/npm_and_yarn/stable28/pinia-2.2.8'>dependabot/npm_and_yarn/stable28/pinia-2.2.8</option>
<option value='dependabot/npm_and_yarn/stable28/pinia/testing-0.1.6'>dependabot/npm_and_yarn/stable28/pinia/testing-0.1.6</option>
<option value='dependabot/npm_and_yarn/stable28/pinia/testing-0.1.7'>dependabot/npm_and_yarn/stable28/pinia/testing-0.1.7</option>
<option value='dependabot/npm_and_yarn/stable28/testing-library/jest-dom-6.4.8'>dependabot/npm_and_yarn/stable28/testing-library/jest-dom-6.4.8</option>
<option value='dependabot/npm_and_yarn/stable28/types/jest-29.5.14'>dependabot/npm_and_yarn/stable28/types/jest-29.5.14</option>
<option value='dependabot/npm_and_yarn/stable28/underscore-1.13.7'>dependabot/npm_and_yarn/stable28/underscore-1.13.7</option>
<option value='dependabot/npm_and_yarn/stable29/cypress-split-1.24.11'>dependabot/npm_and_yarn/stable29/cypress-split-1.24.11</option>
<option value='dependabot/npm_and_yarn/stable29/cypress-split-1.24.14'>dependabot/npm_and_yarn/stable29/cypress-split-1.24.14</option>
<option value='dependabot/npm_and_yarn/stable29/cypress-split-1.24.9'>dependabot/npm_and_yarn/stable29/cypress-split-1.24.9</option>
<option value='dependabot/npm_and_yarn/stable29/debounce-2.1.1'>dependabot/npm_and_yarn/stable29/debounce-2.1.1</option>
<option value='dependabot/npm_and_yarn/stable29/dockerode-4.0.3'>dependabot/npm_and_yarn/stable29/dockerode-4.0.3</option>
<option value='dependabot/npm_and_yarn/stable29/dockerode-4.0.4'>dependabot/npm_and_yarn/stable29/dockerode-4.0.4</option>
<option value='dependabot/npm_and_yarn/stable29/dompurify-3.1.7'>dependabot/npm_and_yarn/stable29/dompurify-3.1.7</option>
<option value='dependabot/npm_and_yarn/stable29/jquery-ui-1.13.3'>dependabot/npm_and_yarn/stable29/jquery-ui-1.13.3</option>
<option value='dependabot/npm_and_yarn/stable29/jsdoc-4.0.3'>dependabot/npm_and_yarn/stable29/jsdoc-4.0.3</option>
<option value='dependabot/npm_and_yarn/stable29/jsdoc-4.0.4'>dependabot/npm_and_yarn/stable29/jsdoc-4.0.4</option>
<option value='dependabot/npm_and_yarn/stable29/mime-4.0.6'>dependabot/npm_and_yarn/stable29/mime-4.0.6</option>
<option value='dependabot/npm_and_yarn/stable29/moment-timezone-0.5.46'>dependabot/npm_and_yarn/stable29/moment-timezone-0.5.46</option>
<option value='dependabot/npm_and_yarn/stable29/moment-timezone-0.5.47'>dependabot/npm_and_yarn/stable29/moment-timezone-0.5.47</option>
<option value='dependabot/npm_and_yarn/stable29/nextcloud/calendar-availability-vue-2.2.6'>dependabot/npm_and_yarn/stable29/nextcloud/calendar-availability-vue-2.2.6</option>
<option value='dependabot/npm_and_yarn/stable29/nextcloud/cypress-1.0.0-beta.12'>dependabot/npm_and_yarn/stable29/nextcloud/cypress-1.0.0-beta.12</option>
<option value='dependabot/npm_and_yarn/stable29/nextcloud/cypress-1.0.0-beta.13'>dependabot/npm_and_yarn/stable29/nextcloud/cypress-1.0.0-beta.13</option>
<option value='dependabot/npm_and_yarn/stable29/nextcloud/cypress-1.0.0-beta.14'>dependabot/npm_and_yarn/stable29/nextcloud/cypress-1.0.0-beta.14</option>
<option value='dependabot/npm_and_yarn/stable29/nextcloud/event-bus-3.3.2'>dependabot/npm_and_yarn/stable29/nextcloud/event-bus-3.3.2</option>
<option value='dependabot/npm_and_yarn/stable29/nextcloud/files-3.10.1'>dependabot/npm_and_yarn/stable29/nextcloud/files-3.10.1</option>
<option value='dependabot/npm_and_yarn/stable29/nextcloud/files-3.10.2'>dependabot/npm_and_yarn/stable29/nextcloud/files-3.10.2</option>
<option value='dependabot/npm_and_yarn/stable29/nextcloud/moment-1.3.2'>dependabot/npm_and_yarn/stable29/nextcloud/moment-1.3.2</option>
<option value='dependabot/npm_and_yarn/stable29/nextcloud/sharing-0.2.4'>dependabot/npm_and_yarn/stable29/nextcloud/sharing-0.2.4</option>
<option value='dependabot/npm_and_yarn/stable29/nextcloud/upload-1.7.1'>dependabot/npm_and_yarn/stable29/nextcloud/upload-1.7.1</option>
<option value='dependabot/npm_and_yarn/stable29/nextcloud/vue-8.17.1'>dependabot/npm_and_yarn/stable29/nextcloud/vue-8.17.1</option>
<option value='dependabot/npm_and_yarn/stable29/pinia-2.3.1'>dependabot/npm_and_yarn/stable29/pinia-2.3.1</option>
<option value='dependabot/npm_and_yarn/stable29/pinia/testing-0.1.7'>dependabot/npm_and_yarn/stable29/pinia/testing-0.1.7</option>
<option value='dependabot/npm_and_yarn/stable29/testing-library/cypress-10.0.3'>dependabot/npm_and_yarn/stable29/testing-library/cypress-10.0.3</option>
<option value='dependabot/npm_and_yarn/stable29/throttle-debounce-5.0.2'>dependabot/npm_and_yarn/stable29/throttle-debounce-5.0.2</option>
<option value='dependabot/npm_and_yarn/stable29/ts-jest-29.1.5'>dependabot/npm_and_yarn/stable29/ts-jest-29.1.5</option>
<option value='dependabot/npm_and_yarn/stable29/ts-loader-9.5.2'>dependabot/npm_and_yarn/stable29/ts-loader-9.5.2</option>
<option value='dependabot/npm_and_yarn/stable29/types/dockerode-3.3.34'>dependabot/npm_and_yarn/stable29/types/dockerode-3.3.34</option>
<option value='dependabot/npm_and_yarn/stable29/types/dockerode-3.3.35'>dependabot/npm_and_yarn/stable29/types/dockerode-3.3.35</option>
<option value='dependabot/npm_and_yarn/stable29/types/jest-29.5.14'>dependabot/npm_and_yarn/stable29/types/jest-29.5.14</option>
<option value='dependabot/npm_and_yarn/stable29/vue-material-design-icons-5.3.1'>dependabot/npm_and_yarn/stable29/vue-material-design-icons-5.3.1</option>
<option value='dependabot/npm_and_yarn/stable29/vueuse/components-10.11.1'>dependabot/npm_and_yarn/stable29/vueuse/components-10.11.1</option>
<option value='dependabot/npm_and_yarn/stable29/vueuse/core-10.11.1'>dependabot/npm_and_yarn/stable29/vueuse/core-10.11.1</option>
<option value='dependabot/npm_and_yarn/stable29/vueuse/integrations-10.11.1'>dependabot/npm_and_yarn/stable29/vueuse/integrations-10.11.1</option>
<option value='dependabot/npm_and_yarn/stable30/cypress-13.13.3'>dependabot/npm_and_yarn/stable30/cypress-13.13.3</option>
<option value='dependabot/npm_and_yarn/stable30/cypress-if-1.12.6'>dependabot/npm_and_yarn/stable30/cypress-if-1.12.6</option>
<option value='dependabot/npm_and_yarn/stable30/cypress-split-1.24.11'>dependabot/npm_and_yarn/stable30/cypress-split-1.24.11</option>
<option value='dependabot/npm_and_yarn/stable30/cypress-split-1.24.14'>dependabot/npm_and_yarn/stable30/cypress-split-1.24.14</option>
<option value='dependabot/npm_and_yarn/stable30/cypress-split-1.24.9'>dependabot/npm_and_yarn/stable30/cypress-split-1.24.9</option>
<option value='dependabot/npm_and_yarn/stable30/debounce-2.1.1'>dependabot/npm_and_yarn/stable30/debounce-2.1.1</option>
<option value='dependabot/npm_and_yarn/stable30/dockerode-4.0.3'>dependabot/npm_and_yarn/stable30/dockerode-4.0.3</option>
<option value='dependabot/npm_and_yarn/stable30/dockerode-4.0.4'>dependabot/npm_and_yarn/stable30/dockerode-4.0.4</option>
<option value='dependabot/npm_and_yarn/stable30/dompurify-3.1.7'>dependabot/npm_and_yarn/stable30/dompurify-3.1.7</option>
<option value='dependabot/npm_and_yarn/stable30/jsdoc-4.0.4'>dependabot/npm_and_yarn/stable30/jsdoc-4.0.4</option>
<option value='dependabot/npm_and_yarn/stable30/libphonenumber-js-1.11.10'>dependabot/npm_and_yarn/stable30/libphonenumber-js-1.11.10</option>
<option value='dependabot/npm_and_yarn/stable30/libphonenumber-js-1.11.11'>dependabot/npm_and_yarn/stable30/libphonenumber-js-1.11.11</option>
<option value='dependabot/npm_and_yarn/stable30/libphonenumber-js-1.11.16'>dependabot/npm_and_yarn/stable30/libphonenumber-js-1.11.16</option>
<option value='dependabot/npm_and_yarn/stable30/libphonenumber-js-1.11.17'>dependabot/npm_and_yarn/stable30/libphonenumber-js-1.11.17</option>
<option value='dependabot/npm_and_yarn/stable30/libphonenumber-js-1.11.18'>dependabot/npm_and_yarn/stable30/libphonenumber-js-1.11.18</option>
<option value='dependabot/npm_and_yarn/stable30/libphonenumber-js-1.11.19'>dependabot/npm_and_yarn/stable30/libphonenumber-js-1.11.19</option>
<option value='dependabot/npm_and_yarn/stable30/libphonenumber-js-1.11.20'>dependabot/npm_and_yarn/stable30/libphonenumber-js-1.11.20</option>
<option value='dependabot/npm_and_yarn/stable30/libphonenumber-js-1.11.9'>dependabot/npm_and_yarn/stable30/libphonenumber-js-1.11.9</option>
<option value='dependabot/npm_and_yarn/stable30/mime-4.0.6'>dependabot/npm_and_yarn/stable30/mime-4.0.6</option>
<option value='dependabot/npm_and_yarn/stable30/moment-timezone-0.5.46'>dependabot/npm_and_yarn/stable30/moment-timezone-0.5.46</option>
<option value='dependabot/npm_and_yarn/stable30/moment-timezone-0.5.47'>dependabot/npm_and_yarn/stable30/moment-timezone-0.5.47</option>
<option value='dependabot/npm_and_yarn/stable30/nextcloud/axios-2.5.1'>dependabot/npm_and_yarn/stable30/nextcloud/axios-2.5.1</option>
<option value='dependabot/npm_and_yarn/stable30/nextcloud/calendar-availability-vue-2.2.4'>dependabot/npm_and_yarn/stable30/nextcloud/calendar-availability-vue-2.2.4</option>
<option value='dependabot/npm_and_yarn/stable30/nextcloud/calendar-availability-vue-2.2.6'>dependabot/npm_and_yarn/stable30/nextcloud/calendar-availability-vue-2.2.6</option>
<option value='dependabot/npm_and_yarn/stable30/nextcloud/cypress-1.0.0-beta.13'>dependabot/npm_and_yarn/stable30/nextcloud/cypress-1.0.0-beta.13</option>
<option value='dependabot/npm_and_yarn/stable30/nextcloud/cypress-1.0.0-beta.14'>dependabot/npm_and_yarn/stable30/nextcloud/cypress-1.0.0-beta.14</option>
<option value='dependabot/npm_and_yarn/stable30/nextcloud/eslint-config-8.4.2'>dependabot/npm_and_yarn/stable30/nextcloud/eslint-config-8.4.2</option>
<option value='dependabot/npm_and_yarn/stable30/nextcloud/event-bus-3.3.2'>dependabot/npm_and_yarn/stable30/nextcloud/event-bus-3.3.2</option>
<option value='dependabot/npm_and_yarn/stable30/nextcloud/files-3.10.1'>dependabot/npm_and_yarn/stable30/nextcloud/files-3.10.1</option>
<option value='dependabot/npm_and_yarn/stable30/nextcloud/files-3.10.2'>dependabot/npm_and_yarn/stable30/nextcloud/files-3.10.2</option>
<option value='dependabot/npm_and_yarn/stable30/nextcloud/moment-1.3.2'>dependabot/npm_and_yarn/stable30/nextcloud/moment-1.3.2</option>
<option value='dependabot/npm_and_yarn/stable30/nextcloud/password-confirmation-5.3.1'>dependabot/npm_and_yarn/stable30/nextcloud/password-confirmation-5.3.1</option>
<option value='dependabot/npm_and_yarn/stable30/nextcloud/sharing-0.2.4'>dependabot/npm_and_yarn/stable30/nextcloud/sharing-0.2.4</option>
<option value='dependabot/npm_and_yarn/stable30/nextcloud/upload-1.7.1'>dependabot/npm_and_yarn/stable30/nextcloud/upload-1.7.1</option>
<option value='dependabot/npm_and_yarn/stable30/pinia/testing-0.1.5'>dependabot/npm_and_yarn/stable30/pinia/testing-0.1.5</option>
<option value='dependabot/npm_and_yarn/stable30/pinia/testing-0.1.6'>dependabot/npm_and_yarn/stable30/pinia/testing-0.1.6</option>
<option value='dependabot/npm_and_yarn/stable30/pinia/testing-0.1.7'>dependabot/npm_and_yarn/stable30/pinia/testing-0.1.7</option>
<option value='dependabot/npm_and_yarn/stable30/query-string-9.1.1'>dependabot/npm_and_yarn/stable30/query-string-9.1.1</option>
<option value='dependabot/npm_and_yarn/stable30/testing-library/cypress-10.0.3'>dependabot/npm_and_yarn/stable30/testing-library/cypress-10.0.3</option>
<option value='dependabot/npm_and_yarn/stable30/ts-jest-29.2.6'>dependabot/npm_and_yarn/stable30/ts-jest-29.2.6</option>
<option value='dependabot/npm_and_yarn/stable30/ts-loader-9.5.2'>dependabot/npm_and_yarn/stable30/ts-loader-9.5.2</option>
<option value='dependabot/npm_and_yarn/stable30/types/dockerode-3.3.32'>dependabot/npm_and_yarn/stable30/types/dockerode-3.3.32</option>
<option value='dependabot/npm_and_yarn/stable30/types/dockerode-3.3.34'>dependabot/npm_and_yarn/stable30/types/dockerode-3.3.34</option>
<option value='dependabot/npm_and_yarn/stable30/types/dockerode-3.3.35'>dependabot/npm_and_yarn/stable30/types/dockerode-3.3.35</option>
<option value='dependabot/npm_and_yarn/stable30/types/jest-29.5.13'>dependabot/npm_and_yarn/stable30/types/jest-29.5.13</option>
<option value='dependabot/npm_and_yarn/stable30/types/jest-29.5.14'>dependabot/npm_and_yarn/stable30/types/jest-29.5.14</option>
<option value='dependabot/npm_and_yarn/stable30/underscore-1.13.7'>dependabot/npm_and_yarn/stable30/underscore-1.13.7</option>
<option value='dependabot/npm_and_yarn/stable30/vue-material-design-icons-5.3.1'>dependabot/npm_and_yarn/stable30/vue-material-design-icons-5.3.1</option>
<option value='dependabot/npm_and_yarn/stable30/vueuse/components-10.11.1'>dependabot/npm_and_yarn/stable30/vueuse/components-10.11.1</option>
<option value='dependabot/npm_and_yarn/stable30/vueuse/core-10.11.1'>dependabot/npm_and_yarn/stable30/vueuse/core-10.11.1</option>
<option value='dependabot/npm_and_yarn/stable30/vueuse/integrations-10.11.1'>dependabot/npm_and_yarn/stable30/vueuse/integrations-10.11.1</option>
<option value='dependabot/npm_and_yarn/stable31/babel/node-7.25.9'>dependabot/npm_and_yarn/stable31/babel/node-7.25.9</option>
<option value='dependabot/npm_and_yarn/stable31/cypress-13.15.2'>dependabot/npm_and_yarn/stable31/cypress-13.15.2</option>
<option value='dependabot/npm_and_yarn/stable31/cypress-split-1.24.11'>dependabot/npm_and_yarn/stable31/cypress-split-1.24.11</option>
<option value='dependabot/npm_and_yarn/stable31/cypress-split-1.24.9'>dependabot/npm_and_yarn/stable31/cypress-split-1.24.9</option>
<option value='dependabot/npm_and_yarn/stable31/dockerode-4.0.4'>dependabot/npm_and_yarn/stable31/dockerode-4.0.4</option>
<option value='dependabot/npm_and_yarn/stable31/focus-trap-7.6.4'>dependabot/npm_and_yarn/stable31/focus-trap-7.6.4</option>
<option value='dependabot/npm_and_yarn/stable31/jsdoc-4.0.4'>dependabot/npm_and_yarn/stable31/jsdoc-4.0.4</option>
<option value='dependabot/npm_and_yarn/stable31/karma-coverage-2.2.1'>dependabot/npm_and_yarn/stable31/karma-coverage-2.2.1</option>
<option value='dependabot/npm_and_yarn/stable31/libphonenumber-js-1.11.19'>dependabot/npm_and_yarn/stable31/libphonenumber-js-1.11.19</option>
<option value='dependabot/npm_and_yarn/stable31/marked-15.0.6'>dependabot/npm_and_yarn/stable31/marked-15.0.6</option>
<option value='dependabot/npm_and_yarn/stable31/marked-15.0.7'>dependabot/npm_and_yarn/stable31/marked-15.0.7</option>
<option value='dependabot/npm_and_yarn/stable31/nextcloud/eslint-config-8.4.2'>dependabot/npm_and_yarn/stable31/nextcloud/eslint-config-8.4.2</option>
<option value='dependabot/npm_and_yarn/stable31/nextcloud/files-3.10.2'>dependabot/npm_and_yarn/stable31/nextcloud/files-3.10.2</option>
<option value='dependabot/npm_and_yarn/stable31/pinia-2.3.1'>dependabot/npm_and_yarn/stable31/pinia-2.3.1</option>
<option value='dependabot/npm_and_yarn/stable31/query-string-9.1.1'>dependabot/npm_and_yarn/stable31/query-string-9.1.1</option>
<option value='dependabot/npm_and_yarn/stable31/sass-1.81.1'>dependabot/npm_and_yarn/stable31/sass-1.81.1</option>
<option value='dependabot/npm_and_yarn/stable31/sass-loader-16.0.4'>dependabot/npm_and_yarn/stable31/sass-loader-16.0.4</option>
<option value='dependabot/npm_and_yarn/stable31/sass-loader-16.0.5'>dependabot/npm_and_yarn/stable31/sass-loader-16.0.5</option>
<option value='dependabot/npm_and_yarn/stable31/testing-library/cypress-10.0.3'>dependabot/npm_and_yarn/stable31/testing-library/cypress-10.0.3</option>
<option value='dependabot/npm_and_yarn/stable31/ts-loader-9.5.2'>dependabot/npm_and_yarn/stable31/ts-loader-9.5.2</option>
<option value='dependabot/npm_and_yarn/stable31/types/dockerode-3.3.34'>dependabot/npm_and_yarn/stable31/types/dockerode-3.3.34</option>
<option value='dependabot/npm_and_yarn/stable31/types/dockerode-3.3.35'>dependabot/npm_and_yarn/stable31/types/dockerode-3.3.35</option>
<option value='dependabot/npm_and_yarn/stable31/vitest/coverage-v8-2.1.9'>dependabot/npm_and_yarn/stable31/vitest/coverage-v8-2.1.9</option>
<option value='dependabot/npm_and_yarn/stable31/wait-on-8.0.2'>dependabot/npm_and_yarn/stable31/wait-on-8.0.2</option>
<option value='dependabot/npm_and_yarn/stable31/zip.js/zip.js-2.7.57'>dependabot/npm_and_yarn/stable31/zip.js/zip.js-2.7.57</option>
<option value='dependabot/npm_and_yarn/testing-library/cypress-10.0.3'>dependabot/npm_and_yarn/testing-library/cypress-10.0.3</option>
<option value='dependabot/npm_and_yarn/testing-library/jest-dom-6.6.3'>dependabot/npm_and_yarn/testing-library/jest-dom-6.6.3</option>
<option value='dependabot/npm_and_yarn/testing-library/user-event-14.6.1'>dependabot/npm_and_yarn/testing-library/user-event-14.6.1</option>
<option value='dependabot/npm_and_yarn/ts-loader-9.5.2'>dependabot/npm_and_yarn/ts-loader-9.5.2</option>
<option value='dependabot/npm_and_yarn/tslib-2.7.0'>dependabot/npm_and_yarn/tslib-2.7.0</option>
<option value='dependabot/npm_and_yarn/types/dockerode-3.3.32'>dependabot/npm_and_yarn/types/dockerode-3.3.32</option>
<option value='dependabot/npm_and_yarn/typescript-5.6.2'>dependabot/npm_and_yarn/typescript-5.6.2</option>
<option value='dependabot/npm_and_yarn/vitejs/plugin-vue2-2.3.3'>dependabot/npm_and_yarn/vitejs/plugin-vue2-2.3.3</option>
<option value='dependabot/npm_and_yarn/vitest-3.0.4'>dependabot/npm_and_yarn/vitest-3.0.4</option>
<option value='dependabot/npm_and_yarn/vitest/coverage-v8-2.1.1'>dependabot/npm_and_yarn/vitest/coverage-v8-2.1.1</option>
<option value='dependabot/npm_and_yarn/vitest/coverage-v8-2.1.5'>dependabot/npm_and_yarn/vitest/coverage-v8-2.1.5</option>
<option value='dependabot/npm_and_yarn/vitest/coverage-v8-2.1.8'>dependabot/npm_and_yarn/vitest/coverage-v8-2.1.8</option>
<option value='dependabot/npm_and_yarn/vitest/coverage-v8-3.0.7'>dependabot/npm_and_yarn/vitest/coverage-v8-3.0.7</option>
<option value='dependabot/npm_and_yarn/vue-cropperjs-5.0.0'>dependabot/npm_and_yarn/vue-cropperjs-5.0.0</option>
<option value='dependabot/npm_and_yarn/vue-loader-16.8.3'>dependabot/npm_and_yarn/vue-loader-16.8.3</option>
<option value='dependabot/npm_and_yarn/vue-loader-17.4.2'>dependabot/npm_and_yarn/vue-loader-17.4.2</option>
<option value='dependabot/npm_and_yarn/vue-material-design-icons-5.3.1'>dependabot/npm_and_yarn/vue-material-design-icons-5.3.1</option>
<option value='dependabot/npm_and_yarn/vue-router-4.5.0'>dependabot/npm_and_yarn/vue-router-4.5.0</option>
<option value='dependabot/npm_and_yarn/vue/tsconfig-0.7.0'>dependabot/npm_and_yarn/vue/tsconfig-0.7.0</option>
<option value='dependabot/npm_and_yarn/vueuse/components-11.1.0'>dependabot/npm_and_yarn/vueuse/components-11.1.0</option>
<option value='dependabot/npm_and_yarn/vueuse/core-11.3.0'>dependabot/npm_and_yarn/vueuse/core-11.3.0</option>
<option value='dependabot/npm_and_yarn/vueuse/core-12.5.0'>dependabot/npm_and_yarn/vueuse/core-12.5.0</option>
<option value='dependabot/npm_and_yarn/vueuse/integrations-11.1.0'>dependabot/npm_and_yarn/vueuse/integrations-11.1.0</option>
<option value='dependabot/npm_and_yarn/vueuse/integrations-11.3.0'>dependabot/npm_and_yarn/vueuse/integrations-11.3.0</option>
<option value='dependabot/npm_and_yarn/vueuse/integrations-12.7.0'>dependabot/npm_and_yarn/vueuse/integrations-12.7.0</option>
<option value='dependabot/npm_and_yarn/vuex-4.1.0'>dependabot/npm_and_yarn/vuex-4.1.0</option>
<option value='dependabot/npm_and_yarn/wait-on-8.0.0'>dependabot/npm_and_yarn/wait-on-8.0.0</option>
<option value='dependabot/npm_and_yarn/wait-on-8.0.1'>dependabot/npm_and_yarn/wait-on-8.0.1</option>
<option value='dependabot/npm_and_yarn/webdav-5.7.1'>dependabot/npm_and_yarn/webdav-5.7.1</option>
<option value='dependabot/npm_and_yarn/webdav-5.8.0'>dependabot/npm_and_yarn/webdav-5.8.0</option>
<option value='dependabot/npm_and_yarn/webpack-cli-6.0.1'>dependabot/npm_and_yarn/webpack-cli-6.0.1</option>
<option value='dependabot/npm_and_yarn/workbox-webpack-plugin-7.3.0'>dependabot/npm_and_yarn/workbox-webpack-plugin-7.3.0</option>
<option value='dependabot/npm_and_yarn/zip.js/zip.js-2.7.53'>dependabot/npm_and_yarn/zip.js/zip.js-2.7.53</option>
<option value='dependabot/npm_and_yarn/zip.js/zip.js-2.7.54'>dependabot/npm_and_yarn/zip.js/zip.js-2.7.54</option>
<option value='dependaniel/aws-sdk-for-28'>dependaniel/aws-sdk-for-28</option>
<option value='dependaniel/aws-sdk-for-29'>dependaniel/aws-sdk-for-29</option>
<option value='deps/noid/bump-3rdparty-hash'>deps/noid/bump-3rdparty-hash</option>
<option value='dept-remove-csrf-dependency-from-request'>dept-remove-csrf-dependency-from-request</option>
<option value='detect-inadvertent-config-overlaps'>detect-inadvertent-config-overlaps</option>
<option value='direct-access-shared-calendar'>direct-access-shared-calendar</option>
<option value='docs/http/cors-attribute'>docs/http/cors-attribute</option>
<option value='ehn/sharing-sidebar-hide-search-labels'>ehn/sharing-sidebar-hide-search-labels</option>
<option value='encoding-wrapper-metadata'>encoding-wrapper-metadata</option>
<option value='encryption-version-version'>encryption-version-version</option>
<option value='enh/30551/weather-status-support-more-codes'>enh/30551/weather-status-support-more-codes</option>
<option value='enh/49868/add-display-override'>enh/49868/add-display-override</option>
<option value='enh/49868/adjust-display-mode'>enh/49868/adjust-display-mode</option>
<option value='enh/add-details-to-code-integrity-check'>enh/add-details-to-code-integrity-check</option>
<option value='enh/add-first-login-timestamp'>enh/add-first-login-timestamp</option>
<option value='enh/add-rich-object-formatter'>enh/add-rich-object-formatter</option>
<option value='enh/add-user-creation-date'>enh/add-user-creation-date</option>
<option value='enh/apply-rector-set-to-apps'>enh/apply-rector-set-to-apps</option>
<option value='enh/displayname-group-search'>enh/displayname-group-search</option>
<option value='enh/do-not-enforce-cache-for-cli'>enh/do-not-enforce-cache-for-cli</option>
<option value='enh/favorite-search'>enh/favorite-search</option>
<option value='enh/identityproof/key_storage'>enh/identityproof/key_storage</option>
<option value='enh/improve-transfer-ownership-logging'>enh/improve-transfer-ownership-logging</option>
<option value='enh/issue-48528-disable-imip-messages'>enh/issue-48528-disable-imip-messages</option>
<option value='enh/issues-563-calendar-import-export'>enh/issues-563-calendar-import-export</option>
<option value='enh/ldap-add-test-settings-command'>enh/ldap-add-test-settings-command</option>
<option value='enh/ldap-clearer-errors'>enh/ldap-clearer-errors</option>
<option value='enh/limit-ldap-user-count'>enh/limit-ldap-user-count</option>
<option value='enh/make-tag-event-webhook-compatible'>enh/make-tag-event-webhook-compatible</option>
<option value='enh/more-task-types'>enh/more-task-types</option>
<option value='enh/no-issues/share-entry-link'>enh/no-issues/share-entry-link</option>
<option value='enh/noid/allow-configure-config.owner'>enh/noid/allow-configure-config.owner</option>
<option value='enh/noid/allow-disable-pwas'>enh/noid/allow-disable-pwas</option>
<option value='enh/noid/avatar-chinese'>enh/noid/avatar-chinese</option>
<option value='enh/noid/disable-user-unmount'>enh/noid/disable-user-unmount</option>
<option value='enh/noid/fix-personal-settings-layout'>enh/noid/fix-personal-settings-layout</option>
<option value='enh/noid/fix-properties-files'>enh/noid/fix-properties-files</option>
<option value='enh/noid/gs.federation.auto_accept_shares'>enh/noid/gs.federation.auto_accept_shares</option>
<option value='enh/noid/navigationentryevent'>enh/noid/navigationentryevent</option>
<option value='enh/noid/nullable-range'>enh/noid/nullable-range</option>
<option value='enh/noid/returns-formated-app-values-2'>enh/noid/returns-formated-app-values-2</option>
<option value='enh/noid/signed-request'>enh/noid/signed-request</option>
<option value='enh/noid/taskprocessing-commands-task-errors'>enh/noid/taskprocessing-commands-task-errors</option>
<option value='enh/noid/taskprocessing-include-error-msg-in-tasks'>enh/noid/taskprocessing-include-error-msg-in-tasks</option>
<option value='enh/noid/testing-namespace'>enh/noid/testing-namespace</option>
<option value='enh/noid/update-o.c.u-wording'>enh/noid/update-o.c.u-wording</option>
<option value='enh/noid/user-preferences'>enh/noid/user-preferences</option>
<option value='enh/repair-mimetype-job'>enh/repair-mimetype-job</option>
<option value='enh/share-sidebar'>enh/share-sidebar</option>
<option value='enh/test-mtime-after-move'>enh/test-mtime-after-move</option>
<option value='enh/trashbin-scan-command'>enh/trashbin-scan-command</option>
<option value='enh/users-configured-quota-value'>enh/users-configured-quota-value</option>
<option value='enhancement/passwordless-login-token'>enhancement/passwordless-login-token</option>
<option value='enhancements/files-sharing-tests'>enhancements/files-sharing-tests</option>
<option value='ensureTemplateFolder'>ensureTemplateFolder</option>
<option value='ernolf/configurable_sharetoken_length'>ernolf/configurable_sharetoken_length</option>
<option value='extract-caldav-sharing-plugin'>extract-caldav-sharing-plugin</option>
<option value='feat-setupcheck-php-sapi-fpm-max-children'>feat-setupcheck-php-sapi-fpm-max-children</option>
<option value='feat/26668/notifications-for-shared-calendars-2'>feat/26668/notifications-for-shared-calendars-2</option>
<option value='feat/31420/bidi-backend-support'>feat/31420/bidi-backend-support</option>
<option value='feat/45085/validate-config-values'>feat/45085/validate-config-values</option>
<option value='feat/46528/ask-confirm-extension-change'>feat/46528/ask-confirm-extension-change</option>
<option value='feat/add-addressbook-list-command'>feat/add-addressbook-list-command</option>
<option value='feat/add-datetime-qbmapper-support'>feat/add-datetime-qbmapper-support</option>
<option value='feat/add-directory-check-workflowengine'>feat/add-directory-check-workflowengine</option>
<option value='feat/add-mount-change-log'>feat/add-mount-change-log</option>
<option value='feat/add-proofread-tasktype'>feat/add-proofread-tasktype</option>
<option value='feat/add-query-param-to-force-language'>feat/add-query-param-to-force-language</option>
<option value='feat/add-rector-config'>feat/add-rector-config</option>
<option value='feat/add-subscription-via-occ'>feat/add-subscription-via-occ</option>
<option value='feat/allow-account-local-search'>feat/allow-account-local-search</option>
<option value='feat/allow-enum-entity'>feat/allow-enum-entity</option>
<option value='feat/allow-getter-setter-decl-fors'>feat/allow-getter-setter-decl-fors</option>
<option value='feat/allow-oauth-grant-bypass'>feat/allow-oauth-grant-bypass</option>
<option value='feat/auto-accept-trusted-server'>feat/auto-accept-trusted-server</option>
<option value='feat/auto-sync-desktop-version'>feat/auto-sync-desktop-version</option>
<option value='feat/caption-cant-upload'>feat/caption-cant-upload</option>
<option value='feat/cardav-example-contact'>feat/cardav-example-contact</option>
<option value='feat/check-enterprise'>feat/check-enterprise</option>
<option value='feat/clipboard-fallback'>feat/clipboard-fallback</option>
<option value='feat/contacts-menu/js-hook-action'>feat/contacts-menu/js-hook-action</option>
<option value='feat/conversion-adjusting'>feat/conversion-adjusting</option>
<option value='feat/core/features-api'>feat/core/features-api</option>
<option value='feat/cors-on-webdav'>feat/cors-on-webdav</option>
<option value='feat/database/primary-replica-split-stable28'>feat/database/primary-replica-split-stable28</option>
<option value='feat/database/query-result-fetch-associative-fetch-num'>feat/database/query-result-fetch-associative-fetch-num</option>
<option value='feat/dav-pagination'>feat/dav-pagination</option>
<option value='feat/dav-trashbin-backend'>feat/dav-trashbin-backend</option>
<option value='feat/dav/calendar-obj-event-webhooks'>feat/dav/calendar-obj-event-webhooks</option>
<option value='feat/dav/calendar-object-admin-audit-log'>feat/dav/calendar-object-admin-audit-log</option>
<option value='feat/declarative-settings/typed-abstraction'>feat/declarative-settings/typed-abstraction</option>
<option value='feat/disable-share-deletion'>feat/disable-share-deletion</option>
<option value='feat/dispatcher/log-raw-response-data'>feat/dispatcher/log-raw-response-data</option>
<option value='feat/edit-share-token'>feat/edit-share-token</option>
<option value='feat/empty-trash'>feat/empty-trash</option>
<option value='feat/expose-nc-groups-to-system-addressbook-contacts'>feat/expose-nc-groups-to-system-addressbook-contacts</option>
<option value='feat/file-conversion-provider'>feat/file-conversion-provider</option>
<option value='feat/file-conversion-provider-front'>feat/file-conversion-provider-front</option>
<option value='feat/file-list-actions'>feat/file-list-actions</option>
<option value='feat/files-bulk-tagging'>feat/files-bulk-tagging</option>
<option value='feat/files-bulk-tagging-followup'>feat/files-bulk-tagging-followup</option>
<option value='feat/files-shortcuts'>feat/files-shortcuts</option>
<option value='feat/files-shortcuts-2'>feat/files-shortcuts-2</option>
<option value='feat/files/chunked-upload-config-capabilities'>feat/files/chunked-upload-config-capabilities</option>
<option value='feat/files/resumable-uploads'>feat/files/resumable-uploads</option>
<option value='feat/files_sharing/co-owner'>feat/files_sharing/co-owner</option>
<option value='feat/files_trashbin/allow-preventing-trash-permanently'>feat/files_trashbin/allow-preventing-trash-permanently</option>
<option value='feat/ignore-warning-files'>feat/ignore-warning-files</option>
<option value='feat/issue-3786-allow-shared-calendars'>feat/issue-3786-allow-shared-calendars</option>
<option value='feat/issue-994-two-factor-api'>feat/issue-994-two-factor-api</option>
<option value='feat/log-large-assets'>feat/log-large-assets</option>
<option value='feat/logger-allow-psr-loglevel'>feat/logger-allow-psr-loglevel</option>
<option value='feat/mail-provider-settings'>feat/mail-provider-settings</option>
<option value='feat/make-setup-check-trait-public'>feat/make-setup-check-trait-public</option>
<option value='feat/make-tasks-types-toggleable'>feat/make-tasks-types-toggleable</option>
<option value='feat/maxschmi-49902'>feat/maxschmi-49902</option>
<option value='feat/mountmanager/emit-events'>feat/mountmanager/emit-events</option>
<option value='feat/namespace-group-route'>feat/namespace-group-route</option>
<option value='feat/nfo'>feat/nfo</option>
<option value='feat/node-dist'>feat/node-dist</option>
<option value='feat/noid/add-fake-summary-provider'>feat/noid/add-fake-summary-provider</option>
<option value='feat/noid/allow-specifying-related-object'>feat/noid/allow-specifying-related-object</option>
<option value='feat/noid/happy-birthday'>feat/noid/happy-birthday</option>
<option value='feat/noid/info-xml-spdx-license-ids'>feat/noid/info-xml-spdx-license-ids</option>
<option value='feat/noid/lexicon-configurable-default-value'>feat/noid/lexicon-configurable-default-value</option>
<option value='feat/noid/occ-list-delete-calendar-subscription'>feat/noid/occ-list-delete-calendar-subscription</option>
<option value='feat/noid/priority-notifications'>feat/noid/priority-notifications</option>
<option value='feat/noid/ratelimit-header'>feat/noid/ratelimit-header</option>
<option value='feat/noid/support-email-mentions'>feat/noid/support-email-mentions</option>
<option value='feat/occ-files-cleanup-help'>feat/occ-files-cleanup-help</option>
<option value='feat/ocp/attendee-availability-api'>feat/ocp/attendee-availability-api</option>
<option value='feat/ocp/meetings-api-requirements'>feat/ocp/meetings-api-requirements</option>
<option value='feat/pagination-cardav'>feat/pagination-cardav</option>
<option value='feat/photo-cache-webp'>feat/photo-cache-webp</option>
<option value='feat/php-setup-file-upload'>feat/php-setup-file-upload</option>
<option value='feat/postgres-13-17'>feat/postgres-13-17</option>
<option value='feat/profile-app'>feat/profile-app</option>
<option value='feat/public-log-level'>feat/public-log-level</option>
<option value='feat/reduce_available_languages_set'>feat/reduce_available_languages_set</option>
<option value='feat/restore-to-original-dir'>feat/restore-to-original-dir</option>
<option value='feat/restrict-tag-creation'>feat/restrict-tag-creation</option>
<option value='feat/rich-profile-biography'>feat/rich-profile-biography</option>
<option value='feat/row_format_check'>feat/row_format_check</option>
<option value='feat/s3/sse-c'>feat/s3/sse-c</option>
<option value='feat/search-by-parent-id'>feat/search-by-parent-id</option>
<option value='feat/settings/advanced-deploy-options'>feat/settings/advanced-deploy-options</option>
<option value='feat/settings/app_api_apps_management'>feat/settings/app_api_apps_management</option>
<option value='feat/settings/too-much-caching-setup-check'>feat/settings/too-much-caching-setup-check</option>
<option value='feat/setup-check-logging'>feat/setup-check-logging</option>
<option value='feat/share-grid-view'>feat/share-grid-view</option>
<option value='feat/sharing-title'>feat/sharing-title</option>
<option value='feat/shipped/app_api'>feat/shipped/app_api</option>
<option value='feat/show-time-diff-user'>feat/show-time-diff-user</option>
<option value='feat/switch-from-settype-to-casts'>feat/switch-from-settype-to-casts</option>
<option value='feat/sync-truncation'>feat/sync-truncation</option>
<option value='feat/systemtags-bulk-create-list'>feat/systemtags-bulk-create-list</option>
<option value='feat/systemtags-missing-attrs'>feat/systemtags-missing-attrs</option>
<option value='feat/systemtags-public'>feat/systemtags-public</option>
<option value='feat/tags-colors'>feat/tags-colors</option>
<option value='feat/tags-colors-2'>feat/tags-colors-2</option>
<option value='feat/taskprocessing/TextToImageSingle'>feat/taskprocessing/TextToImageSingle</option>
<option value='feat/verbose-cron'>feat/verbose-cron</option>
<option value='feat/workflow-auto-update-cypress.yml'>feat/workflow-auto-update-cypress.yml</option>
<option value='feat/workflow-auto-update-npm-audit-fix.yml'>feat/workflow-auto-update-npm-audit-fix.yml</option>
<option value='feat/workflow-auto-update-pr-feedback.yml'>feat/workflow-auto-update-pr-feedback.yml</option>
<option value='feat/workflow-auto-update-reuse.yml'>feat/workflow-auto-update-reuse.yml</option>
<option value='feat/zip-folder-plugin'>feat/zip-folder-plugin</option>
<option value='feat/zst'>feat/zst</option>
<option value='feature/23308/create-new-favorite-dashboard-widget'>feature/23308/create-new-favorite-dashboard-widget</option>
<option value='feature/add-allowed-view-extensions-config'>feature/add-allowed-view-extensions-config</option>
<option value='feature/files-list-occ-command'>feature/files-list-occ-command</option>
<option value='feature/noid/config-lexicon'>feature/noid/config-lexicon</option>
<option value='feature/noid/wrapped-appconfig'>feature/noid/wrapped-appconfig</option>
<option value='feature/settings-design-improvements'>feature/settings-design-improvements</option>
<option value='fetch-mount-memory'>fetch-mount-memory</option>
<option value='fetch-mount-memory-30'>fetch-mount-memory-30</option>
<option value='fieat/profile-pronounces'>fieat/profile-pronounces</option>
<option value='file-info-key-location-27'>file-info-key-location-27</option>
<option value='filecache-chunking'>filecache-chunking</option>
<option value='files-external-setup-path'>files-external-setup-path</option>
<option value='filesVersionsFuncRefact'>filesVersionsFuncRefact</option>
<option value='fix-44318-remote-share-not-listed'>fix-44318-remote-share-not-listed</option>
<option value='fix-copying-or-moving-from-shared-groupfolders'>fix-copying-or-moving-from-shared-groupfolders</option>
<option value='fix-dav-properties-column-type'>fix-dav-properties-column-type</option>
<option value='fix-enforce-theme-for-public-links'>fix-enforce-theme-for-public-links</option>
<option value='fix-federated-group-shares-when-no-longer-found-in-remote-server'>fix-federated-group-shares-when-no-longer-found-in-remote-server</option>
<option value='fix-files-external-smbclient-deprecated-binaryfinder'>fix-files-external-smbclient-deprecated-binaryfinder</option>
<option value='fix-jobs-app-disable'>fix-jobs-app-disable</option>
<option value='fix-nc-env-inclusion'>fix-nc-env-inclusion</option>
<option value='fix-papercut-23486-weather-status-locale'>fix-papercut-23486-weather-status-locale</option>
<option value='fix-remove-auto-guessing-for-preview-semaphore'>fix-remove-auto-guessing-for-preview-semaphore</option>
<option value='fix-setupcheck-filelocking'>fix-setupcheck-filelocking</option>
<option value='fix-setupcheck-webfinger-400'>fix-setupcheck-webfinger-400</option>
<option value='fix-setupchecks-normalizeUrl-url-filter'>fix-setupchecks-normalizeUrl-url-filter</option>
<option value='fix-sharing-expiration-notify'>fix-sharing-expiration-notify</option>
<option value='fix-show-original-owner'>fix-show-original-owner</option>
<option value='fix-updater-secret'>fix-updater-secret</option>
<option value='fix/30-oc-files'>fix/30-oc-files</option>
<option value='fix/43260'>fix/43260</option>
<option value='fix/44288/catch-filesmetadatanotfound-exception'>fix/44288/catch-filesmetadatanotfound-exception</option>
<option value='fix/45717/hide-last-modified-for-shipped-apps'>fix/45717/hide-last-modified-for-shipped-apps</option>
<option value='fix/45884/accept-notification'>fix/45884/accept-notification</option>
<option value='fix/45982/hide-move-action'>fix/45982/hide-move-action</option>
<option value='fix/46920/respect-no-download'>fix/46920/respect-no-download</option>
<option value='fix/47275/driverException'>fix/47275/driverException</option>
<option value='fix/47658/upgrade-version-3100005'>fix/47658/upgrade-version-3100005</option>
<option value='fix/48012/fix-share-email-send-mail-share'>fix/48012/fix-share-email-send-mail-share</option>
<option value='fix/48415/do-not-rename-main-share-link'>fix/48415/do-not-rename-main-share-link</option>
<option value='fix/48437/dont-exclude-user'>fix/48437/dont-exclude-user</option>
<option value='fix/48829/visual-feedback-4-encryption-toggle'>fix/48829/visual-feedback-4-encryption-toggle</option>
<option value='fix/48860/stop-silent-expiry-date-addition-on-link-shares'>fix/48860/stop-silent-expiry-date-addition-on-link-shares</option>
<option value='fix/48993'>fix/48993</option>
<option value='fix/49431-automatically-disable-sab'>fix/49431-automatically-disable-sab</option>
<option value='fix/49473/task-url'>fix/49473/task-url</option>
<option value='fix/49638/update-prefs-indexes'>fix/49638/update-prefs-indexes</option>
<option value='fix/49728/adapt-search-filters-correctly'>fix/49728/adapt-search-filters-correctly</option>
<option value='fix/49887/early-check-for-overwritten-home'>fix/49887/early-check-for-overwritten-home</option>
<option value='fix/49909/workflow-vue-compat'>fix/49909/workflow-vue-compat</option>
<option value='fix/49954/add-send-mail-toggle'>fix/49954/add-send-mail-toggle</option>
<option value='fix/50177/movy-copy-e2e-tests'>fix/50177/movy-copy-e2e-tests</option>
<option value='fix/50215/hideCreateTemplateFolder'>fix/50215/hideCreateTemplateFolder</option>
<option value='fix/50363/correct-system-tags-i18n'>fix/50363/correct-system-tags-i18n</option>
<option value='fix/50512/send-password-2-owner'>fix/50512/send-password-2-owner</option>
<option value='fix/50788/pass-hide-download-on-save'>fix/50788/pass-hide-download-on-save</option>
<option value='fix/51022/simpler-request-before-upgrade'>fix/51022/simpler-request-before-upgrade</option>
<option value='fix/788/add-password-confirmation-required-to-user-storage-create'>fix/788/add-password-confirmation-required-to-user-storage-create</option>
<option value='fix/788/add-password-required-to-external-storages'>fix/788/add-password-required-to-external-storages</option>
<option value='fix/AppStore--remove-unneeded-warning'>fix/AppStore--remove-unneeded-warning</option>
<option value='fix/account-mgmnt-settings'>fix/account-mgmnt-settings</option>
<option value='fix/account-property-validation'>fix/account-property-validation</option>
<option value='fix/activity-log-for-favorites-in-dav'>fix/activity-log-for-favorites-in-dav</option>
<option value='fix/add-function-type-for-mimetype-sanitizer'>fix/add-function-type-for-mimetype-sanitizer</option>
<option value='fix/add-password-confirmation-to-save-global-creds'>fix/add-password-confirmation-to-save-global-creds</option>
<option value='fix/adjust-default-color-background-plain-to-new-background'>fix/adjust-default-color-background-plain-to-new-background</option>
<option value='fix/ai-settings'>fix/ai-settings</option>
<option value='fix/align-avatar-visibility'>fix/align-avatar-visibility</option>
<option value='fix/allow-download-with-hide-download-flag'>fix/allow-download-with-hide-download-flag</option>
<option value='fix/allow-enforcing-windows-support'>fix/allow-enforcing-windows-support</option>
<option value='fix/allow-quota-wrapper-check'>fix/allow-quota-wrapper-check</option>
<option value='fix/app-discover'>fix/app-discover</option>
<option value='fix/app-store-groups'>fix/app-store-groups</option>
<option value='fix/app-store-markdown'>fix/app-store-markdown</option>
<option value='fix/app-store-reactivity'>fix/app-store-reactivity</option>
<option value='fix/app-store-remove-force-enable'>fix/app-store-remove-force-enable</option>
<option value='fix/appconfig/sensitive-keys-external-jwt-private-key'>fix/appconfig/sensitive-keys-external-jwt-private-key</option>
<option value='fix/appframework/csrf-request-checks'>fix/appframework/csrf-request-checks</option>
<option value='fix/apps/wrong-missing-casts'>fix/apps/wrong-missing-casts</option>
<option value='fix/appstore-regressions'>fix/appstore-regressions</option>
<option value='fix/auth-token-uniq-constraint-violation-handling'>fix/auth-token-uniq-constraint-violation-handling</option>
<option value='fix/auth/authtoken-activity-update-in-transaction'>fix/auth/authtoken-activity-update-in-transaction</option>
<option value='fix/avoid-invalid-share-on-transfer-ownership'>fix/avoid-invalid-share-on-transfer-ownership</option>
<option value='fix/background-image'>fix/background-image</option>
<option value='fix/backgroundjobs/adjust-intervals-time-sensitivities'>fix/backgroundjobs/adjust-intervals-time-sensitivities</option>
<option value='fix/baseresponse/xml-element-value-string-cast'>fix/baseresponse/xml-element-value-string-cast</option>
<option value='fix/better-drag-n-drop'>fix/better-drag-n-drop</option>
<option value='fix/bring-back-zip-event'>fix/bring-back-zip-event</option>
<option value='fix/broken-event-notifications'>fix/broken-event-notifications</option>
<option value='fix/cachebuster-stable30'>fix/cachebuster-stable30</option>
<option value='fix/caldav/event-organizer-interaction'>fix/caldav/event-organizer-interaction</option>
<option value='fix/caldav/event-reader-duration'>fix/caldav/event-reader-duration</option>
<option value='fix/carddav/create-sab-concurrently'>fix/carddav/create-sab-concurrently</option>
<option value='fix/cast-node-names-to-string'>fix/cast-node-names-to-string</option>
<option value='fix/clarify-app-manager-methods'>fix/clarify-app-manager-methods</option>
<option value='fix/clean-up-group-shares'>fix/clean-up-group-shares</option>
<option value='fix/cloud-id-input'>fix/cloud-id-input</option>
<option value='fix/collaboration/deduplicate-email-shares'>fix/collaboration/deduplicate-email-shares</option>
<option value='fix/comment/children-count-integer'>fix/comment/children-count-integer</option>
<option value='fix/composer/autoload-dev-deps'>fix/composer/autoload-dev-deps</option>
<option value='fix/config/additional-configs'>fix/config/additional-configs</option>
<option value='fix/contactsmenu/padding'>fix/contactsmenu/padding</option>
<option value='fix/contactsmigratortest'>fix/contactsmigratortest</option>
<option value='fix/conversion-extension'>fix/conversion-extension</option>
<option value='fix/convert-log'>fix/convert-log</option>
<option value='fix/convert-type'>fix/convert-type</option>
<option value='fix/core-cachebuster'>fix/core-cachebuster</option>
<option value='fix/core-session-logout-logging'>fix/core-session-logout-logging</option>
<option value='fix/core/preview-generation'>fix/core/preview-generation</option>
<option value='fix/credential-passwordless-auth'>fix/credential-passwordless-auth</option>
<option value='fix/cron-strict-cookie'>fix/cron-strict-cookie</option>
<option value='fix/cron/log-long-running-jobs-stable26'>fix/cron/log-long-running-jobs-stable26</option>
<option value='fix/dashboard--performance-and-refactoring'>fix/dashboard--performance-and-refactoring</option>
<option value='fix/dashboard/dont-load-hidden-widgets-initially'>fix/dashboard/dont-load-hidden-widgets-initially</option>
<option value='fix/dashboard/skip-hidden-widgets'>fix/dashboard/skip-hidden-widgets</option>
<option value='fix/datadirectory-protection-setupcheck'>fix/datadirectory-protection-setupcheck</option>
<option value='fix/dav-add-strict-type-declarations'>fix/dav-add-strict-type-declarations</option>
<option value='fix/dav-cast-content-lenght-to-int'>fix/dav-cast-content-lenght-to-int</option>
<option value='fix/dav-cast-params-to-string'>fix/dav-cast-params-to-string</option>
<option value='fix/dav-harden-stream-handling'>fix/dav-harden-stream-handling</option>
<option value='fix/dav-sorting'>fix/dav-sorting</option>
<option value='fix/dav/abort-incomplete-caldav-changes-sync'>fix/dav/abort-incomplete-caldav-changes-sync</option>
<option value='fix/dav/carddav-new-card-check-addressbook-early'>fix/dav/carddav-new-card-check-addressbook-early</option>
<option value='fix/dav/carddav-read-card-memory-usage'>fix/dav/carddav-read-card-memory-usage</option>
<option value='fix/dav/create-sab-in-transaction'>fix/dav/create-sab-in-transaction</option>
<option value='fix/dav/create-sab-install'>fix/dav/create-sab-install</option>
<option value='fix/dav/first-login-listener'>fix/dav/first-login-listener</option>
<option value='fix/dav/image-export-plugin-fallback'>fix/dav/image-export-plugin-fallback</option>
<option value='fix/dav/limit-sync-token-created-at-updates-stable28'>fix/dav/limit-sync-token-created-at-updates-stable28</option>
<option value='fix/dav/limit-sync-token-created-at-updates-stable29'>fix/dav/limit-sync-token-created-at-updates-stable29</option>
<option value='fix/dav/remove-object-properties-expensive'>fix/dav/remove-object-properties-expensive</option>
<option value='fix/dav/view-only-check'>fix/dav/view-only-check</option>
<option value='fix/declarative-settings-priority'>fix/declarative-settings-priority</option>
<option value='fix/defaultshareprovider/filter-reshares-correctly'>fix/defaultshareprovider/filter-reshares-correctly</option>
<option value='fix/deprecate-oc-template-and-cleanup'>fix/deprecate-oc-template-and-cleanup</option>
<option value='fix/deps/php-seclin'>fix/deps/php-seclin</option>
<option value='fix/destination-drop-check'>fix/destination-drop-check</option>
<option value='fix/do-not-remind'>fix/do-not-remind</option>
<option value='fix/do-not-throw-from-countusers'>fix/do-not-throw-from-countusers</option>
<option value='fix/download-non-files-view'>fix/download-non-files-view</option>
<option value='fix/download-perms'>fix/download-perms</option>
<option value='fix/drop-v-html'>fix/drop-v-html</option>
<option value='fix/duplicated-conflict-resolution'>fix/duplicated-conflict-resolution</option>
<option value='fix/edit-locally-labels'>fix/edit-locally-labels</option>
<option value='fix/empty-file-0byte-stable30'>fix/empty-file-0byte-stable30</option>
<option value='fix/encode-guest-file-request'>fix/encode-guest-file-request</option>
<option value='fix/encoding-wrapper-scanner'>fix/encoding-wrapper-scanner</option>
<option value='fix/encoding-wrapper-scanner-stable30'>fix/encoding-wrapper-scanner-stable30</option>
<option value='fix/encrypt-decrypt-password'>fix/encrypt-decrypt-password</option>
<option value='fix/encryption-text'>fix/encryption-text</option>
<option value='fix/encryption/web-ui-bogus'>fix/encryption/web-ui-bogus</option>
<option value='fix/entity/strict-types'>fix/entity/strict-types</option>
<option value='fix/eslint-warning'>fix/eslint-warning</option>
<option value='fix/eslint-warnings'>fix/eslint-warnings</option>
<option value='fix/etag-constraint-search-query'>fix/etag-constraint-search-query</option>
<option value='fix/external-storage-controller-cast-id'>fix/external-storage-controller-cast-id</option>
<option value='fix/external-storage-int'>fix/external-storage-int</option>
<option value='fix/fail-safe-files-actions'>fix/fail-safe-files-actions</option>
<option value='fix/federated-share-opening'>fix/federated-share-opening</option>
<option value='fix/federated-users'>fix/federated-users</option>
<option value='fix/federatedfilesharing/group-cleanup'>fix/federatedfilesharing/group-cleanup</option>
<option value='fix/federation-certificate-store'>fix/federation-certificate-store</option>
<option value='fix/file-conversion-missing-extension'>fix/file-conversion-missing-extension</option>
<option value='fix/file-list-filters-reset'>fix/file-list-filters-reset</option>
<option value='fix/file-type-filter-state'>fix/file-type-filter-state</option>
<option value='fix/files--handle-empty-view-with-error'>fix/files--handle-empty-view-with-error</option>
<option value='fix/files--list-header-button-title'>fix/files--list-header-button-title</option>
<option value='fix/files-add-move-info'>fix/files-add-move-info</option>
<option value='fix/files-duplicated-nodes'>fix/files-duplicated-nodes</option>
<option value='fix/files-failed-node'>fix/files-failed-node</option>
<option value='fix/files-header-empty-view'>fix/files-header-empty-view</option>
<option value='fix/files-header-submenu'>fix/files-header-submenu</option>
<option value='fix/files-page-title'>fix/files-page-title</option>
<option value='fix/files-proper-loading-icon'>fix/files-proper-loading-icon</option>
<option value='fix/files-public-share'>fix/files-public-share</option>
<option value='fix/files-reload'>fix/files-reload</option>
<option value='fix/files-rename'>fix/files-rename</option>
<option value='fix/files-rename-esc'>fix/files-rename-esc</option>
<option value='fix/files-rename-folder'>fix/files-rename-folder</option>
<option value='fix/files-rename-store'>fix/files-rename-store</option>
<option value='fix/files-renaming'>fix/files-renaming</option>
<option value='fix/files-scroll-perf'>fix/files-scroll-perf</option>
<option value='fix/files-sharing-download'>fix/files-sharing-download</option>
<option value='fix/files-sharing-file-drop-folder'>fix/files-sharing-file-drop-folder</option>
<option value='fix/files-show-details-when-no-action'>fix/files-show-details-when-no-action</option>
<option value='fix/files-trash-download'>fix/files-trash-download</option>
<option value='fix/files-wording'>fix/files-wording</option>
<option value='fix/files/delete-display-no-trashbin'>fix/files/delete-display-no-trashbin</option>
<option value='fix/files/favorites-widget-folder-preview'>fix/files/favorites-widget-folder-preview</option>
<option value='fix/files/preview-service-worker-registration'>fix/files/preview-service-worker-registration</option>
<option value='fix/files/reactivity-inject'>fix/files/reactivity-inject</option>
<option value='fix/files/sort-after-view-change'>fix/files/sort-after-view-change</option>
<option value='fix/files_external-cred-dialog'>fix/files_external-cred-dialog</option>
<option value='fix/files_external/definition-parameter'>fix/files_external/definition-parameter</option>
<option value='fix/files_external/forbidden-exception'>fix/files_external/forbidden-exception</option>
<option value='fix/files_external_scan'>fix/files_external_scan</option>
<option value='fix/files_sharing--global-search-in-select'>fix/files_sharing--global-search-in-select</option>
<option value='fix/files_sharing/cleanup-error-messages'>fix/files_sharing/cleanup-error-messages</option>
<option value='fix/files_sharing/disable-editing'>fix/files_sharing/disable-editing</option>
<option value='fix/files_sharing/harden-api'>fix/files_sharing/harden-api</option>
<option value='fix/files_sharing/ocm-permissions'>fix/files_sharing/ocm-permissions</option>
<option value='fix/files_sharing/sharing-entry-link-override-expiration-date'>fix/files_sharing/sharing-entry-link-override-expiration-date</option>
<option value='fix/filesreport-cast-fileId-to-int'>fix/filesreport-cast-fileId-to-int</option>
<option value='fix/filter-for-components-explicitly'>fix/filter-for-components-explicitly</option>
<option value='fix/fix-admin-audit-event-listening'>fix/fix-admin-audit-event-listening</option>
<option value='fix/fix-admin-audit-paths'>fix/fix-admin-audit-paths</option>
<option value='fix/fix-appmanager-cleanappid'>fix/fix-appmanager-cleanappid</option>
<option value='fix/fix-copy-to-mountpoint-root'>fix/fix-copy-to-mountpoint-root</option>
<option value='fix/fix-disabled-user-list-for-saml-subadmin'>fix/fix-disabled-user-list-for-saml-subadmin</option>
<option value='fix/fix-disabled-user-list-for-subadmins'>fix/fix-disabled-user-list-for-subadmins</option>
<option value='fix/fix-email-setupcheck-with-null-smtpmode'>fix/fix-email-setupcheck-with-null-smtpmode</option>
<option value='fix/fix-email-share-transfer-accross-storages'>fix/fix-email-share-transfer-accross-storages</option>
<option value='fix/fix-int-casting'>fix/fix-int-casting</option>
<option value='fix/fix-ldap-setupcheck-crash'>fix/fix-ldap-setupcheck-crash</option>
<option value='fix/fix-psalm-taint-errors'>fix/fix-psalm-taint-errors</option>
<option value='fix/fix-psalm-taint-errors-2'>fix/fix-psalm-taint-errors-2</option>
<option value='fix/fix-server-tests'>fix/fix-server-tests</option>
<option value='fix/fix-share-creation-error-messages'>fix/fix-share-creation-error-messages</option>
<option value='fix/fix-storage-interface-check'>fix/fix-storage-interface-check</option>
<option value='fix/flaky-cypress'>fix/flaky-cypress</option>
<option value='fix/flaky-live-photos'>fix/flaky-live-photos</option>
<option value='fix/forbidden-files-insensitive'>fix/forbidden-files-insensitive</option>
<option value='fix/forward-user-login-if-no-session'>fix/forward-user-login-if-no-session</option>
<option value='fix/get-managers-as-subadmin'>fix/get-managers-as-subadmin</option>
<option value='fix/get-version-of-core'>fix/get-version-of-core</option>
<option value='fix/gracefully-parse-trusted-certificates'>fix/gracefully-parse-trusted-certificates</option>
<option value='fix/handle-errors-in-migrate-key-format'>fix/handle-errors-in-migrate-key-format</option>
<option value='fix/harden-account-properties'>fix/harden-account-properties</option>
<option value='fix/harden-admin-settings'>fix/harden-admin-settings</option>
<option value='fix/harden-thumbnail-endpoint'>fix/harden-thumbnail-endpoint</option>
<option value='fix/highcontras-scrollbar'>fix/highcontras-scrollbar</option>
<option value='fix/http/jsonresponse-data-type'>fix/http/jsonresponse-data-type</option>
<option value='fix/http/template-valid-status-codes'>fix/http/template-valid-status-codes</option>
<option value='fix/imip-test-expects-integer'>fix/imip-test-expects-integer</option>
<option value='fix/improve-ldap-avatar-handling'>fix/improve-ldap-avatar-handling</option>
<option value='fix/index-systemtags'>fix/index-systemtags</option>
<option value='fix/install-dbport-unused'>fix/install-dbport-unused</option>
<option value='fix/installation-wording'>fix/installation-wording</option>
<option value='fix/invalid-app-config'>fix/invalid-app-config</option>
<option value='fix/invalid-copied-share-link'>fix/invalid-copied-share-link</option>
<option value='fix/invalid-mtime'>fix/invalid-mtime</option>
<option value='fix/invitations-named-parameter'>fix/invitations-named-parameter</option>
<option value='fix/issue-12387-delete-invitations'>fix/issue-12387-delete-invitations</option>
<option value='fix/issue-13862'>fix/issue-13862</option>
<option value='fix/issue-23666'>fix/issue-23666</option>
<option value='fix/issue-3021-return-no-content-instead-of-error'>fix/issue-3021-return-no-content-instead-of-error</option>
<option value='fix/issue-34720'>fix/issue-34720</option>
<option value='fix/issue-47879-property-serialization'>fix/issue-47879-property-serialization</option>
<option value='fix/issue-48079-windows-time-zones'>fix/issue-48079-windows-time-zones</option>
<option value='fix/issue-48528-disable-itip-and-imip-messages'>fix/issue-48528-disable-itip-and-imip-messages</option>
<option value='fix/issue-48528-disable-itip-and-imip-messages-2'>fix/issue-48528-disable-itip-and-imip-messages-2</option>
<option value='fix/issue-48732-exdate-rdate-property-instances'>fix/issue-48732-exdate-rdate-property-instances</option>
<option value='fix/issue-49756-translations'>fix/issue-49756-translations</option>
<option value='fix/issue-50054-resource-invite-regression'>fix/issue-50054-resource-invite-regression</option>
<option value='fix/issue-50104-system-address-book-ui-settings'>fix/issue-50104-system-address-book-ui-settings</option>
<option value='fix/issue-8458-imip-improvements-2'>fix/issue-8458-imip-improvements-2</option>
<option value='fix/istorage/return-types'>fix/istorage/return-types</option>
<option value='fix/iurlgenerator/url-regex-markdown-parenthesis'>fix/iurlgenerator/url-regex-markdown-parenthesis</option>
<option value='fix/ldap-avoid-false-positive-mapping'>fix/ldap-avoid-false-positive-mapping</option>
<option value='fix/legacy-file-drop'>fix/legacy-file-drop</option>
<option value='fix/line-height-calc'>fix/line-height-calc</option>
<option value='fix/link-share-conflict-modal'>fix/link-share-conflict-modal</option>
<option value='fix/load-more-than-5-items-in-folder-filter'>fix/load-more-than-5-items-in-folder-filter</option>
<option value='fix/lock-session-during-cookie-renew'>fix/lock-session-during-cookie-renew</option>
<option value='fix/log-login-flow-state-token-errors'>fix/log-login-flow-state-token-errors</option>
<option value='fix/log-memcache-log-path-hash'>fix/log-memcache-log-path-hash</option>
<option value='fix/login-error-state'>fix/login-error-state</option>
<option value='fix/login-origin'>fix/login-origin</option>
<option value='fix/low-res-for-blurhash'>fix/low-res-for-blurhash</option>
<option value='fix/mailer-binaryfinder-fallback'>fix/mailer-binaryfinder-fallback</option>
<option value='fix/make-router-reactive'>fix/make-router-reactive</option>
<option value='fix/map-sharee-information'>fix/map-sharee-information</option>
<option value='fix/migrate-dav-to-events'>fix/migrate-dav-to-events</option>
<option value='fix/migrate-encryption-away-from-hooks'>fix/migrate-encryption-away-from-hooks</option>
<option value='fix/mime-int'>fix/mime-int</option>
<option value='fix/move-away-from-oc-app'>fix/move-away-from-oc-app</option>
<option value='fix/move-email-logic-local-user-backend'>fix/move-email-logic-local-user-backend</option>
<option value='fix/move-storage-constructor-to-specific-interface'>fix/move-storage-constructor-to-specific-interface</option>
<option value='fix/multi-select'>fix/multi-select</option>
<option value='fix/nav-quota-new-design'>fix/nav-quota-new-design</option>
<option value='fix/no-issue/enforced-props-checks'>fix/no-issue/enforced-props-checks</option>
<option value='fix/no-issue/file-request-disable-when-no-public-upload'>fix/no-issue/file-request-disable-when-no-public-upload</option>
<option value='fix/no-issue/link-sharing-defaults'>fix/no-issue/link-sharing-defaults</option>
<option value='fix/no-issue/no-reshare-perms-4-email-shares'>fix/no-issue/no-reshare-perms-4-email-shares</option>
<option value='fix/no-issue/proper-share-sorting'>fix/no-issue/proper-share-sorting</option>
<option value='fix/no-issue/show-file-drop-permissions-correctly'>fix/no-issue/show-file-drop-permissions-correctly</option>
<option value='fix/no-issues/add-encryption-available-config'>fix/no-issues/add-encryption-available-config</option>
<option value='fix/node-vibrant'>fix/node-vibrant</option>
<option value='fix/noid/appconfig-setmixed-on-typed'>fix/noid/appconfig-setmixed-on-typed</option>
<option value='fix/noid/broken-taskprocessing-api'>fix/noid/broken-taskprocessing-api</option>
<option value='fix/noid/calendar-enabled'>fix/noid/calendar-enabled</option>
<option value='fix/noid/clean-config-code'>fix/noid/clean-config-code</option>
<option value='fix/noid/count-disabled-correct'>fix/noid/count-disabled-correct</option>
<option value='fix/noid/debug-objectstorage-s3'>fix/noid/debug-objectstorage-s3</option>
<option value='fix/noid/deleted-circles-share'>fix/noid/deleted-circles-share</option>
<option value='fix/noid/deprecation-correct-case'>fix/noid/deprecation-correct-case</option>
<option value='fix/noid/discover-unique-ocmprovider'>fix/noid/discover-unique-ocmprovider</option>
<option value='fix/noid/empty-path-for-files-versions'>fix/noid/empty-path-for-files-versions</option>
<option value='fix/noid/federation-really-surely-init-token'>fix/noid/federation-really-surely-init-token</option>
<option value='fix/noid/fifty-fifth'>fix/noid/fifty-fifth</option>
<option value='fix/noid/fix-itipbroker-messages'>fix/noid/fix-itipbroker-messages</option>
<option value='fix/noid/fix-try-login'>fix/noid/fix-try-login</option>
<option value='fix/noid/fix-unified-search-provider-id'>fix/noid/fix-unified-search-provider-id</option>
<option value='fix/noid/get-fedid-from-cloudfed-provider'>fix/noid/get-fedid-from-cloudfed-provider</option>
<option value='fix/noid/ignore-unavailable-token'>fix/noid/ignore-unavailable-token</option>
<option value='fix/noid/in-folder-search'>fix/noid/in-folder-search</option>
<option value='fix/noid/init-navigation-data-too-soon'>fix/noid/init-navigation-data-too-soon</option>
<option value='fix/noid/ldap-displayname-cached'>fix/noid/ldap-displayname-cached</option>
<option value='fix/noid/ldap-n-counted-mapped-users'>fix/noid/ldap-n-counted-mapped-users</option>
<option value='fix/noid/ldap-no-connection-reason'>fix/noid/ldap-no-connection-reason</option>
<option value='fix/noid/ldap-remnants-as-disabled-global'>fix/noid/ldap-remnants-as-disabled-global</option>
<option value='fix/noid/ldap-setopt-for-disabling-certcheck'>fix/noid/ldap-setopt-for-disabling-certcheck</option>
<option value='fix/noid/no-emails-for-user-shares'>fix/noid/no-emails-for-user-shares</option>
<option value='fix/noid/null-safe-metadata'>fix/noid/null-safe-metadata</option>
<option value='fix/noid/path-hash-prep-statement'>fix/noid/path-hash-prep-statement</option>
<option value='fix/noid/refresh-filesize-on-conflict-24'>fix/noid/refresh-filesize-on-conflict-24</option>
<option value='fix/noid/return-verified-email'>fix/noid/return-verified-email</option>
<option value='fix/noid/revert-api-breaking-return-type'>fix/noid/revert-api-breaking-return-type</option>
<option value='fix/noid/run-kerberos-tests-on-ubuntu-latest'>fix/noid/run-kerberos-tests-on-ubuntu-latest</option>
<option value='fix/noid/set-ext-pwd-as-sensitive'>fix/noid/set-ext-pwd-as-sensitive</option>
<option value='fix/noid/test-samba-with-self-hosted'>fix/noid/test-samba-with-self-hosted</option>
<option value='fix/noid/textprocessing-list-types'>fix/noid/textprocessing-list-types</option>
<option value='fix/noid/textprocessing-schedule-taskprocessing-provider'>fix/noid/textprocessing-schedule-taskprocessing-provider</option>
<option value='fix/noid/thudnerbird-addon-useragent'>fix/noid/thudnerbird-addon-useragent</option>
<option value='fix/noid/transfer-ownership-select'>fix/noid/transfer-ownership-select</option>
<option value='fix/noid/try-latest-buildjet-cache'>fix/noid/try-latest-buildjet-cache</option>
<option value='fix/noid/update-codeowners-nfebe'>fix/noid/update-codeowners-nfebe</option>
<option value='fix/noid/wipe-local-storage'>fix/noid/wipe-local-storage</option>
<option value='fix/note-icon-color'>fix/note-icon-color</option>
<option value='fix/null-label'>fix/null-label</option>
<option value='fix/oauth2/owncloud-migration'>fix/oauth2/owncloud-migration</option>
<option value='fix/oauth2/retain-legacy-oc-client-support'>fix/oauth2/retain-legacy-oc-client-support</option>
<option value='fix/oc/inheritdoc'>fix/oc/inheritdoc</option>
<option value='fix/ocm-host'>fix/ocm-host</option>
<option value='fix/ocmdiscoveryservice/cache-errors'>fix/ocmdiscoveryservice/cache-errors</option>
<option value='fix/openapi/array-syntax'>fix/openapi/array-syntax</option>
<option value='fix/openapi/outdated-specs'>fix/openapi/outdated-specs</option>
<option value='fix/overide-itip-broker'>fix/overide-itip-broker</option>
<option value='fix/ownership-transfer-source-user-files'>fix/ownership-transfer-source-user-files</option>
<option value='fix/password-field-sharing'>fix/password-field-sharing</option>
<option value='fix/password-validation'>fix/password-validation</option>
<option value='fix/people-translation'>fix/people-translation</option>
<option value='fix/perf/cache-avilable-taskt-types'>fix/perf/cache-avilable-taskt-types</option>
<option value='fix/perf/cache-taskprocessing-json-parse'>fix/perf/cache-taskprocessing-json-parse</option>
<option value='fix/pick-folder-smart-picker'>fix/pick-folder-smart-picker</option>
<option value='fix/picker-tag-color'>fix/picker-tag-color</option>
<option value='fix/pronouns-tests'>fix/pronouns-tests</option>
<option value='fix/proper-download-check'>fix/proper-download-check</option>
<option value='fix/proper-preview-icon'>fix/proper-preview-icon</option>
<option value='fix/provisionApi-status-codes'>fix/provisionApi-status-codes</option>
<option value='fix/proxy-app-screenshot'>fix/proxy-app-screenshot</option>
<option value='fix/psalm/enabled-find-unused-baseline-entry'>fix/psalm/enabled-find-unused-baseline-entry</option>
<option value='fix/psalm/throws-annotations'>fix/psalm/throws-annotations</option>
<option value='fix/psalm/update-baseline'>fix/psalm/update-baseline</option>
<option value='fix/public-copy-move-stable-28'>fix/public-copy-move-stable-28</option>
<option value='fix/public-get'>fix/public-get</option>
<option value='fix/public-share-expiration'>fix/public-share-expiration</option>
<option value='fix/public-share-router'>fix/public-share-router</option>
<option value='fix/qbmapper/find-entities-return-type'>fix/qbmapper/find-entities-return-type</option>
<option value='fix/querybuilder/oracle-indentifier-length'>fix/querybuilder/oracle-indentifier-length</option>
<option value='fix/querybuilder/output-columns-aliases'>fix/querybuilder/output-columns-aliases</option>
<option value='fix/rate-limit-share-creation'>fix/rate-limit-share-creation</option>
<option value='fix/reasons-to-use'>fix/reasons-to-use</option>
<option value='fix/recently_active_pgsql'>fix/recently_active_pgsql</option>
<option value='fix/rector-use-statements'>fix/rector-use-statements</option>
<option value='fix/redirect-openfile-param'>fix/redirect-openfile-param</option>
<option value='fix/refactor-user-access-to-file-list'>fix/refactor-user-access-to-file-list</option>
<option value='fix/refresh-convert-list'>fix/refresh-convert-list</option>
<option value='fix/reminder-node-access'>fix/reminder-node-access</option>
<option value='fix/remove-needless-console-log'>fix/remove-needless-console-log</option>
<option value='fix/remove-redundant-check-server'>fix/remove-redundant-check-server</option>
<option value='fix/remove-references-to-deprected-storage-interface'>fix/remove-references-to-deprected-storage-interface</option>
<option value='fix/remove-share-hint-exception-wrapping'>fix/remove-share-hint-exception-wrapping</option>
<option value='fix/reply-message'>fix/reply-message</option>
<option value='fix/request-reviews'>fix/request-reviews</option>
<option value='fix/resiliant-user-removal'>fix/resiliant-user-removal</option>
<option value='fix/resolve_public_rate_limit'>fix/resolve_public_rate_limit</option>
<option value='fix/restore-sucess'>fix/restore-sucess</option>
<option value='fix/retry-delete-if-locked'>fix/retry-delete-if-locked</option>
<option value='fix/rtl-regession'>fix/rtl-regession</option>
<option value='fix/s3-verify-peer-setting'>fix/s3-verify-peer-setting</option>
<option value='fix/s3/empty-sse-c-key'>fix/s3/empty-sse-c-key</option>
<option value='fix/s3configtrait/proxy-false'>fix/s3configtrait/proxy-false</option>
<option value='fix/sabre-dav-itip-broker'>fix/sabre-dav-itip-broker</option>
<option value='fix/sass'>fix/sass</option>
<option value='fix/scrolling-file-list'>fix/scrolling-file-list</option>
<option value='fix/session-cron'>fix/session-cron</option>
<option value='fix/session/log-likely-lost-session-conditions'>fix/session/log-likely-lost-session-conditions</option>
<option value='fix/session/log-session-id'>fix/session/log-session-id</option>
<option value='fix/session/log-session-start-error'>fix/session/log-session-start-error</option>
<option value='fix/session/session-passphraze-handling'>fix/session/session-passphraze-handling</option>
<option value='fix/session/transactional-remember-me-renewal'>fix/session/transactional-remember-me-renewal</option>
<option value='fix/settings--disable-discover-when-app-store-is-disabled'>fix/settings--disable-discover-when-app-store-is-disabled</option>
<option value='fix/settings-command'>fix/settings-command</option>
<option value='fix/settings/admin/ai/textprocessing'>fix/settings/admin/ai/textprocessing</option>
<option value='fix/settings/ex-apps-search'>fix/settings/ex-apps-search</option>
<option value='fix/settings/mail-server-settings-form'>fix/settings/mail-server-settings-form</option>
<option value='fix/settings/userid-dependency-injection'>fix/settings/userid-dependency-injection</option>
<option value='fix/share-allow-delete-perms-4-files'>fix/share-allow-delete-perms-4-files</option>
<option value='fix/share-api-create--permissions'>fix/share-api-create--permissions</option>
<option value='fix/share-label'>fix/share-label</option>
<option value='fix/share-notifications'>fix/share-notifications</option>
<option value='fix/share-sidebar-bugs'>fix/share-sidebar-bugs</option>
<option value='fix/sharing-entry-link'>fix/sharing-entry-link</option>
<option value='fix/sharing-password-submit-create'>fix/sharing-password-submit-create</option>
<option value='fix/sharing-sidebar-tab-default'>fix/sharing-sidebar-tab-default</option>
<option value='fix/shipped-app-version'>fix/shipped-app-version</option>
<option value='fix/show-deleted-team-shares'>fix/show-deleted-team-shares</option>
<option value='fix/show-share-recipient-in-mail'>fix/show-share-recipient-in-mail</option>
<option value='fix/show-templates-folder-default'>fix/show-templates-folder-default</option>
<option value='fix/sidebar-favorites'>fix/sidebar-favorites</option>
<option value='fix/stable27'>fix/stable27</option>
<option value='fix/stable28-uploader'>fix/stable28-uploader</option>
<option value='fix/stable28/webcal-subscription-jobs-middleware'>fix/stable28/webcal-subscription-jobs-middleware</option>
<option value='fix/stable29/numerical-userid-file-item-display'>fix/stable29/numerical-userid-file-item-display</option>
<option value='fix/stable29/webcal-subscription-jobs-middleware'>fix/stable29/webcal-subscription-jobs-middleware</option>
<option value='fix/stable29_share-api-create--permissions'>fix/stable29_share-api-create--permissions</option>
<option value='fix/stable30/share-types-references'>fix/stable30/share-types-references</option>
<option value='fix/storage-local/get-source-path-spl-file-info'>fix/storage-local/get-source-path-spl-file-info</option>
<option value='fix/storage/get-directory-content-return-type'>fix/storage/get-directory-content-return-type</option>
<option value='fix/storage/get-owner-false'>fix/storage/get-owner-false</option>
<option value='fix/storage/method-docs-inheritance'>fix/storage/method-docs-inheritance</option>
<option value='fix/strict-types'>fix/strict-types</option>
<option value='fix/subadmin-user-groups'>fix/subadmin-user-groups</option>
<option value='fix/tags/boolean-user-has-tags'>fix/tags/boolean-user-has-tags</option>
<option value='fix/task-processing-api-controller/dont-use-plus'>fix/task-processing-api-controller/dont-use-plus</option>
<option value='fix/taskprocessing-api-get-file-contents'>fix/taskprocessing-api-get-file-contents</option>
<option value='fix/taskprocessing-better-errors'>fix/taskprocessing-better-errors</option>
<option value='fix/taskprocessing-cache'>fix/taskprocessing-cache</option>
<option value='fix/taskprocessing-manager/php-notice'>fix/taskprocessing-manager/php-notice</option>
<option value='fix/template-field-title'>fix/template-field-title</option>
<option value='fix/template-name-overflow'>fix/template-name-overflow</option>
<option value='fix/template-return-type'>fix/template-return-type</option>
<option value='fix/template-vue3-main'>fix/template-vue3-main</option>
<option value='fix/texttotextchatwithtools-translator-notes'>fix/texttotextchatwithtools-translator-notes</option>
<option value='fix/themes-layout'>fix/themes-layout</option>
<option value='fix/theming-migration'>fix/theming-migration</option>
<option value='fix/theming/default-theme-selection'>fix/theming/default-theme-selection</option>
<option value='fix/ticket_9672007/share_mail'>fix/ticket_9672007/share_mail</option>
<option value='fix/type-error-filter-mount'>fix/type-error-filter-mount</option>
<option value='fix/typo-recommended-apps'>fix/typo-recommended-apps</option>
<option value='fix/undefined-application-key'>fix/undefined-application-key</option>
<option value='fix/undefined-response'>fix/undefined-response</option>
<option value='fix/unified-search-ctrl-f'>fix/unified-search-ctrl-f</option>
<option value='fix/unified-search-empty-sections'>fix/unified-search-empty-sections</option>
<option value='fix/unified-search-size'>fix/unified-search-size</option>
<option value='fix/update-notification'>fix/update-notification</option>
<option value='fix/update-share-entry-quick-select'>fix/update-share-entry-quick-select</option>
<option value='fix/updateall'>fix/updateall</option>
<option value='fix/updatenotification-legacy-toast'>fix/updatenotification-legacy-toast</option>
<option value='fix/use-invokeprivate-for-test'>fix/use-invokeprivate-for-test</option>
<option value='fix/user_status/harden-api'>fix/user_status/harden-api</option>
<option value='fix/usertrait/backend-initialization'>fix/usertrait/backend-initialization</option>
<option value='fix/version-channel'>fix/version-channel</option>
<option value='fix/view-in-folder-conditions'>fix/view-in-folder-conditions</option>
<option value='fix/view-only-preview'>fix/view-only-preview</option>
<option value='fix/view/catch-mkdir-exception-non-existent-parents'>fix/view/catch-mkdir-exception-non-existent-parents</option>
<option value='fix/wait-for-toast'>fix/wait-for-toast</option>
<option value='fix/weather_status/search-address-offline-errors'>fix/weather_status/search-address-offline-errors</option>
<option value='fix/webcal-subscription-jobs-middleware'>fix/webcal-subscription-jobs-middleware</option>
<option value='fix/wrong-image-type'>fix/wrong-image-type</option>
<option value='fixHeaderStyleSettings'>fixHeaderStyleSettings</option>
<option value='fixKeyExFileExt'>fixKeyExFileExt</option>
<option value='fixPhp83Deprecation'>fixPhp83Deprecation</option>
<option value='followup/39574/ocm-provider-without-beautiful-urls'>followup/39574/ocm-provider-without-beautiful-urls</option>
<option value='followup/47329/add-all-types-to-handling'>followup/47329/add-all-types-to-handling</option>
<option value='followup/48086/fix-more-activity-providers'>followup/48086/fix-more-activity-providers</option>
<option value='forbid-moving-subfolder-24'>forbid-moving-subfolder-24</option>
<option value='fox/noid/extended-auth-on-webdav'>fox/noid/extended-auth-on-webdav</option>
<option value='fwdport/48445/master'>fwdport/48445/master</option>
<option value='getMountsForFileId-non-sparse'>getMountsForFileId-non-sparse</option>
<option value='guzzleHandler'>guzzleHandler</option>
<option value='hasTableTaskprocessingTasks'>hasTableTaskprocessingTasks</option>
<option value='home-folder-readonly'>home-folder-readonly</option>
<option value='icewind-smb-3.7'>icewind-smb-3.7</option>
<option value='ignore-write-test-unlink-err'>ignore-write-test-unlink-err</option>
<option value='instance-quota'>instance-quota</option>
<option value='issue_45523_actionmenu_in_multiple_actions_menu_bar'>issue_45523_actionmenu_in_multiple_actions_menu_bar</option>
<option value='joblist-build-error-log'>joblist-build-error-log</option>
<option value='jr-quota-exceeded-admin-log'>jr-quota-exceeded-admin-log</option>
<option value='jr/enh/updates/options-buttons-web-ui'>jr/enh/updates/options-buttons-web-ui</option>
<option value='jr/meta/issue-template-bugs-closed-link'>jr/meta/issue-template-bugs-closed-link</option>
<option value='jtr-docs-dispatcher-return'>jtr-docs-dispatcher-return</option>
<option value='jtr-feat-setupchecks-limit-type'>jtr-feat-setupchecks-limit-type</option>
<option value='jtr-fix-dnspin-port-logging'>jtr-fix-dnspin-port-logging</option>
<option value='jtr-locale-personal-info'>jtr-locale-personal-info</option>
<option value='jtr-perf-checks-connectivity-https-proto'>jtr-perf-checks-connectivity-https-proto</option>
<option value='jtr-settings-memory-limit-details'>jtr-settings-memory-limit-details</option>
<option value='jtr/chore-bug-report-logs'>jtr/chore-bug-report-logs</option>
<option value='jtr/desc-and-help-plus-minor-fixes-files-scan'>jtr/desc-and-help-plus-minor-fixes-files-scan</option>
<option value='jtr/dns-noisy-dns-get-record'>jtr/dns-noisy-dns-get-record</option>
<option value='jtr/fix-25162'>jtr/fix-25162</option>
<option value='jtr/fix-40666-fallback-copy'>jtr/fix-40666-fallback-copy</option>
<option value='jtr/fix-45671'>jtr/fix-45671</option>
<option value='jtr/fix-46609-delegation-add-group-overlap'>jtr/fix-46609-delegation-add-group-overlap</option>
<option value='jtr/fix-appframework-server-proto'>jtr/fix-appframework-server-proto</option>
<option value='jtr/fix-hash-hkdf-valueerror'>jtr/fix-hash-hkdf-valueerror</option>
<option value='jtr/fix-ipv6-zone-ids-link-local'>jtr/fix-ipv6-zone-ids-link-local</option>
<option value='jtr/fix-sharing-update-hints'>jtr/fix-sharing-update-hints</option>
<option value='jtr/fix-streamer-zip64'>jtr/fix-streamer-zip64</option>
<option value='jtr/fix-testSearchGroups'>jtr/fix-testSearchGroups</option>
<option value='jtr/fix-tests/mysql-phpunit-health'>jtr/fix-tests/mysql-phpunit-health</option>
<option value='jtr/fix-updater-cleanup-job-logging'>jtr/fix-updater-cleanup-job-logging</option>
<option value='jtr/fix-wipe-missing-token-handling'>jtr/fix-wipe-missing-token-handling</option>
<option value='jtr/occ-maintenance-mode-desc'>jtr/occ-maintenance-mode-desc</option>
<option value='jtr/preview-thumb-robustness'>jtr/preview-thumb-robustness</option>
<option value='jtr/router-light-refactoring'>jtr/router-light-refactoring</option>
<option value='jtr/setup-checks-heading'>jtr/setup-checks-heading</option>
<option value='jtr/test-binaryfinder'>jtr/test-binaryfinder</option>
<option value='jtr/typo-accessibility-config-sample'>jtr/typo-accessibility-config-sample</option>
<option value='kerberos-saved-ticket'>kerberos-saved-ticket</option>
<option value='kerberos-saved-ticket-27'>kerberos-saved-ticket-27</option>
<option value='location-provider'>location-provider</option>
<option value='lockThreadsOlderThan120d'>lockThreadsOlderThan120d</option>
<option value='log-event-recursion'>log-event-recursion</option>
<option value='login-less-custom-bundle'>login-less-custom-bundle</option>
<option value='man/backport/45237/stable27'>man/backport/45237/stable27</option>
<option value='master'>master</option>
<option value='merge-token-updates'>merge-token-updates</option>
<option value='metadata-storage-id'>metadata-storage-id</option>
<option value='mgallien/fix/retry_cache_operations_on_deadlock'>mgallien/fix/retry_cache_operations_on_deadlock</option>
<option value='mixedSetTTL'>mixedSetTTL</option>
<option value='mount-move-checks'>mount-move-checks</option>
<option value='mountpoint-get-numeric-storage-id-cache'>mountpoint-get-numeric-storage-id-cache</option>
<option value='move-from-encryption-no-opt'>move-from-encryption-no-opt</option>
<option value='moveOCPClasses'>moveOCPClasses</option>
<option value='moveStrictTyping'>moveStrictTyping</option>
<option value='mysqlNativePassCi'>mysqlNativePassCi</option>
<option value='new-julius'>new-julius</option>
<option value='no-issue-use-correct-exceptions-in-share-class'>no-issue-use-correct-exceptions-in-share-class</option>
<option value='noissue-refactor-share-class'>noissue-refactor-share-class</option>
<option value='normlize-less'>normlize-less</option>
<option value='notfound-debug-mounts'>notfound-debug-mounts</option>
<option value='notfound-debug-mounts-30'>notfound-debug-mounts-30</option>
<option value='obj-delete-not-found'>obj-delete-not-found</option>
<option value='obj-delete-not-found-20'>obj-delete-not-found-20</option>
<option value='object-store-move-db'>object-store-move-db</option>
<option value='object-store-move-fixes'>object-store-move-fixes</option>
<option value='object-store-trash-move'>object-store-trash-move</option>
<option value='oc-wnd-migrate'>oc-wnd-migrate</option>
<option value='oc-wnd-migrate-25'>oc-wnd-migrate-25</option>
<option value='occ-as-root'>occ-as-root</option>
<option value='occ-upgrade-reminder'>occ-upgrade-reminder</option>
<option value='occ-upgrade-wording'>occ-upgrade-wording</option>
<option value='oci-ci-faststart'>oci-ci-faststart</option>
<option value='ocs-user-info-quota-optimize'>ocs-user-info-quota-optimize</option>
<option value='optionally-hide-hidden-files-in-public-share-access'>optionally-hide-hidden-files-in-public-share-access</option>
<option value='oracle-share-reminder'>oracle-share-reminder</option>
<option value='passedLockValueIsIntOrNull'>passedLockValueIsIntOrNull</option>
<option value='patch-14'>patch-14</option>
<option value='patch/61084/disable-clear-cache'>patch/61084/disable-clear-cache</option>
<option value='patch/hash-return-null'>patch/hash-return-null</option>
<option value='patch/performance-scckit'>patch/performance-scckit</option>
<option value='path-available'>path-available</option>
<option value='perf/cache-file-reminders'>perf/cache-file-reminders</option>
<option value='perf/check-node-type'>perf/check-node-type</option>
<option value='perf/core/jobs-index'>perf/core/jobs-index</option>
<option value='perf/cron/delay-timedjob-checking'>perf/cron/delay-timedjob-checking</option>
<option value='perf/files/chunked-upload-default-100-mib'>perf/files/chunked-upload-default-100-mib</option>
<option value='perf/improve-incomplete-scan'>perf/improve-incomplete-scan</option>
<option value='perf/log-excessive-memory-consumption'>perf/log-excessive-memory-consumption</option>
<option value='perf/log-high-memory-requests'>perf/log-high-memory-requests</option>
<option value='perf/noid/split-getSharedWith-query-into-more-performance-sets'>perf/noid/split-getSharedWith-query-into-more-performance-sets</option>
<option value='perf/noid/unified-search-init'>perf/noid/unified-search-init</option>
<option value='perf/remove-filecache-index'>perf/remove-filecache-index</option>
<option value='printOccHumanFriendly'>printOccHumanFriendly</option>
<option value='printOnlyOnceText'>printOnlyOnceText</option>
<option value='profile-request'>profile-request</option>
<option value='pull_request-trigger'>pull_request-trigger</option>
<option value='pulsejet-patch-share-attr'>pulsejet-patch-share-attr</option>
<option value='pulsejet/truncate-1'>pulsejet/truncate-1</option>
<option value='query-req-id-26'>query-req-id-26</option>
<option value='rakekniven-patch-1'>rakekniven-patch-1</option>
<option value='rakekniven-patch-2'>rakekniven-patch-2</option>
<option value='readd-object-store-phpunit'>readd-object-store-phpunit</option>
<option value='refactSmallAdjust'>refactSmallAdjust</option>
<option value='refactor/48925/sharing-sidebar-redesign'>refactor/48925/sharing-sidebar-redesign</option>
<option value='refactor/app/remove-register-routes'>refactor/app/remove-register-routes</option>
<option value='refactor/apps/constructor-property-promotion'>refactor/apps/constructor-property-promotion</option>
<option value='refactor/apps/declare-strict-types'>refactor/apps/declare-strict-types</option>
<option value='refactor/apps/php55-features'>refactor/apps/php55-features</option>
<option value='refactor/appstore-modernization'>refactor/appstore-modernization</option>
<option value='refactor/background-service'>refactor/background-service</option>
<option value='refactor/class-string-constant'>refactor/class-string-constant</option>
<option value='refactor/dirname-to-dir'>refactor/dirname-to-dir</option>
<option value='refactor/drop-to-uploader'>refactor/drop-to-uploader</option>
<option value='refactor/elvis'>refactor/elvis</option>
<option value='refactor/files-cleanup'>refactor/files-cleanup</option>
<option value='refactor/files-deprecated-share-types'>refactor/files-deprecated-share-types</option>
<option value='refactor/files-filelist-width'>refactor/files-filelist-width</option>
<option value='refactor/files-required-navigation'>refactor/files-required-navigation</option>
<option value='refactor/files/remove-app-class'>refactor/files/remove-app-class</option>
<option value='refactor/move-to-new-activity-exception'>refactor/move-to-new-activity-exception</option>
<option value='refactor/provide-file-actions-through-composable'>refactor/provide-file-actions-through-composable</option>
<option value='refactor/rector/extend-scope'>refactor/rector/extend-scope</option>
<option value='refactor/register-routes'>refactor/register-routes</option>
<option value='refactor/self-class-reference'>refactor/self-class-reference</option>
<option value='refactor/settings/mail-settings-parameters'>refactor/settings/mail-settings-parameters</option>
<option value='refactor/share-manager-appconfig'>refactor/share-manager-appconfig</option>
<option value='refactor/storage/constructors'>refactor/storage/constructors</option>
<option value='refactor/storage/strong-param-types'>refactor/storage/strong-param-types</option>
<option value='refactor/storage/strong-type-properties'>refactor/storage/strong-type-properties</option>
<option value='refactor/stream-encryption/typings'>refactor/stream-encryption/typings</option>
<option value='refactor/template-layout'>refactor/template-layout</option>
<option value='refactor/void-tests'>refactor/void-tests</option>
<option value='refactor/zip-event'>refactor/zip-event</option>
<option value='release/28.0.11'>release/28.0.11</option>
<option value='release/28.0.11_rc1'>release/28.0.11_rc1</option>
<option value='release/28.0.12'>release/28.0.12</option>
<option value='release/28.0.12_rc1'>release/28.0.12_rc1</option>
<option value='release/28.0.12_rc2'>release/28.0.12_rc2</option>
<option value='release/28.0.14'>release/28.0.14</option>
<option value='release/28.0.14_rc1'>release/28.0.14_rc1</option>
<option value='release/29.0.0beta2'>release/29.0.0beta2</option>
<option value='release/29.0.11'>release/29.0.11</option>
<option value='release/29.0.11_rc1'>release/29.0.11_rc1</option>
<option value='release/29.0.12'>release/29.0.12</option>
<option value='release/29.0.12_rc1'>release/29.0.12_rc1</option>
<option value='release/29.0.12_rc2'>release/29.0.12_rc2</option>
<option value='release/29.0.8'>release/29.0.8</option>
<option value='release/29.0.8_rc1'>release/29.0.8_rc1</option>
<option value='release/29.0.9'>release/29.0.9</option>
<option value='release/29.0.9_rc1'>release/29.0.9_rc1</option>
<option value='release/29.0.9_rc2'>release/29.0.9_rc2</option>
<option value='release/30.0.1_rc'>release/30.0.1_rc</option>
<option value='release/30.0.1_rc1'>release/30.0.1_rc1</option>
<option value='release/30.0.1_rc2'>release/30.0.1_rc2</option>
<option value='release/30.0.2'>release/30.0.2</option>
<option value='release/30.0.2_rc1'>release/30.0.2_rc1</option>
<option value='release/30.0.2_rc2'>release/30.0.2_rc2</option>
<option value='release/30.0.4'>release/30.0.4</option>
<option value='release/30.0.4_rc1'>release/30.0.4_rc1</option>
<option value='release/30.0.5'>release/30.0.5</option>
<option value='release/30.0.5_rc1'>release/30.0.5_rc1</option>
<option value='release/30.0.6'>release/30.0.6</option>
<option value='release/30.0.6_rc1'>release/30.0.6_rc1</option>
<option value='release/30.0.6_rc2'>release/30.0.6_rc2</option>
<option value='release/31.0.0'>release/31.0.0</option>
<option value='release/31.0.0_beta_1'>release/31.0.0_beta_1</option>
<option value='release/31.0.0_beta_2'>release/31.0.0_beta_2</option>
<option value='release/31.0.0_beta_4'>release/31.0.0_beta_4</option>
<option value='release/31.0.0_rc2'>release/31.0.0_rc2</option>
<option value='release/31.0.0_rc3'>release/31.0.0_rc3</option>
<option value='release/31.0.0_rc4'>release/31.0.0_rc4</option>
<option value='release/31.0.0_rc5'>release/31.0.0_rc5</option>
<option value='remoteIdToShares'>remoteIdToShares</option>
<option value='remove-filecache-joins'>remove-filecache-joins</option>
<option value='remove-locking-config-sample'>remove-locking-config-sample</option>
<option value='remove-non-accessible-shares'>remove-non-accessible-shares</option>
<option value='removeNoisyTextEmails'>removeNoisyTextEmails</option>
<option value='removeTrailingComma'>removeTrailingComma</option>
<option value='rename-deleted-default-calendar-in-trashbin'>rename-deleted-default-calendar-in-trashbin</option>
<option value='repair-mimetype-expensive-squashed-29'>repair-mimetype-expensive-squashed-29</option>
<option value='repair-tree-invalid-parent'>repair-tree-invalid-parent</option>
<option value='reshare-permission-logic-27'>reshare-permission-logic-27</option>
<option value='revert-49004'>revert-49004</option>
<option value='revert-49650-backport/49293/stable30'>revert-49650-backport/49293/stable30</option>
<option value='revert-49825-revert-49650-backport/49293/stable30'>revert-49825-revert-49650-backport/49293/stable30</option>
<option value='revert/41453'>revert/41453</option>
<option value='revert/openapi-extractor'>revert/openapi-extractor</option>
<option value='revert/share-node-accessible'>revert/share-node-accessible</option>
<option value='revoke-admin-overwrite-8'>revoke-admin-overwrite-8</option>
<option value='reworkShareExceptions'>reworkShareExceptions</option>
<option value='rfc/global-rate-limit'>rfc/global-rate-limit</option>
<option value='rfc/request-timeout'>rfc/request-timeout</option>
<option value='run-test-mime-type-icon-again'>run-test-mime-type-icon-again</option>
<option value='s3-bucket-create-exception'>s3-bucket-create-exception</option>
<option value='s3-disable-multipart'>s3-disable-multipart</option>
<option value='s3-disable-multipart-remove-debug'>s3-disable-multipart-remove-debug</option>
<option value='safety-net-null-check'>safety-net-null-check</option>
<option value='scan-home-ext-storae'>scan-home-ext-storae</option>
<option value='scanner-invalid-data-log'>scanner-invalid-data-log</option>
<option value='scckit-backports'>scckit-backports</option>
<option value='seekable-http-size-24'>seekable-http-size-24</option>
<option value='setupChecksMoveFromBinary'>setupChecksMoveFromBinary</option>
<option value='sftp-fopen-write-stat-cache'>sftp-fopen-write-stat-cache</option>
<option value='sftp-known-mtime'>sftp-known-mtime</option>
<option value='sharding-code-fixes'>sharding-code-fixes</option>
<option value='sharding-existing'>sharding-existing</option>
<option value='sharding-select-fixes'>sharding-select-fixes</option>
<option value='share-list-set-owner'>share-list-set-owner</option>
<option value='share-mount-check-no-in'>share-mount-check-no-in</option>
<option value='share-move-storage-error'>share-move-storage-error</option>
<option value='share-reminder-sharding'>share-reminder-sharding</option>
<option value='share-root-meta-cache'>share-root-meta-cache</option>
<option value='shared-cache-watcher-update'>shared-cache-watcher-update</option>
<option value='shared-cache-watcher-update-30'>shared-cache-watcher-update-30</option>
<option value='skjnldbot/nextcloud-upload'>skjnldbot/nextcloud-upload</option>
<option value='skjnldsv-patch-1'>skjnldsv-patch-1</option>
<option value='smb-acl-fail-soft'>smb-acl-fail-soft</option>
<option value='smb-hasupdated-deleted'>smb-hasupdated-deleted</option>
<option value='smb-notify-test'>smb-notify-test</option>
<option value='smb-systembridge'>smb-systembridge</option>
<option value='solracsf-patch-1'>solracsf-patch-1</option>
<option value='stable-swift-v3'>stable-swift-v3</option>
<option value='stable10'>stable10</option>
<option value='stable11'>stable11</option>
<option value='stable12'>stable12</option>
<option value='stable13'>stable13</option>
<option value='stable14'>stable14</option>
<option value='stable15'>stable15</option>
<option value='stable16'>stable16</option>
<option value='stable17'>stable17</option>
<option value='stable18'>stable18</option>
<option value='stable19'>stable19</option>
<option value='stable20'>stable20</option>
<option value='stable21'>stable21</option>
<option value='stable22'>stable22</option>
<option value='stable23'>stable23</option>
<option value='stable24'>stable24</option>
<option value='stable25'>stable25</option>
<option value='stable26'>stable26</option>
<option value='stable27'>stable27</option>
<option value='stable28'>stable28</option>
<option value='stable28BackportMissingSetTTL'>stable28BackportMissingSetTTL</option>
<option value='stable29'>stable29</option>
<option value='stable30'>stable30</option>
<option value='stable30-admin-audit-listen-failed-login'>stable30-admin-audit-listen-failed-login</option>
<option value='stable30-fix-renaming-a-received-share-by-a-user-with-stale-shares'>stable30-fix-renaming-a-received-share-by-a-user-with-stale-shares</option>
<option value='stable31'>stable31</option>
<option value='stable9'>stable9</option>
<option value='storage-cache-not-exists'>storage-cache-not-exists</option>
<option value='storage-debug-info'>storage-debug-info</option>
<option value='storage-id-cache-memcache'>storage-id-cache-memcache</option>
<option value='stream-assembly-stream-size'>stream-assembly-stream-size</option>
<option value='techdebt/noid/add-parameter-typehints'>techdebt/noid/add-parameter-typehints</option>
<option value='techdebt/noid/more-useful-debug-logs'>techdebt/noid/more-useful-debug-logs</option>
<option value='test-scanner-no-transactions-26'>test-scanner-no-transactions-26</option>
<option value='test/eol-check'>test/eol-check</option>
<option value='test/eol-check-26'>test/eol-check-26</option>
<option value='test/fix-cypress'>test/fix-cypress</option>
<option value='test/folder-tree'>test/folder-tree</option>
<option value='test/integration/cleanup-logs'>test/integration/cleanup-logs</option>
<option value='test/widget-perf'>test/widget-perf</option>
<option value='tests/fix-jest-leftover'>tests/fix-jest-leftover</option>
<option value='tests/template-workflow'>tests/template-workflow</option>
<option value='transfer-share-skip-notfound'>transfer-share-skip-notfound</option>
<option value='try-non-recursive-source-27'>try-non-recursive-source-27</option>
<option value='update-phpdoc-for-folder-get'>update-phpdoc-for-folder-get</option>
<option value='update-stale-bot-configuration'>update-stale-bot-configuration</option>
<option value='updateLastSeen'>updateLastSeen</option>
<option value='updater-change-mimetype-objectstore'>updater-change-mimetype-objectstore</option>
<option value='uploadfolder-rework'>uploadfolder-rework</option>
<option value='useHttpFramework'>useHttpFramework</option>
<option value='useNameNotUrl'>useNameNotUrl</option>
<option value='useOCPClassesTrashbin'>useOCPClassesTrashbin</option>
<option value='usermountcache-filecache-joins'>usermountcache-filecache-joins</option>
<option value='validateProvidedEmail'>validateProvidedEmail</option>
<option value='wrapper-instanceof-resiliant-squash'>wrapper-instanceof-resiliant-squash</option>
<option value='zorn-v-patch-1'>zorn-v-patch-1</option>
</select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>Nextcloud server, a safe home for all your data: https://github.com/nextcloud/server</td><td class='sub right'>www-data</td></tr></table>
<table class='tabs'><tr><td>
<a href='/nextcloud-server.git/?h=v14.0.14RC1'>summary</a><a href='/nextcloud-server.git/refs/?h=v14.0.14RC1&amp;id=4d52293c3ade37780419c3aa628b97bbf7704437'>refs</a><a href='/nextcloud-server.git/log/apps/updatenotification/l10n/bg.json?h=v14.0.14RC1'>log</a><a class='active' href='/nextcloud-server.git/tree/apps/updatenotification/l10n/bg.json?h=v14.0.14RC1&amp;id=4d52293c3ade37780419c3aa628b97bbf7704437'>tree</a><a href='/nextcloud-server.git/commit/apps/updatenotification/l10n/bg.json?h=v14.0.14RC1&amp;id=4d52293c3ade37780419c3aa628b97bbf7704437'>commit</a><a href='/nextcloud-server.git/diff/apps/updatenotification/l10n/bg.json?h=v14.0.14RC1&amp;id=4d52293c3ade37780419c3aa628b97bbf7704437'>diff</a><a href='/nextcloud-server.git/stats/apps/updatenotification/l10n/bg.json?h=v14.0.14RC1'>stats</a></td><td class='form'><form class='right' method='get' action='/nextcloud-server.git/log/apps/updatenotification/l10n/bg.json'>
<input type='hidden' name='h' value='v14.0.14RC1'/><input type='hidden' name='id' value='4d52293c3ade37780419c3aa628b97bbf7704437'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/nextcloud-server.git/tree/?h=v14.0.14RC1&amp;id=4d52293c3ade37780419c3aa628b97bbf7704437'>root</a>/<a href='/nextcloud-server.git/tree/apps?h=v14.0.14RC1&amp;id=4d52293c3ade37780419c3aa628b97bbf7704437'>apps</a>/<a href='/nextcloud-server.git/tree/apps/updatenotification?h=v14.0.14RC1&amp;id=4d52293c3ade37780419c3aa628b97bbf7704437'>updatenotification</a>/<a href='/nextcloud-server.git/tree/apps/updatenotification/l10n?h=v14.0.14RC1&amp;id=4d52293c3ade37780419c3aa628b97bbf7704437'>l10n</a>/<a href='/nextcloud-server.git/tree/apps/updatenotification/l10n/bg.json?h=v14.0.14RC1&amp;id=4d52293c3ade37780419c3aa628b97bbf7704437'>bg.json</a></div><div class='content'>blob: 8b07779abab0b32f0ce8a94a4d3a078f5e5002cf (<a href='/nextcloud-server.git/plain/apps/updatenotification/l10n/bg.json?h=v14.0.14RC1&amp;id=4d52293c3ade37780419c3aa628b97bbf7704437'>plain</a>)
<table summary='blob content' class='blob'>
<tr><td class='linenumbers'><pre><a id='n1' href='#n1'>1</a>
<a id='n2' href='#n2'>2</a>
<a id='n3' href='#n3'>3</a>
<a id='n4' href='#n4'>4</a>
<a id='n5' href='#n5'>5</a>
<a id='n6' href='#n6'>6</a>
<a id='n7' href='#n7'>7</a>
<a id='n8' href='#n8'>8</a>
<a id='n9' href='#n9'>9</a>
<a id='n10' href='#n10'>10</a>
<a id='n11' href='#n11'>11</a>
<a id='n12' href='#n12'>12</a>
<a id='n13' href='#n13'>13</a>
<a id='n14' href='#n14'>14</a>
<a id='n15' href='#n15'>15</a>
<a id='n16' href='#n16'>16</a>
<a id='n17' href='#n17'>17</a>
<a id='n18' href='#n18'>18</a>
<a id='n19' href='#n19'>19</a>
<a id='n20' href='#n20'>20</a>
<a id='n21' href='#n21'>21</a>
<a id='n22' href='#n22'>22</a>
<a id='n23' href='#n23'>23</a>
<a id='n24' href='#n24'>24</a>
<a id='n25' href='#n25'>25</a>
<a id='n26' href='#n26'>26</a>
<a id='n27' href='#n27'>27</a>
<a id='n28' href='#n28'>28</a>
<a id='n29' href='#n29'>29</a>
<a id='n30' href='#n30'>30</a>
<a id='n31' href='#n31'>31</a>
<a id='n32' href='#n32'>32</a>
<a id='n33' href='#n33'>33</a>
<a id='n34' href='#n34'>34</a>
<a id='n35' href='#n35'>35</a>
<a id='n36' href='#n36'>36</a>
<a id='n37' href='#n37'>37</a>
<a id='n38' href='#n38'>38</a>
<a id='n39' href='#n39'>39</a>
<a id='n40' href='#n40'>40</a>
<a id='n41' href='#n41'>41</a>
<a id='n42' href='#n42'>42</a>
<a id='n43' href='#n43'>43</a>
<a id='n44' href='#n44'>44</a>
<a id='n45' href='#n45'>45</a>
<a id='n46' href='#n46'>46</a>
</pre></td>
<td class='lines'><pre><code>