git subrepo commit (merge) mailcow/src/mailcow-dockerized

subrepo: subdir:   "mailcow/src/mailcow-dockerized"
  merged:   "02ae5285"
upstream: origin:   "https://github.com/mailcow/mailcow-dockerized.git"
  branch:   "master"
  commit:   "649a5c01"
git-subrepo: version:  "0.4.3"
  origin:   "???"
  commit:   "???"
Change-Id: I870ad468fba026cc5abf3c5699ed1e12ff28b32b
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/Access/Authorizable.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/Access/Authorizable.php
new file mode 100644
index 0000000..cedeb6e
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/Access/Authorizable.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Illuminate\Contracts\Auth\Access;
+
+interface Authorizable
+{
+    /**
+     * Determine if the entity has a given ability.
+     *
+     * @param  iterable|string  $abilities
+     * @param  array|mixed  $arguments
+     * @return bool
+     */
+    public function can($abilities, $arguments = []);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/Access/Gate.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/Access/Gate.php
new file mode 100644
index 0000000..b88ab17
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/Access/Gate.php
@@ -0,0 +1,150 @@
+<?php
+
+namespace Illuminate\Contracts\Auth\Access;
+
+interface Gate
+{
+    /**
+     * Determine if a given ability has been defined.
+     *
+     * @param  string  $ability
+     * @return bool
+     */
+    public function has($ability);
+
+    /**
+     * Define a new ability.
+     *
+     * @param  string  $ability
+     * @param  callable|string  $callback
+     * @return $this
+     */
+    public function define($ability, $callback);
+
+    /**
+     * Define abilities for a resource.
+     *
+     * @param  string  $name
+     * @param  string  $class
+     * @param  array|null  $abilities
+     * @return $this
+     */
+    public function resource($name, $class, array $abilities = null);
+
+    /**
+     * Define a policy class for a given class type.
+     *
+     * @param  string  $class
+     * @param  string  $policy
+     * @return $this
+     */
+    public function policy($class, $policy);
+
+    /**
+     * Register a callback to run before all Gate checks.
+     *
+     * @param  callable  $callback
+     * @return $this
+     */
+    public function before(callable $callback);
+
+    /**
+     * Register a callback to run after all Gate checks.
+     *
+     * @param  callable  $callback
+     * @return $this
+     */
+    public function after(callable $callback);
+
+    /**
+     * Determine if the given ability should be granted for the current user.
+     *
+     * @param  string  $ability
+     * @param  array|mixed  $arguments
+     * @return bool
+     */
+    public function allows($ability, $arguments = []);
+
+    /**
+     * Determine if the given ability should be denied for the current user.
+     *
+     * @param  string  $ability
+     * @param  array|mixed  $arguments
+     * @return bool
+     */
+    public function denies($ability, $arguments = []);
+
+    /**
+     * Determine if all of the given abilities should be granted for the current user.
+     *
+     * @param  iterable|string  $abilities
+     * @param  array|mixed  $arguments
+     * @return bool
+     */
+    public function check($abilities, $arguments = []);
+
+    /**
+     * Determine if any one of the given abilities should be granted for the current user.
+     *
+     * @param  iterable|string  $abilities
+     * @param  array|mixed  $arguments
+     * @return bool
+     */
+    public function any($abilities, $arguments = []);
+
+    /**
+     * Determine if the given ability should be granted for the current user.
+     *
+     * @param  string  $ability
+     * @param  array|mixed  $arguments
+     * @return \Illuminate\Auth\Access\Response
+     *
+     * @throws \Illuminate\Auth\Access\AuthorizationException
+     */
+    public function authorize($ability, $arguments = []);
+
+    /**
+     * Inspect the user for the given ability.
+     *
+     * @param  string  $ability
+     * @param  array|mixed  $arguments
+     * @return \Illuminate\Auth\Access\Response
+     */
+    public function inspect($ability, $arguments = []);
+
+    /**
+     * Get the raw result from the authorization callback.
+     *
+     * @param  string  $ability
+     * @param  array|mixed  $arguments
+     * @return mixed
+     *
+     * @throws \Illuminate\Auth\Access\AuthorizationException
+     */
+    public function raw($ability, $arguments = []);
+
+    /**
+     * Get a policy instance for a given class.
+     *
+     * @param  object|string  $class
+     * @return mixed
+     *
+     * @throws \InvalidArgumentException
+     */
+    public function getPolicyFor($class);
+
+    /**
+     * Get a guard instance for the given user.
+     *
+     * @param  \Illuminate\Contracts\Auth\Authenticatable|mixed  $user
+     * @return static
+     */
+    public function forUser($user);
+
+    /**
+     * Get all of the defined abilities.
+     *
+     * @return array
+     */
+    public function abilities();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/Authenticatable.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/Authenticatable.php
new file mode 100644
index 0000000..ac4ed88
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/Authenticatable.php
@@ -0,0 +1,49 @@
+<?php
+
+namespace Illuminate\Contracts\Auth;
+
+interface Authenticatable
+{
+    /**
+     * Get the name of the unique identifier for the user.
+     *
+     * @return string
+     */
+    public function getAuthIdentifierName();
+
+    /**
+     * Get the unique identifier for the user.
+     *
+     * @return mixed
+     */
+    public function getAuthIdentifier();
+
+    /**
+     * Get the password for the user.
+     *
+     * @return string
+     */
+    public function getAuthPassword();
+
+    /**
+     * Get the token value for the "remember me" session.
+     *
+     * @return string
+     */
+    public function getRememberToken();
+
+    /**
+     * Set the token value for the "remember me" session.
+     *
+     * @param  string  $value
+     * @return void
+     */
+    public function setRememberToken($value);
+
+    /**
+     * Get the column name for the "remember me" token.
+     *
+     * @return string
+     */
+    public function getRememberTokenName();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/CanResetPassword.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/CanResetPassword.php
new file mode 100644
index 0000000..3a67707
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/CanResetPassword.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace Illuminate\Contracts\Auth;
+
+interface CanResetPassword
+{
+    /**
+     * Get the e-mail address where password reset links are sent.
+     *
+     * @return string
+     */
+    public function getEmailForPasswordReset();
+
+    /**
+     * Send the password reset notification.
+     *
+     * @param  string  $token
+     * @return void
+     */
+    public function sendPasswordResetNotification($token);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/Factory.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/Factory.php
new file mode 100644
index 0000000..d76ee76
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/Factory.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace Illuminate\Contracts\Auth;
+
+interface Factory
+{
+    /**
+     * Get a guard instance by name.
+     *
+     * @param  string|null  $name
+     * @return \Illuminate\Contracts\Auth\Guard|\Illuminate\Contracts\Auth\StatefulGuard
+     */
+    public function guard($name = null);
+
+    /**
+     * Set the default guard the factory should serve.
+     *
+     * @param  string  $name
+     * @return void
+     */
+    public function shouldUse($name);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/Guard.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/Guard.php
new file mode 100644
index 0000000..2a27fb5
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/Guard.php
@@ -0,0 +1,50 @@
+<?php
+
+namespace Illuminate\Contracts\Auth;
+
+interface Guard
+{
+    /**
+     * Determine if the current user is authenticated.
+     *
+     * @return bool
+     */
+    public function check();
+
+    /**
+     * Determine if the current user is a guest.
+     *
+     * @return bool
+     */
+    public function guest();
+
+    /**
+     * Get the currently authenticated user.
+     *
+     * @return \Illuminate\Contracts\Auth\Authenticatable|null
+     */
+    public function user();
+
+    /**
+     * Get the ID for the currently authenticated user.
+     *
+     * @return int|string|null
+     */
+    public function id();
+
+    /**
+     * Validate a user's credentials.
+     *
+     * @param  array  $credentials
+     * @return bool
+     */
+    public function validate(array $credentials = []);
+
+    /**
+     * Set the current user.
+     *
+     * @param  \Illuminate\Contracts\Auth\Authenticatable  $user
+     * @return void
+     */
+    public function setUser(Authenticatable $user);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/Middleware/AuthenticatesRequests.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/Middleware/AuthenticatesRequests.php
new file mode 100644
index 0000000..b782761
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/Middleware/AuthenticatesRequests.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace Illuminate\Contracts\Auth\Middleware;
+
+interface AuthenticatesRequests
+{
+    //
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/MustVerifyEmail.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/MustVerifyEmail.php
new file mode 100644
index 0000000..5b8b105
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/MustVerifyEmail.php
@@ -0,0 +1,34 @@
+<?php
+
+namespace Illuminate\Contracts\Auth;
+
+interface MustVerifyEmail
+{
+    /**
+     * Determine if the user has verified their email address.
+     *
+     * @return bool
+     */
+    public function hasVerifiedEmail();
+
+    /**
+     * Mark the given user's email as verified.
+     *
+     * @return bool
+     */
+    public function markEmailAsVerified();
+
+    /**
+     * Send the email verification notification.
+     *
+     * @return void
+     */
+    public function sendEmailVerificationNotification();
+
+    /**
+     * Get the email address that should be used for verification.
+     *
+     * @return string
+     */
+    public function getEmailForVerification();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/PasswordBroker.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/PasswordBroker.php
new file mode 100644
index 0000000..bbbe9b5
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/PasswordBroker.php
@@ -0,0 +1,61 @@
+<?php
+
+namespace Illuminate\Contracts\Auth;
+
+use Closure;
+
+interface PasswordBroker
+{
+    /**
+     * Constant representing a successfully sent reminder.
+     *
+     * @var string
+     */
+    const RESET_LINK_SENT = 'passwords.sent';
+
+    /**
+     * Constant representing a successfully reset password.
+     *
+     * @var string
+     */
+    const PASSWORD_RESET = 'passwords.reset';
+
+    /**
+     * Constant representing the user not found response.
+     *
+     * @var string
+     */
+    const INVALID_USER = 'passwords.user';
+
+    /**
+     * Constant representing an invalid token.
+     *
+     * @var string
+     */
+    const INVALID_TOKEN = 'passwords.token';
+
+    /**
+     * Constant representing a throttled reset attempt.
+     *
+     * @var string
+     */
+    const RESET_THROTTLED = 'passwords.throttled';
+
+    /**
+     * Send a password reset link to a user.
+     *
+     * @param  array  $credentials
+     * @param  \Closure|null  $callback
+     * @return string
+     */
+    public function sendResetLink(array $credentials, Closure $callback = null);
+
+    /**
+     * Reset the password for the given token.
+     *
+     * @param  array  $credentials
+     * @param  \Closure  $callback
+     * @return mixed
+     */
+    public function reset(array $credentials, Closure $callback);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/PasswordBrokerFactory.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/PasswordBrokerFactory.php
new file mode 100644
index 0000000..47b1c08
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/PasswordBrokerFactory.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Illuminate\Contracts\Auth;
+
+interface PasswordBrokerFactory
+{
+    /**
+     * Get a password broker instance by name.
+     *
+     * @param  string|null  $name
+     * @return mixed
+     */
+    public function broker($name = null);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/StatefulGuard.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/StatefulGuard.php
new file mode 100644
index 0000000..faf1497
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/StatefulGuard.php
@@ -0,0 +1,63 @@
+<?php
+
+namespace Illuminate\Contracts\Auth;
+
+interface StatefulGuard extends Guard
+{
+    /**
+     * Attempt to authenticate a user using the given credentials.
+     *
+     * @param  array  $credentials
+     * @param  bool  $remember
+     * @return bool
+     */
+    public function attempt(array $credentials = [], $remember = false);
+
+    /**
+     * Log a user into the application without sessions or cookies.
+     *
+     * @param  array  $credentials
+     * @return bool
+     */
+    public function once(array $credentials = []);
+
+    /**
+     * Log a user into the application.
+     *
+     * @param  \Illuminate\Contracts\Auth\Authenticatable  $user
+     * @param  bool  $remember
+     * @return void
+     */
+    public function login(Authenticatable $user, $remember = false);
+
+    /**
+     * Log the given user ID into the application.
+     *
+     * @param  mixed  $id
+     * @param  bool  $remember
+     * @return \Illuminate\Contracts\Auth\Authenticatable|bool
+     */
+    public function loginUsingId($id, $remember = false);
+
+    /**
+     * Log the given user ID into the application without sessions or cookies.
+     *
+     * @param  mixed  $id
+     * @return \Illuminate\Contracts\Auth\Authenticatable|bool
+     */
+    public function onceUsingId($id);
+
+    /**
+     * Determine if the user was authenticated via "remember me" cookie.
+     *
+     * @return bool
+     */
+    public function viaRemember();
+
+    /**
+     * Log the user out of the application.
+     *
+     * @return void
+     */
+    public function logout();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/SupportsBasicAuth.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/SupportsBasicAuth.php
new file mode 100644
index 0000000..9c54591
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/SupportsBasicAuth.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Illuminate\Contracts\Auth;
+
+interface SupportsBasicAuth
+{
+    /**
+     * Attempt to authenticate using HTTP Basic Auth.
+     *
+     * @param  string  $field
+     * @param  array  $extraConditions
+     * @return \Symfony\Component\HttpFoundation\Response|null
+     */
+    public function basic($field = 'email', $extraConditions = []);
+
+    /**
+     * Perform a stateless HTTP Basic login attempt.
+     *
+     * @param  string  $field
+     * @param  array  $extraConditions
+     * @return \Symfony\Component\HttpFoundation\Response|null
+     */
+    public function onceBasic($field = 'email', $extraConditions = []);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/UserProvider.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/UserProvider.php
new file mode 100644
index 0000000..a2ab122
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Auth/UserProvider.php
@@ -0,0 +1,49 @@
+<?php
+
+namespace Illuminate\Contracts\Auth;
+
+interface UserProvider
+{
+    /**
+     * Retrieve a user by their unique identifier.
+     *
+     * @param  mixed  $identifier
+     * @return \Illuminate\Contracts\Auth\Authenticatable|null
+     */
+    public function retrieveById($identifier);
+
+    /**
+     * Retrieve a user by their unique identifier and "remember me" token.
+     *
+     * @param  mixed  $identifier
+     * @param  string  $token
+     * @return \Illuminate\Contracts\Auth\Authenticatable|null
+     */
+    public function retrieveByToken($identifier, $token);
+
+    /**
+     * Update the "remember me" token for the given user in storage.
+     *
+     * @param  \Illuminate\Contracts\Auth\Authenticatable  $user
+     * @param  string  $token
+     * @return void
+     */
+    public function updateRememberToken(Authenticatable $user, $token);
+
+    /**
+     * Retrieve a user by the given credentials.
+     *
+     * @param  array  $credentials
+     * @return \Illuminate\Contracts\Auth\Authenticatable|null
+     */
+    public function retrieveByCredentials(array $credentials);
+
+    /**
+     * Validate a user against the given credentials.
+     *
+     * @param  \Illuminate\Contracts\Auth\Authenticatable  $user
+     * @param  array  $credentials
+     * @return bool
+     */
+    public function validateCredentials(Authenticatable $user, array $credentials);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Broadcasting/Broadcaster.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Broadcasting/Broadcaster.php
new file mode 100644
index 0000000..1034e44
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Broadcasting/Broadcaster.php
@@ -0,0 +1,33 @@
+<?php
+
+namespace Illuminate\Contracts\Broadcasting;
+
+interface Broadcaster
+{
+    /**
+     * Authenticate the incoming request for a given channel.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return mixed
+     */
+    public function auth($request);
+
+    /**
+     * Return the valid authentication response.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  mixed  $result
+     * @return mixed
+     */
+    public function validAuthenticationResponse($request, $result);
+
+    /**
+     * Broadcast the given event.
+     *
+     * @param  array  $channels
+     * @param  string  $event
+     * @param  array  $payload
+     * @return void
+     */
+    public function broadcast(array $channels, $event, array $payload = []);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Broadcasting/Factory.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Broadcasting/Factory.php
new file mode 100644
index 0000000..1a4f48f
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Broadcasting/Factory.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Illuminate\Contracts\Broadcasting;
+
+interface Factory
+{
+    /**
+     * Get a broadcaster implementation by name.
+     *
+     * @param  string|null  $name
+     * @return \Illuminate\Contracts\Broadcasting\Broadcaster
+     */
+    public function connection($name = null);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Broadcasting/HasBroadcastChannel.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Broadcasting/HasBroadcastChannel.php
new file mode 100644
index 0000000..3b2c401
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Broadcasting/HasBroadcastChannel.php
@@ -0,0 +1,20 @@
+<?php
+
+namespace Illuminate\Contracts\Broadcasting;
+
+interface HasBroadcastChannel
+{
+    /**
+     * Get the broadcast channel route definition that is associated with the given entity.
+     *
+     * @return string
+     */
+    public function broadcastChannelRoute();
+
+    /**
+     * Get the broadcast channel name that is associated with the given entity.
+     *
+     * @return string
+     */
+    public function broadcastChannel();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Broadcasting/ShouldBroadcast.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Broadcasting/ShouldBroadcast.php
new file mode 100644
index 0000000..a4802fe
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Broadcasting/ShouldBroadcast.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace Illuminate\Contracts\Broadcasting;
+
+interface ShouldBroadcast
+{
+    /**
+     * Get the channels the event should broadcast on.
+     *
+     * @return \Illuminate\Broadcasting\Channel|\Illuminate\Broadcasting\Channel[]
+     */
+    public function broadcastOn();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Broadcasting/ShouldBroadcastNow.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Broadcasting/ShouldBroadcastNow.php
new file mode 100644
index 0000000..eba3584
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Broadcasting/ShouldBroadcastNow.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace Illuminate\Contracts\Broadcasting;
+
+interface ShouldBroadcastNow extends ShouldBroadcast
+{
+    //
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Bus/Dispatcher.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Bus/Dispatcher.php
new file mode 100644
index 0000000..5cbbd92
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Bus/Dispatcher.php
@@ -0,0 +1,66 @@
+<?php
+
+namespace Illuminate\Contracts\Bus;
+
+interface Dispatcher
+{
+    /**
+     * Dispatch a command to its appropriate handler.
+     *
+     * @param  mixed  $command
+     * @return mixed
+     */
+    public function dispatch($command);
+
+    /**
+     * Dispatch a command to its appropriate handler in the current process.
+     *
+     * Queueable jobs will be dispatched to the "sync" queue.
+     *
+     * @param  mixed  $command
+     * @param  mixed  $handler
+     * @return mixed
+     */
+    public function dispatchSync($command, $handler = null);
+
+    /**
+     * Dispatch a command to its appropriate handler in the current process.
+     *
+     * @param  mixed  $command
+     * @param  mixed  $handler
+     * @return mixed
+     */
+    public function dispatchNow($command, $handler = null);
+
+    /**
+     * Determine if the given command has a handler.
+     *
+     * @param  mixed  $command
+     * @return bool
+     */
+    public function hasCommandHandler($command);
+
+    /**
+     * Retrieve the handler for a command.
+     *
+     * @param  mixed  $command
+     * @return bool|mixed
+     */
+    public function getCommandHandler($command);
+
+    /**
+     * Set the pipes commands should be piped through before dispatching.
+     *
+     * @param  array  $pipes
+     * @return $this
+     */
+    public function pipeThrough(array $pipes);
+
+    /**
+     * Map a command to a handler.
+     *
+     * @param  array  $map
+     * @return $this
+     */
+    public function map(array $map);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Bus/QueueingDispatcher.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Bus/QueueingDispatcher.php
new file mode 100644
index 0000000..ff84e27
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Bus/QueueingDispatcher.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace Illuminate\Contracts\Bus;
+
+interface QueueingDispatcher extends Dispatcher
+{
+    /**
+     * Attempt to find the batch with the given ID.
+     *
+     * @param  string  $batchId
+     * @return \Illuminate\Bus\Batch|null
+     */
+    public function findBatch(string $batchId);
+
+    /**
+     * Create a new batch of queueable jobs.
+     *
+     * @param  \Illuminate\Support\Collection|array  $jobs
+     * @return \Illuminate\Bus\PendingBatch
+     */
+    public function batch($jobs);
+
+    /**
+     * Dispatch a command to its appropriate handler behind a queue.
+     *
+     * @param  mixed  $command
+     * @return mixed
+     */
+    public function dispatchToQueue($command);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cache/Factory.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cache/Factory.php
new file mode 100644
index 0000000..3924662
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cache/Factory.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Illuminate\Contracts\Cache;
+
+interface Factory
+{
+    /**
+     * Get a cache store instance by name.
+     *
+     * @param  string|null  $name
+     * @return \Illuminate\Contracts\Cache\Repository
+     */
+    public function store($name = null);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cache/Lock.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cache/Lock.php
new file mode 100644
index 0000000..03f633a
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cache/Lock.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace Illuminate\Contracts\Cache;
+
+interface Lock
+{
+    /**
+     * Attempt to acquire the lock.
+     *
+     * @param  callable|null  $callback
+     * @return mixed
+     */
+    public function get($callback = null);
+
+    /**
+     * Attempt to acquire the lock for the given number of seconds.
+     *
+     * @param  int  $seconds
+     * @param  callable|null  $callback
+     * @return mixed
+     */
+    public function block($seconds, $callback = null);
+
+    /**
+     * Release the lock.
+     *
+     * @return bool
+     */
+    public function release();
+
+    /**
+     * Returns the current owner of the lock.
+     *
+     * @return string
+     */
+    public function owner();
+
+    /**
+     * Releases this lock in disregard of ownership.
+     *
+     * @return void
+     */
+    public function forceRelease();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cache/LockProvider.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cache/LockProvider.php
new file mode 100644
index 0000000..37d4ef6
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cache/LockProvider.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Illuminate\Contracts\Cache;
+
+interface LockProvider
+{
+    /**
+     * Get a lock instance.
+     *
+     * @param  string  $name
+     * @param  int  $seconds
+     * @param  string|null  $owner
+     * @return \Illuminate\Contracts\Cache\Lock
+     */
+    public function lock($name, $seconds = 0, $owner = null);
+
+    /**
+     * Restore a lock instance using the owner identifier.
+     *
+     * @param  string  $name
+     * @param  string  $owner
+     * @return \Illuminate\Contracts\Cache\Lock
+     */
+    public function restoreLock($name, $owner);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cache/LockTimeoutException.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cache/LockTimeoutException.php
new file mode 100644
index 0000000..53327e2
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cache/LockTimeoutException.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Illuminate\Contracts\Cache;
+
+use Exception;
+
+class LockTimeoutException extends Exception
+{
+    //
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cache/Repository.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cache/Repository.php
new file mode 100644
index 0000000..5b78af5
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cache/Repository.php
@@ -0,0 +1,108 @@
+<?php
+
+namespace Illuminate\Contracts\Cache;
+
+use Closure;
+use Psr\SimpleCache\CacheInterface;
+
+interface Repository extends CacheInterface
+{
+    /**
+     * Retrieve an item from the cache and delete it.
+     *
+     * @param  string  $key
+     * @param  mixed  $default
+     * @return mixed
+     */
+    public function pull($key, $default = null);
+
+    /**
+     * Store an item in the cache.
+     *
+     * @param  string  $key
+     * @param  mixed  $value
+     * @param  \DateTimeInterface|\DateInterval|int|null  $ttl
+     * @return bool
+     */
+    public function put($key, $value, $ttl = null);
+
+    /**
+     * Store an item in the cache if the key does not exist.
+     *
+     * @param  string  $key
+     * @param  mixed  $value
+     * @param  \DateTimeInterface|\DateInterval|int|null  $ttl
+     * @return bool
+     */
+    public function add($key, $value, $ttl = null);
+
+    /**
+     * Increment the value of an item in the cache.
+     *
+     * @param  string  $key
+     * @param  mixed  $value
+     * @return int|bool
+     */
+    public function increment($key, $value = 1);
+
+    /**
+     * Decrement the value of an item in the cache.
+     *
+     * @param  string  $key
+     * @param  mixed  $value
+     * @return int|bool
+     */
+    public function decrement($key, $value = 1);
+
+    /**
+     * Store an item in the cache indefinitely.
+     *
+     * @param  string  $key
+     * @param  mixed  $value
+     * @return bool
+     */
+    public function forever($key, $value);
+
+    /**
+     * Get an item from the cache, or execute the given Closure and store the result.
+     *
+     * @param  string  $key
+     * @param  \DateTimeInterface|\DateInterval|int|null  $ttl
+     * @param  \Closure  $callback
+     * @return mixed
+     */
+    public function remember($key, $ttl, Closure $callback);
+
+    /**
+     * Get an item from the cache, or execute the given Closure and store the result forever.
+     *
+     * @param  string  $key
+     * @param  \Closure  $callback
+     * @return mixed
+     */
+    public function sear($key, Closure $callback);
+
+    /**
+     * Get an item from the cache, or execute the given Closure and store the result forever.
+     *
+     * @param  string  $key
+     * @param  \Closure  $callback
+     * @return mixed
+     */
+    public function rememberForever($key, Closure $callback);
+
+    /**
+     * Remove an item from the cache.
+     *
+     * @param  string  $key
+     * @return bool
+     */
+    public function forget($key);
+
+    /**
+     * Get the cache store implementation.
+     *
+     * @return \Illuminate\Contracts\Cache\Store
+     */
+    public function getStore();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cache/Store.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cache/Store.php
new file mode 100644
index 0000000..133bc43
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cache/Store.php
@@ -0,0 +1,92 @@
+<?php
+
+namespace Illuminate\Contracts\Cache;
+
+interface Store
+{
+    /**
+     * Retrieve an item from the cache by key.
+     *
+     * @param  string|array  $key
+     * @return mixed
+     */
+    public function get($key);
+
+    /**
+     * Retrieve multiple items from the cache by key.
+     *
+     * Items not found in the cache will have a null value.
+     *
+     * @param  array  $keys
+     * @return array
+     */
+    public function many(array $keys);
+
+    /**
+     * Store an item in the cache for a given number of seconds.
+     *
+     * @param  string  $key
+     * @param  mixed  $value
+     * @param  int  $seconds
+     * @return bool
+     */
+    public function put($key, $value, $seconds);
+
+    /**
+     * Store multiple items in the cache for a given number of seconds.
+     *
+     * @param  array  $values
+     * @param  int  $seconds
+     * @return bool
+     */
+    public function putMany(array $values, $seconds);
+
+    /**
+     * Increment the value of an item in the cache.
+     *
+     * @param  string  $key
+     * @param  mixed  $value
+     * @return int|bool
+     */
+    public function increment($key, $value = 1);
+
+    /**
+     * Decrement the value of an item in the cache.
+     *
+     * @param  string  $key
+     * @param  mixed  $value
+     * @return int|bool
+     */
+    public function decrement($key, $value = 1);
+
+    /**
+     * Store an item in the cache indefinitely.
+     *
+     * @param  string  $key
+     * @param  mixed  $value
+     * @return bool
+     */
+    public function forever($key, $value);
+
+    /**
+     * Remove an item from the cache.
+     *
+     * @param  string  $key
+     * @return bool
+     */
+    public function forget($key);
+
+    /**
+     * Remove all items from the cache.
+     *
+     * @return bool
+     */
+    public function flush();
+
+    /**
+     * Get the cache key prefix.
+     *
+     * @return string
+     */
+    public function getPrefix();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Config/Repository.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Config/Repository.php
new file mode 100644
index 0000000..a4f0ac8
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Config/Repository.php
@@ -0,0 +1,57 @@
+<?php
+
+namespace Illuminate\Contracts\Config;
+
+interface Repository
+{
+    /**
+     * Determine if the given configuration value exists.
+     *
+     * @param  string  $key
+     * @return bool
+     */
+    public function has($key);
+
+    /**
+     * Get the specified configuration value.
+     *
+     * @param  array|string  $key
+     * @param  mixed  $default
+     * @return mixed
+     */
+    public function get($key, $default = null);
+
+    /**
+     * Get all of the configuration items for the application.
+     *
+     * @return array
+     */
+    public function all();
+
+    /**
+     * Set a given configuration value.
+     *
+     * @param  array|string  $key
+     * @param  mixed  $value
+     * @return void
+     */
+    public function set($key, $value = null);
+
+    /**
+     * Prepend a value onto an array configuration value.
+     *
+     * @param  string  $key
+     * @param  mixed  $value
+     * @return void
+     */
+    public function prepend($key, $value);
+
+    /**
+     * Push a value onto an array configuration value.
+     *
+     * @param  string  $key
+     * @param  mixed  $value
+     * @return void
+     */
+    public function push($key, $value);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Console/Application.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Console/Application.php
new file mode 100644
index 0000000..ba628c9
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Console/Application.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace Illuminate\Contracts\Console;
+
+interface Application
+{
+    /**
+     * Run an Artisan console command by name.
+     *
+     * @param  string  $command
+     * @param  array  $parameters
+     * @param  \Symfony\Component\Console\Output\OutputInterface|null  $outputBuffer
+     * @return int
+     */
+    public function call($command, array $parameters = [], $outputBuffer = null);
+
+    /**
+     * Get the output from the last command.
+     *
+     * @return string
+     */
+    public function output();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Console/Kernel.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Console/Kernel.php
new file mode 100644
index 0000000..842f5a6
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Console/Kernel.php
@@ -0,0 +1,64 @@
+<?php
+
+namespace Illuminate\Contracts\Console;
+
+interface Kernel
+{
+    /**
+     * Bootstrap the application for artisan commands.
+     *
+     * @return void
+     */
+    public function bootstrap();
+
+    /**
+     * Handle an incoming console command.
+     *
+     * @param  \Symfony\Component\Console\Input\InputInterface  $input
+     * @param  \Symfony\Component\Console\Output\OutputInterface|null  $output
+     * @return int
+     */
+    public function handle($input, $output = null);
+
+    /**
+     * Run an Artisan console command by name.
+     *
+     * @param  string  $command
+     * @param  array  $parameters
+     * @param  \Symfony\Component\Console\Output\OutputInterface|null  $outputBuffer
+     * @return int
+     */
+    public function call($command, array $parameters = [], $outputBuffer = null);
+
+    /**
+     * Queue an Artisan console command by name.
+     *
+     * @param  string  $command
+     * @param  array  $parameters
+     * @return \Illuminate\Foundation\Bus\PendingDispatch
+     */
+    public function queue($command, array $parameters = []);
+
+    /**
+     * Get all of the commands registered with the console.
+     *
+     * @return array
+     */
+    public function all();
+
+    /**
+     * Get the output for the last run command.
+     *
+     * @return string
+     */
+    public function output();
+
+    /**
+     * Terminate the application.
+     *
+     * @param  \Symfony\Component\Console\Input\InputInterface  $input
+     * @param  int  $status
+     * @return void
+     */
+    public function terminate($input, $status);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Container/BindingResolutionException.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Container/BindingResolutionException.php
new file mode 100644
index 0000000..a69c24c
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Container/BindingResolutionException.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace Illuminate\Contracts\Container;
+
+use Exception;
+use Psr\Container\ContainerExceptionInterface;
+
+class BindingResolutionException extends Exception implements ContainerExceptionInterface
+{
+    //
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Container/CircularDependencyException.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Container/CircularDependencyException.php
new file mode 100644
index 0000000..6c90381
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Container/CircularDependencyException.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace Illuminate\Contracts\Container;
+
+use Exception;
+use Psr\Container\ContainerExceptionInterface;
+
+class CircularDependencyException extends Exception implements ContainerExceptionInterface
+{
+    //
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Container/Container.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Container/Container.php
new file mode 100644
index 0000000..1b8bb64
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Container/Container.php
@@ -0,0 +1,183 @@
+<?php
+
+namespace Illuminate\Contracts\Container;
+
+use Closure;
+use Psr\Container\ContainerInterface;
+
+interface Container extends ContainerInterface
+{
+    /**
+     * Determine if the given abstract type has been bound.
+     *
+     * @param  string  $abstract
+     * @return bool
+     */
+    public function bound($abstract);
+
+    /**
+     * Alias a type to a different name.
+     *
+     * @param  string  $abstract
+     * @param  string  $alias
+     * @return void
+     *
+     * @throws \LogicException
+     */
+    public function alias($abstract, $alias);
+
+    /**
+     * Assign a set of tags to a given binding.
+     *
+     * @param  array|string  $abstracts
+     * @param  array|mixed  ...$tags
+     * @return void
+     */
+    public function tag($abstracts, $tags);
+
+    /**
+     * Resolve all of the bindings for a given tag.
+     *
+     * @param  string  $tag
+     * @return iterable
+     */
+    public function tagged($tag);
+
+    /**
+     * Register a binding with the container.
+     *
+     * @param  string  $abstract
+     * @param  \Closure|string|null  $concrete
+     * @param  bool  $shared
+     * @return void
+     */
+    public function bind($abstract, $concrete = null, $shared = false);
+
+    /**
+     * Register a binding if it hasn't already been registered.
+     *
+     * @param  string  $abstract
+     * @param  \Closure|string|null  $concrete
+     * @param  bool  $shared
+     * @return void
+     */
+    public function bindIf($abstract, $concrete = null, $shared = false);
+
+    /**
+     * Register a shared binding in the container.
+     *
+     * @param  string  $abstract
+     * @param  \Closure|string|null  $concrete
+     * @return void
+     */
+    public function singleton($abstract, $concrete = null);
+
+    /**
+     * Register a shared binding if it hasn't already been registered.
+     *
+     * @param  string  $abstract
+     * @param  \Closure|string|null  $concrete
+     * @return void
+     */
+    public function singletonIf($abstract, $concrete = null);
+
+    /**
+     * "Extend" an abstract type in the container.
+     *
+     * @param  string  $abstract
+     * @param  \Closure  $closure
+     * @return void
+     *
+     * @throws \InvalidArgumentException
+     */
+    public function extend($abstract, Closure $closure);
+
+    /**
+     * Register an existing instance as shared in the container.
+     *
+     * @param  string  $abstract
+     * @param  mixed  $instance
+     * @return mixed
+     */
+    public function instance($abstract, $instance);
+
+    /**
+     * Add a contextual binding to the container.
+     *
+     * @param  string  $concrete
+     * @param  string  $abstract
+     * @param  \Closure|string  $implementation
+     * @return void
+     */
+    public function addContextualBinding($concrete, $abstract, $implementation);
+
+    /**
+     * Define a contextual binding.
+     *
+     * @param  string|array  $concrete
+     * @return \Illuminate\Contracts\Container\ContextualBindingBuilder
+     */
+    public function when($concrete);
+
+    /**
+     * Get a closure to resolve the given type from the container.
+     *
+     * @param  string  $abstract
+     * @return \Closure
+     */
+    public function factory($abstract);
+
+    /**
+     * Flush the container of all bindings and resolved instances.
+     *
+     * @return void
+     */
+    public function flush();
+
+    /**
+     * Resolve the given type from the container.
+     *
+     * @param  string  $abstract
+     * @param  array  $parameters
+     * @return mixed
+     *
+     * @throws \Illuminate\Contracts\Container\BindingResolutionException
+     */
+    public function make($abstract, array $parameters = []);
+
+    /**
+     * Call the given Closure / class@method and inject its dependencies.
+     *
+     * @param  callable|string  $callback
+     * @param  array  $parameters
+     * @param  string|null  $defaultMethod
+     * @return mixed
+     */
+    public function call($callback, array $parameters = [], $defaultMethod = null);
+
+    /**
+     * Determine if the given abstract type has been resolved.
+     *
+     * @param  string  $abstract
+     * @return bool
+     */
+    public function resolved($abstract);
+
+    /**
+     * Register a new resolving callback.
+     *
+     * @param  \Closure|string  $abstract
+     * @param  \Closure|null  $callback
+     * @return void
+     */
+    public function resolving($abstract, Closure $callback = null);
+
+    /**
+     * Register a new after resolving callback.
+     *
+     * @param  \Closure|string  $abstract
+     * @param  \Closure|null  $callback
+     * @return void
+     */
+    public function afterResolving($abstract, Closure $callback = null);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Container/ContextualBindingBuilder.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Container/ContextualBindingBuilder.php
new file mode 100644
index 0000000..05e3625
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Container/ContextualBindingBuilder.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace Illuminate\Contracts\Container;
+
+interface ContextualBindingBuilder
+{
+    /**
+     * Define the abstract target that depends on the context.
+     *
+     * @param  string  $abstract
+     * @return $this
+     */
+    public function needs($abstract);
+
+    /**
+     * Define the implementation for the contextual binding.
+     *
+     * @param  \Closure|string  $implementation
+     * @return void
+     */
+    public function give($implementation);
+
+    /**
+     * Define tagged services to be used as the implementation for the contextual binding.
+     *
+     * @param  string  $tag
+     * @return void
+     */
+    public function giveTagged($tag);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cookie/Factory.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cookie/Factory.php
new file mode 100644
index 0000000..6f95021
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cookie/Factory.php
@@ -0,0 +1,47 @@
+<?php
+
+namespace Illuminate\Contracts\Cookie;
+
+interface Factory
+{
+    /**
+     * Create a new cookie instance.
+     *
+     * @param  string  $name
+     * @param  string  $value
+     * @param  int  $minutes
+     * @param  string|null  $path
+     * @param  string|null  $domain
+     * @param  bool|null  $secure
+     * @param  bool  $httpOnly
+     * @param  bool  $raw
+     * @param  string|null  $sameSite
+     * @return \Symfony\Component\HttpFoundation\Cookie
+     */
+    public function make($name, $value, $minutes = 0, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null);
+
+    /**
+     * Create a cookie that lasts "forever" (five years).
+     *
+     * @param  string  $name
+     * @param  string  $value
+     * @param  string|null  $path
+     * @param  string|null  $domain
+     * @param  bool|null  $secure
+     * @param  bool  $httpOnly
+     * @param  bool  $raw
+     * @param  string|null  $sameSite
+     * @return \Symfony\Component\HttpFoundation\Cookie
+     */
+    public function forever($name, $value, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null);
+
+    /**
+     * Expire the given cookie.
+     *
+     * @param  string  $name
+     * @param  string|null  $path
+     * @param  string|null  $domain
+     * @return \Symfony\Component\HttpFoundation\Cookie
+     */
+    public function forget($name, $path = null, $domain = null);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cookie/QueueingFactory.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cookie/QueueingFactory.php
new file mode 100644
index 0000000..d6c74b8
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Cookie/QueueingFactory.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace Illuminate\Contracts\Cookie;
+
+interface QueueingFactory extends Factory
+{
+    /**
+     * Queue a cookie to send with the next response.
+     *
+     * @param  array  $parameters
+     * @return void
+     */
+    public function queue(...$parameters);
+
+    /**
+     * Remove a cookie from the queue.
+     *
+     * @param  string  $name
+     * @param  string|null  $path
+     * @return void
+     */
+    public function unqueue($name, $path = null);
+
+    /**
+     * Get the cookies which have been queued for the next request.
+     *
+     * @return array
+     */
+    public function getQueuedCookies();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/Eloquent/Castable.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/Eloquent/Castable.php
new file mode 100644
index 0000000..911b1cf
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/Eloquent/Castable.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Illuminate\Contracts\Database\Eloquent;
+
+interface Castable
+{
+    /**
+     * Get the name of the caster class to use when casting from / to this cast target.
+     *
+     * @param  array  $arguments
+     * @return string
+     * @return string|\Illuminate\Contracts\Database\Eloquent\CastsAttributes|\Illuminate\Contracts\Database\Eloquent\CastsInboundAttributes
+     */
+    public static function castUsing(array $arguments);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/Eloquent/CastsAttributes.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/Eloquent/CastsAttributes.php
new file mode 100644
index 0000000..808d005
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/Eloquent/CastsAttributes.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Illuminate\Contracts\Database\Eloquent;
+
+interface CastsAttributes
+{
+    /**
+     * Transform the attribute from the underlying model values.
+     *
+     * @param  \Illuminate\Database\Eloquent\Model  $model
+     * @param  string  $key
+     * @param  mixed  $value
+     * @param  array  $attributes
+     * @return mixed
+     */
+    public function get($model, string $key, $value, array $attributes);
+
+    /**
+     * Transform the attribute to its underlying model values.
+     *
+     * @param  \Illuminate\Database\Eloquent\Model  $model
+     * @param  string  $key
+     * @param  mixed  $value
+     * @param  array  $attributes
+     * @return mixed
+     */
+    public function set($model, string $key, $value, array $attributes);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/Eloquent/CastsInboundAttributes.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/Eloquent/CastsInboundAttributes.php
new file mode 100644
index 0000000..4c7801b
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/Eloquent/CastsInboundAttributes.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Illuminate\Contracts\Database\Eloquent;
+
+interface CastsInboundAttributes
+{
+    /**
+     * Transform the attribute to its underlying model values.
+     *
+     * @param  \Illuminate\Database\Eloquent\Model  $model
+     * @param  string  $key
+     * @param  mixed  $value
+     * @param  array  $attributes
+     * @return mixed
+     */
+    public function set($model, string $key, $value, array $attributes);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/Eloquent/DeviatesCastableAttributes.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/Eloquent/DeviatesCastableAttributes.php
new file mode 100644
index 0000000..48ba73a
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/Eloquent/DeviatesCastableAttributes.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Illuminate\Contracts\Database\Eloquent;
+
+interface DeviatesCastableAttributes
+{
+    /**
+     * Increment the attribute.
+     *
+     * @param  \Illuminate\Database\Eloquent\Model  $model
+     * @param  string  $key
+     * @param  mixed  $value
+     * @param  array  $attributes
+     * @return mixed
+     */
+    public function increment($model, string $key, $value, array $attributes);
+
+    /**
+     * Decrement the attribute.
+     *
+     * @param  \Illuminate\Database\Eloquent\Model  $model
+     * @param  string  $key
+     * @param  mixed  $value
+     * @param  array  $attributes
+     * @return mixed
+     */
+    public function decrement($model, string $key, $value, array $attributes);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/Eloquent/SerializesCastableAttributes.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/Eloquent/SerializesCastableAttributes.php
new file mode 100644
index 0000000..a89f910
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/Eloquent/SerializesCastableAttributes.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Illuminate\Contracts\Database\Eloquent;
+
+interface SerializesCastableAttributes
+{
+    /**
+     * Serialize the attribute when converting the model to an array.
+     *
+     * @param  \Illuminate\Database\Eloquent\Model  $model
+     * @param  string  $key
+     * @param  mixed  $value
+     * @param  array  $attributes
+     * @return mixed
+     */
+    public function serialize($model, string $key, $value, array $attributes);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/Eloquent/SupportsPartialRelations.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/Eloquent/SupportsPartialRelations.php
new file mode 100644
index 0000000..c82125a
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/Eloquent/SupportsPartialRelations.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace Illuminate\Contracts\Database\Eloquent;
+
+interface SupportsPartialRelations
+{
+    /**
+     * Indicate that the relation is a single result of a larger one-to-many relationship.
+     *
+     * @param  string|null  $column
+     * @param  string|\Closure|null  $aggregate
+     * @param  string  $relation
+     * @return $this
+     */
+    public function ofMany($column = 'id', $aggregate = 'MAX', $relation = null);
+
+    /**
+     * Determine whether the relationship is a one-of-many relationship.
+     *
+     * @return bool
+     */
+    public function isOneOfMany();
+
+    /**
+     * Get the one of many inner join subselect query builder instance.
+     *
+     * @return \Illuminate\Database\Eloquent\Builder|void
+     */
+    public function getOneOfManySubQuery();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/Events/MigrationEvent.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/Events/MigrationEvent.php
new file mode 100644
index 0000000..2da155f
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/Events/MigrationEvent.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace Illuminate\Contracts\Database\Events;
+
+interface MigrationEvent
+{
+    //
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/ModelIdentifier.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/ModelIdentifier.php
new file mode 100644
index 0000000..9893d28
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Database/ModelIdentifier.php
@@ -0,0 +1,53 @@
+<?php
+
+namespace Illuminate\Contracts\Database;
+
+class ModelIdentifier
+{
+    /**
+     * The class name of the model.
+     *
+     * @var string
+     */
+    public $class;
+
+    /**
+     * The unique identifier of the model.
+     *
+     * This may be either a single ID or an array of IDs.
+     *
+     * @var mixed
+     */
+    public $id;
+
+    /**
+     * The relationships loaded on the model.
+     *
+     * @var array
+     */
+    public $relations;
+
+    /**
+     * The connection name of the model.
+     *
+     * @var string|null
+     */
+    public $connection;
+
+    /**
+     * Create a new model identifier.
+     *
+     * @param  string  $class
+     * @param  mixed  $id
+     * @param  array  $relations
+     * @param  mixed  $connection
+     * @return void
+     */
+    public function __construct($class, $id, array $relations, $connection)
+    {
+        $this->id = $id;
+        $this->class = $class;
+        $this->relations = $relations;
+        $this->connection = $connection;
+    }
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Debug/ExceptionHandler.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Debug/ExceptionHandler.php
new file mode 100644
index 0000000..54381a1
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Debug/ExceptionHandler.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace Illuminate\Contracts\Debug;
+
+use Throwable;
+
+interface ExceptionHandler
+{
+    /**
+     * Report or log an exception.
+     *
+     * @param  \Throwable  $e
+     * @return void
+     *
+     * @throws \Throwable
+     */
+    public function report(Throwable $e);
+
+    /**
+     * Determine if the exception should be reported.
+     *
+     * @param  \Throwable  $e
+     * @return bool
+     */
+    public function shouldReport(Throwable $e);
+
+    /**
+     * Render an exception into an HTTP response.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Throwable  $e
+     * @return \Symfony\Component\HttpFoundation\Response
+     *
+     * @throws \Throwable
+     */
+    public function render($request, Throwable $e);
+
+    /**
+     * Render an exception to the console.
+     *
+     * @param  \Symfony\Component\Console\Output\OutputInterface  $output
+     * @param  \Throwable  $e
+     * @return void
+     */
+    public function renderForConsole($output, Throwable $e);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Encryption/DecryptException.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Encryption/DecryptException.php
new file mode 100644
index 0000000..7edebc9
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Encryption/DecryptException.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Illuminate\Contracts\Encryption;
+
+use RuntimeException;
+
+class DecryptException extends RuntimeException
+{
+    //
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Encryption/EncryptException.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Encryption/EncryptException.php
new file mode 100644
index 0000000..2146ee0
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Encryption/EncryptException.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Illuminate\Contracts\Encryption;
+
+use RuntimeException;
+
+class EncryptException extends RuntimeException
+{
+    //
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Encryption/Encrypter.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Encryption/Encrypter.php
new file mode 100644
index 0000000..4747b68
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Encryption/Encrypter.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Illuminate\Contracts\Encryption;
+
+interface Encrypter
+{
+    /**
+     * Encrypt the given value.
+     *
+     * @param  mixed  $value
+     * @param  bool  $serialize
+     * @return string
+     *
+     * @throws \Illuminate\Contracts\Encryption\EncryptException
+     */
+    public function encrypt($value, $serialize = true);
+
+    /**
+     * Decrypt the given value.
+     *
+     * @param  string  $payload
+     * @param  bool  $unserialize
+     * @return mixed
+     *
+     * @throws \Illuminate\Contracts\Encryption\DecryptException
+     */
+    public function decrypt($payload, $unserialize = true);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Encryption/StringEncrypter.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Encryption/StringEncrypter.php
new file mode 100644
index 0000000..1e6938c
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Encryption/StringEncrypter.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace Illuminate\Contracts\Encryption;
+
+interface StringEncrypter
+{
+    /**
+     * Encrypt a string without serialization.
+     *
+     * @param  string  $value
+     * @return string
+     *
+     * @throws \Illuminate\Contracts\Encryption\EncryptException
+     */
+    public function encryptString($value);
+
+    /**
+     * Decrypt the given string without unserialization.
+     *
+     * @param  string  $payload
+     * @return string
+     *
+     * @throws \Illuminate\Contracts\Encryption\DecryptException
+     */
+    public function decryptString($payload);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Events/Dispatcher.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Events/Dispatcher.php
new file mode 100644
index 0000000..6386106
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Events/Dispatcher.php
@@ -0,0 +1,82 @@
+<?php
+
+namespace Illuminate\Contracts\Events;
+
+interface Dispatcher
+{
+    /**
+     * Register an event listener with the dispatcher.
+     *
+     * @param  \Closure|string|array  $events
+     * @param  \Closure|string|array|null  $listener
+     * @return void
+     */
+    public function listen($events, $listener = null);
+
+    /**
+     * Determine if a given event has listeners.
+     *
+     * @param  string  $eventName
+     * @return bool
+     */
+    public function hasListeners($eventName);
+
+    /**
+     * Register an event subscriber with the dispatcher.
+     *
+     * @param  object|string  $subscriber
+     * @return void
+     */
+    public function subscribe($subscriber);
+
+    /**
+     * Dispatch an event until the first non-null response is returned.
+     *
+     * @param  string|object  $event
+     * @param  mixed  $payload
+     * @return array|null
+     */
+    public function until($event, $payload = []);
+
+    /**
+     * Dispatch an event and call the listeners.
+     *
+     * @param  string|object  $event
+     * @param  mixed  $payload
+     * @param  bool  $halt
+     * @return array|null
+     */
+    public function dispatch($event, $payload = [], $halt = false);
+
+    /**
+     * Register an event and payload to be fired later.
+     *
+     * @param  string  $event
+     * @param  array  $payload
+     * @return void
+     */
+    public function push($event, $payload = []);
+
+    /**
+     * Flush a set of pushed events.
+     *
+     * @param  string  $event
+     * @return void
+     */
+    public function flush($event);
+
+    /**
+     * Remove a set of listeners from the dispatcher.
+     *
+     * @param  string  $event
+     * @return void
+     */
+    public function forget($event);
+
+    /**
+     * Forget all of the queued listeners.
+     *
+     * @return void
+     */
+    public function forgetPushed();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Filesystem/Cloud.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Filesystem/Cloud.php
new file mode 100644
index 0000000..86bea26
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Filesystem/Cloud.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Illuminate\Contracts\Filesystem;
+
+interface Cloud extends Filesystem
+{
+    /**
+     * Get the URL for the file at the given path.
+     *
+     * @param  string  $path
+     * @return string
+     */
+    public function url($path);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Filesystem/Factory.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Filesystem/Factory.php
new file mode 100644
index 0000000..d0f9cd2
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Filesystem/Factory.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Illuminate\Contracts\Filesystem;
+
+interface Factory
+{
+    /**
+     * Get a filesystem implementation.
+     *
+     * @param  string|null  $name
+     * @return \Illuminate\Contracts\Filesystem\Filesystem
+     */
+    public function disk($name = null);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Filesystem/FileExistsException.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Filesystem/FileExistsException.php
new file mode 100644
index 0000000..9027892
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Filesystem/FileExistsException.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Illuminate\Contracts\Filesystem;
+
+use Exception;
+
+class FileExistsException extends Exception
+{
+    //
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Filesystem/FileNotFoundException.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Filesystem/FileNotFoundException.php
new file mode 100644
index 0000000..37b7930
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Filesystem/FileNotFoundException.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Illuminate\Contracts\Filesystem;
+
+use Exception;
+
+class FileNotFoundException extends Exception
+{
+    //
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Filesystem/Filesystem.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Filesystem/Filesystem.php
new file mode 100644
index 0000000..e8b0dd4
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Filesystem/Filesystem.php
@@ -0,0 +1,198 @@
+<?php
+
+namespace Illuminate\Contracts\Filesystem;
+
+interface Filesystem
+{
+    /**
+     * The public visibility setting.
+     *
+     * @var string
+     */
+    const VISIBILITY_PUBLIC = 'public';
+
+    /**
+     * The private visibility setting.
+     *
+     * @var string
+     */
+    const VISIBILITY_PRIVATE = 'private';
+
+    /**
+     * Determine if a file exists.
+     *
+     * @param  string  $path
+     * @return bool
+     */
+    public function exists($path);
+
+    /**
+     * Get the contents of a file.
+     *
+     * @param  string  $path
+     * @return string
+     *
+     * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
+     */
+    public function get($path);
+
+    /**
+     * Get a resource to read the file.
+     *
+     * @param  string  $path
+     * @return resource|null The path resource or null on failure.
+     *
+     * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
+     */
+    public function readStream($path);
+
+    /**
+     * Write the contents of a file.
+     *
+     * @param  string  $path
+     * @param  string|resource  $contents
+     * @param  mixed  $options
+     * @return bool
+     */
+    public function put($path, $contents, $options = []);
+
+    /**
+     * Write a new file using a stream.
+     *
+     * @param  string  $path
+     * @param  resource  $resource
+     * @param  array  $options
+     * @return bool
+     *
+     * @throws \InvalidArgumentException If $resource is not a file handle.
+     * @throws \Illuminate\Contracts\Filesystem\FileExistsException
+     */
+    public function writeStream($path, $resource, array $options = []);
+
+    /**
+     * Get the visibility for the given path.
+     *
+     * @param  string  $path
+     * @return string
+     */
+    public function getVisibility($path);
+
+    /**
+     * Set the visibility for the given path.
+     *
+     * @param  string  $path
+     * @param  string  $visibility
+     * @return bool
+     */
+    public function setVisibility($path, $visibility);
+
+    /**
+     * Prepend to a file.
+     *
+     * @param  string  $path
+     * @param  string  $data
+     * @return bool
+     */
+    public function prepend($path, $data);
+
+    /**
+     * Append to a file.
+     *
+     * @param  string  $path
+     * @param  string  $data
+     * @return bool
+     */
+    public function append($path, $data);
+
+    /**
+     * Delete the file at a given path.
+     *
+     * @param  string|array  $paths
+     * @return bool
+     */
+    public function delete($paths);
+
+    /**
+     * Copy a file to a new location.
+     *
+     * @param  string  $from
+     * @param  string  $to
+     * @return bool
+     */
+    public function copy($from, $to);
+
+    /**
+     * Move a file to a new location.
+     *
+     * @param  string  $from
+     * @param  string  $to
+     * @return bool
+     */
+    public function move($from, $to);
+
+    /**
+     * Get the file size of a given file.
+     *
+     * @param  string  $path
+     * @return int
+     */
+    public function size($path);
+
+    /**
+     * Get the file's last modification time.
+     *
+     * @param  string  $path
+     * @return int
+     */
+    public function lastModified($path);
+
+    /**
+     * Get an array of all files in a directory.
+     *
+     * @param  string|null  $directory
+     * @param  bool  $recursive
+     * @return array
+     */
+    public function files($directory = null, $recursive = false);
+
+    /**
+     * Get all of the files from the given directory (recursive).
+     *
+     * @param  string|null  $directory
+     * @return array
+     */
+    public function allFiles($directory = null);
+
+    /**
+     * Get all of the directories within a given directory.
+     *
+     * @param  string|null  $directory
+     * @param  bool  $recursive
+     * @return array
+     */
+    public function directories($directory = null, $recursive = false);
+
+    /**
+     * Get all (recursive) of the directories within a given directory.
+     *
+     * @param  string|null  $directory
+     * @return array
+     */
+    public function allDirectories($directory = null);
+
+    /**
+     * Create a directory.
+     *
+     * @param  string  $path
+     * @return bool
+     */
+    public function makeDirectory($path);
+
+    /**
+     * Recursively delete a directory.
+     *
+     * @param  string  $directory
+     * @return bool
+     */
+    public function deleteDirectory($directory);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Filesystem/LockTimeoutException.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Filesystem/LockTimeoutException.php
new file mode 100644
index 0000000..f03f5c4
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Filesystem/LockTimeoutException.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Illuminate\Contracts\Filesystem;
+
+use Exception;
+
+class LockTimeoutException extends Exception
+{
+    //
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Foundation/Application.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Foundation/Application.php
new file mode 100644
index 0000000..8ae0a31
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Foundation/Application.php
@@ -0,0 +1,215 @@
+<?php
+
+namespace Illuminate\Contracts\Foundation;
+
+use Illuminate\Contracts\Container\Container;
+
+interface Application extends Container
+{
+    /**
+     * Get the version number of the application.
+     *
+     * @return string
+     */
+    public function version();
+
+    /**
+     * Get the base path of the Laravel installation.
+     *
+     * @param  string  $path
+     * @return string
+     */
+    public function basePath($path = '');
+
+    /**
+     * Get the path to the bootstrap directory.
+     *
+     * @param  string  $path Optionally, a path to append to the bootstrap path
+     * @return string
+     */
+    public function bootstrapPath($path = '');
+
+    /**
+     * Get the path to the application configuration files.
+     *
+     * @param  string  $path Optionally, a path to append to the config path
+     * @return string
+     */
+    public function configPath($path = '');
+
+    /**
+     * Get the path to the database directory.
+     *
+     * @param  string  $path Optionally, a path to append to the database path
+     * @return string
+     */
+    public function databasePath($path = '');
+
+    /**
+     * Get the path to the resources directory.
+     *
+     * @param  string  $path
+     * @return string
+     */
+    public function resourcePath($path = '');
+
+    /**
+     * Get the path to the storage directory.
+     *
+     * @return string
+     */
+    public function storagePath();
+
+    /**
+     * Get or check the current application environment.
+     *
+     * @param  string|array  $environments
+     * @return string|bool
+     */
+    public function environment(...$environments);
+
+    /**
+     * Determine if the application is running in the console.
+     *
+     * @return bool
+     */
+    public function runningInConsole();
+
+    /**
+     * Determine if the application is running unit tests.
+     *
+     * @return bool
+     */
+    public function runningUnitTests();
+
+    /**
+     * Determine if the application is currently down for maintenance.
+     *
+     * @return bool
+     */
+    public function isDownForMaintenance();
+
+    /**
+     * Register all of the configured providers.
+     *
+     * @return void
+     */
+    public function registerConfiguredProviders();
+
+    /**
+     * Register a service provider with the application.
+     *
+     * @param  \Illuminate\Support\ServiceProvider|string  $provider
+     * @param  bool  $force
+     * @return \Illuminate\Support\ServiceProvider
+     */
+    public function register($provider, $force = false);
+
+    /**
+     * Register a deferred provider and service.
+     *
+     * @param  string  $provider
+     * @param  string|null  $service
+     * @return void
+     */
+    public function registerDeferredProvider($provider, $service = null);
+
+    /**
+     * Resolve a service provider instance from the class name.
+     *
+     * @param  string  $provider
+     * @return \Illuminate\Support\ServiceProvider
+     */
+    public function resolveProvider($provider);
+
+    /**
+     * Boot the application's service providers.
+     *
+     * @return void
+     */
+    public function boot();
+
+    /**
+     * Register a new boot listener.
+     *
+     * @param  callable  $callback
+     * @return void
+     */
+    public function booting($callback);
+
+    /**
+     * Register a new "booted" listener.
+     *
+     * @param  callable  $callback
+     * @return void
+     */
+    public function booted($callback);
+
+    /**
+     * Run the given array of bootstrap classes.
+     *
+     * @param  array  $bootstrappers
+     * @return void
+     */
+    public function bootstrapWith(array $bootstrappers);
+
+    /**
+     * Get the current application locale.
+     *
+     * @return string
+     */
+    public function getLocale();
+
+    /**
+     * Get the application namespace.
+     *
+     * @return string
+     *
+     * @throws \RuntimeException
+     */
+    public function getNamespace();
+
+    /**
+     * Get the registered service provider instances if any exist.
+     *
+     * @param  \Illuminate\Support\ServiceProvider|string  $provider
+     * @return array
+     */
+    public function getProviders($provider);
+
+    /**
+     * Determine if the application has been bootstrapped before.
+     *
+     * @return bool
+     */
+    public function hasBeenBootstrapped();
+
+    /**
+     * Load and boot all of the remaining deferred providers.
+     *
+     * @return void
+     */
+    public function loadDeferredProviders();
+
+    /**
+     * Set the current application locale.
+     *
+     * @param  string  $locale
+     * @return void
+     */
+    public function setLocale($locale);
+
+    /**
+     * Determine if middleware has been disabled for the application.
+     *
+     * @return bool
+     */
+    public function shouldSkipMiddleware();
+
+    /**
+     * Terminate the application.
+     *
+     * @return void
+     */
+    public function terminate();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Foundation/CachesConfiguration.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Foundation/CachesConfiguration.php
new file mode 100644
index 0000000..08ebdaf
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Foundation/CachesConfiguration.php
@@ -0,0 +1,27 @@
+<?php
+
+namespace Illuminate\Contracts\Foundation;
+
+interface CachesConfiguration
+{
+    /**
+     * Determine if the application configuration is cached.
+     *
+     * @return bool
+     */
+    public function configurationIsCached();
+
+    /**
+     * Get the path to the configuration cache file.
+     *
+     * @return string
+     */
+    public function getCachedConfigPath();
+
+    /**
+     * Get the path to the cached services.php file.
+     *
+     * @return string
+     */
+    public function getCachedServicesPath();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Foundation/CachesRoutes.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Foundation/CachesRoutes.php
new file mode 100644
index 0000000..a5c3455
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Foundation/CachesRoutes.php
@@ -0,0 +1,20 @@
+<?php
+
+namespace Illuminate\Contracts\Foundation;
+
+interface CachesRoutes
+{
+    /**
+     * Determine if the application routes are cached.
+     *
+     * @return bool
+     */
+    public function routesAreCached();
+
+    /**
+     * Get the path to the routes cache file.
+     *
+     * @return string
+     */
+    public function getCachedRoutesPath();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Hashing/Hasher.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Hashing/Hasher.php
new file mode 100644
index 0000000..b5e4d4c
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Hashing/Hasher.php
@@ -0,0 +1,42 @@
+<?php
+
+namespace Illuminate\Contracts\Hashing;
+
+interface Hasher
+{
+    /**
+     * Get information about the given hashed value.
+     *
+     * @param  string  $hashedValue
+     * @return array
+     */
+    public function info($hashedValue);
+
+    /**
+     * Hash the given value.
+     *
+     * @param  string  $value
+     * @param  array  $options
+     * @return string
+     */
+    public function make($value, array $options = []);
+
+    /**
+     * Check the given plain value against a hash.
+     *
+     * @param  string  $value
+     * @param  string  $hashedValue
+     * @param  array  $options
+     * @return bool
+     */
+    public function check($value, $hashedValue, array $options = []);
+
+    /**
+     * Check if the given hash has been hashed using the given options.
+     *
+     * @param  string  $hashedValue
+     * @param  array  $options
+     * @return bool
+     */
+    public function needsRehash($hashedValue, array $options = []);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Http/Kernel.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Http/Kernel.php
new file mode 100644
index 0000000..6eab6e6
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Http/Kernel.php
@@ -0,0 +1,37 @@
+<?php
+
+namespace Illuminate\Contracts\Http;
+
+interface Kernel
+{
+    /**
+     * Bootstrap the application for HTTP requests.
+     *
+     * @return void
+     */
+    public function bootstrap();
+
+    /**
+     * Handle an incoming HTTP request.
+     *
+     * @param  \Symfony\Component\HttpFoundation\Request  $request
+     * @return \Symfony\Component\HttpFoundation\Response
+     */
+    public function handle($request);
+
+    /**
+     * Perform any final actions for the request lifecycle.
+     *
+     * @param  \Symfony\Component\HttpFoundation\Request  $request
+     * @param  \Symfony\Component\HttpFoundation\Response  $response
+     * @return void
+     */
+    public function terminate($request, $response);
+
+    /**
+     * Get the Laravel application instance.
+     *
+     * @return \Illuminate\Contracts\Foundation\Application
+     */
+    public function getApplication();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/LICENSE.md b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/LICENSE.md
new file mode 100644
index 0000000..79810c8
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/LICENSE.md
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Taylor Otwell
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Mail/Factory.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Mail/Factory.php
new file mode 100644
index 0000000..fe45a2f
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Mail/Factory.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Illuminate\Contracts\Mail;
+
+interface Factory
+{
+    /**
+     * Get a mailer instance by name.
+     *
+     * @param  string|null  $name
+     * @return \Illuminate\Contracts\Mail\Mailer
+     */
+    public function mailer($name = null);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Mail/MailQueue.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Mail/MailQueue.php
new file mode 100644
index 0000000..d0d90b8
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Mail/MailQueue.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Illuminate\Contracts\Mail;
+
+interface MailQueue
+{
+    /**
+     * Queue a new e-mail message for sending.
+     *
+     * @param  \Illuminate\Contracts\Mail\Mailable|string|array  $view
+     * @param  string|null  $queue
+     * @return mixed
+     */
+    public function queue($view, $queue = null);
+
+    /**
+     * Queue a new e-mail message for sending after (n) seconds.
+     *
+     * @param  \DateTimeInterface|\DateInterval|int  $delay
+     * @param  \Illuminate\Contracts\Mail\Mailable|string|array  $view
+     * @param  string|null  $queue
+     * @return mixed
+     */
+    public function later($delay, $view, $queue = null);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Mail/Mailable.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Mail/Mailable.php
new file mode 100644
index 0000000..bfdf4ef
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Mail/Mailable.php
@@ -0,0 +1,76 @@
+<?php
+
+namespace Illuminate\Contracts\Mail;
+
+use Illuminate\Contracts\Queue\Factory as Queue;
+
+interface Mailable
+{
+    /**
+     * Send the message using the given mailer.
+     *
+     * @param  \Illuminate\Contracts\Mail\Factory|\Illuminate\Contracts\Mail\Mailer  $mailer
+     * @return void
+     */
+    public function send($mailer);
+
+    /**
+     * Queue the given message.
+     *
+     * @param  \Illuminate\Contracts\Queue\Factory  $queue
+     * @return mixed
+     */
+    public function queue(Queue $queue);
+
+    /**
+     * Deliver the queued message after the given delay.
+     *
+     * @param  \DateTimeInterface|\DateInterval|int  $delay
+     * @param  \Illuminate\Contracts\Queue\Factory  $queue
+     * @return mixed
+     */
+    public function later($delay, Queue $queue);
+
+    /**
+     * Set the recipients of the message.
+     *
+     * @param  object|array|string  $address
+     * @param  string|null  $name
+     * @return self
+     */
+    public function cc($address, $name = null);
+
+    /**
+     * Set the recipients of the message.
+     *
+     * @param  object|array|string  $address
+     * @param  string|null  $name
+     * @return $this
+     */
+    public function bcc($address, $name = null);
+
+    /**
+     * Set the recipients of the message.
+     *
+     * @param  object|array|string  $address
+     * @param  string|null  $name
+     * @return $this
+     */
+    public function to($address, $name = null);
+
+    /**
+     * Set the locale of the message.
+     *
+     * @param  string  $locale
+     * @return $this
+     */
+    public function locale($locale);
+
+    /**
+     * Set the name of the mailer that should be used to send the message.
+     *
+     * @param  string  $mailer
+     * @return $this
+     */
+    public function mailer($mailer);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Mail/Mailer.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Mail/Mailer.php
new file mode 100644
index 0000000..255b678
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Mail/Mailer.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace Illuminate\Contracts\Mail;
+
+interface Mailer
+{
+    /**
+     * Begin the process of mailing a mailable class instance.
+     *
+     * @param  mixed  $users
+     * @return \Illuminate\Mail\PendingMail
+     */
+    public function to($users);
+
+    /**
+     * Begin the process of mailing a mailable class instance.
+     *
+     * @param  mixed  $users
+     * @return \Illuminate\Mail\PendingMail
+     */
+    public function bcc($users);
+
+    /**
+     * Send a new message with only a raw text part.
+     *
+     * @param  string  $text
+     * @param  mixed  $callback
+     * @return void
+     */
+    public function raw($text, $callback);
+
+    /**
+     * Send a new message using a view.
+     *
+     * @param  \Illuminate\Contracts\Mail\Mailable|string|array  $view
+     * @param  array  $data
+     * @param  \Closure|string|null  $callback
+     * @return void
+     */
+    public function send($view, array $data = [], $callback = null);
+
+    /**
+     * Get the array of failed recipients.
+     *
+     * @return array
+     */
+    public function failures();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Notifications/Dispatcher.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Notifications/Dispatcher.php
new file mode 100644
index 0000000..a483ca2
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Notifications/Dispatcher.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Illuminate\Contracts\Notifications;
+
+interface Dispatcher
+{
+    /**
+     * Send the given notification to the given notifiable entities.
+     *
+     * @param  \Illuminate\Support\Collection|array|mixed  $notifiables
+     * @param  mixed  $notification
+     * @return void
+     */
+    public function send($notifiables, $notification);
+
+    /**
+     * Send the given notification immediately.
+     *
+     * @param  \Illuminate\Support\Collection|array|mixed  $notifiables
+     * @param  mixed  $notification
+     * @return void
+     */
+    public function sendNow($notifiables, $notification);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Notifications/Factory.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Notifications/Factory.php
new file mode 100644
index 0000000..7705678
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Notifications/Factory.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace Illuminate\Contracts\Notifications;
+
+interface Factory
+{
+    /**
+     * Get a channel instance by name.
+     *
+     * @param  string|null  $name
+     * @return mixed
+     */
+    public function channel($name = null);
+
+    /**
+     * Send the given notification to the given notifiable entities.
+     *
+     * @param  \Illuminate\Support\Collection|array|mixed  $notifiables
+     * @param  mixed  $notification
+     * @return void
+     */
+    public function send($notifiables, $notification);
+
+    /**
+     * Send the given notification immediately.
+     *
+     * @param  \Illuminate\Support\Collection|array|mixed  $notifiables
+     * @param  mixed  $notification
+     * @return void
+     */
+    public function sendNow($notifiables, $notification);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Pagination/CursorPaginator.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Pagination/CursorPaginator.php
new file mode 100644
index 0000000..2d62d3a
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Pagination/CursorPaginator.php
@@ -0,0 +1,117 @@
+<?php
+
+namespace Illuminate\Contracts\Pagination;
+
+interface CursorPaginator
+{
+    /**
+     * Get the URL for a given cursor.
+     *
+     * @param  \Illuminate\Pagination\Cursor|null  $cursor
+     * @return string
+     */
+    public function url($cursor);
+
+    /**
+     * Add a set of query string values to the paginator.
+     *
+     * @param  array|string|null  $key
+     * @param  string|null  $value
+     * @return $this
+     */
+    public function appends($key, $value = null);
+
+    /**
+     * Get / set the URL fragment to be appended to URLs.
+     *
+     * @param  string|null  $fragment
+     * @return $this|string|null
+     */
+    public function fragment($fragment = null);
+
+    /**
+     * Get the URL for the previous page, or null.
+     *
+     * @return string|null
+     */
+    public function previousPageUrl();
+
+    /**
+     * The URL for the next page, or null.
+     *
+     * @return string|null
+     */
+    public function nextPageUrl();
+
+    /**
+     * Get all of the items being paginated.
+     *
+     * @return array
+     */
+    public function items();
+
+    /**
+     * Get the "cursor" of the previous set of items.
+     *
+     * @return \Illuminate\Pagination\Cursor|null
+     */
+    public function previousCursor();
+
+    /**
+     * Get the "cursor" of the next set of items.
+     *
+     * @return \Illuminate\Pagination\Cursor|null
+     */
+    public function nextCursor();
+
+    /**
+     * Determine how many items are being shown per page.
+     *
+     * @return int
+     */
+    public function perPage();
+
+    /**
+     * Get the current cursor being paginated.
+     *
+     * @return \Illuminate\Pagination\Cursor|null
+     */
+    public function cursor();
+
+    /**
+     * Determine if there are enough items to split into multiple pages.
+     *
+     * @return bool
+     */
+    public function hasPages();
+
+    /**
+     * Get the base path for paginator generated URLs.
+     *
+     * @return string|null
+     */
+    public function path();
+
+    /**
+     * Determine if the list of items is empty or not.
+     *
+     * @return bool
+     */
+    public function isEmpty();
+
+    /**
+     * Determine if the list of items is not empty.
+     *
+     * @return bool
+     */
+    public function isNotEmpty();
+
+    /**
+     * Render the paginator using a given view.
+     *
+     * @param  string|null  $view
+     * @param  array  $data
+     * @return string
+     */
+    public function render($view = null, $data = []);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Pagination/LengthAwarePaginator.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Pagination/LengthAwarePaginator.php
new file mode 100644
index 0000000..4e6ef71
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Pagination/LengthAwarePaginator.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace Illuminate\Contracts\Pagination;
+
+interface LengthAwarePaginator extends Paginator
+{
+    /**
+     * Create a range of pagination URLs.
+     *
+     * @param  int  $start
+     * @param  int  $end
+     * @return array
+     */
+    public function getUrlRange($start, $end);
+
+    /**
+     * Determine the total number of items in the data store.
+     *
+     * @return int
+     */
+    public function total();
+
+    /**
+     * Get the page number of the last available page.
+     *
+     * @return int
+     */
+    public function lastPage();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Pagination/Paginator.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Pagination/Paginator.php
new file mode 100644
index 0000000..49bafaa
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Pagination/Paginator.php
@@ -0,0 +1,124 @@
+<?php
+
+namespace Illuminate\Contracts\Pagination;
+
+interface Paginator
+{
+    /**
+     * Get the URL for a given page.
+     *
+     * @param  int  $page
+     * @return string
+     */
+    public function url($page);
+
+    /**
+     * Add a set of query string values to the paginator.
+     *
+     * @param  array|string  $key
+     * @param  string|null  $value
+     * @return $this
+     */
+    public function appends($key, $value = null);
+
+    /**
+     * Get / set the URL fragment to be appended to URLs.
+     *
+     * @param  string|null  $fragment
+     * @return $this|string
+     */
+    public function fragment($fragment = null);
+
+    /**
+     * The URL for the next page, or null.
+     *
+     * @return string|null
+     */
+    public function nextPageUrl();
+
+    /**
+     * Get the URL for the previous page, or null.
+     *
+     * @return string|null
+     */
+    public function previousPageUrl();
+
+    /**
+     * Get all of the items being paginated.
+     *
+     * @return array
+     */
+    public function items();
+
+    /**
+     * Get the "index" of the first item being paginated.
+     *
+     * @return int
+     */
+    public function firstItem();
+
+    /**
+     * Get the "index" of the last item being paginated.
+     *
+     * @return int
+     */
+    public function lastItem();
+
+    /**
+     * Determine how many items are being shown per page.
+     *
+     * @return int
+     */
+    public function perPage();
+
+    /**
+     * Determine the current page being paginated.
+     *
+     * @return int
+     */
+    public function currentPage();
+
+    /**
+     * Determine if there are enough items to split into multiple pages.
+     *
+     * @return bool
+     */
+    public function hasPages();
+
+    /**
+     * Determine if there are more items in the data store.
+     *
+     * @return bool
+     */
+    public function hasMorePages();
+
+    /**
+     * Get the base path for paginator generated URLs.
+     *
+     * @return string|null
+     */
+    public function path();
+
+    /**
+     * Determine if the list of items is empty or not.
+     *
+     * @return bool
+     */
+    public function isEmpty();
+
+    /**
+     * Determine if the list of items is not empty.
+     *
+     * @return bool
+     */
+    public function isNotEmpty();
+
+    /**
+     * Render the paginator using a given view.
+     *
+     * @param  string|null  $view
+     * @param  array  $data
+     * @return string
+     */
+    public function render($view = null, $data = []);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Pipeline/Hub.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Pipeline/Hub.php
new file mode 100644
index 0000000..1ae675f
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Pipeline/Hub.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Illuminate\Contracts\Pipeline;
+
+interface Hub
+{
+    /**
+     * Send an object through one of the available pipelines.
+     *
+     * @param  mixed  $object
+     * @param  string|null  $pipeline
+     * @return mixed
+     */
+    public function pipe($object, $pipeline = null);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Pipeline/Pipeline.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Pipeline/Pipeline.php
new file mode 100644
index 0000000..226081c
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Pipeline/Pipeline.php
@@ -0,0 +1,40 @@
+<?php
+
+namespace Illuminate\Contracts\Pipeline;
+
+use Closure;
+
+interface Pipeline
+{
+    /**
+     * Set the traveler object being sent on the pipeline.
+     *
+     * @param  mixed  $traveler
+     * @return $this
+     */
+    public function send($traveler);
+
+    /**
+     * Set the stops of the pipeline.
+     *
+     * @param  dynamic|array  $stops
+     * @return $this
+     */
+    public function through($stops);
+
+    /**
+     * Set the method to call on the stops.
+     *
+     * @param  string  $method
+     * @return $this
+     */
+    public function via($method);
+
+    /**
+     * Run the pipeline with a final destination callback.
+     *
+     * @param  \Closure  $destination
+     * @return mixed
+     */
+    public function then(Closure $destination);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/ClearableQueue.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/ClearableQueue.php
new file mode 100644
index 0000000..427f61b
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/ClearableQueue.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Illuminate\Contracts\Queue;
+
+interface ClearableQueue
+{
+    /**
+     * Delete all of the jobs from the queue.
+     *
+     * @param  string  $queue
+     * @return int
+     */
+    public function clear($queue);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/EntityNotFoundException.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/EntityNotFoundException.php
new file mode 100644
index 0000000..079250d
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/EntityNotFoundException.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace Illuminate\Contracts\Queue;
+
+use InvalidArgumentException;
+
+class EntityNotFoundException extends InvalidArgumentException
+{
+    /**
+     * Create a new exception instance.
+     *
+     * @param  string  $type
+     * @param  mixed  $id
+     * @return void
+     */
+    public function __construct($type, $id)
+    {
+        $id = (string) $id;
+
+        parent::__construct("Queueable entity [{$type}] not found for ID [{$id}].");
+    }
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/EntityResolver.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/EntityResolver.php
new file mode 100644
index 0000000..aad97a1
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/EntityResolver.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Illuminate\Contracts\Queue;
+
+interface EntityResolver
+{
+    /**
+     * Resolve the entity for the given ID.
+     *
+     * @param  string  $type
+     * @param  mixed  $id
+     * @return mixed
+     */
+    public function resolve($type, $id);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/Factory.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/Factory.php
new file mode 100644
index 0000000..9a0bdeb
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/Factory.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Illuminate\Contracts\Queue;
+
+interface Factory
+{
+    /**
+     * Resolve a queue connection instance.
+     *
+     * @param  string|null  $name
+     * @return \Illuminate\Contracts\Queue\Queue
+     */
+    public function connection($name = null);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/Job.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/Job.php
new file mode 100644
index 0000000..c856215
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/Job.php
@@ -0,0 +1,166 @@
+<?php
+
+namespace Illuminate\Contracts\Queue;
+
+interface Job
+{
+    /**
+     * Get the UUID of the job.
+     *
+     * @return string|null
+     */
+    public function uuid();
+
+    /**
+     * Get the job identifier.
+     *
+     * @return string
+     */
+    public function getJobId();
+
+    /**
+     * Get the decoded body of the job.
+     *
+     * @return array
+     */
+    public function payload();
+
+    /**
+     * Fire the job.
+     *
+     * @return void
+     */
+    public function fire();
+
+    /**
+     * Release the job back into the queue.
+     *
+     * Accepts a delay specified in seconds.
+     *
+     * @param  int  $delay
+     * @return void
+     */
+    public function release($delay = 0);
+
+    /**
+     * Determine if the job was released back into the queue.
+     *
+     * @return bool
+     */
+    public function isReleased();
+
+    /**
+     * Delete the job from the queue.
+     *
+     * @return void
+     */
+    public function delete();
+
+    /**
+     * Determine if the job has been deleted.
+     *
+     * @return bool
+     */
+    public function isDeleted();
+
+    /**
+     * Determine if the job has been deleted or released.
+     *
+     * @return bool
+     */
+    public function isDeletedOrReleased();
+
+    /**
+     * Get the number of times the job has been attempted.
+     *
+     * @return int
+     */
+    public function attempts();
+
+    /**
+     * Determine if the job has been marked as a failure.
+     *
+     * @return bool
+     */
+    public function hasFailed();
+
+    /**
+     * Mark the job as "failed".
+     *
+     * @return void
+     */
+    public function markAsFailed();
+
+    /**
+     * Delete the job, call the "failed" method, and raise the failed job event.
+     *
+     * @param  \Throwable|null  $e
+     * @return void
+     */
+    public function fail($e = null);
+
+    /**
+     * Get the number of times to attempt a job.
+     *
+     * @return int|null
+     */
+    public function maxTries();
+
+    /**
+     * Get the maximum number of exceptions allowed, regardless of attempts.
+     *
+     * @return int|null
+     */
+    public function maxExceptions();
+
+    /**
+     * Get the number of seconds the job can run.
+     *
+     * @return int|null
+     */
+    public function timeout();
+
+    /**
+     * Get the timestamp indicating when the job should timeout.
+     *
+     * @return int|null
+     */
+    public function retryUntil();
+
+    /**
+     * Get the name of the queued job class.
+     *
+     * @return string
+     */
+    public function getName();
+
+    /**
+     * Get the resolved name of the queued job class.
+     *
+     * Resolves the name of "wrapped" jobs such as class-based handlers.
+     *
+     * @return string
+     */
+    public function resolveName();
+
+    /**
+     * Get the name of the connection the job belongs to.
+     *
+     * @return string
+     */
+    public function getConnectionName();
+
+    /**
+     * Get the name of the queue the job belongs to.
+     *
+     * @return string
+     */
+    public function getQueue();
+
+    /**
+     * Get the raw body string for the job.
+     *
+     * @return string
+     */
+    public function getRawBody();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/Monitor.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/Monitor.php
new file mode 100644
index 0000000..7da62d3
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/Monitor.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace Illuminate\Contracts\Queue;
+
+interface Monitor
+{
+    /**
+     * Register a callback to be executed on every iteration through the queue loop.
+     *
+     * @param  mixed  $callback
+     * @return void
+     */
+    public function looping($callback);
+
+    /**
+     * Register a callback to be executed when a job fails after the maximum amount of retries.
+     *
+     * @param  mixed  $callback
+     * @return void
+     */
+    public function failing($callback);
+
+    /**
+     * Register a callback to be executed when a daemon queue is stopping.
+     *
+     * @param  mixed  $callback
+     * @return void
+     */
+    public function stopping($callback);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/Queue.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/Queue.php
new file mode 100644
index 0000000..073b3c1
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/Queue.php
@@ -0,0 +1,99 @@
+<?php
+
+namespace Illuminate\Contracts\Queue;
+
+interface Queue
+{
+    /**
+     * Get the size of the queue.
+     *
+     * @param  string|null  $queue
+     * @return int
+     */
+    public function size($queue = null);
+
+    /**
+     * Push a new job onto the queue.
+     *
+     * @param  string|object  $job
+     * @param  mixed  $data
+     * @param  string|null  $queue
+     * @return mixed
+     */
+    public function push($job, $data = '', $queue = null);
+
+    /**
+     * Push a new job onto the queue.
+     *
+     * @param  string  $queue
+     * @param  string|object  $job
+     * @param  mixed  $data
+     * @return mixed
+     */
+    public function pushOn($queue, $job, $data = '');
+
+    /**
+     * Push a raw payload onto the queue.
+     *
+     * @param  string  $payload
+     * @param  string|null  $queue
+     * @param  array  $options
+     * @return mixed
+     */
+    public function pushRaw($payload, $queue = null, array $options = []);
+
+    /**
+     * Push a new job onto the queue after a delay.
+     *
+     * @param  \DateTimeInterface|\DateInterval|int  $delay
+     * @param  string|object  $job
+     * @param  mixed  $data
+     * @param  string|null  $queue
+     * @return mixed
+     */
+    public function later($delay, $job, $data = '', $queue = null);
+
+    /**
+     * Push a new job onto the queue after a delay.
+     *
+     * @param  string  $queue
+     * @param  \DateTimeInterface|\DateInterval|int  $delay
+     * @param  string|object  $job
+     * @param  mixed  $data
+     * @return mixed
+     */
+    public function laterOn($queue, $delay, $job, $data = '');
+
+    /**
+     * Push an array of jobs onto the queue.
+     *
+     * @param  array  $jobs
+     * @param  mixed  $data
+     * @param  string|null  $queue
+     * @return mixed
+     */
+    public function bulk($jobs, $data = '', $queue = null);
+
+    /**
+     * Pop the next job off of the queue.
+     *
+     * @param  string|null  $queue
+     * @return \Illuminate\Contracts\Queue\Job|null
+     */
+    public function pop($queue = null);
+
+    /**
+     * Get the connection name for the queue.
+     *
+     * @return string
+     */
+    public function getConnectionName();
+
+    /**
+     * Set the connection name for the queue.
+     *
+     * @param  string  $name
+     * @return $this
+     */
+    public function setConnectionName($name);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/QueueableCollection.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/QueueableCollection.php
new file mode 100644
index 0000000..7f1ea19
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/QueueableCollection.php
@@ -0,0 +1,34 @@
+<?php
+
+namespace Illuminate\Contracts\Queue;
+
+interface QueueableCollection
+{
+    /**
+     * Get the type of the entities being queued.
+     *
+     * @return string|null
+     */
+    public function getQueueableClass();
+
+    /**
+     * Get the identifiers for all of the entities.
+     *
+     * @return array
+     */
+    public function getQueueableIds();
+
+    /**
+     * Get the relationships of the entities being queued.
+     *
+     * @return array
+     */
+    public function getQueueableRelations();
+
+    /**
+     * Get the connection of the entities being queued.
+     *
+     * @return string|null
+     */
+    public function getQueueableConnection();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/QueueableEntity.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/QueueableEntity.php
new file mode 100644
index 0000000..366f0c8
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/QueueableEntity.php
@@ -0,0 +1,27 @@
+<?php
+
+namespace Illuminate\Contracts\Queue;
+
+interface QueueableEntity
+{
+    /**
+     * Get the queueable identity for the entity.
+     *
+     * @return mixed
+     */
+    public function getQueueableId();
+
+    /**
+     * Get the relationships for the entity.
+     *
+     * @return array
+     */
+    public function getQueueableRelations();
+
+    /**
+     * Get the connection of the entity.
+     *
+     * @return string|null
+     */
+    public function getQueueableConnection();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/ShouldBeEncrypted.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/ShouldBeEncrypted.php
new file mode 100644
index 0000000..374df89
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/ShouldBeEncrypted.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace Illuminate\Contracts\Queue;
+
+interface ShouldBeEncrypted
+{
+    //
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/ShouldBeUnique.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/ShouldBeUnique.php
new file mode 100644
index 0000000..b216434
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/ShouldBeUnique.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace Illuminate\Contracts\Queue;
+
+interface ShouldBeUnique
+{
+    //
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/ShouldBeUniqueUntilProcessing.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/ShouldBeUniqueUntilProcessing.php
new file mode 100644
index 0000000..510cab9
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/ShouldBeUniqueUntilProcessing.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace Illuminate\Contracts\Queue;
+
+interface ShouldBeUniqueUntilProcessing extends ShouldBeUnique
+{
+    //
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/ShouldQueue.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/ShouldQueue.php
new file mode 100644
index 0000000..0e99652
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Queue/ShouldQueue.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace Illuminate\Contracts\Queue;
+
+interface ShouldQueue
+{
+    //
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Redis/Connection.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Redis/Connection.php
new file mode 100644
index 0000000..74a8832
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Redis/Connection.php
@@ -0,0 +1,35 @@
+<?php
+
+namespace Illuminate\Contracts\Redis;
+
+use Closure;
+
+interface Connection
+{
+    /**
+     * Subscribe to a set of given channels for messages.
+     *
+     * @param  array|string  $channels
+     * @param  \Closure  $callback
+     * @return void
+     */
+    public function subscribe($channels, Closure $callback);
+
+    /**
+     * Subscribe to a set of given channels with wildcards.
+     *
+     * @param  array|string  $channels
+     * @param  \Closure  $callback
+     * @return void
+     */
+    public function psubscribe($channels, Closure $callback);
+
+    /**
+     * Run a command against the Redis database.
+     *
+     * @param  string  $method
+     * @param  array  $parameters
+     * @return mixed
+     */
+    public function command($method, array $parameters = []);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Redis/Connector.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Redis/Connector.php
new file mode 100644
index 0000000..e2669f7
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Redis/Connector.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Illuminate\Contracts\Redis;
+
+interface Connector
+{
+    /**
+     * Create a connection to a Redis cluster.
+     *
+     * @param  array  $config
+     * @param  array  $options
+     * @return \Illuminate\Redis\Connections\Connection
+     */
+    public function connect(array $config, array $options);
+
+    /**
+     * Create a connection to a Redis instance.
+     *
+     * @param  array  $config
+     * @param  array  $clusterOptions
+     * @param  array  $options
+     * @return \Illuminate\Redis\Connections\Connection
+     */
+    public function connectToCluster(array $config, array $clusterOptions, array $options);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Redis/Factory.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Redis/Factory.php
new file mode 100644
index 0000000..c2bfe81
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Redis/Factory.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Illuminate\Contracts\Redis;
+
+interface Factory
+{
+    /**
+     * Get a Redis connection by name.
+     *
+     * @param  string|null  $name
+     * @return \Illuminate\Redis\Connections\Connection
+     */
+    public function connection($name = null);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Redis/LimiterTimeoutException.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Redis/LimiterTimeoutException.php
new file mode 100644
index 0000000..651bf90
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Redis/LimiterTimeoutException.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Illuminate\Contracts\Redis;
+
+use Exception;
+
+class LimiterTimeoutException extends Exception
+{
+    //
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Routing/BindingRegistrar.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Routing/BindingRegistrar.php
new file mode 100644
index 0000000..6ed5079
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Routing/BindingRegistrar.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace Illuminate\Contracts\Routing;
+
+interface BindingRegistrar
+{
+    /**
+     * Add a new route parameter binder.
+     *
+     * @param  string  $key
+     * @param  string|callable  $binder
+     * @return void
+     */
+    public function bind($key, $binder);
+
+    /**
+     * Get the binding callback for a given binding.
+     *
+     * @param  string  $key
+     * @return \Closure
+     */
+    public function getBindingCallback($key);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Routing/Registrar.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Routing/Registrar.php
new file mode 100644
index 0000000..57e3272
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Routing/Registrar.php
@@ -0,0 +1,105 @@
+<?php
+
+namespace Illuminate\Contracts\Routing;
+
+interface Registrar
+{
+    /**
+     * Register a new GET route with the router.
+     *
+     * @param  string  $uri
+     * @param  array|string|callable  $action
+     * @return \Illuminate\Routing\Route
+     */
+    public function get($uri, $action);
+
+    /**
+     * Register a new POST route with the router.
+     *
+     * @param  string  $uri
+     * @param  array|string|callable  $action
+     * @return \Illuminate\Routing\Route
+     */
+    public function post($uri, $action);
+
+    /**
+     * Register a new PUT route with the router.
+     *
+     * @param  string  $uri
+     * @param  array|string|callable  $action
+     * @return \Illuminate\Routing\Route
+     */
+    public function put($uri, $action);
+
+    /**
+     * Register a new DELETE route with the router.
+     *
+     * @param  string  $uri
+     * @param  array|string|callable  $action
+     * @return \Illuminate\Routing\Route
+     */
+    public function delete($uri, $action);
+
+    /**
+     * Register a new PATCH route with the router.
+     *
+     * @param  string  $uri
+     * @param  array|string|callable  $action
+     * @return \Illuminate\Routing\Route
+     */
+    public function patch($uri, $action);
+
+    /**
+     * Register a new OPTIONS route with the router.
+     *
+     * @param  string  $uri
+     * @param  array|string|callable  $action
+     * @return \Illuminate\Routing\Route
+     */
+    public function options($uri, $action);
+
+    /**
+     * Register a new route with the given verbs.
+     *
+     * @param  array|string  $methods
+     * @param  string  $uri
+     * @param  array|string|callable  $action
+     * @return \Illuminate\Routing\Route
+     */
+    public function match($methods, $uri, $action);
+
+    /**
+     * Route a resource to a controller.
+     *
+     * @param  string  $name
+     * @param  string  $controller
+     * @param  array  $options
+     * @return \Illuminate\Routing\PendingResourceRegistration
+     */
+    public function resource($name, $controller, array $options = []);
+
+    /**
+     * Create a route group with shared attributes.
+     *
+     * @param  array  $attributes
+     * @param  \Closure|string  $routes
+     * @return void
+     */
+    public function group(array $attributes, $routes);
+
+    /**
+     * Substitute the route bindings onto the route.
+     *
+     * @param  \Illuminate\Routing\Route  $route
+     * @return \Illuminate\Routing\Route
+     */
+    public function substituteBindings($route);
+
+    /**
+     * Substitute the implicit Eloquent model bindings for the route.
+     *
+     * @param  \Illuminate\Routing\Route  $route
+     * @return void
+     */
+    public function substituteImplicitBindings($route);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Routing/ResponseFactory.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Routing/ResponseFactory.php
new file mode 100644
index 0000000..2cd928d
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Routing/ResponseFactory.php
@@ -0,0 +1,155 @@
+<?php
+
+namespace Illuminate\Contracts\Routing;
+
+interface ResponseFactory
+{
+    /**
+     * Create a new response instance.
+     *
+     * @param  string  $content
+     * @param  int  $status
+     * @param  array  $headers
+     * @return \Illuminate\Http\Response
+     */
+    public function make($content = '', $status = 200, array $headers = []);
+
+    /**
+     * Create a new "no content" response.
+     *
+     * @param  int  $status
+     * @param  array  $headers
+     * @return \Illuminate\Http\Response
+     */
+    public function noContent($status = 204, array $headers = []);
+
+    /**
+     * Create a new response for a given view.
+     *
+     * @param  string|array  $view
+     * @param  array  $data
+     * @param  int  $status
+     * @param  array  $headers
+     * @return \Illuminate\Http\Response
+     */
+    public function view($view, $data = [], $status = 200, array $headers = []);
+
+    /**
+     * Create a new JSON response instance.
+     *
+     * @param  mixed  $data
+     * @param  int  $status
+     * @param  array  $headers
+     * @param  int  $options
+     * @return \Illuminate\Http\JsonResponse
+     */
+    public function json($data = [], $status = 200, array $headers = [], $options = 0);
+
+    /**
+     * Create a new JSONP response instance.
+     *
+     * @param  string  $callback
+     * @param  mixed  $data
+     * @param  int  $status
+     * @param  array  $headers
+     * @param  int  $options
+     * @return \Illuminate\Http\JsonResponse
+     */
+    public function jsonp($callback, $data = [], $status = 200, array $headers = [], $options = 0);
+
+    /**
+     * Create a new streamed response instance.
+     *
+     * @param  \Closure  $callback
+     * @param  int  $status
+     * @param  array  $headers
+     * @return \Symfony\Component\HttpFoundation\StreamedResponse
+     */
+    public function stream($callback, $status = 200, array $headers = []);
+
+    /**
+     * Create a new streamed response instance as a file download.
+     *
+     * @param  \Closure  $callback
+     * @param  string|null  $name
+     * @param  array  $headers
+     * @param  string|null  $disposition
+     * @return \Symfony\Component\HttpFoundation\StreamedResponse
+     */
+    public function streamDownload($callback, $name = null, array $headers = [], $disposition = 'attachment');
+
+    /**
+     * Create a new file download response.
+     *
+     * @param  \SplFileInfo|string  $file
+     * @param  string|null  $name
+     * @param  array  $headers
+     * @param  string|null  $disposition
+     * @return \Symfony\Component\HttpFoundation\BinaryFileResponse
+     */
+    public function download($file, $name = null, array $headers = [], $disposition = 'attachment');
+
+    /**
+     * Return the raw contents of a binary file.
+     *
+     * @param  \SplFileInfo|string  $file
+     * @param  array  $headers
+     * @return \Symfony\Component\HttpFoundation\BinaryFileResponse
+     */
+    public function file($file, array $headers = []);
+
+    /**
+     * Create a new redirect response to the given path.
+     *
+     * @param  string  $path
+     * @param  int  $status
+     * @param  array  $headers
+     * @param  bool|null  $secure
+     * @return \Illuminate\Http\RedirectResponse
+     */
+    public function redirectTo($path, $status = 302, $headers = [], $secure = null);
+
+    /**
+     * Create a new redirect response to a named route.
+     *
+     * @param  string  $route
+     * @param  mixed  $parameters
+     * @param  int  $status
+     * @param  array  $headers
+     * @return \Illuminate\Http\RedirectResponse
+     */
+    public function redirectToRoute($route, $parameters = [], $status = 302, $headers = []);
+
+    /**
+     * Create a new redirect response to a controller action.
+     *
+     * @param  string  $action
+     * @param  mixed  $parameters
+     * @param  int  $status
+     * @param  array  $headers
+     * @return \Illuminate\Http\RedirectResponse
+     */
+    public function redirectToAction($action, $parameters = [], $status = 302, $headers = []);
+
+    /**
+     * Create a new redirect response, while putting the current URL in the session.
+     *
+     * @param  string  $path
+     * @param  int  $status
+     * @param  array  $headers
+     * @param  bool|null  $secure
+     * @return \Illuminate\Http\RedirectResponse
+     */
+    public function redirectGuest($path, $status = 302, $headers = [], $secure = null);
+
+    /**
+     * Create a new redirect response to the previously intended location.
+     *
+     * @param  string  $default
+     * @param  int  $status
+     * @param  array  $headers
+     * @param  bool|null  $secure
+     * @return \Illuminate\Http\RedirectResponse
+     */
+    public function redirectToIntended($default = '/', $status = 302, $headers = [], $secure = null);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Routing/UrlGenerator.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Routing/UrlGenerator.php
new file mode 100644
index 0000000..e576dda
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Routing/UrlGenerator.php
@@ -0,0 +1,79 @@
+<?php
+
+namespace Illuminate\Contracts\Routing;
+
+interface UrlGenerator
+{
+    /**
+     * Get the current URL for the request.
+     *
+     * @return string
+     */
+    public function current();
+
+    /**
+     * Get the URL for the previous request.
+     *
+     * @param  mixed  $fallback
+     * @return string
+     */
+    public function previous($fallback = false);
+
+    /**
+     * Generate an absolute URL to the given path.
+     *
+     * @param  string  $path
+     * @param  mixed  $extra
+     * @param  bool|null  $secure
+     * @return string
+     */
+    public function to($path, $extra = [], $secure = null);
+
+    /**
+     * Generate a secure, absolute URL to the given path.
+     *
+     * @param  string  $path
+     * @param  array  $parameters
+     * @return string
+     */
+    public function secure($path, $parameters = []);
+
+    /**
+     * Generate the URL to an application asset.
+     *
+     * @param  string  $path
+     * @param  bool|null  $secure
+     * @return string
+     */
+    public function asset($path, $secure = null);
+
+    /**
+     * Get the URL to a named route.
+     *
+     * @param  string  $name
+     * @param  mixed  $parameters
+     * @param  bool  $absolute
+     * @return string
+     *
+     * @throws \InvalidArgumentException
+     */
+    public function route($name, $parameters = [], $absolute = true);
+
+    /**
+     * Get the URL to a controller action.
+     *
+     * @param  string|array  $action
+     * @param  mixed  $parameters
+     * @param  bool  $absolute
+     * @return string
+     */
+    public function action($action, $parameters = [], $absolute = true);
+
+    /**
+     * Set the root controller namespace.
+     *
+     * @param  string  $rootNamespace
+     * @return $this
+     */
+    public function setRootControllerNamespace($rootNamespace);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Routing/UrlRoutable.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Routing/UrlRoutable.php
new file mode 100644
index 0000000..48c3d72
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Routing/UrlRoutable.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace Illuminate\Contracts\Routing;
+
+interface UrlRoutable
+{
+    /**
+     * Get the value of the model's route key.
+     *
+     * @return mixed
+     */
+    public function getRouteKey();
+
+    /**
+     * Get the route key for the model.
+     *
+     * @return string
+     */
+    public function getRouteKeyName();
+
+    /**
+     * Retrieve the model for a bound value.
+     *
+     * @param  mixed  $value
+     * @param  string|null  $field
+     * @return \Illuminate\Database\Eloquent\Model|null
+     */
+    public function resolveRouteBinding($value, $field = null);
+
+    /**
+     * Retrieve the child model for a bound value.
+     *
+     * @param  string  $childType
+     * @param  mixed  $value
+     * @param  string|null  $field
+     * @return \Illuminate\Database\Eloquent\Model|null
+     */
+    public function resolveChildRouteBinding($childType, $value, $field);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Session/Session.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Session/Session.php
new file mode 100644
index 0000000..1bf025a
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Session/Session.php
@@ -0,0 +1,204 @@
+<?php
+
+namespace Illuminate\Contracts\Session;
+
+interface Session
+{
+    /**
+     * Get the name of the session.
+     *
+     * @return string
+     */
+    public function getName();
+
+    /**
+     * Set the name of the session.
+     *
+     * @param  string  $name
+     * @return void
+     */
+    public function setName($name);
+
+    /**
+     * Get the current session ID.
+     *
+     * @return string
+     */
+    public function getId();
+
+    /**
+     * Set the session ID.
+     *
+     * @param  string  $id
+     * @return void
+     */
+    public function setId($id);
+
+    /**
+     * Start the session, reading the data from a handler.
+     *
+     * @return bool
+     */
+    public function start();
+
+    /**
+     * Save the session data to storage.
+     *
+     * @return void
+     */
+    public function save();
+
+    /**
+     * Get all of the session data.
+     *
+     * @return array
+     */
+    public function all();
+
+    /**
+     * Checks if a key exists.
+     *
+     * @param  string|array  $key
+     * @return bool
+     */
+    public function exists($key);
+
+    /**
+     * Checks if a key is present and not null.
+     *
+     * @param  string|array  $key
+     * @return bool
+     */
+    public function has($key);
+
+    /**
+     * Get an item from the session.
+     *
+     * @param  string  $key
+     * @param  mixed  $default
+     * @return mixed
+     */
+    public function get($key, $default = null);
+
+    /**
+     * Get the value of a given key and then forget it.
+     *
+     * @param  string  $key
+     * @param  mixed  $default
+     * @return mixed
+     */
+    public function pull($key, $default = null);
+
+    /**
+     * Put a key / value pair or array of key / value pairs in the session.
+     *
+     * @param  string|array  $key
+     * @param  mixed  $value
+     * @return void
+     */
+    public function put($key, $value = null);
+
+    /**
+     * Get the CSRF token value.
+     *
+     * @return string
+     */
+    public function token();
+
+    /**
+     * Regenerate the CSRF token value.
+     *
+     * @return void
+     */
+    public function regenerateToken();
+
+    /**
+     * Remove an item from the session, returning its value.
+     *
+     * @param  string  $key
+     * @return mixed
+     */
+    public function remove($key);
+
+    /**
+     * Remove one or many items from the session.
+     *
+     * @param  string|array  $keys
+     * @return void
+     */
+    public function forget($keys);
+
+    /**
+     * Remove all of the items from the session.
+     *
+     * @return void
+     */
+    public function flush();
+
+    /**
+     * Flush the session data and regenerate the ID.
+     *
+     * @return bool
+     */
+    public function invalidate();
+
+    /**
+     * Generate a new session identifier.
+     *
+     * @param  bool  $destroy
+     * @return bool
+     */
+    public function regenerate($destroy = false);
+
+    /**
+     * Generate a new session ID for the session.
+     *
+     * @param  bool  $destroy
+     * @return bool
+     */
+    public function migrate($destroy = false);
+
+    /**
+     * Determine if the session has been started.
+     *
+     * @return bool
+     */
+    public function isStarted();
+
+    /**
+     * Get the previous URL from the session.
+     *
+     * @return string|null
+     */
+    public function previousUrl();
+
+    /**
+     * Set the "previous" URL in the session.
+     *
+     * @param  string  $url
+     * @return void
+     */
+    public function setPreviousUrl($url);
+
+    /**
+     * Get the session handler instance.
+     *
+     * @return \SessionHandlerInterface
+     */
+    public function getHandler();
+
+    /**
+     * Determine if the session handler needs a request.
+     *
+     * @return bool
+     */
+    public function handlerNeedsRequest();
+
+    /**
+     * Set the request on the handler instance.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return void
+     */
+    public function setRequestOnHandler($request);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/Arrayable.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/Arrayable.php
new file mode 100755
index 0000000..5ad93b7
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/Arrayable.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace Illuminate\Contracts\Support;
+
+interface Arrayable
+{
+    /**
+     * Get the instance as an array.
+     *
+     * @return array
+     */
+    public function toArray();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/DeferrableProvider.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/DeferrableProvider.php
new file mode 100644
index 0000000..cfecf8b
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/DeferrableProvider.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace Illuminate\Contracts\Support;
+
+interface DeferrableProvider
+{
+    /**
+     * Get the services provided by the provider.
+     *
+     * @return array
+     */
+    public function provides();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/DeferringDisplayableValue.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/DeferringDisplayableValue.php
new file mode 100644
index 0000000..ac21d7e
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/DeferringDisplayableValue.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace Illuminate\Contracts\Support;
+
+interface DeferringDisplayableValue
+{
+    /**
+     * Resolve the displayable value that the class is deferring.
+     *
+     * @return \Illuminate\Contracts\Support\Htmlable|string
+     */
+    public function resolveDisplayableValue();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/Htmlable.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/Htmlable.php
new file mode 100644
index 0000000..32f643a
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/Htmlable.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace Illuminate\Contracts\Support;
+
+interface Htmlable
+{
+    /**
+     * Get content as a string of HTML.
+     *
+     * @return string
+     */
+    public function toHtml();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/Jsonable.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/Jsonable.php
new file mode 100755
index 0000000..f5641c3
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/Jsonable.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Illuminate\Contracts\Support;
+
+interface Jsonable
+{
+    /**
+     * Convert the object to its JSON representation.
+     *
+     * @param  int  $options
+     * @return string
+     */
+    public function toJson($options = 0);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/MessageBag.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/MessageBag.php
new file mode 100644
index 0000000..7f708ac
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/MessageBag.php
@@ -0,0 +1,102 @@
+<?php
+
+namespace Illuminate\Contracts\Support;
+
+use Countable;
+
+interface MessageBag extends Arrayable, Countable
+{
+    /**
+     * Get the keys present in the message bag.
+     *
+     * @return array
+     */
+    public function keys();
+
+    /**
+     * Add a message to the bag.
+     *
+     * @param  string  $key
+     * @param  string  $message
+     * @return $this
+     */
+    public function add($key, $message);
+
+    /**
+     * Merge a new array of messages into the bag.
+     *
+     * @param  \Illuminate\Contracts\Support\MessageProvider|array  $messages
+     * @return $this
+     */
+    public function merge($messages);
+
+    /**
+     * Determine if messages exist for a given key.
+     *
+     * @param  string|array  $key
+     * @return bool
+     */
+    public function has($key);
+
+    /**
+     * Get the first message from the bag for a given key.
+     *
+     * @param  string|null  $key
+     * @param  string|null  $format
+     * @return string
+     */
+    public function first($key = null, $format = null);
+
+    /**
+     * Get all of the messages from the bag for a given key.
+     *
+     * @param  string  $key
+     * @param  string|null  $format
+     * @return array
+     */
+    public function get($key, $format = null);
+
+    /**
+     * Get all of the messages for every key in the bag.
+     *
+     * @param  string|null  $format
+     * @return array
+     */
+    public function all($format = null);
+
+    /**
+     * Get the raw messages in the container.
+     *
+     * @return array
+     */
+    public function getMessages();
+
+    /**
+     * Get the default message format.
+     *
+     * @return string
+     */
+    public function getFormat();
+
+    /**
+     * Set the default message format.
+     *
+     * @param  string  $format
+     * @return $this
+     */
+    public function setFormat($format = ':message');
+
+    /**
+     * Determine if the message bag has any messages.
+     *
+     * @return bool
+     */
+    public function isEmpty();
+
+    /**
+     * Determine if the message bag has any messages.
+     *
+     * @return bool
+     */
+    public function isNotEmpty();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/MessageProvider.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/MessageProvider.php
new file mode 100755
index 0000000..f15ce73
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/MessageProvider.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace Illuminate\Contracts\Support;
+
+interface MessageProvider
+{
+    /**
+     * Get the messages for the instance.
+     *
+     * @return \Illuminate\Contracts\Support\MessageBag
+     */
+    public function getMessageBag();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/Renderable.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/Renderable.php
new file mode 100755
index 0000000..25c181e
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/Renderable.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace Illuminate\Contracts\Support;
+
+interface Renderable
+{
+    /**
+     * Get the evaluated contents of the object.
+     *
+     * @return string
+     */
+    public function render();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/Responsable.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/Responsable.php
new file mode 100644
index 0000000..1738ec0
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Support/Responsable.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Illuminate\Contracts\Support;
+
+interface Responsable
+{
+    /**
+     * Create an HTTP response that represents the object.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Symfony\Component\HttpFoundation\Response
+     */
+    public function toResponse($request);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Translation/HasLocalePreference.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Translation/HasLocalePreference.php
new file mode 100644
index 0000000..1b1f16d
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Translation/HasLocalePreference.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace Illuminate\Contracts\Translation;
+
+interface HasLocalePreference
+{
+    /**
+     * Get the preferred locale of the entity.
+     *
+     * @return string|null
+     */
+    public function preferredLocale();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Translation/Loader.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Translation/Loader.php
new file mode 100755
index 0000000..b08418d
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Translation/Loader.php
@@ -0,0 +1,40 @@
+<?php
+
+namespace Illuminate\Contracts\Translation;
+
+interface Loader
+{
+    /**
+     * Load the messages for the given locale.
+     *
+     * @param  string  $locale
+     * @param  string  $group
+     * @param  string|null  $namespace
+     * @return array
+     */
+    public function load($locale, $group, $namespace = null);
+
+    /**
+     * Add a new namespace to the loader.
+     *
+     * @param  string  $namespace
+     * @param  string  $hint
+     * @return void
+     */
+    public function addNamespace($namespace, $hint);
+
+    /**
+     * Add a new JSON path to the loader.
+     *
+     * @param  string  $path
+     * @return void
+     */
+    public function addJsonPath($path);
+
+    /**
+     * Get an array of all the registered namespaces.
+     *
+     * @return array
+     */
+    public function namespaces();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Translation/Translator.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Translation/Translator.php
new file mode 100644
index 0000000..6eae491
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Translation/Translator.php
@@ -0,0 +1,42 @@
+<?php
+
+namespace Illuminate\Contracts\Translation;
+
+interface Translator
+{
+    /**
+     * Get the translation for a given key.
+     *
+     * @param  string  $key
+     * @param  array  $replace
+     * @param  string|null  $locale
+     * @return mixed
+     */
+    public function get($key, array $replace = [], $locale = null);
+
+    /**
+     * Get a translation according to an integer value.
+     *
+     * @param  string  $key
+     * @param  \Countable|int|array  $number
+     * @param  array  $replace
+     * @param  string|null  $locale
+     * @return string
+     */
+    public function choice($key, $number, array $replace = [], $locale = null);
+
+    /**
+     * Get the default locale being used.
+     *
+     * @return string
+     */
+    public function getLocale();
+
+    /**
+     * Set the default locale.
+     *
+     * @param  string  $locale
+     * @return void
+     */
+    public function setLocale($locale);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/DataAwareRule.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/DataAwareRule.php
new file mode 100644
index 0000000..7ec7ab5
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/DataAwareRule.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Illuminate\Contracts\Validation;
+
+interface DataAwareRule
+{
+    /**
+     * Set the data under validation.
+     *
+     * @param  array  $data
+     * @return $this
+     */
+    public function setData($data);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/Factory.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/Factory.php
new file mode 100644
index 0000000..104675a
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/Factory.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace Illuminate\Contracts\Validation;
+
+interface Factory
+{
+    /**
+     * Create a new Validator instance.
+     *
+     * @param  array  $data
+     * @param  array  $rules
+     * @param  array  $messages
+     * @param  array  $customAttributes
+     * @return \Illuminate\Contracts\Validation\Validator
+     */
+    public function make(array $data, array $rules, array $messages = [], array $customAttributes = []);
+
+    /**
+     * Register a custom validator extension.
+     *
+     * @param  string  $rule
+     * @param  \Closure|string  $extension
+     * @param  string|null  $message
+     * @return void
+     */
+    public function extend($rule, $extension, $message = null);
+
+    /**
+     * Register a custom implicit validator extension.
+     *
+     * @param  string  $rule
+     * @param  \Closure|string  $extension
+     * @param  string|null  $message
+     * @return void
+     */
+    public function extendImplicit($rule, $extension, $message = null);
+
+    /**
+     * Register a custom implicit validator message replacer.
+     *
+     * @param  string  $rule
+     * @param  \Closure|string  $replacer
+     * @return void
+     */
+    public function replacer($rule, $replacer);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/ImplicitRule.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/ImplicitRule.php
new file mode 100644
index 0000000..bbc64f4
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/ImplicitRule.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace Illuminate\Contracts\Validation;
+
+interface ImplicitRule extends Rule
+{
+    //
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/Rule.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/Rule.php
new file mode 100644
index 0000000..cc03777
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/Rule.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace Illuminate\Contracts\Validation;
+
+interface Rule
+{
+    /**
+     * Determine if the validation rule passes.
+     *
+     * @param  string  $attribute
+     * @param  mixed  $value
+     * @return bool
+     */
+    public function passes($attribute, $value);
+
+    /**
+     * Get the validation error message.
+     *
+     * @return string|array
+     */
+    public function message();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/UncompromisedVerifier.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/UncompromisedVerifier.php
new file mode 100644
index 0000000..d4bd597
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/UncompromisedVerifier.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Illuminate\Contracts\Validation;
+
+interface UncompromisedVerifier
+{
+    /**
+     * Verify that the given data has not been compromised in data leaks.
+     *
+     * @param  array  $data
+     * @return bool
+     */
+    public function verify($data);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/ValidatesWhenResolved.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/ValidatesWhenResolved.php
new file mode 100644
index 0000000..4e6b757
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/ValidatesWhenResolved.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace Illuminate\Contracts\Validation;
+
+interface ValidatesWhenResolved
+{
+    /**
+     * Validate the given class instance.
+     *
+     * @return void
+     */
+    public function validateResolved();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/Validator.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/Validator.php
new file mode 100644
index 0000000..f68498d
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/Validator.php
@@ -0,0 +1,65 @@
+<?php
+
+namespace Illuminate\Contracts\Validation;
+
+use Illuminate\Contracts\Support\MessageProvider;
+
+interface Validator extends MessageProvider
+{
+    /**
+     * Run the validator's rules against its data.
+     *
+     * @return array
+     *
+     * @throws \Illuminate\Validation\ValidationException
+     */
+    public function validate();
+
+    /**
+     * Get the attributes and values that were validated.
+     *
+     * @return array
+     *
+     * @throws \Illuminate\Validation\ValidationException
+     */
+    public function validated();
+
+    /**
+     * Determine if the data fails the validation rules.
+     *
+     * @return bool
+     */
+    public function fails();
+
+    /**
+     * Get the failed validation rules.
+     *
+     * @return array
+     */
+    public function failed();
+
+    /**
+     * Add conditions to a given field based on a Closure.
+     *
+     * @param  string|array  $attribute
+     * @param  string|array  $rules
+     * @param  callable  $callback
+     * @return $this
+     */
+    public function sometimes($attribute, $rules, callable $callback);
+
+    /**
+     * Add an after validation callback.
+     *
+     * @param  callable|string  $callback
+     * @return $this
+     */
+    public function after($callback);
+
+    /**
+     * Get all of the validation error messages.
+     *
+     * @return \Illuminate\Support\MessageBag
+     */
+    public function errors();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/ValidatorAwareRule.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/ValidatorAwareRule.php
new file mode 100644
index 0000000..053f4fa
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/Validation/ValidatorAwareRule.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Illuminate\Contracts\Validation;
+
+interface ValidatorAwareRule
+{
+    /**
+     * Set the current validator.
+     *
+     * @param  \Illuminate\Validation\Validator  $validator
+     * @return $this
+     */
+    public function setValidator($validator);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/View/Engine.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/View/Engine.php
new file mode 100755
index 0000000..be4795d
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/View/Engine.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Illuminate\Contracts\View;
+
+interface Engine
+{
+    /**
+     * Get the evaluated contents of the view.
+     *
+     * @param  string  $path
+     * @param  array  $data
+     * @return string
+     */
+    public function get($path, array $data = []);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/View/Factory.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/View/Factory.php
new file mode 100644
index 0000000..562ee79
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/View/Factory.php
@@ -0,0 +1,79 @@
+<?php
+
+namespace Illuminate\Contracts\View;
+
+interface Factory
+{
+    /**
+     * Determine if a given view exists.
+     *
+     * @param  string  $view
+     * @return bool
+     */
+    public function exists($view);
+
+    /**
+     * Get the evaluated view contents for the given path.
+     *
+     * @param  string  $path
+     * @param  \Illuminate\Contracts\Support\Arrayable|array  $data
+     * @param  array  $mergeData
+     * @return \Illuminate\Contracts\View\View
+     */
+    public function file($path, $data = [], $mergeData = []);
+
+    /**
+     * Get the evaluated view contents for the given view.
+     *
+     * @param  string  $view
+     * @param  \Illuminate\Contracts\Support\Arrayable|array  $data
+     * @param  array  $mergeData
+     * @return \Illuminate\Contracts\View\View
+     */
+    public function make($view, $data = [], $mergeData = []);
+
+    /**
+     * Add a piece of shared data to the environment.
+     *
+     * @param  array|string  $key
+     * @param  mixed  $value
+     * @return mixed
+     */
+    public function share($key, $value = null);
+
+    /**
+     * Register a view composer event.
+     *
+     * @param  array|string  $views
+     * @param  \Closure|string  $callback
+     * @return array
+     */
+    public function composer($views, $callback);
+
+    /**
+     * Register a view creator event.
+     *
+     * @param  array|string  $views
+     * @param  \Closure|string  $callback
+     * @return array
+     */
+    public function creator($views, $callback);
+
+    /**
+     * Add a new namespace to the loader.
+     *
+     * @param  string  $namespace
+     * @param  string|array  $hints
+     * @return $this
+     */
+    public function addNamespace($namespace, $hints);
+
+    /**
+     * Replace the namespace hints for the given namespace.
+     *
+     * @param  string  $namespace
+     * @param  string|array  $hints
+     * @return $this
+     */
+    public function replaceNamespace($namespace, $hints);
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/View/View.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/View/View.php
new file mode 100644
index 0000000..4b0b7f9
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/View/View.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace Illuminate\Contracts\View;
+
+use Illuminate\Contracts\Support\Renderable;
+
+interface View extends Renderable
+{
+    /**
+     * Get the name of the view.
+     *
+     * @return string
+     */
+    public function name();
+
+    /**
+     * Add a piece of data to the view.
+     *
+     * @param  string|array  $key
+     * @param  mixed  $value
+     * @return $this
+     */
+    public function with($key, $value = null);
+
+    /**
+     * Get the array of view data.
+     *
+     * @return array
+     */
+    public function getData();
+}
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/composer.json b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/composer.json
new file mode 100644
index 0000000..c9b4667
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/illuminate/contracts/composer.json
@@ -0,0 +1,35 @@
+{
+    "name": "illuminate/contracts",
+    "description": "The Illuminate Contracts package.",
+    "license": "MIT",
+    "homepage": "https://laravel.com",
+    "support": {
+        "issues": "https://github.com/laravel/framework/issues",
+        "source": "https://github.com/laravel/framework"
+    },
+    "authors": [
+        {
+            "name": "Taylor Otwell",
+            "email": "taylor@laravel.com"
+        }
+    ],
+    "require": {
+        "php": "^7.3|^8.0",
+        "psr/container": "^1.0",
+        "psr/simple-cache": "^1.0"
+    },
+    "autoload": {
+        "psr-4": {
+            "Illuminate\\Contracts\\": ""
+        }
+    },
+    "extra": {
+        "branch-alias": {
+            "dev-master": "8.x-dev"
+        }
+    },
+    "config": {
+        "sort-packages": true
+    },
+    "minimum-stability": "dev"
+}